@telepix-lab/telepix-ui 0.7.0 → 0.7.1

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.
@@ -1,11 +1,159 @@
1
1
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import React__default, { useState, useLayoutEffect, forwardRef, createElement, createContext, useId as useId$1, useContext, useEffect, useRef, Fragment as Fragment$1, useMemo, useCallback } from 'react';
3
+ import React__default, { forwardRef, createElement, useState, useLayoutEffect, createContext, useId as useId$1, useRef, useContext, useCallback, useEffect, Fragment as Fragment$1, useMemo } from 'react';
4
4
  import * as ReactDOM from 'react-dom';
5
5
  import ReactDOM__default from 'react-dom';
6
+ import { id } from 'react-day-picker/locale';
6
7
  import { DayPicker, getDefaultClassNames } from 'react-day-picker';
7
8
  import 'react-day-picker/style.css';
8
9
 
10
+ function _objectWithoutPropertiesLoose(source, excluded) {
11
+ if (source == null) return {};
12
+ var target = {};
13
+ var sourceKeys = Object.keys(source);
14
+ var key, i;
15
+
16
+ for (i = 0; i < sourceKeys.length; i++) {
17
+ key = sourceKeys[i];
18
+ if (excluded.indexOf(key) >= 0) continue;
19
+ target[key] = source[key];
20
+ }
21
+
22
+ return target;
23
+ }
24
+
25
+ var _excluded$F = ["color"];
26
+ var BoxIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {
27
+ var _ref$color = _ref.color,
28
+ color = _ref$color === void 0 ? 'currentColor' : _ref$color,
29
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$F);
30
+
31
+ return createElement("svg", Object.assign({
32
+ width: "15",
33
+ height: "15",
34
+ viewBox: "0 0 15 15",
35
+ fill: "none",
36
+ xmlns: "http://www.w3.org/2000/svg"
37
+ }, props, {
38
+ ref: forwardedRef
39
+ }), createElement("path", {
40
+ d: "M12.5 2H2.5C2.22386 2 2 2.22386 2 2.5V12.5C2 12.7761 2.22386 13 2.5 13H12.5C12.7761 13 13 12.7761 13 12.5V2.5C13 2.22386 12.7761 2 12.5 2ZM2.5 1C1.67157 1 1 1.67157 1 2.5V12.5C1 13.3284 1.67157 14 2.5 14H12.5C13.3284 14 14 13.3284 14 12.5V2.5C14 1.67157 13.3284 1 12.5 1H2.5Z",
41
+ fill: color,
42
+ fillRule: "evenodd",
43
+ clipRule: "evenodd"
44
+ }));
45
+ });
46
+
47
+ var _excluded$N = ["color"];
48
+ var CaretDownIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {
49
+ var _ref$color = _ref.color,
50
+ color = _ref$color === void 0 ? 'currentColor' : _ref$color,
51
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$N);
52
+
53
+ return createElement("svg", Object.assign({
54
+ width: "15",
55
+ height: "15",
56
+ viewBox: "0 0 15 15",
57
+ fill: "none",
58
+ xmlns: "http://www.w3.org/2000/svg"
59
+ }, props, {
60
+ ref: forwardedRef
61
+ }), createElement("path", {
62
+ d: "M4.18179 6.18181C4.35753 6.00608 4.64245 6.00608 4.81819 6.18181L7.49999 8.86362L10.1818 6.18181C10.3575 6.00608 10.6424 6.00608 10.8182 6.18181C10.9939 6.35755 10.9939 6.64247 10.8182 6.81821L7.81819 9.81821C7.73379 9.9026 7.61934 9.95001 7.49999 9.95001C7.38064 9.95001 7.26618 9.9026 7.18179 9.81821L4.18179 6.81821C4.00605 6.64247 4.00605 6.35755 4.18179 6.18181Z",
63
+ fill: color,
64
+ fillRule: "evenodd",
65
+ clipRule: "evenodd"
66
+ }));
67
+ });
68
+
69
+ var _excluded$_ = ["color"];
70
+ var CircleIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {
71
+ var _ref$color = _ref.color,
72
+ color = _ref$color === void 0 ? 'currentColor' : _ref$color,
73
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$_);
74
+
75
+ return createElement("svg", Object.assign({
76
+ width: "15",
77
+ height: "15",
78
+ viewBox: "0 0 15 15",
79
+ fill: "none",
80
+ xmlns: "http://www.w3.org/2000/svg"
81
+ }, props, {
82
+ ref: forwardedRef
83
+ }), createElement("path", {
84
+ d: "M0.877075 7.49991C0.877075 3.84222 3.84222 0.877075 7.49991 0.877075C11.1576 0.877075 14.1227 3.84222 14.1227 7.49991C14.1227 11.1576 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1576 0.877075 7.49991ZM7.49991 1.82708C4.36689 1.82708 1.82708 4.36689 1.82708 7.49991C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49991C13.1727 4.36689 10.6329 1.82708 7.49991 1.82708Z",
85
+ fill: color,
86
+ fillRule: "evenodd",
87
+ clipRule: "evenodd"
88
+ }));
89
+ });
90
+
91
+ var _excluded$$ = ["color"];
92
+ var CircleBackslashIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {
93
+ var _ref$color = _ref.color,
94
+ color = _ref$color === void 0 ? 'currentColor' : _ref$color,
95
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$$);
96
+
97
+ return createElement("svg", Object.assign({
98
+ width: "15",
99
+ height: "15",
100
+ viewBox: "0 0 15 15",
101
+ fill: "none",
102
+ xmlns: "http://www.w3.org/2000/svg"
103
+ }, props, {
104
+ ref: forwardedRef
105
+ }), createElement("path", {
106
+ d: "M7.49991 0.877075C3.84222 0.877075 0.877075 3.84222 0.877075 7.49991C0.877075 11.1576 3.84222 14.1227 7.49991 14.1227C11.1576 14.1227 14.1227 11.1576 14.1227 7.49991C14.1227 3.84222 11.1576 0.877075 7.49991 0.877075ZM3.85768 3.15057C4.84311 2.32448 6.11342 1.82708 7.49991 1.82708C10.6329 1.82708 13.1727 4.36689 13.1727 7.49991C13.1727 8.88638 12.6753 10.1567 11.8492 11.1421L3.85768 3.15057ZM3.15057 3.85768C2.32448 4.84311 1.82708 6.11342 1.82708 7.49991C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C8.88638 13.1727 10.1567 12.6753 11.1421 11.8492L3.15057 3.85768Z",
107
+ fill: color,
108
+ fillRule: "evenodd",
109
+ clipRule: "evenodd"
110
+ }));
111
+ });
112
+
113
+ var _excluded$33 = ["color"];
114
+ var MagnifyingGlassIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {
115
+ var _ref$color = _ref.color,
116
+ color = _ref$color === void 0 ? 'currentColor' : _ref$color,
117
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$33);
118
+
119
+ return createElement("svg", Object.assign({
120
+ width: "15",
121
+ height: "15",
122
+ viewBox: "0 0 15 15",
123
+ fill: "none",
124
+ xmlns: "http://www.w3.org/2000/svg"
125
+ }, props, {
126
+ ref: forwardedRef
127
+ }), createElement("path", {
128
+ d: "M10 6.5C10 8.433 8.433 10 6.5 10C4.567 10 3 8.433 3 6.5C3 4.567 4.567 3 6.5 3C8.433 3 10 4.567 10 6.5ZM9.30884 10.0159C8.53901 10.6318 7.56251 11 6.5 11C4.01472 11 2 8.98528 2 6.5C2 4.01472 4.01472 2 6.5 2C8.98528 2 11 4.01472 11 6.5C11 7.56251 10.6318 8.53901 10.0159 9.30884L12.8536 12.1464C13.0488 12.3417 13.0488 12.6583 12.8536 12.8536C12.6583 13.0488 12.3417 13.0488 12.1464 12.8536L9.30884 10.0159Z",
129
+ fill: color,
130
+ fillRule: "evenodd",
131
+ clipRule: "evenodd"
132
+ }));
133
+ });
134
+
135
+ var _excluded$3C = ["color"];
136
+ var RadiobuttonIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {
137
+ var _ref$color = _ref.color,
138
+ color = _ref$color === void 0 ? 'currentColor' : _ref$color,
139
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$3C);
140
+
141
+ return createElement("svg", Object.assign({
142
+ width: "15",
143
+ height: "15",
144
+ viewBox: "0 0 15 15",
145
+ fill: "none",
146
+ xmlns: "http://www.w3.org/2000/svg"
147
+ }, props, {
148
+ ref: forwardedRef
149
+ }), createElement("path", {
150
+ d: "M7.49985 0.877045C3.84216 0.877045 0.877014 3.84219 0.877014 7.49988C0.877014 11.1575 3.84216 14.1227 7.49985 14.1227C11.1575 14.1227 14.1227 11.1575 14.1227 7.49988C14.1227 3.84219 11.1575 0.877045 7.49985 0.877045ZM1.82701 7.49988C1.82701 4.36686 4.36683 1.82704 7.49985 1.82704C10.6328 1.82704 13.1727 4.36686 13.1727 7.49988C13.1727 10.6329 10.6328 13.1727 7.49985 13.1727C4.36683 13.1727 1.82701 10.6329 1.82701 7.49988ZM7.49999 9.49999C8.60456 9.49999 9.49999 8.60456 9.49999 7.49999C9.49999 6.39542 8.60456 5.49999 7.49999 5.49999C6.39542 5.49999 5.49999 6.39542 5.49999 7.49999C5.49999 8.60456 6.39542 9.49999 7.49999 9.49999Z",
151
+ fill: color,
152
+ fillRule: "evenodd",
153
+ clipRule: "evenodd"
154
+ }));
155
+ });
156
+
9
157
  // packages/react/compose-refs/src/compose-refs.tsx
10
158
  function setRef(ref, value) {
11
159
  if (typeof ref === "function") {
@@ -8600,156 +8748,6 @@ var Portal = TooltipPortal;
8600
8748
  var Content2 = TooltipContent$1;
8601
8749
  var Arrow2 = TooltipArrow$1;
8602
8750
 
8603
- function _objectWithoutPropertiesLoose(source, excluded) {
8604
- if (source == null) return {};
8605
- var target = {};
8606
- var sourceKeys = Object.keys(source);
8607
- var key, i;
8608
-
8609
- for (i = 0; i < sourceKeys.length; i++) {
8610
- key = sourceKeys[i];
8611
- if (excluded.indexOf(key) >= 0) continue;
8612
- target[key] = source[key];
8613
- }
8614
-
8615
- return target;
8616
- }
8617
-
8618
- var _excluded$F = ["color"];
8619
- var BoxIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {
8620
- var _ref$color = _ref.color,
8621
- color = _ref$color === void 0 ? 'currentColor' : _ref$color,
8622
- props = _objectWithoutPropertiesLoose(_ref, _excluded$F);
8623
-
8624
- return createElement("svg", Object.assign({
8625
- width: "15",
8626
- height: "15",
8627
- viewBox: "0 0 15 15",
8628
- fill: "none",
8629
- xmlns: "http://www.w3.org/2000/svg"
8630
- }, props, {
8631
- ref: forwardedRef
8632
- }), createElement("path", {
8633
- d: "M12.5 2H2.5C2.22386 2 2 2.22386 2 2.5V12.5C2 12.7761 2.22386 13 2.5 13H12.5C12.7761 13 13 12.7761 13 12.5V2.5C13 2.22386 12.7761 2 12.5 2ZM2.5 1C1.67157 1 1 1.67157 1 2.5V12.5C1 13.3284 1.67157 14 2.5 14H12.5C13.3284 14 14 13.3284 14 12.5V2.5C14 1.67157 13.3284 1 12.5 1H2.5Z",
8634
- fill: color,
8635
- fillRule: "evenodd",
8636
- clipRule: "evenodd"
8637
- }));
8638
- });
8639
-
8640
- var _excluded$N = ["color"];
8641
- var CaretDownIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {
8642
- var _ref$color = _ref.color,
8643
- color = _ref$color === void 0 ? 'currentColor' : _ref$color,
8644
- props = _objectWithoutPropertiesLoose(_ref, _excluded$N);
8645
-
8646
- return createElement("svg", Object.assign({
8647
- width: "15",
8648
- height: "15",
8649
- viewBox: "0 0 15 15",
8650
- fill: "none",
8651
- xmlns: "http://www.w3.org/2000/svg"
8652
- }, props, {
8653
- ref: forwardedRef
8654
- }), createElement("path", {
8655
- d: "M4.18179 6.18181C4.35753 6.00608 4.64245 6.00608 4.81819 6.18181L7.49999 8.86362L10.1818 6.18181C10.3575 6.00608 10.6424 6.00608 10.8182 6.18181C10.9939 6.35755 10.9939 6.64247 10.8182 6.81821L7.81819 9.81821C7.73379 9.9026 7.61934 9.95001 7.49999 9.95001C7.38064 9.95001 7.26618 9.9026 7.18179 9.81821L4.18179 6.81821C4.00605 6.64247 4.00605 6.35755 4.18179 6.18181Z",
8656
- fill: color,
8657
- fillRule: "evenodd",
8658
- clipRule: "evenodd"
8659
- }));
8660
- });
8661
-
8662
- var _excluded$_ = ["color"];
8663
- var CircleIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {
8664
- var _ref$color = _ref.color,
8665
- color = _ref$color === void 0 ? 'currentColor' : _ref$color,
8666
- props = _objectWithoutPropertiesLoose(_ref, _excluded$_);
8667
-
8668
- return createElement("svg", Object.assign({
8669
- width: "15",
8670
- height: "15",
8671
- viewBox: "0 0 15 15",
8672
- fill: "none",
8673
- xmlns: "http://www.w3.org/2000/svg"
8674
- }, props, {
8675
- ref: forwardedRef
8676
- }), createElement("path", {
8677
- d: "M0.877075 7.49991C0.877075 3.84222 3.84222 0.877075 7.49991 0.877075C11.1576 0.877075 14.1227 3.84222 14.1227 7.49991C14.1227 11.1576 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1576 0.877075 7.49991ZM7.49991 1.82708C4.36689 1.82708 1.82708 4.36689 1.82708 7.49991C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49991C13.1727 4.36689 10.6329 1.82708 7.49991 1.82708Z",
8678
- fill: color,
8679
- fillRule: "evenodd",
8680
- clipRule: "evenodd"
8681
- }));
8682
- });
8683
-
8684
- var _excluded$$ = ["color"];
8685
- var CircleBackslashIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {
8686
- var _ref$color = _ref.color,
8687
- color = _ref$color === void 0 ? 'currentColor' : _ref$color,
8688
- props = _objectWithoutPropertiesLoose(_ref, _excluded$$);
8689
-
8690
- return createElement("svg", Object.assign({
8691
- width: "15",
8692
- height: "15",
8693
- viewBox: "0 0 15 15",
8694
- fill: "none",
8695
- xmlns: "http://www.w3.org/2000/svg"
8696
- }, props, {
8697
- ref: forwardedRef
8698
- }), createElement("path", {
8699
- d: "M7.49991 0.877075C3.84222 0.877075 0.877075 3.84222 0.877075 7.49991C0.877075 11.1576 3.84222 14.1227 7.49991 14.1227C11.1576 14.1227 14.1227 11.1576 14.1227 7.49991C14.1227 3.84222 11.1576 0.877075 7.49991 0.877075ZM3.85768 3.15057C4.84311 2.32448 6.11342 1.82708 7.49991 1.82708C10.6329 1.82708 13.1727 4.36689 13.1727 7.49991C13.1727 8.88638 12.6753 10.1567 11.8492 11.1421L3.85768 3.15057ZM3.15057 3.85768C2.32448 4.84311 1.82708 6.11342 1.82708 7.49991C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C8.88638 13.1727 10.1567 12.6753 11.1421 11.8492L3.15057 3.85768Z",
8700
- fill: color,
8701
- fillRule: "evenodd",
8702
- clipRule: "evenodd"
8703
- }));
8704
- });
8705
-
8706
- var _excluded$33 = ["color"];
8707
- var MagnifyingGlassIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {
8708
- var _ref$color = _ref.color,
8709
- color = _ref$color === void 0 ? 'currentColor' : _ref$color,
8710
- props = _objectWithoutPropertiesLoose(_ref, _excluded$33);
8711
-
8712
- return createElement("svg", Object.assign({
8713
- width: "15",
8714
- height: "15",
8715
- viewBox: "0 0 15 15",
8716
- fill: "none",
8717
- xmlns: "http://www.w3.org/2000/svg"
8718
- }, props, {
8719
- ref: forwardedRef
8720
- }), createElement("path", {
8721
- d: "M10 6.5C10 8.433 8.433 10 6.5 10C4.567 10 3 8.433 3 6.5C3 4.567 4.567 3 6.5 3C8.433 3 10 4.567 10 6.5ZM9.30884 10.0159C8.53901 10.6318 7.56251 11 6.5 11C4.01472 11 2 8.98528 2 6.5C2 4.01472 4.01472 2 6.5 2C8.98528 2 11 4.01472 11 6.5C11 7.56251 10.6318 8.53901 10.0159 9.30884L12.8536 12.1464C13.0488 12.3417 13.0488 12.6583 12.8536 12.8536C12.6583 13.0488 12.3417 13.0488 12.1464 12.8536L9.30884 10.0159Z",
8722
- fill: color,
8723
- fillRule: "evenodd",
8724
- clipRule: "evenodd"
8725
- }));
8726
- });
8727
-
8728
- var _excluded$3C = ["color"];
8729
- var RadiobuttonIcon = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {
8730
- var _ref$color = _ref.color,
8731
- color = _ref$color === void 0 ? 'currentColor' : _ref$color,
8732
- props = _objectWithoutPropertiesLoose(_ref, _excluded$3C);
8733
-
8734
- return createElement("svg", Object.assign({
8735
- width: "15",
8736
- height: "15",
8737
- viewBox: "0 0 15 15",
8738
- fill: "none",
8739
- xmlns: "http://www.w3.org/2000/svg"
8740
- }, props, {
8741
- ref: forwardedRef
8742
- }), createElement("path", {
8743
- d: "M7.49985 0.877045C3.84216 0.877045 0.877014 3.84219 0.877014 7.49988C0.877014 11.1575 3.84216 14.1227 7.49985 14.1227C11.1575 14.1227 14.1227 11.1575 14.1227 7.49988C14.1227 3.84219 11.1575 0.877045 7.49985 0.877045ZM1.82701 7.49988C1.82701 4.36686 4.36683 1.82704 7.49985 1.82704C10.6328 1.82704 13.1727 4.36686 13.1727 7.49988C13.1727 10.6329 10.6328 13.1727 7.49985 13.1727C4.36683 13.1727 1.82701 10.6329 1.82701 7.49988ZM7.49999 9.49999C8.60456 9.49999 9.49999 8.60456 9.49999 7.49999C9.49999 6.39542 8.60456 5.49999 7.49999 5.49999C6.39542 5.49999 5.49999 6.39542 5.49999 7.49999C5.49999 8.60456 6.39542 9.49999 7.49999 9.49999Z",
8744
- fill: color,
8745
- fillRule: "evenodd",
8746
- clipRule: "evenodd"
8747
- }));
8748
- });
8749
-
8750
- const RADIO_GROUP_ORIENTAIONS = {
8751
- HORIZONTAL: "horizontal"};
8752
-
8753
8751
  function r(e){var t,f,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=" "),n+=f);}else for(f in e)e[f]&&(n&&(n+=" "),n+=f);return n}function clsx(){for(var e,t,f=0,n="",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=" "),n+=t);return n}
8754
8752
 
8755
8753
  const CLASS_PART_SEPARATOR = '-';
@@ -12052,28 +12050,28 @@ function cn(...inputs) {
12052
12050
  const StateColorContainer = ({ groupName = "state", isInverted, className, }) => {
12053
12051
  const fillClassMap = {
12054
12052
  wrapper: {
12055
- normal: "group-hover/wrapper:bg-fill-hovered bg-fill-default group-active/wrapper:bg-fill-pressed group-aria-selected/wrapper:bg-fill-selected",
12056
- invert: "group-hover/wrapper:bg-fill-invert-hovered group-active/wrapper:bg-fill-invert-pressed bg-fill-invert-default group-aria-selected/wrapper:bg-fill-invert-selected",
12053
+ normal: "group-hover/wrapper:bg-fill-hovered bg-fill-default group-active/wrapper:bg-fill-pressed group-data-[focused=true]/wrapper:bg-fill-selected",
12054
+ invert: "group-hover/wrapper:bg-fill-invert-hovered group-active/wrapper:bg-fill-invert-pressed bg-fill-invert-default group-data-[focused=true]/wrapper:bg-fill-invert-selected",
12057
12055
  },
12058
12056
  item: {
12059
- normal: "group-hover/item:bg-fill-hovered bg-fill-default group-active/item:bg-fill-pressed group-aria-selected/item:bg-fill-selected",
12060
- invert: "group-hover/item:bg-fill-invert-hovered group-active/item:bg-fill-invert-pressed bg-fill-invert-default group-aria-selected/item:bg-fill-invert-selected",
12057
+ normal: "group-hover/item:bg-fill-hovered bg-fill-default group-active/item:bg-fill-pressed group-data-[focused=true]/item:bg-fill-selected",
12058
+ invert: "group-hover/item:bg-fill-invert-hovered group-active/item:bg-fill-invert-pressed bg-fill-invert-default group-data-[focused=true]/item:bg-fill-invert-selected",
12061
12059
  },
12062
12060
  option: {
12063
- normal: "group-hover/option:bg-fill-hovered bg-fill-default group-active/option:bg-fill-pressed group-aria-selected/option:bg-fill-selected",
12064
- invert: "group-hover/option:bg-fill-invert-hovered group-active/option:bg-fill-invert-pressed bg-fill-invert-default group-aria-selected/option:bg-fill-invert-selected",
12061
+ normal: "group-hover/option:bg-fill-hovered bg-fill-default group-active/option:bg-fill-pressed group-data-[focused=true]/option:bg-fill-selected",
12062
+ invert: "group-hover/option:bg-fill-invert-hovered group-active/option:bg-fill-invert-pressed bg-fill-invert-default group-data-[focused=true]/option:bg-fill-invert-selected",
12065
12063
  },
12066
12064
  tab: {
12067
- normal: "group-hover/tab:bg-fill-hovered bg-fill-default group-active/tab:bg-fill-pressed group-aria-selected/tab:bg-fill-selected",
12068
- invert: "group-hover/tab:bg-fill-invert-hovered group-active/tab:bg-fill-invert-pressed bg-fill-invert-default group-aria-selected/tab:bg-fill-invert-selected",
12065
+ normal: "group-hover/tab:bg-fill-hovered bg-fill-default group-active/tab:bg-fill-pressed group-data-[focused=true]/tab:bg-fill-selected",
12066
+ invert: "group-hover/tab:bg-fill-invert-hovered group-active/tab:bg-fill-invert-pressed bg-fill-invert-default group-data-[focused=true]/tab:bg-fill-invert-selected",
12069
12067
  },
12070
12068
  chip: {
12071
- normal: "group-hover/chip:bg-fill-hovered bg-fill-default group-active/chip:bg-fill-pressed group-aria-selected/chip:bg-fill-selected",
12072
- invert: "group-hover/chip:bg-fill-invert-hovered group-active/chip:bg-fill-invert-pressed bg-fill-invert-default group-aria-selected/chip:bg-fill-invert-selected",
12069
+ normal: "group-hover/chip:bg-fill-hovered bg-fill-default group-active/chip:bg-fill-pressed group-data-[focused=true]/chip:bg-fill-selected",
12070
+ invert: "group-hover/chip:bg-fill-invert-hovered group-active/chip:bg-fill-invert-pressed bg-fill-invert-default group-data-[focused=true]/chip:bg-fill-invert-selected",
12073
12071
  },
12074
12072
  state: {
12075
- normal: "group-hover/state:bg-fill-hovered bg-fill-default group-active/state:bg-fill-pressed group-aria-selected/state:bg-fill-selected",
12076
- invert: "group-hover/state:bg-fill-invert-hovered group-active/state:bg-fill-invert-pressed bg-fill-invert-default group-aria-selected/state:bg-fill-invert-selected",
12073
+ normal: "group-hover/state:bg-fill-hovered bg-fill-default group-active/state:bg-fill-pressed group-data-[focused=true]/state:bg-fill-selected",
12074
+ invert: "group-hover/state:bg-fill-invert-hovered group-active/state:bg-fill-invert-pressed bg-fill-invert-default group-data-[focused=true]/state:bg-fill-invert-selected",
12077
12075
  },
12078
12076
  };
12079
12077
  const group = groupName || "state";
@@ -12082,6 +12080,9 @@ const StateColorContainer = ({ groupName = "state", isInverted, className, }) =>
12082
12080
  return (jsx("div", { className: cn("absolute left-0 top-0 right-0 bottom-0 inset-0 pointer-events-none z-0 rounded-[inherit]", actionClass, className) }));
12083
12081
  };
12084
12082
 
12083
+ const RADIO_GROUP_ORIENTAIONS = {
12084
+ HORIZONTAL: "horizontal"};
12085
+
12085
12086
  const RadioGroupContext = createContext({ value: "", disabled: false });
12086
12087
  /**
12087
12088
  * 라디오 버튼 그룹을 생성하는 컴포넌트입니다.<br/>
@@ -12107,9 +12108,42 @@ const RadioGroup = forwardRef(({ className, orientation = "vertical", ...rest },
12107
12108
  const RadioItem = forwardRef(({ label, labelClassName, wrapperClassName, ...rest }, ref) => {
12108
12109
  const { id, value, disabled, className, ...restProps } = rest;
12109
12110
  const randomId = id ?? useId$1();
12111
+ const internalRef = useRef(null);
12110
12112
  const isSelected = useContext(RadioGroupContext).value === value;
12111
12113
  const isDisabled = useContext(RadioGroupContext).disabled || disabled || false;
12112
- return (jsxs("div", { className: cn("flex items-center gap-1.5 cursor-pointer bg-transparent border-none py-1 pr-2 group/state relative", wrapperClassName), children: [jsx(Item2, { ...restProps, id: randomId, ref: ref, value: value, disabled: isDisabled, className: cn("bg-transparent border-none p-1.5 flex items-center outline-none justify-center cursor-pointer", className), children: isDisabled ? (jsx(CircleBackslashIcon, { className: "text-comp-disabled" })) : isSelected ? (jsx(RadiobuttonIcon, { className: "text-comp-mono-default" })) : (jsx(CircleIcon, { className: "text-comp-mono-default" })) }), label && (jsx("label", { className: cn("text-body leading-body-compact text-comp-mono-default font-medium cursor-pointer", isDisabled && "text-comp-disabled cursor-default", labelClassName), htmlFor: randomId, children: label })), jsx(StateColorContainer, { className: cn(isDisabled &&
12114
+ // ref를 callback ref 병합
12115
+ const setRef = useCallback((node) => {
12116
+ internalRef.current = node;
12117
+ if (typeof ref === "function") {
12118
+ ref(node);
12119
+ }
12120
+ else if (ref) {
12121
+ ref.current = node;
12122
+ }
12123
+ }, [ref]);
12124
+ // 모든 radio item이 Tab 키로 focus를 받을 수 있도록 tabIndex={0} 설정
12125
+ // Radix UI가 내부적으로 tabindex를 관리할 수 있으므로 MutationObserver로 변경 감지
12126
+ useEffect(() => {
12127
+ const el = internalRef.current;
12128
+ if (!el || isDisabled)
12129
+ return;
12130
+ // 포커스 가능하도록 강제
12131
+ el.tabIndex = 0;
12132
+ // Radix가 roving focus로 tabindex를 변경하는 상황 되돌리기
12133
+ const observer = new MutationObserver((mutations) => {
12134
+ for (const m of mutations) {
12135
+ if (m.attributeName === "tabindex" && el.tabIndex !== 0) {
12136
+ el.tabIndex = 0;
12137
+ }
12138
+ }
12139
+ });
12140
+ observer.observe(el, {
12141
+ attributes: true,
12142
+ attributeFilter: ["tabindex"],
12143
+ });
12144
+ return () => observer.disconnect();
12145
+ }, [isDisabled]);
12146
+ return (jsxs("div", { className: cn("flex items-center gap-1.5 cursor-pointer bg-transparent border-none py-1 pr-2 group/state relative", wrapperClassName), children: [jsx(Item2, { ...restProps, id: randomId, ref: setRef, value: value, disabled: isDisabled, tabIndex: isDisabled ? -1 : 0, className: cn("bg-transparent border-none p-1.5 flex items-center outline-none justify-center cursor-pointer focus-visible:outline focus-visible:outline-solid focus-visible:outline-offset-2 focus-visible:outline-border-focused rounded-full", className), children: isDisabled ? (jsx(CircleBackslashIcon, { className: "text-comp-disabled" })) : isSelected ? (jsx(RadiobuttonIcon, { className: "text-comp-mono-default" })) : (jsx(CircleIcon, { className: "text-comp-mono-default" })) }), label && (jsx("label", { className: cn("text-body leading-body-compact text-comp-mono-default font-medium cursor-pointer", isDisabled && "text-comp-disabled cursor-default", labelClassName), htmlFor: randomId, children: label })), jsx(StateColorContainer, { className: cn(isDisabled &&
12113
12147
  "bg-fill-disabled group-hover/state:bg-fill-disabled group-active/state:bg-fill-disabled") })] }));
12114
12148
  });
12115
12149
  RadioGroup.displayName = "RadioGroup";
@@ -12334,7 +12368,13 @@ const Checkbox = forwardRef(({ label, labelClassName, wrapperClassName, ...rest
12334
12368
  const newValue = !currentChecked;
12335
12369
  onCheckedChange(newValue);
12336
12370
  };
12337
- return (jsxs("div", { className: cn("flex items-center gap-2.5 pl-1.5 py-1 relative group/state", !label ? "pr-1.5 rounded-sm" : "pr-3 rounded-lg", !disabled && "cursor-pointer", wrapperClassName), onClick: handleWrapperClick, children: [jsx(Checkbox$1, { ref: ref, id: id ?? randomId, ...rest, checked: defaultChecked ? checked : isChecked, className: cn("size-4 p-0 cursor-pointer border-transparent bg-transparent", className), onCheckedChange: onCheckedChange, children: renderCheckboxIcon(defaultChecked ? checked : isChecked, disabled) }), label && (jsx("label", { className: cn("text-body leading-body-compact text-comp-mono-default font-medium cursor-pointer", disabled && "text-comp-disabled cursor-default", labelClassName), htmlFor: id ?? randomId, "aria-disabled": disabled, children: label })), jsx(StateColorContainer, { className: cn(disabled
12371
+ const getAriaChecked = (defaultChecked, checked, isChecked) => {
12372
+ const value = defaultChecked ? checked : isChecked;
12373
+ if (value === "indeterminate")
12374
+ return "mixed";
12375
+ return value;
12376
+ };
12377
+ return (jsxs("div", { className: cn("flex items-center gap-2.5 pl-1.5 py-1 relative group/state", !label ? "pr-1.5 rounded-sm" : "pr-3 rounded-lg", !disabled && "cursor-pointer", wrapperClassName), onClick: handleWrapperClick, children: [jsx(Checkbox$1, { ref: ref, id: id ?? randomId, ...rest, checked: defaultChecked ? checked : isChecked, "aria-checked": getAriaChecked(!!defaultChecked, checked, isChecked), className: cn("size-4 p-0 cursor-pointer border-transparent bg-transparent focus-visible:outline focus-visible:outline-offset-2 focus-visible:outline-border-focused focus-visible:outline-solid rounded-sm", className), onCheckedChange: onCheckedChange, children: renderCheckboxIcon(defaultChecked ? checked : isChecked, disabled) }), label && (jsx("label", { className: cn("text-body leading-body-compact text-comp-mono-default font-medium cursor-pointer", disabled && "text-comp-disabled cursor-default", labelClassName), htmlFor: id ?? randomId, "aria-disabled": disabled, children: label })), jsx(StateColorContainer, { className: cn(disabled
12338
12378
  ? "bg-fill-default group-hover/state:bg-fill-default group-active/state:bg-fill-default"
12339
12379
  : "") })] }));
12340
12380
  });
@@ -12418,6 +12458,33 @@ const DialogBody = ({ className, ...rest }) => {
12418
12458
  return jsx(CardContent, { className: className, children: rest.children });
12419
12459
  };
12420
12460
 
12461
+ /**
12462
+ * 전역 포커스 가시성 제어 훅
12463
+ *
12464
+ * - 마우스 클릭 시: body.using-mouse 추가 → outline 제거
12465
+ * - Tab 키로 이동 시: using-mouse 제거 → outline 정상 표시
12466
+ *
12467
+ * Telepix-UI의 focus-visible outline 정책을 보완하기 위해 사용.
12468
+ */
12469
+ function useFocusVisibleMode() {
12470
+ useEffect(() => {
12471
+ const handleMouseDown = () => {
12472
+ document.body.classList.add("using-mouse");
12473
+ };
12474
+ const handleKeyDown = (e) => {
12475
+ if (e.key === "Tab") {
12476
+ document.body.classList.remove("using-mouse");
12477
+ }
12478
+ };
12479
+ window.addEventListener("mousedown", handleMouseDown);
12480
+ window.addEventListener("keydown", handleKeyDown);
12481
+ return () => {
12482
+ window.removeEventListener("mousedown", handleMouseDown);
12483
+ window.removeEventListener("keydown", handleKeyDown);
12484
+ };
12485
+ }, []);
12486
+ }
12487
+
12421
12488
  const SELECT_TRIGGER_VARIANTS = {
12422
12489
  OUTLINE: "outline",
12423
12490
  GHOST: "ghost",
@@ -12442,19 +12509,20 @@ const SELECT_TRIGGER_SIZES = {
12442
12509
  * <Select>
12443
12510
  * <SelectTrigger placeholder="Select an option" />
12444
12511
  * <SelectContent>
12445
- * <SelectItem value="option1">Option 1</SelectItem>
12446
- * <SelectItem value="option2">Option 2</SelectItem>
12447
- * <SelectItem value="option3">Option 3</SelectItem>
12512
+ * <SelectItem value="option1" textValue="Option 1"></SelectItem>
12513
+ * <SelectItem value="option2" textValue="Option 2"></SelectItem>
12514
+ * <SelectItem value="option3" textValue="Option 3"></SelectItem>
12448
12515
  * </SelectContent>
12449
12516
  * </Select>
12450
12517
  */
12451
12518
  const Select = (props) => jsx(Root2, { ...props });
12452
12519
  const SelectTrigger = ({ placeholder, textValue, variant = "outline", size = "regular", icon, ...rest }) => {
12453
12520
  const { className, ...otherProps } = rest;
12454
- return (jsxs(Trigger$1, { className: cn("relative group/state flex items-center justify-between w-full bg-page-l-null outline-none cursor-pointer text-comp-mono-default data-[placeholder]:not-disabled:text-comp-mono-subtle-default data-disabled:text-comp-disabled rounded-md", variant === SELECT_TRIGGER_VARIANTS.OUTLINE &&
12455
- "border border-border-bound [&:not(:is([data-placeholder]))]:border-border-focused data-disabled:border-transparent py-0 px-2", variant === SELECT_TRIGGER_VARIANTS.GHOST &&
12456
- "border border-transparent py-0 px-2 [&:not(:is([data-placeholder]))]:border-border-focused data-disabled:border-transparent", variant === SELECT_TRIGGER_VARIANTS.FILLED &&
12457
- "border border-transparent py-0 px-2 bg-page-l3 [&:not(:is([data-placeholder]))]:border-border-focused [&:not(:is([data-placeholder]))]:bg-page-l2 data-disabled:border-transparent data-disabled:bg-page-l-null", size === SELECT_TRIGGER_SIZES.COMPACT &&
12521
+ useFocusVisibleMode();
12522
+ return (jsxs(Trigger$1, { className: cn("select-trigger-focus-visible relative group/state flex items-center justify-between w-full bg-page-l-null outline-none cursor-pointer text-comp-mono-default data-[placeholder]:not-disabled:text-comp-mono-subtle-default data-disabled:text-comp-disabled rounded-md focus:outline-none focus-visible:outline focus-visible:outline-offset-2 focus-visible:outline-border-focused focus-visible:outline-solid", variant === SELECT_TRIGGER_VARIANTS.OUTLINE &&
12523
+ "border border-border-bound data-[state='open']:border-border-focused data-disabled:border-transparent py-0 px-2", variant === SELECT_TRIGGER_VARIANTS.GHOST &&
12524
+ "border border-transparent py-0 px-2 data-[state='open']:border-border-focused data-disabled:border-transparent", variant === SELECT_TRIGGER_VARIANTS.FILLED &&
12525
+ "border border-transparent py-0 px-2 bg-page-l3 data-[state='open']:border-border-focused data-[state='open']:bg-page-l2 data-disabled:border-transparent data-disabled:bg-page-l-null", size === SELECT_TRIGGER_SIZES.COMPACT &&
12458
12526
  "py-1.5 px-1 text-label font-medium leading-label-compact gap-1", size === SELECT_TRIGGER_SIZES.REGULAR &&
12459
12527
  "py-1.5 px-2 text-body font-medium leading-body-compact gap-2", size === SELECT_TRIGGER_SIZES.LARGE &&
12460
12528
  "py-3 px-4 text-base leading-base-compact font-medium gap-3", className), ...otherProps, children: [icon && jsx("div", { className: "flex items-center justify-center", children: icon }), jsx(Value, { placeholder: placeholder, asChild: !!textValue, children: textValue && jsx("span", { children: textValue }) }), jsx(Icon$1, { className: "flex items-center justify-center text-comp-mono-default group-disabled/state:text-comp-disabled", children: jsx(CaretDownIcon, {}) }), jsx(StateColorContainer, { className: "group-data-disabled/state:bg-fill-default" })] }));
@@ -12472,8 +12540,19 @@ const SelectSeparator = (props) => {
12472
12540
  };
12473
12541
  const SelectItem = ({ indicator, ...rest }) => {
12474
12542
  const { className, textValue, ...otherProps } = rest;
12475
- return (jsxs(Item, { className: cn(`relative group/state flex items-center justify-between gap-2 py-1.5 px-2 cursor-pointer text-comp-mono-default text-body font-medium leading-body-compact outline-none rounded-sm
12476
- [&:is([data-disabled])]:text-comp-disabled [&:is([data-disabled])]:cursor-not-allowed
12543
+ return (jsxs(Item, { className: cn(`select-item-focus-visible relative group/state flex items-center justify-between gap-2 py-1.5 px-2 rounded-sm cursor-pointer text-body font-medium text-comp-mono-default outline-none
12544
+ [&:is([data-disabled])]:cursor-not-allowed
12545
+ [&:is([data-disabled])]:text-comp-disabled
12546
+ focus:outline-none
12547
+ focus-visible:outline-none
12548
+ focus-visible:[&::after]:content-['']
12549
+ focus-visible:[&::after]:absolute
12550
+ focus-visible:[&::after]:inset-0
12551
+ focus-visible:[&::after]:rounded-[inherit]
12552
+ focus-visible:[&::after]:border
12553
+ focus-visible:[&::after]:border-border-focused
12554
+ focus-visible:[&::after]:pointer-events-none
12555
+ focus-visible:[&::after]:z-10
12477
12556
  `, className), ...otherProps, children: [jsx(ItemText, { children: textValue ?? otherProps.value }), indicator && (jsx(ItemIndicator, { className: "w-4 flex items-center justify-center", children: indicator })), jsx(StateColorContainer, { className: "group-data-disabled/state:bg-fill-default" })] }));
12478
12557
  };
12479
12558
  Select.displayName = "Select";
@@ -12513,7 +12592,7 @@ const VerticalMenus = forwardRef(({ disabled, value, onValueChange, className, .
12513
12592
  });
12514
12593
  const VerticalMenu = forwardRef(({ disabled, value, label, icon, variant = "accent", size = "regular", ...rest }, ref) => {
12515
12594
  const context = useContext(VerticalMenusContext);
12516
- const isSelected = context.value === value;
12595
+ const isFocused = context.value === value;
12517
12596
  const isDisabled = context.disabled || disabled || false;
12518
12597
  const onClick = (e) => {
12519
12598
  if (isDisabled)
@@ -12523,9 +12602,9 @@ const VerticalMenu = forwardRef(({ disabled, value, label, icon, variant = "acce
12523
12602
  context.setSelectedMenu?.(value);
12524
12603
  rest.onClick?.(e);
12525
12604
  };
12526
- return (jsxs("button", { ref: ref, className: cn("group/state relative w-full flex items-center rounded-md text-body leading-body-compact font-medium bg-transparent border-none cursor-pointer data-[selected=true]:font-semibold data-disabled:text-comp-disabled text-comp-mono-default", size === VERTICAL_MENU_SIZES.SMALL && "gap-3 p-1", size === VERTICAL_MENU_SIZES.REGULAR && "gap-[18px] p-2.5", variant === VERTICAL_MENU_VARIANTS.ACCENT &&
12527
- `bg-page-l-null data-[selected=true]:bg-page-accent-l0 data-[selected=true]:text-comp-accent-default`, rest.className), ...rest, disabled: isDisabled, value: value, "data-selected": isSelected, "aria-selected": isSelected, onClick: onClick, children: [icon && (jsx("span", { className: "flex items-center justify-center size-5", children: icon })), label, jsx(StateColorContainer, { className: cn("group-disabled/state:bg-fill-default", variant === VERTICAL_MENU_VARIANTS.ACCENT &&
12528
- "group-aria-selected:bg-fill-default") })] }));
12605
+ return (jsxs("button", { ref: ref, className: cn("group/state relative w-full flex items-center rounded-md text-body leading-body-compact font-medium bg-transparent border-none cursor-pointer data-[focused=true]:font-semibold data-disabled:text-comp-disabled text-comp-mono-default", size === VERTICAL_MENU_SIZES.SMALL && "gap-3 p-1", size === VERTICAL_MENU_SIZES.REGULAR && "gap-[18px] p-2.5", variant === VERTICAL_MENU_VARIANTS.ACCENT &&
12606
+ `bg-page-l-null data-[focused=true]:bg-page-accent-l0 data-[focused=true]:text-comp-accent-default`, rest.className), ...rest, disabled: isDisabled, value: value, "data-focused": isFocused, onClick: onClick, children: [icon && (jsx("span", { className: "flex items-center justify-center size-5", children: icon })), label, jsx(StateColorContainer, { className: cn("group-disabled/state:bg-fill-default", variant === VERTICAL_MENU_VARIANTS.ACCENT &&
12607
+ "group-data-[focused=true]/state:bg-fill-default") })] }));
12529
12608
  });
12530
12609
  VerticalMenu.displayName = "VerticalMenu";
12531
12610
 
@@ -12550,18 +12629,18 @@ const HorizontalTabs = forwardRef(({ disabled, value, onValueChange, className,
12550
12629
  value: selectedTab,
12551
12630
  disabled: disabled ?? false,
12552
12631
  setSelectedTab,
12553
- }, children: jsx("div", { ref: ref, className: cn("flex items-center justify-start w-full", className), ...rest, children: rest.children }) }));
12632
+ }, children: jsx("div", { ref: ref, role: "tablist", "aria-orientation": "horizontal", className: cn("flex items-center justify-start w-full", className), ...rest, children: rest.children }) }));
12554
12633
  });
12555
12634
  const HorizontalTab = forwardRef(({ value, label, className, icon, size = "regular", ...rest }, ref) => {
12556
12635
  const { value: selectedTab, setSelectedTab, disabled, } = useContext(HorizontalTabContext);
12557
- const isSelected = selectedTab === value;
12636
+ const isFocused = selectedTab === value;
12558
12637
  const isDisabled = disabled || rest.disabled;
12559
12638
  const handleClick = () => {
12560
12639
  if (isDisabled)
12561
12640
  return;
12562
12641
  setSelectedTab(value);
12563
12642
  };
12564
- return (jsxs("button", { ref: ref, className: cn("relative group/state p-0 flex flex-col items-center justify-center flex-nowrap text-comp-mono-subtle-default text-body font-medium leading-body-compact bg-transparent border-none cursor-pointer disabled:cursor-not-allowed", isSelected && "font-bold", className), onClick: handleClick, disabled: isDisabled, "data-selected": isSelected, "aria-selected": isSelected, ...rest, children: [jsxs("div", { className: cn("flex items-center justify-center gap-2", size === HORIZONTAL_TAB_SIZES.SMALL && "py-1 px-2", size === HORIZONTAL_TAB_SIZES.REGULAR && "py-2.5 px-2"), children: [icon && (jsx("span", { className: cn("flex items-center justify-center size-5", size === HORIZONTAL_TAB_SIZES.SMALL && "size-4"), children: icon })), label] }), jsx("div", { className: cn("bg-comp-mono-subtle-default mt-[3px] h-[1px] w-full", isSelected && "h-0.5 mt-0.5"), "data-selected": isSelected }), jsx(StateColorContainer, { className: "group-aria-selected/state:bg-fill-default" })] }));
12643
+ return (jsxs("button", { ref: ref, role: "tab", type: "button", className: cn("relative group/state p-0 flex flex-col items-center justify-center flex-nowrap text-comp-mono-subtle-default text-body font-medium leading-body-compact bg-transparent border-none cursor-pointer disabled:cursor-not-allowed focus-visible:outline focus-visible:outline-solid focus-visible:outline-offset-2 focus-visible:outline-border-focused", isFocused && "font-bold", className), onClick: handleClick, disabled: isDisabled, "data-focused": isFocused, "aria-controls": `tabpanel-${value}`, id: `tab-${value}`, tabIndex: isFocused ? 0 : -1, ...rest, children: [jsxs("div", { className: cn("flex items-center justify-center gap-2", size === HORIZONTAL_TAB_SIZES.SMALL && "py-1 px-2", size === HORIZONTAL_TAB_SIZES.REGULAR && "py-2.5 px-2"), children: [icon && (jsx("span", { className: cn("flex items-center justify-center size-5", size === HORIZONTAL_TAB_SIZES.SMALL && "size-4"), children: icon })), label] }), jsx("div", { className: cn("bg-comp-mono-subtle-default mt-[3px] h-[1px] w-full", isFocused && "h-0.5 mt-0.5"), "data-focused": isFocused }), jsx(StateColorContainer, { className: "group-data-[focused=true]/state:bg-fill-default" })] }));
12565
12644
  });
12566
12645
 
12567
12646
  const ModeTabContext = createContext({
@@ -12584,14 +12663,14 @@ const ModeTabs = forwardRef(({ disabled, value, onValueChange, className, ...res
12584
12663
  });
12585
12664
  const ModeTab = forwardRef(({ label, icon, value, className, ...rest }, ref) => {
12586
12665
  const { value: selectedTab, disabled, setSelectedTab, } = useContext(ModeTabContext);
12587
- const isSelected = selectedTab === value;
12666
+ const isFocused = selectedTab === value;
12588
12667
  const isDisabled = disabled || rest.disabled;
12589
12668
  const handleClick = () => {
12590
12669
  if (isDisabled)
12591
12670
  return;
12592
12671
  setSelectedTab(value);
12593
12672
  };
12594
- return (jsxs("button", { ref: ref, className: cn("relative group/state shadow-basic px-2 py-1 flex items-center justify-center gap-2.5 flex-1 text-comp-mono-subtle-default aria-selected:text-comp-mono-default text-body leading-body-compact font-medium cursor-pointer bg-transparent border-none rounded-sm hover:text-comp-mono-subtle-hovered active:text-comp-mono-subtle-pressed", isSelected && "bg-page-l0", isDisabled && "text-comp-disabled cursor-not-allowed", className), "data-selected": isSelected, "aria-selected": isSelected, disabled: isDisabled, onClick: handleClick, ...rest, children: [icon && (jsx("span", { className: "flex items-center justify-center size-5", children: icon })), label, jsx(StateColorContainer, {})] }));
12673
+ return (jsxs("button", { ref: ref, className: cn("relative group/state shadow-basic px-2 py-1 flex items-center justify-center gap-2.5 flex-1 text-comp-mono-subtle-default data-[focused=true]:text-comp-mono-default text-body leading-body-compact font-medium cursor-pointer bg-transparent border-none rounded-sm hover:text-comp-mono-subtle-hovered active:text-comp-mono-subtle-pressed", isFocused && "bg-page-l0", isDisabled && "text-comp-disabled cursor-not-allowed", className), "data-focused": isFocused, disabled: isDisabled, onClick: handleClick, ...rest, children: [icon && (jsx("span", { className: "flex items-center justify-center size-5", children: icon })), label, jsx(StateColorContainer, {})] }));
12595
12674
  });
12596
12675
 
12597
12676
  const TOOLTIP_SHORT_VARIANTS = {
@@ -12631,34 +12710,13 @@ const TooltipHeader = forwardRef((props, ref) => {
12631
12710
  });
12632
12711
  const TooltipDescription = forwardRef((props, ref) => {
12633
12712
  const { className, ...otherProps } = props;
12634
- return (jsx("div", { className: cn("text-body leading-body font-normal text-comp-mono-subtle-default", className), ...otherProps, ref: ref, children: props.children }));
12713
+ return (jsx("div", { className: cn("text-body leading-body font-normal text-inherit", className), ...otherProps, ref: ref, children: props.children }));
12635
12714
  });
12636
12715
  const TooltipFooter = forwardRef((props, ref) => {
12637
12716
  const { className, ...otherProps } = props;
12638
12717
  return (jsx("div", { className: cn("flex items-center justify-between pt-4", className), ...otherProps, ref: ref, children: props.children }));
12639
12718
  });
12640
12719
 
12641
- const Tag = forwardRef(({ icon, value, variant = "filled", size = "regular", className, onDeleteClick, onClick, useSelectedStyle = false, ...props }, ref) => {
12642
- const [isSelected, setIsSelected] = useState(false);
12643
- const handleClick = (event) => {
12644
- if (useSelectedStyle)
12645
- setIsSelected((prev) => !prev);
12646
- onClick?.(event);
12647
- };
12648
- const handleDeleteClick = (event) => {
12649
- event.stopPropagation();
12650
- onDeleteClick?.(value, event);
12651
- };
12652
- return (jsxs("button", { ref: ref, className: cn("flex items-center justify-center rounded-sm bg-transparent relative group/state", variant === "filled" &&
12653
- `bg-page-l4 text-comp-mono-subtle-default data-disabled:text-comp-disabled data-disabled:bg-page-l-null`, variant === "accent" &&
12654
- `bg-page-accent-l0 text-comp-accent-default data-disabled:text-comp-disabled data-disabled:bg-page-l-null`, size === "regular" &&
12655
- "text-body font-medium leading-body-compact px-2 py-1 gap-2", size === "small" &&
12656
- "text-label font-medium leading-label-compact px-1.5 py-0.5 gap-1.5", className), onClick: handleClick, "data-selected": isSelected, "aria-selected": isSelected, ...props, children: [icon && (jsx("span", { className: "flex items-center justify-center size-4 border-none bg-transparent outline-none p-0", children: icon })), jsx("span", { className: "flex-1 text-nowrap overflow-hidden text-ellipsis text-inherit text-size-inherit leading-inherit font-inherit", children: value.label }), onDeleteClick && (jsx("span", { className: "flex items-center justify-center size-4 border-none bg-transparent outline-none p-0 cursor-pointer text-comp-mono-default group-disabled/state:text-comp-disabled", onClick: handleDeleteClick, children: jsx(X, {}) })), jsx(StateColorContainer, { className: cn(useSelectedStyle
12657
- ? ""
12658
- : "group-active/state:bg-fill-default group-active/state:border-transparent group-disabled/state:bg-fill-default"), isInverted: variant === "accent" })] }));
12659
- });
12660
- Tag.displayName = "Tag";
12661
-
12662
12720
  const TEXT_VARIANTS = {
12663
12721
  BOLD3XLARGEBOLD: "bold3XLargeBold",
12664
12722
  BOLD2XLARGEBOLDCOMPACT: "bold2XLargeBoldCompact",
@@ -12907,25 +12965,53 @@ const Input = forwardRef(({ size = "regular", variant = "outlined", leftIcon, ri
12907
12965
  ref.current = node;
12908
12966
  innerRef.current = node;
12909
12967
  };
12910
- return (jsxs(Fragment$1, { children: [jsxs("div", { "aria-disabled": rest.disabled, className: cn("relative group/state flex items-center justify-center rounded-lg border bg-Page-l-null border-border-bound focus-within:border-border-focused has-[input:disabled]:border-transparent", variant === INPUT_VARIANTS.OUTLINED &&
12968
+ const generatedId = useId$1();
12969
+ const inputId = id ?? `input-${generatedId}`;
12970
+ useFocusVisibleMode();
12971
+ return (jsxs(Fragment$1, { children: [jsxs("div", { "aria-disabled": rest.disabled, className: cn("relative group/state flex items-center justify-center rounded-lg border bg-Page-l-null border-border-bound has-[input:disabled]:border-transparent has-input-focus-visible", variant === INPUT_VARIANTS.OUTLINED &&
12911
12972
  "border border-border-bound focus-within:border-border-focused", variant === INPUT_VARIANTS.FILLED &&
12912
- "bg-page-l3 border-transparent focus-within:border-transparent", size === INPUT_SIZES.SMALL &&
12973
+ "bg-page-l3 border-transparent focus-within:border-border-focused", size === INPUT_SIZES.SMALL &&
12913
12974
  "py-1.5 px-2 text-label leading-label-compact font-medium gap-1", size === INPUT_SIZES.REGULAR &&
12914
12975
  "py-1.5 px-2 text-body leading-body-compact font-medium gap-2", size === INPUT_SIZES.LARGE &&
12915
12976
  "py-[11px] px-4 text-base leading-base-compact font-medium gap-3", isError &&
12916
- "border-comp-chroma-error focus-within:border-comp-chroma-error", wrapperClassName), onClick: () => {
12977
+ "border-comp-chroma-error focus-within:border-comp-chroma-error focus-within:outline-comp-chroma-error", wrapperClassName), onClick: () => {
12917
12978
  innerRef.current?.focus();
12918
- }, children: [jsx(StateColorContainer, { className: cn("group-focus-within/state:bg-page-l-null", (!useHoverStyle || rest.disabled) && "hover:bg-fill-default") }), leftIcon && (jsx("div", { className: cn("flex items-center justify-center text-comp-mono-default", isError && "text-comp-chroma-error"), children: leftIcon })), jsx("input", { ref: mergedRef, className: cn("border-none outline-none p-0 flex-1 bg-transparent min-w-0 text-comp-mono-default placeholder:text-comp-mono-subtle-default focus:placeholder:text-comp-mono-subtle-selected disabled:text-comp-disabled disabled:placeholder:text-comp-disabled", useHoverStyle &&
12979
+ }, children: [jsx(StateColorContainer, { className: cn("group-focus-within/state:bg-page-l-null", (!useHoverStyle || rest.disabled) && "hover:bg-fill-default") }), leftIcon && (jsx("div", { className: cn("flex items-center justify-center text-comp-mono-default", isError && "text-comp-chroma-error"), children: leftIcon })), jsx("input", { id: inputId.toString(), ref: mergedRef, "aria-invalid": isError, "aria-describedby": isError && errorMessage
12980
+ ? `${rest.id || "input"}-error`
12981
+ : undefined, className: cn("border-none outline-none p-0 flex-1 bg-transparent min-w-0 text-comp-mono-default placeholder:text-comp-mono-subtle-default focus:placeholder:text-comp-mono-subtle-selected disabled:text-comp-disabled disabled:placeholder:text-comp-disabled focus-visible:outline-none", useHoverStyle &&
12919
12982
  "hover:placeholder:text-comp-mono-subtle-hovered", size === INPUT_SIZES.SMALL &&
12920
12983
  "text-label leading-label-compact font-medium", size === INPUT_SIZES.REGULAR &&
12921
12984
  "text-body leading-body-compact font-medium", size === INPUT_SIZES.LARGE &&
12922
12985
  "text-base leading-base-compact font-medium", isError &&
12923
12986
  "placeholder:text-comp-chroma-error text-comp-chroma-error hover:placeholder:text-comp-error focus:placeholder:text-comp-error", rest.type === "number" &&
12924
12987
  !useIndicator &&
12925
- "[-moz-appearance:_textfield] [&::-webkit-inner-spin-button]:m-0 [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:m-0 [&::-webkit-outer-spin-button]:appearance-none", rest.className), ...rest }), rightIcon && (jsx("div", { className: cn("flex items-center justify-center text-comp-mono-default", isError && "text-comp-chroma-error"), children: rightIcon }))] }), errorMessage && (jsx(Text, { variant: "medLabelMedCompact", className: "text-comp-chroma-error mt-2", children: errorMessage }))] }));
12988
+ "[-moz-appearance:_textfield] [&::-webkit-inner-spin-button]:m-0 [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:m-0 [&::-webkit-outer-spin-button]:appearance-none", rest.className), ...rest }), rightIcon && (jsx("div", { className: cn("flex items-center justify-center text-comp-mono-default", isError && "text-comp-chroma-error"), children: rightIcon }))] }), errorMessage && (jsx(Text, { id: `${inputId}-error`, variant: "medLabelMedCompact", className: "text-comp-chroma-error mt-2", role: "alert", "aria-live": "polite", children: errorMessage }))] }));
12926
12989
  });
12927
12990
  Input.displayName = "Input";
12928
12991
 
12992
+ const Tag = forwardRef(({ icon, value, variant = "filled", size = "regular", className, onDeleteClick, onClick, useSelectedStyle = false, ...props }, ref) => {
12993
+ const [isFocused, setIsFocused] = useState(false);
12994
+ const handleClick = (event) => {
12995
+ if (useSelectedStyle)
12996
+ setIsFocused((prev) => !prev);
12997
+ onClick?.(event);
12998
+ };
12999
+ const handleDeleteClick = (event) => {
13000
+ event.stopPropagation();
13001
+ onDeleteClick?.(value, event);
13002
+ };
13003
+ return (jsxs("button", { ref: ref, className: cn("flex items-center justify-center rounded-sm bg-transparent relative group/state", variant === "filled" &&
13004
+ `bg-page-l4 text-comp-mono-subtle-default data-disabled:text-comp-disabled data-disabled:bg-page-l-null`, variant === "accent" &&
13005
+ `bg-page-accent-l0 text-comp-accent-default data-disabled:text-comp-disabled data-disabled:bg-page-l-null`, size === "regular" &&
13006
+ "text-body font-medium leading-body-compact px-2 py-1 gap-2", size === "small" &&
13007
+ "text-label font-medium leading-label-compact px-1.5 py-0.5 gap-1.5", className), onClick: handleClick, "data-focused": isFocused, ...props, children: [icon && (jsx("span", { className: "flex items-center justify-center size-4 border-none bg-transparent outline-none p-0", children: icon })), jsx("span", { className: cn("flex-1 truncate text-inherit text-size-inherit font-inherit", size === "small" &&
13008
+ "leading-[calc(var(--spacing-label-compact)+3px)]", size === "regular" &&
13009
+ "leading-[calc(var(--spacing-body-compact)+3px)]"), children: value.label }), onDeleteClick && (jsx("span", { className: "flex items-center justify-center size-4 border-none bg-transparent outline-none p-0 cursor-pointer text-inherit group-disabled/state:text-comp-disabled", onClick: handleDeleteClick, children: jsx(X, {}) })), jsx(StateColorContainer, { className: cn(useSelectedStyle
13010
+ ? ""
13011
+ : "group-active/state:bg-fill-default group-active/state:border-transparent group-disabled/state:bg-fill-default"), isInverted: variant === "accent" })] }));
13012
+ });
13013
+ Tag.displayName = "Tag";
13014
+
12929
13015
  const MULTIPLE_SELECT_SIZES = {
12930
13016
  REGULAR: "regular",
12931
13017
  LARGE: "large",
@@ -12971,7 +13057,7 @@ const MultipleSelectTrigger = forwardRef(({ size = "regular", children, ...rest
12971
13057
  setIsOpen(value);
12972
13058
  onClick?.(e);
12973
13059
  };
12974
- return (jsxs("div", { ref: ref, className: cn("relative group/state flex items-center justify-between rounded-lg cursor-pointer border border-border-bound bg-page-l-null text-comp-mono-default aria-selected:border-border-focused", disabled && "border-transparent cursor-not-allowed", size === MULTIPLE_SELECT_SIZES.REGULAR && "py-1.5 px-3 gap-2", size === MULTIPLE_SELECT_SIZES.LARGE && "py-3 pr-4 pl-3 gap-3", className), "data-disabled": disabled, "data-selected": isOpen, "aria-selected": isOpen, onClick: handleTriggerClick, ...otherProps, children: [children, jsx("span", { className: "flex items-center justify-center size-4 text-comp-mono-default", children: jsx(ChevronDown, { size: 16 }) }), jsx(StateColorContainer, { className: "group-aria-selected/state:bg-fill-default" })] }));
13060
+ return (jsxs("div", { ref: ref, className: cn("relative group/state flex items-center justify-between rounded-lg cursor-pointer border border-border-bound bg-page-l-null text-comp-mono-default data-[focused=true]:border-border-focused", disabled && "border-transparent cursor-not-allowed", size === MULTIPLE_SELECT_SIZES.REGULAR && "py-1.5 px-3 gap-2", size === MULTIPLE_SELECT_SIZES.LARGE && "py-3 pr-4 pl-3 gap-3", className), "data-disabled": disabled, "data-focused": isOpen, onClick: handleTriggerClick, ...otherProps, children: [children, jsx("span", { className: "flex items-center justify-center size-4 text-comp-mono-default", children: jsx(ChevronDown, { size: 16 }) }), jsx(StateColorContainer, { className: "group-data-[focused=true]/state:bg-fill-default" })] }));
12975
13061
  });
12976
13062
  const MultipleSelectValue = forwardRef(({ placeholder, className, ...rest }, ref) => {
12977
13063
  const { values, disabled, setSelectedValues } = useContext(MultipleSelectContext);
@@ -13029,18 +13115,18 @@ const MultipleSelectContent = forwardRef(({ useSearch, options: optionsProps, in
13029
13115
  });
13030
13116
  const MultipleSelectItem = forwardRef(({ option, indicator, className, ...rest }, ref) => {
13031
13117
  const { values, setSelectedValues } = useContext(MultipleSelectContext);
13032
- const isSelected = values.some((val) => val.value === option.value);
13118
+ const isFocused = values.some((val) => val.value === option.value);
13033
13119
  const handleClick = (e) => {
13034
13120
  e.stopPropagation();
13035
13121
  if (option.disabled)
13036
13122
  return;
13037
- const newValues = isSelected
13123
+ const newValues = isFocused
13038
13124
  ? values.filter((val) => val.value !== option.value)
13039
13125
  : [...values, option];
13040
13126
  setSelectedValues(newValues);
13041
13127
  };
13042
- return (jsxs("li", { ref: ref, "data-selected": isSelected, "aria-selected": isSelected, "data-disabled": option.disabled, className: cn("group/state relative py-2 px-3 cursor-pointer flex items-center justify-between gap-2 text-body text-comp-mono-default leading-body-compact font-medium rounded-sm", isSelected && "bg-fill-mono-selected text-comp-mono-default", option.disabled &&
13043
- "bg-fill-disabled text-comp-disabled cursor-not-allowed", className), onClick: handleClick, ...rest, children: [jsx("span", { className: "flex-1 overflow-ellipsis overflow-x-hidden whitespace-nowrap text-inherit text-size-inherit leading-inherit font-inherit", children: option.label }), indicator && isSelected && (jsx("span", { className: "flex items-center justify-center size-4", children: indicator })), jsx(StateColorContainer, {})] }));
13128
+ return (jsxs("li", { ref: ref, "data-focused": isFocused, "data-disabled": option.disabled, className: cn("group/state relative py-2 px-3 cursor-pointer flex items-center justify-between gap-2 text-body text-comp-mono-default leading-body-compact font-medium rounded-sm", isFocused && "bg-fill-mono-selected text-comp-mono-default", option.disabled &&
13129
+ "bg-fill-disabled text-comp-disabled cursor-not-allowed", className), onClick: handleClick, ...rest, children: [jsx("span", { className: "flex-1 truncate text-inherit text-size-inherit leading-[calc(var(--spacing-body-compact)+3px)] h-max font-inherit", children: option.label }), indicator && isFocused && (jsx("span", { className: "flex items-center justify-center size-4", children: indicator })), jsx(StateColorContainer, {})] }));
13044
13130
  });
13045
13131
 
13046
13132
  const Table = forwardRef(({ className, ...rest }, ref) => {
@@ -13052,8 +13138,8 @@ const TableHeader = forwardRef(({ className, ...rest }, ref) => {
13052
13138
  const TableBody = forwardRef(({ ...rest }, ref) => {
13053
13139
  return jsx("tbody", { ref: ref, ...rest });
13054
13140
  });
13055
- const TableRow = forwardRef(({ isSelected, shouldLastBorderRender = true, className, ...rest }, ref) => {
13056
- return (jsx("tr", { ref: ref, "data-selected": isSelected, "data-last-border": shouldLastBorderRender, className: cn("border-b border-border-divider hover:bg-fill-hovered", isSelected && "bg-fill-selected", !shouldLastBorderRender && "last:border-b-0", className), ...rest }));
13141
+ const TableRow = forwardRef(({ isFocused, shouldLastBorderRender = true, className, ...rest }, ref) => {
13142
+ return (jsx("tr", { ref: ref, "data-focused": isFocused, "data-last-border": shouldLastBorderRender, className: cn("border-b border-border-divider hover:bg-fill-hovered", isFocused && "bg-fill-selected", !shouldLastBorderRender && "last:border-b-0", className), ...rest }));
13057
13143
  });
13058
13144
  const TableHead = forwardRef(({ className, children, ...rest }, ref) => {
13059
13145
  return (jsx("th", { ref: ref, className: cn("text-body leading-body font-medium py-5 pr-0 pl-9 last:pr-9 align-middle text-comp-mono-subtle-default text-left", className), ...rest, children: jsx("div", { className: "overflow-hidden overflow-ellipsis whitespace-nowrap", children: children }) }));
@@ -13081,15 +13167,40 @@ const DataTable = ({ config, data, emptyMessage, onRowClick, enableSelection = f
13081
13167
  };
13082
13168
  return (jsxs(Table, { className: classNames?.table, ref: refs?.tableRef, children: [jsx(TableHeader, { className: classNames?.header, ref: refs?.headerRef, children: config.map((col) => (jsx(TableHead, { style: { minWidth: col.minWidth, maxWidth: col.maxWidth }, className: classNames?.head, ref: refs?.headRef, children: col.renderHeader
13083
13169
  ? col.renderHeader(col.header, col.headerKey)
13084
- : col.header }, col.header))) }), jsx(TableBody, { className: classNames?.body, ref: refs?.bodyRef, children: rowData.length > 0 ? (rowData.map((item, index) => (jsx(TableRow, { id: item.randomId, onClick: () => handleRowClick(item, item.randomId), isSelected: selectedRow === item.randomId, shouldLastBorderRender: shouldLastBorderRender, className: classNames?.row, ref: refs?.rowRef, children: config.map((col, colIndex) => (jsx(TableCell, { className: classNames?.cell, ref: refs?.cellRef, showTooltip: col.showTooltip, style: { minWidth: col.minWidth, maxWidth: col.maxWidth }, children: col.renderFn(item) || "-" }, colIndex))) }, index)))) : emptyMessage ? (jsx(TableRow, { ref: refs?.rowRef, className: classNames?.row, children: jsx(TableCell, { colSpan: config.length, className: classNames?.cell, ref: refs?.cellRef, children: emptyMessage }) })) : null })] }));
13170
+ : col.header }, col.header))) }), jsx(TableBody, { className: classNames?.body, ref: refs?.bodyRef, children: rowData.length > 0 ? (rowData.map((item, index) => (jsx(TableRow, { id: item.randomId, onClick: () => handleRowClick(item, item.randomId), isFocused: selectedRow === item.randomId, shouldLastBorderRender: shouldLastBorderRender, className: classNames?.row, ref: refs?.rowRef, children: config.map((col, colIndex) => (jsx(TableCell, { className: classNames?.cell, ref: refs?.cellRef, showTooltip: col.showTooltip, style: { minWidth: col.minWidth, maxWidth: col.maxWidth }, children: col.renderFn(item) || "-" }, colIndex))) }, index)))) : emptyMessage ? (jsx(TableRow, { ref: refs?.rowRef, className: classNames?.row, children: jsx(TableCell, { colSpan: config.length, className: classNames?.cell, ref: refs?.cellRef, children: emptyMessage }) })) : null })] }));
13085
13171
  };
13086
13172
 
13087
13173
  const InteractiveListItemContext = createContext({
13088
13174
  disabled: false,
13089
13175
  });
13090
- const InteractiveListItem = forwardRef(({ isSelected, disabled, showHoverActions = true, children, className, ...rest }, ref) => {
13091
- return (jsx(InteractiveListItemContext, { value: { disabled: !!disabled }, children: jsxs("div", { ref: ref, "aria-selected": isSelected, "data-selected": isSelected, "data-disabled": disabled, "data-hover-actions": showHoverActions, className: cn("relative group/wrapper flex items-center gap-1 p-1.5 rounded-sm cursor-pointer text-comp-mono-default bg-page-l-null order border-transparent", isSelected && "bg-fill-mono-selected border-border-selected", disabled &&
13092
- "cursor-not-allowed text-comp-disabled bg-fill-disabled", className), ...rest, children: [children, jsx(StateColorContainer, { groupName: "wrapper" })] }) }));
13176
+ const isInteractiveElement = (target) => {
13177
+ return (target instanceof HTMLElement &&
13178
+ ["BUTTON", "INPUT", "TEXTAREA", "SELECT", "A"].includes(target.tagName));
13179
+ };
13180
+ const InteractiveListItem = forwardRef(({ disabled, isSelected, showHoverActions = true, children, className, onClick, onKeyDown, ...rest }, ref) => {
13181
+ const handleClick = (e) => {
13182
+ if (disabled)
13183
+ return;
13184
+ onClick?.(e);
13185
+ };
13186
+ const handleKeyboardClick = (e) => {
13187
+ if (disabled)
13188
+ return;
13189
+ onKeyDown?.(e);
13190
+ const target = e.target;
13191
+ if (isInteractiveElement(target))
13192
+ return;
13193
+ if (e.key === "Enter" || e.key === " ") {
13194
+ e.preventDefault();
13195
+ onClick?.({
13196
+ ...e,
13197
+ type: "click",
13198
+ });
13199
+ }
13200
+ };
13201
+ return (jsx(InteractiveListItemContext, { value: { disabled: !!disabled }, children: jsxs("div", { ref: ref, role: onClick ? "button" : "listitem", tabIndex: onClick && !disabled ? 0 : undefined, "aria-disabled": disabled, "data-disabled": disabled, "data-selected": isSelected, "data-hover-actions": showHoverActions, className: cn("relative group/wrapper flex items-center gap-1 p-1.5 rounded-sm text-comp-mono-default bg-page-l-null border border-transparent", "data-[disabled=true]:cursor-not-allowed data-[disabled=true]:text-comp-disabled data-[disabled=true]:bg-fill-disabled", onClick &&
13202
+ !disabled &&
13203
+ "cursor-pointer focus-visible:outline focus-visible:outline-offset-2 focus-visible:outline-border-focused focus-visible:outline-solid", isSelected && "bg-fill-selected border-border-selected", className), onClick: handleClick, onKeyDown: onClick && !disabled ? handleKeyboardClick : onKeyDown, ...rest, children: [children, jsx(StateColorContainer, { groupName: "wrapper" })] }) }));
13093
13204
  });
13094
13205
  const InteractiveListItemIcon = forwardRef(({ children, className, ...props }, ref) => {
13095
13206
  return (jsx("span", { className: cn("flex items-center justify-center size-6 p-1", className), ...props, ref: ref, children: children }));
@@ -13128,9 +13239,13 @@ const Calendar = ({ className, classNames, showOutsideDays = true, ...props }) =
13128
13239
  ...classNames,
13129
13240
  }, components: {
13130
13241
  Dropdown: (props) => {
13131
- const { options, className, classNames, components, ...rest } = props;
13132
- const selectedOption = options?.find(({ value }) => value === rest.value);
13133
- return (jsxs("div", { className: cn("group/state flex px-2 py-1 rounded-lg relative cursor-pointer", props["aria-label"]?.includes("Month") ? "w-28" : "w-20"), children: [jsx("select", { ...rest, className: cn("text-body leading-body-compact font-medium text-comp-mono-default focus:outline-none z-[1] opacity-0 appearance-none absolute inset-0 w-full", className), name: props["aria-label"], children: options?.map((option) => (jsx("option", { value: option.value, children: option.label }, option.value))) }), jsxs(Text, { variant: "medBodyMedCompact", className: "flex gap-0.5 items-center justify-end w-full text-comp-mono-default leading-3.5 cursor-pointer", "aria-hidden": true, children: [jsx("span", { className: "inline-block px-1 py-1.5 flex-1 text-right", children: selectedOption?.label }), jsx(ChevronDown, { size: 16 })] }), jsx(StateColorContainer, {})] }));
13242
+ const { options, className, ...rest } = props;
13243
+ return (jsxs(Select, { value: rest.value?.toString(), onValueChange: (value) => {
13244
+ const changeEvent = {
13245
+ target: { value },
13246
+ };
13247
+ rest.onChange?.(changeEvent);
13248
+ }, children: [jsx(SelectTrigger, { variant: "filled", size: "compact", className: cn("px-2 py-1 h-9 gap-1.5 text-body leading-body-compact justify-end", props["aria-label"]?.includes("Month") ? "w-28" : "w-20", className) }), jsx(SelectContent, { className: "max-h-96", children: options?.map((option) => (jsx(SelectItem, { value: option.value.toString(), textValue: option.label, "aria-selected": option.value === rest.value, className: "aria-[selected=true]:bg-fill-selected" }, option.value))) })] }));
13134
13249
  },
13135
13250
  Chevron: (args) => (jsx(ChevronLeft, { ...args, size: 20, "data-orientation": args.orientation, className: "text-comp-mono-default [&:is([data-orientation='right'])]:rotate-180 [&:is([data-orientation='up'])]:rotate-90 [&:is([data-orientation='down'])]:-rotate-90" })),
13136
13251
  }, ...props }));
@@ -13176,25 +13291,25 @@ const Button = forwardRef(({ variant = "accent", size = "regular", fullWidth = f
13176
13291
  if (variant === BUTTON_VARIANTS.TEXT_DIM) {
13177
13292
  return [
13178
13293
  "h-auto py-0.5 px-0 text-body leading-body-compact gap-1.5",
13179
- "bg-page-l-null text-comp-mono-subtle-default hover:text-comp-mono-default aria-selected:text-comp-mono-default disabled:bg-page-l-null disabled:text-comp-disabled disabled:hover:text-comp-disabled",
13294
+ "bg-page-l-null text-comp-mono-subtle-default hover:text-comp-mono-default data-[focused=true]:text-comp-mono-default disabled:bg-page-l-null disabled:text-comp-disabled disabled:hover:text-comp-disabled",
13180
13295
  ];
13181
13296
  }
13182
13297
  const sizeClassName = {
13183
13298
  small: "h-7 py-0 px-1 text-label leading-label-compact gap-1",
13184
13299
  regular: "h-9 py-0 px-2 text-body leading-body-compact gap-1.5",
13185
- large: "h-12 py-0 px-3 text-body leading-body-compact gap-2",
13300
+ large: "h-12 py-0 px-3 text-base leading-base-compact gap-2",
13186
13301
  }[size];
13187
13302
  const variantClassName = {
13188
13303
  accent: "bg-page-accent-l0 disabled:bg-pure-transparent text-comp-accent-default disabled:text-comp-disabled",
13189
- outline: "bg-page-l-null disabled:bg-page-l-null text-comp-mono-default disabled:text-comp-disabled border border-border-bound disabled:border-pure-transparent aria-selected:border-border-selected",
13190
- outline_to_accent: "bg-page-l-null disabled:bg-page-l-null text-comp-mono-default disabled:text-comp-disabled border border-border-bound disabled:border-pure-transparent aria-selected:border-border-selected aria-selected:bg-page-accent-l0 aria-selected:text-comp-accent-default",
13304
+ outline: "bg-page-l-null disabled:bg-page-l-null text-comp-mono-default disabled:text-comp-disabled border border-border-bound disabled:border-pure-transparent data-[focused=true]:border-border-selected",
13305
+ outline_to_accent: "bg-page-l-null disabled:bg-page-l-null text-comp-mono-default disabled:text-comp-disabled border border-border-bound disabled:border-pure-transparent data-[focused=true]:border-border-selected data-[focused=true]:bg-page-accent-l0 data-[focused=true]:text-comp-accent-default",
13191
13306
  ghost: "bg-page-l-null disabled:bg-page-l-null text-comp-mono-default disabled:text-comp-disabled",
13192
13307
  thumbnail_ghost: "bg-page-l-null disabled:bg-fill-disabled text-comp-mono-default disabled:text-comp-disabled",
13193
- ghost_to_accent: "bg-page-l-null disabled:bg-page-l-null text-comp-mono-default disabled:text-comp-disabled aria-selected:bg-page-accent-l0 aria-selected:text-comp-accent-default",
13194
- subtle_filled: "bg-page-l3 disabled:bg-fill-disabled text-comp-mono-subtle-default disabled:text-comp-disabled aria-selected:text-comp-mono-default",
13195
- outline_accent: "bg-page-l-null disabled:bg-page-l-null text-comp-accent-default disabled:text-comp-disabled border border-border-accent-bound disabled:border-pure-transparent aria-selected:border-border-accent-selected",
13308
+ ghost_to_accent: "bg-page-l-null disabled:bg-page-l-null text-comp-mono-default disabled:text-comp-disabled data-[focused=true]:bg-page-accent-l0 data-[focused=true]:text-comp-accent-default",
13309
+ subtle_filled: "bg-page-l3 disabled:bg-fill-disabled text-comp-mono-subtle-default disabled:text-comp-disabled data-[focused=true]:text-comp-mono-default",
13310
+ outline_accent: "bg-page-l-null disabled:bg-page-l-null text-comp-accent-default disabled:text-comp-disabled border border-border-accent-bound disabled:border-pure-transparent data-[focused=true]:border-border-accent-selected",
13196
13311
  ghost_accent: "bg-page-l-null disabled:bg-page-l-null text-comp-accent-default disabled:text-comp-disabled",
13197
- ghost_dim: "bg-page-l-null disabled:bg-page-l-null text-comp-mono-subtle-default disabled:text-comp-disabled aria-selected:text-comp-mono-default",
13312
+ ghost_dim: "bg-page-l-null disabled:bg-page-l-null text-comp-mono-subtle-default disabled:text-comp-disabled data-[focused=true]:text-comp-mono-default",
13198
13313
  text_dim: "", // 위에서 처리되므로 여기서는 빈 문자열
13199
13314
  }[variant];
13200
13315
  return [sizeClassName, variantClassName];
@@ -13213,22 +13328,22 @@ const Button = forwardRef(({ variant = "accent", size = "regular", fullWidth = f
13213
13328
  return "size-5";
13214
13329
  return "size-6"; // 기본값은 regular 크기
13215
13330
  };
13216
- return (jsxs("button", { ref: ref, disabled: disabled ?? isLoading, className: cn("flex group/state items-center justify-center relative box-border m-0 border-transparent outline-none cursor-pointer select-none align-middle appearance-none text-center transition-normal font-medium w-auto rounded-md overflow-hidden pointer-events-auto disabled:pointer-events-none disabled:cursor-not-allowed", ...getClassName(size, variant), fullWidth && "w-full", className), ...rest, children: [variant !== BUTTON_VARIANTS.TEXT_DIM && (jsx(StateColorContainer, { isInverted: variant === BUTTON_VARIANTS.ACCENT, className: stateContainerClassName })), isLoading && (jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: cn("lucide lucide-loader-circle-icon lucide-loader-circle absolute animate-spin", size === BUTTON_SIZES.SMALL &&
13331
+ return (jsxs("button", { ref: ref, disabled: disabled ?? isLoading, "aria-busy": isLoading, "aria-disabled": disabled ?? isLoading, "aria-pressed": rest["aria-pressed"], className: cn("flex group/state items-center justify-center relative box-border m-0 border-transparent outline-none border cursor-pointer select-none align-middle appearance-none text-center transition-normal font-medium w-auto rounded-md pointer-events-auto disabled:pointer-events-none disabled:cursor-not-allowed focus-visible:outline focus-visible:outline-solid focus-visible:outline-offset-2 focus-visible:outline-border-focused", ...getClassName(size, variant), fullWidth && "w-full", className), ...rest, children: [variant !== BUTTON_VARIANTS.TEXT_DIM && (jsx(StateColorContainer, { isInverted: variant === BUTTON_VARIANTS.ACCENT, className: cn("-inset-px", stateContainerClassName) })), isLoading && (jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: cn("lucide lucide-loader-circle-icon lucide-loader-circle absolute animate-spin", size === BUTTON_SIZES.SMALL &&
13217
13332
  "size-4 top-[calc(50%-8px)] left-[calc(50%-8px)]", size === BUTTON_SIZES.REGULAR &&
13218
13333
  "size-5 top-[calc(50%-10px)] left-[calc(50%-10px)]", size === BUTTON_SIZES.LARGE &&
13219
13334
  "size-6 top-[calc(50%-12px)] left-[calc(50%-12px)]"), children: jsx("path", { d: "M21 12a9 9 0 1 1-6.219-8.56" }) })), leftIcon && (jsx("div", { className: cn("flex items-center justify-center relative", variant === BUTTON_VARIANTS.THUMBNAIL_GHOST &&
13220
- "aspect-square [&_img]:rounded-sm", getThumbnailSize(variant, size)), children: leftIcon })), children && (jsx("div", { className: "flex-1", style: { visibility: isLoading ? "hidden" : "visible" }, children: children })), rightIcon && (jsx("div", { className: cn("flex items-center justify-center relative", getThumbnailSize(variant, size)), children: rightIcon }))] }));
13335
+ "aspect-square [&_img]:rounded-sm", getThumbnailSize(variant, size)), children: leftIcon })), children && (jsx("div", { className: "flex-1 truncate", style: { visibility: isLoading ? "hidden" : "visible" }, children: children })), rightIcon && (jsx("div", { className: cn("flex items-center justify-center relative", getThumbnailSize(variant, size)), children: rightIcon }))] }));
13221
13336
  });
13222
13337
  Button.displayName = "Button";
13223
13338
  /**
13224
13339
  * Text Dim 스타일의 버튼 컴포넌트입니다.<br/>
13225
13340
  * 텍스트 중심의 보조 액션(secondary / subtle action)에 적합한 low-emphasis 스타일을 제공합니다.<br/>
13226
- * 기본적으로 낮은 명도의 텍스트를 사용하며, hover 시 명도가 상승하고 selected 시 accent 색상으로 강조됩니다.<br/>
13341
+ * 기본적으로 낮은 명도의 텍스트를 사용하며, hover 시 명도가 상승하고 focused 시 accent 색상으로 강조됩니다.<br/>
13227
13342
  * <br/>
13228
13343
  * ### 사용 예시
13229
13344
  * ```tsx
13230
13345
  * <ButtonTextDim>자세히 보기</ButtonTextDim>
13231
- * <ButtonTextDim aria-selected="true">선택됨</ButtonTextDim>
13346
+ * <ButtonTextDim data-focused="true">포커스됨</ButtonTextDim>
13232
13347
  * ```
13233
13348
  */
13234
13349
  const ButtonTextDim = forwardRef((props, ref) => {
@@ -13392,8 +13507,8 @@ const DatePicker = ({ size = "regular", placeholder = DEFAULT_PLACEHOLDER, forma
13392
13507
  }
13393
13508
  return placeholder ?? "";
13394
13509
  };
13395
- return (jsxs(Root2$2, { open: displayOpen, onOpenChange: handleOpenChange, children: [jsx(Trigger$2, { asChild: true, children: jsx(Button, { size: size, fullWidth: true, variant: "outline", leftIcon: jsx(Calendar$1, { size: 20 }), className: "justify-start", "aria-selected": displayOpen, "aria-label": `Date picker, ${getDateToFormatString(displayValue) || placeholder}`, disabled: disabled, stateContainerClassName: displayOpen
13396
- ? "group-aria-selected/state:bg-fill-default"
13510
+ return (jsxs(Root2$2, { open: displayOpen, onOpenChange: handleOpenChange, children: [jsx(Trigger$2, { asChild: true, children: jsx(Button, { size: size, fullWidth: true, variant: "outline", leftIcon: jsx(Calendar$1, { size: 20 }), className: "justify-start", "data-focused": displayOpen, "aria-label": `Date picker, ${getDateToFormatString(displayValue) || placeholder}`, disabled: disabled, stateContainerClassName: displayOpen
13511
+ ? "group-data-[focused=true]/state:bg-fill-default"
13397
13512
  : undefined, children: getDateToFormatString(displayValue) }) }), jsx(Content2$2, { sideOffset: 10, align: "start", className: cn("z-10", popoverContentClassName), ...rest, children: mode === CALENDAR_MODES.SINGLE ? (jsx(Calendar, { mode: "single", ...rest, selected: displayValue, onSelect: handleSelect, disabled: isCalendarDisabled, defaultMonth: defaultMonth })) : mode === CALENDAR_MODES.MULTIPLE ? (jsx(Calendar, { mode: "multiple", ...rest, selected: Array.isArray(displayValue) ? displayValue : [], onSelect: handleSelect, disabled: isCalendarDisabled, defaultMonth: defaultMonth })) : (jsx(Calendar, { mode: "range", ...rest, selected: displayValue, onSelect: handleSelect, disabled: isCalendarDisabled, defaultMonth: defaultMonth })) })] }));
13398
13513
  };
13399
13514
 
@@ -13428,7 +13543,7 @@ const ContextMenuItemIndicator = (props) => {
13428
13543
 
13429
13544
  const AutocompleteContentItem = ({ inputValue, item, index, displayValue, highlightedIndex, onClick, className = "", }) => {
13430
13545
  const isHighlighted = index === highlightedIndex;
13431
- return (jsx("li", { id: `suggestion-item-${index}`, className: cn("rounded-sm p-2 text-comp-mono-default text-body leading-body-compact font-medium list-none hover:bg-fill-hovered", isHighlighted && "bg-fill-selected", className), onClick: (e) => onClick(item, e), role: "option", "aria-selected": isHighlighted, children: displayValue(item)
13546
+ return (jsx("li", { id: `suggestion-item-${index}`, className: cn("rounded-sm p-2 text-comp-mono-default text-body leading-body-compact font-medium list-none hover:bg-fill-hovered", isHighlighted && "bg-fill-selected", className), onClick: (e) => onClick(item, e), role: "option", "data-focused": isHighlighted, children: displayValue(item)
13432
13547
  .split(new RegExp(`(${inputValue.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")})`, "gi"))
13433
13548
  .map((part, i) => part.toLowerCase() === inputValue.toLowerCase() ? (jsx("span", { className: "font-bold text-comp-chroma-error", children: part }, i)) : (jsx("span", { children: part }, i))) }));
13434
13549
  };