motile-ui 1.3.0 → 1.4.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.
Files changed (66) hide show
  1. package/README.md +24 -6
  2. package/dist/components/Accordion/Accordion.css +1 -1
  3. package/dist/components/Badge/Badge.css +1 -1
  4. package/dist/components/Button/Button.css +1 -1
  5. package/dist/components/Checkbox/Checkbox.css +1 -1
  6. package/dist/components/Checkbox/Checkbox.js +7 -5
  7. package/dist/components/Dock/Dock.css +1 -1
  8. package/dist/components/Drawer/Drawer.css +1 -1
  9. package/dist/components/Drawer/Drawer.js +3 -1
  10. package/dist/components/Input/Input.css +1 -1
  11. package/dist/components/Input/Input.d.ts +6 -0
  12. package/dist/components/Input/Input.js +48 -44
  13. package/dist/components/Modal/Modal.css +1 -1
  14. package/dist/components/Modal/Modal.js +53 -51
  15. package/dist/components/NumberFlow/NumberFlow.css +1 -1
  16. package/dist/components/Popover/Popover.css +1 -1
  17. package/dist/components/Popover/Popover.js +77 -80
  18. package/dist/components/Select/Select.css +1 -1
  19. package/dist/components/Select/Select.js +61 -59
  20. package/dist/components/Sheet/Sheet.css +1 -1
  21. package/dist/components/Sheet/Sheet.js +3 -1
  22. package/dist/components/Skeleton/Skeleton.css +1 -1
  23. package/dist/components/SpeedDial/SpeedDial.css +1 -1
  24. package/dist/components/SpeedDial/SpeedDial.js +38 -36
  25. package/dist/components/Switch/Switch.css +1 -1
  26. package/dist/components/Switch/Switch.js +15 -14
  27. package/dist/components/Tab/Tab.css +1 -1
  28. package/dist/components/Textarea/Textarea.css +1 -1
  29. package/dist/components/Textarea/Textarea.d.ts +6 -0
  30. package/dist/components/Textarea/Textarea.js +44 -40
  31. package/dist/components/TimePicker/TimePicker.css +1 -1
  32. package/dist/components/Toast/Toast.css +1 -1
  33. package/dist/components/Tooltip/Tooltip.css +1 -1
  34. package/dist/components/Tooltip/Tooltip.d.ts +2 -1
  35. package/dist/components/Tooltip/Tooltip.js +169 -176
  36. package/dist/hooks/index.d.ts +2 -0
  37. package/dist/hooks/index.js +10 -8
  38. package/dist/hooks/useAutoBlur.d.ts +45 -0
  39. package/dist/hooks/useAutoBlur.js +32 -0
  40. package/dist/hooks/useEscapeKey.d.ts +15 -1
  41. package/dist/hooks/useEscapeKey.js +27 -12
  42. package/dist/hooks/useHistoryClose.js +92 -44
  43. package/dist/hooks/useScrollLock.js +42 -24
  44. package/package.json +1 -1
  45. package/dist/components/Accordion/Accordion.test.d.ts +0 -1
  46. package/dist/components/Badge/Badge.test.d.ts +0 -1
  47. package/dist/components/Button/Button.test.d.ts +0 -1
  48. package/dist/components/Checkbox/Checkbox.test.d.ts +0 -1
  49. package/dist/components/Dock/Dock.test.d.ts +0 -1
  50. package/dist/components/Drawer/Drawer.test.d.ts +0 -1
  51. package/dist/components/Input/Input.test.d.ts +0 -1
  52. package/dist/components/Modal/Modal.test.d.ts +0 -1
  53. package/dist/components/NumberFlow/NumberFlow.test.d.ts +0 -1
  54. package/dist/components/Popover/Popover.test.d.ts +0 -1
  55. package/dist/components/Select/Select.test.d.ts +0 -1
  56. package/dist/components/Sheet/Sheet.test.d.ts +0 -1
  57. package/dist/components/Skeleton/Skeleton.test.d.ts +0 -1
  58. package/dist/components/SpeedDial/SpeedDial.test.d.ts +0 -1
  59. package/dist/components/Switch/Switch.test.d.ts +0 -1
  60. package/dist/components/Tab/Tab.test.d.ts +0 -1
  61. package/dist/components/Textarea/Textarea.test.d.ts +0 -1
  62. package/dist/components/TimePicker/TimePicker.test.d.ts +0 -1
  63. package/dist/components/Toast/Toast.test.d.ts +0 -1
  64. package/dist/components/Tooltip/Tooltip.test.d.ts +0 -1
  65. package/dist/test/setup.d.ts +0 -1
  66. package/dist/test/utils.d.ts +0 -22
@@ -1,13 +1,13 @@
1
- import { jsx as l, jsxs as L } from "react/jsx-runtime";
2
- import n, { useRef as k, useState as O, useEffect as P, useId as h, createContext as V, useContext as q } from "react";
1
+ import { jsx as l, jsxs as K } from "react/jsx-runtime";
2
+ import n, { useRef as L, useState as O, useEffect as P, useId as v, createContext as V, useContext as q } from "react";
3
3
  import { createPortal as z } from "react-dom";
4
4
  import { useClickOutside as A } from "../../hooks/useClickOutside.js";
5
5
  import { useEscapeKey as D } from "../../hooks/useEscapeKey.js";
6
6
  import { useScrollLock as G } from "../../hooks/useScrollLock.js";
7
7
  import { Slot as J } from "../../utils/Slot.js";
8
8
  import './Modal.css';/* empty css */
9
- const v = V(null), m = () => {
10
- const o = q(v);
9
+ const _ = V(null), m = () => {
10
+ const o = q(_);
11
11
  if (!o)
12
12
  throw new Error("Modal compound components must be used within Modal.Root");
13
13
  return o;
@@ -16,7 +16,7 @@ const v = V(null), m = () => {
16
16
  onOpenChange: t,
17
17
  children: e
18
18
  }) => {
19
- const a = h(), d = h(), r = n.useMemo(
19
+ const a = v(), d = v(), r = n.useMemo(
20
20
  () => ({
21
21
  open: o,
22
22
  onOpenChange: t,
@@ -25,8 +25,8 @@ const v = V(null), m = () => {
25
25
  }),
26
26
  [o, t, a, d]
27
27
  );
28
- return /* @__PURE__ */ l(v.Provider, { value: r, children: e });
29
- }, _ = n.forwardRef(
28
+ return /* @__PURE__ */ l(_.Provider, { value: r, children: e });
29
+ }, N = n.forwardRef(
30
30
  ({
31
31
  container: o,
32
32
  variant: t = "scale",
@@ -37,14 +37,14 @@ const v = V(null), m = () => {
37
37
  zIndex: s = 1e3,
38
38
  className: u,
39
39
  onClick: i,
40
- style: $,
40
+ style: g,
41
41
  ...p
42
- }, g) => {
43
- const { open: c, onOpenChange: f } = m(), M = k(null), [S, E] = O(!1);
42
+ }, S) => {
43
+ const { open: c, onOpenChange: f } = m(), M = L(null), [E, T] = O(!1);
44
44
  P(() => {
45
- E(!0);
45
+ T(!0);
46
46
  }, []);
47
- const b = typeof e == "boolean" ? e : e.clickOutside ?? !1, T = typeof e == "boolean" ? e : e.escapeKey ?? !1;
47
+ const b = typeof e == "boolean" ? e : e.clickOutside ?? !1, h = typeof e == "boolean" ? e : e.escapeKey ?? !1;
48
48
  G({
49
49
  enabled: c && !a,
50
50
  allowedSelectors: [".motile-modal__content"]
@@ -56,30 +56,32 @@ const v = V(null), m = () => {
56
56
  enabled: c
57
57
  }), D({
58
58
  handler: () => {
59
- T && f(!1);
59
+ h && f(!1);
60
60
  },
61
- enabled: c
61
+ enabled: c && h,
62
+ stacked: !0
63
+ // 중첩 오버레이에서 ESC는 최상단만 닫는다
62
64
  });
63
65
  const j = (y) => {
64
66
  i == null || i(y), y.target === y.currentTarget && b && f(!1);
65
67
  };
66
- if (!S || !c) return null;
67
- const F = {
68
+ if (!E || !c) return null;
69
+ const k = {
68
70
  zIndex: s,
69
- ...$
70
- }, H = {
71
+ ...g
72
+ }, F = {
71
73
  ...d && { "--modal-width": d },
72
74
  ...r && { "--modal-max-width": r },
73
75
  zIndex: s + 1
74
- }, K = /* @__PURE__ */ l(
76
+ }, H = /* @__PURE__ */ l(
75
77
  "div",
76
78
  {
77
- ref: g,
79
+ ref: S,
78
80
  className: `motile-modal__backdrop ${u || ""}`,
79
81
  "data-state": c ? "open" : "closed",
80
82
  "data-variant": t,
81
83
  onClick: j,
82
- style: F,
84
+ style: k,
83
85
  ...p,
84
86
  children: /* @__PURE__ */ l(
85
87
  "div",
@@ -87,17 +89,17 @@ const v = V(null), m = () => {
87
89
  ref: M,
88
90
  className: "motile-modal",
89
91
  "data-variant": t,
90
- style: H,
92
+ style: F,
91
93
  children: p.children
92
94
  }
93
95
  )
94
96
  }
95
97
  );
96
- return z(K, o || document.body);
98
+ return z(H, o || document.body);
97
99
  }
98
100
  );
99
- _.displayName = "Modal.Overlay";
100
- const N = n.forwardRef(
101
+ N.displayName = "Modal.Overlay";
102
+ const w = n.forwardRef(
101
103
  ({ className: o, forceMount: t, ...e }, a) => {
102
104
  const { open: d, titleId: r, descriptionId: s } = m();
103
105
  return !d && !t ? null : /* @__PURE__ */ l(
@@ -115,8 +117,8 @@ const N = n.forwardRef(
115
117
  );
116
118
  }
117
119
  );
118
- N.displayName = "Modal.Content";
119
- const w = n.forwardRef(
120
+ w.displayName = "Modal.Content";
121
+ const x = n.forwardRef(
120
122
  ({ className: o, ...t }, e) => {
121
123
  const { titleId: a } = m();
122
124
  return /* @__PURE__ */ l(
@@ -130,8 +132,8 @@ const w = n.forwardRef(
130
132
  );
131
133
  }
132
134
  );
133
- w.displayName = "Modal.Title";
134
- const x = n.forwardRef(
135
+ x.displayName = "Modal.Title";
136
+ const R = n.forwardRef(
135
137
  ({ className: o, ...t }, e) => {
136
138
  const { descriptionId: a } = m();
137
139
  return /* @__PURE__ */ l(
@@ -145,8 +147,8 @@ const x = n.forwardRef(
145
147
  );
146
148
  }
147
149
  );
148
- x.displayName = "Modal.Body";
149
- const R = n.forwardRef(
150
+ R.displayName = "Modal.Body";
151
+ const C = n.forwardRef(
150
152
  ({ asChild: o, className: t, onClick: e, children: a, ...d }, r) => {
151
153
  const { onOpenChange: s } = m(), u = (i) => {
152
154
  e == null || e(i), s(!1);
@@ -168,7 +170,7 @@ const R = n.forwardRef(
168
170
  onClick: u,
169
171
  "aria-label": "닫기",
170
172
  ...d,
171
- children: a || /* @__PURE__ */ L(
173
+ children: a || /* @__PURE__ */ K(
172
174
  "svg",
173
175
  {
174
176
  width: "18",
@@ -189,8 +191,8 @@ const R = n.forwardRef(
189
191
  );
190
192
  }
191
193
  );
192
- R.displayName = "Modal.Close";
193
- const C = n.forwardRef(
194
+ C.displayName = "Modal.Close";
195
+ const I = n.forwardRef(
194
196
  ({ className: o, ...t }, e) => /* @__PURE__ */ l(
195
197
  "div",
196
198
  {
@@ -200,8 +202,8 @@ const C = n.forwardRef(
200
202
  }
201
203
  )
202
204
  );
203
- C.displayName = "Modal.Footer";
204
- const I = n.forwardRef(
205
+ I.displayName = "Modal.Footer";
206
+ const $ = n.forwardRef(
205
207
  ({ className: o, ...t }, e) => /* @__PURE__ */ l(
206
208
  "div",
207
209
  {
@@ -211,25 +213,25 @@ const I = n.forwardRef(
211
213
  }
212
214
  )
213
215
  );
214
- I.displayName = "Modal.Header";
216
+ $.displayName = "Modal.Header";
215
217
  const te = {
216
218
  Root: Q,
217
- Overlay: _,
218
- Content: N,
219
- Title: w,
220
- Body: x,
221
- Close: R,
222
- Footer: C,
223
- Header: I
219
+ Overlay: N,
220
+ Content: w,
221
+ Title: x,
222
+ Body: R,
223
+ Close: C,
224
+ Footer: I,
225
+ Header: $
224
226
  };
225
227
  export {
226
228
  te as Modal,
227
- x as ModalBody,
228
- R as ModalClose,
229
- N as ModalContent,
230
- C as ModalFooter,
231
- I as ModalHeader,
232
- _ as ModalOverlay,
229
+ R as ModalBody,
230
+ C as ModalClose,
231
+ w as ModalContent,
232
+ I as ModalFooter,
233
+ $ as ModalHeader,
234
+ N as ModalOverlay,
233
235
  Q as ModalRoot,
234
- w as ModalTitle
236
+ x as ModalTitle
235
237
  };
@@ -1 +1 @@
1
- .motile-number-flow{display:inline-flex;align-items:center;font-variant-numeric:tabular-nums;line-height:1}.motile-number-flow__sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.motile-number-flow__value{display:inline-flex;align-items:center}.motile-number-flow__digit{display:inline-block;height:1em;overflow:hidden;line-height:1;vertical-align:top}.motile-number-flow__digit-column{display:flex;flex-direction:column;will-change:transform;transform:translateZ(0);backface-visibility:hidden}.motile-number-flow__digit-value{display:flex;align-items:center;justify-content:center;height:1em;line-height:1}.motile-number-flow__separator{display:inline-block;line-height:1}@media (prefers-reduced-motion: reduce){.motile-number-flow__digit-column{transition:none!important}}
1
+ :where(.motile-number-flow){display:inline-flex;align-items:center;font-variant-numeric:tabular-nums;line-height:1}:where(.motile-number-flow__sr-only){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:where(.motile-number-flow__value){display:inline-flex;align-items:center}:where(.motile-number-flow__digit){display:inline-block;height:1em;overflow:hidden;line-height:1;vertical-align:top}:where(.motile-number-flow__digit-column){display:flex;flex-direction:column;will-change:transform;transform:translateZ(0);backface-visibility:hidden}:where(.motile-number-flow__digit-value){display:flex;align-items:center;justify-content:center;height:1em;line-height:1}:where(.motile-number-flow__separator){display:inline-block;line-height:1}@media (prefers-reduced-motion: reduce){:where(.motile-number-flow__digit-column){transition:none!important}}
@@ -1 +1 @@
1
- .motile-popover-wrapper{position:relative;display:inline-block}.motile-popover-content{position:absolute;z-index:10;border-radius:12px;font-size:14px;line-height:1.5;padding:12px 16px;box-shadow:0 4px 12px #0000001a;pointer-events:auto;width:max-content;max-width:min(90vw,420px);box-sizing:border-box;overflow:visible;will-change:transform;backface-visibility:hidden}.motile-popover-content--filled{background:var( --motile-popover-color, var(--motile-ui-popover, var(--motile-theme, #3b82f6)) );color:#fff;border:1px solid var( --motile-popover-color, var(--motile-ui-popover, var(--motile-theme, #3b82f6)) )}.motile-popover-content--outlined{background:#fff;color:#111827;border:1px solid var( --motile-popover-color, var(--motile-ui-popover, var(--motile-theme, #e5e7eb)) )}.motile-popover-content[data-placement=top][data-align=start]{bottom:calc(100% + 5.5px);left:0;animation:popover-fade-in-top .2s ease-out}.motile-popover-content[data-placement=top][data-align=center]{bottom:calc(100% + 5.5px);left:50%;transform:translate(-50%);animation:popover-fade-in-top-center .2s ease-out}.motile-popover-content[data-placement=top][data-align=end]{bottom:calc(100% + 5.5px);right:0;animation:popover-fade-in-top .2s ease-out}.motile-popover-content[data-placement=bottom][data-align=start]{top:calc(100% + 5.5px);left:0;animation:popover-fade-in-bottom .2s ease-out}.motile-popover-content[data-placement=bottom][data-align=center]{top:calc(100% + 5.5px);left:50%;transform:translate(-50%);animation:popover-fade-in-bottom-center .2s ease-out}.motile-popover-content[data-placement=bottom][data-align=end]{top:calc(100% + 5.5px);right:0;animation:popover-fade-in-bottom .2s ease-out}.motile-popover-content[data-placement=left][data-align=start]{right:calc(100% + 5.5px);top:0;animation:popover-fade-in-left .2s ease-out}.motile-popover-content[data-placement=left][data-align=center]{right:calc(100% + 5.5px);top:50%;transform:translateY(-50%);animation:popover-fade-in-left-center .2s ease-out}.motile-popover-content[data-placement=left][data-align=end]{right:calc(100% + 5.5px);bottom:0;animation:popover-fade-in-left .2s ease-out}.motile-popover-content[data-placement=right][data-align=start]{left:calc(100% + 5.5px);top:0;animation:popover-fade-in-right .2s ease-out}.motile-popover-content[data-placement=right][data-align=center]{left:calc(100% + 5.5px);top:50%;transform:translateY(-50%);animation:popover-fade-in-right-center .2s ease-out}.motile-popover-content[data-placement=right][data-align=end]{left:calc(100% + 5.5px);bottom:0;animation:popover-fade-in-right .2s ease-out}@keyframes popover-fade-in-top{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes popover-fade-in-top-center{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}@keyframes popover-fade-in-bottom{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes popover-fade-in-bottom-center{0%{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%)}}@keyframes popover-fade-in-left{0%{opacity:0;transform:translate(8px)}to{opacity:1;transform:translate(0)}}@keyframes popover-fade-in-left-center{0%{opacity:0;transform:translate(8px,-50%)}to{opacity:1;transform:translateY(-50%)}}@keyframes popover-fade-in-right{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}@keyframes popover-fade-in-right-center{0%{opacity:0;transform:translate(-8px,-50%)}to{opacity:1;transform:translateY(-50%)}}.motile-popover-content[data-placement=top][data-align=start][data-bounce=true],.motile-popover-content[data-placement=top][data-align=end][data-bounce=true]{animation:popover-bounce-top .7s ease-out;animation-iteration-count:var(--bounce-count, 1)}.motile-popover-content[data-placement=top][data-align=center][data-bounce=true]{animation:popover-bounce-top-center .7s ease-out;animation-iteration-count:var(--bounce-count, 1)}.motile-popover-content[data-placement=bottom][data-align=start][data-bounce=true],.motile-popover-content[data-placement=bottom][data-align=end][data-bounce=true]{animation:popover-bounce-bottom .7s ease-out;animation-iteration-count:var(--bounce-count, 1)}.motile-popover-content[data-placement=bottom][data-align=center][data-bounce=true]{animation:popover-bounce-bottom-center .7s ease-out;animation-iteration-count:var(--bounce-count, 1)}.motile-popover-content[data-placement=left][data-align=start][data-bounce=true],.motile-popover-content[data-placement=left][data-align=end][data-bounce=true]{animation:popover-bounce-left .7s ease-out;animation-iteration-count:var(--bounce-count, 1)}.motile-popover-content[data-placement=left][data-align=center][data-bounce=true]{animation:popover-bounce-left-center .7s ease-out;animation-iteration-count:var(--bounce-count, 1)}.motile-popover-content[data-placement=right][data-align=start][data-bounce=true],.motile-popover-content[data-placement=right][data-align=end][data-bounce=true]{animation:popover-bounce-right .7s ease-out;animation-iteration-count:var(--bounce-count, 1)}.motile-popover-content[data-placement=right][data-align=center][data-bounce=true]{animation:popover-bounce-right-center .7s ease-out;animation-iteration-count:var(--bounce-count, 1)}@keyframes popover-bounce-top{0%,to{transform:translateY(0)}30%{transform:translateY(-10px)}50%{transform:translateY(0)}65%{transform:translateY(-3px)}80%{transform:translateY(0)}}@keyframes popover-bounce-top-center{0%,to{transform:translate(-50%)}30%{transform:translate(-50%,-10px)}50%{transform:translate(-50%)}65%{transform:translate(-50%,-3px)}80%{transform:translate(-50%)}}@keyframes popover-bounce-bottom{0%,to{transform:translateY(0)}30%{transform:translateY(10px)}50%{transform:translateY(0)}65%{transform:translateY(3px)}80%{transform:translateY(0)}}@keyframes popover-bounce-bottom-center{0%,to{transform:translate(-50%)}30%{transform:translate(-50%,10px)}50%{transform:translate(-50%)}65%{transform:translate(-50%,3px)}80%{transform:translate(-50%)}}@keyframes popover-bounce-left{0%,to{transform:translate(0)}30%{transform:translate(-10px)}50%{transform:translate(0)}65%{transform:translate(-3px)}80%{transform:translate(0)}}@keyframes popover-bounce-left-center{0%,to{transform:translateY(-50%)}30%{transform:translate(-10px,-50%)}50%{transform:translateY(-50%)}65%{transform:translate(-3px,-50%)}80%{transform:translateY(-50%)}}@keyframes popover-bounce-right{0%,to{transform:translate(0)}30%{transform:translate(10px)}50%{transform:translate(0)}65%{transform:translate(3px)}80%{transform:translate(0)}}@keyframes popover-bounce-right-center{0%,to{transform:translateY(-50%)}30%{transform:translate(10px,-50%)}50%{transform:translateY(-50%)}65%{transform:translate(3px,-50%)}80%{transform:translateY(-50%)}}.motile-popover-arrow{position:absolute;pointer-events:none;z-index:1}.motile-popover-content[data-placement=top] .motile-popover-arrow{bottom:-7.25px;transform:rotate(180deg)}.motile-popover-content[data-placement=top][data-align=start] .motile-popover-arrow{left:20px}.motile-popover-content[data-placement=top][data-align=center] .motile-popover-arrow{left:50%;margin-left:-6px}.motile-popover-content[data-placement=top][data-align=end] .motile-popover-arrow{right:20px}.motile-popover-content[data-placement=bottom] .motile-popover-arrow{top:-7.25px;transform:rotate(0)}.motile-popover-content[data-placement=bottom][data-align=start] .motile-popover-arrow{left:20px}.motile-popover-content[data-placement=bottom][data-align=center] .motile-popover-arrow{left:50%;margin-left:-6px}.motile-popover-content[data-placement=bottom][data-align=end] .motile-popover-arrow{right:20px}.motile-popover-content[data-placement=left] .motile-popover-arrow{right:-9.25px;transform:rotate(90deg)}.motile-popover-content[data-placement=left][data-align=start] .motile-popover-arrow{top:12px}.motile-popover-content[data-placement=left][data-align=center] .motile-popover-arrow{top:50%;margin-top:-4px}.motile-popover-content[data-placement=left][data-align=end] .motile-popover-arrow{bottom:12px}.motile-popover-content[data-placement=right] .motile-popover-arrow{left:-9.25px;transform:rotate(-90deg)}.motile-popover-content[data-placement=right][data-align=start] .motile-popover-arrow{top:12px}.motile-popover-content[data-placement=right][data-align=center] .motile-popover-arrow{top:50%;margin-top:-4px}.motile-popover-content[data-placement=right][data-align=end] .motile-popover-arrow{bottom:12px}
1
+ :where(.motile-popover-wrapper){position:relative;display:inline-block}:where(.motile-popover-content){position:absolute;z-index:10;border-radius:12px;font-size:14px;line-height:1.5;padding:12px 16px;box-shadow:0 4px 12px #0000001a;pointer-events:auto;width:max-content;max-width:min(90vw,420px);box-sizing:border-box;overflow:visible;will-change:transform;backface-visibility:hidden}:where(.motile-popover-content--filled){--arrow-color: var( --motile-popover-color, var(--motile-ui-popover, var(--motile-theme, #3b82f6)) );background:var(--arrow-color);color:#fff;border:1px solid var(--arrow-color)}:where(.motile-popover-content--outlined){--arrow-color: var( --motile-popover-color, var(--motile-ui-popover, var(--motile-theme, #e5e7eb)) );background:#fff;color:#111827;border:1px solid var(--arrow-color)}:where(.motile-popover-content[data-placement=top][data-align=start]){bottom:calc(100% + 5.5px);left:0;animation:popover-fade-in-top .2s ease-out}:where(.motile-popover-content[data-placement=top][data-align=center]){bottom:calc(100% + 5.5px);left:50%;transform:translate(-50%);animation:popover-fade-in-top-center .2s ease-out}:where(.motile-popover-content[data-placement=top][data-align=end]){bottom:calc(100% + 5.5px);right:0;animation:popover-fade-in-top .2s ease-out}:where(.motile-popover-content[data-placement=bottom][data-align=start]){top:calc(100% + 5.5px);left:0;animation:popover-fade-in-bottom .2s ease-out}:where(.motile-popover-content[data-placement=bottom][data-align=center]){top:calc(100% + 5.5px);left:50%;transform:translate(-50%);animation:popover-fade-in-bottom-center .2s ease-out}:where(.motile-popover-content[data-placement=bottom][data-align=end]){top:calc(100% + 5.5px);right:0;animation:popover-fade-in-bottom .2s ease-out}:where(.motile-popover-content[data-placement=left][data-align=start]){right:calc(100% + 5.5px);top:0;animation:popover-fade-in-left .2s ease-out}:where(.motile-popover-content[data-placement=left][data-align=center]){right:calc(100% + 5.5px);top:50%;transform:translateY(-50%);animation:popover-fade-in-left-center .2s ease-out}:where(.motile-popover-content[data-placement=left][data-align=end]){right:calc(100% + 5.5px);bottom:0;animation:popover-fade-in-left .2s ease-out}:where(.motile-popover-content[data-placement=right][data-align=start]){left:calc(100% + 5.5px);top:0;animation:popover-fade-in-right .2s ease-out}:where(.motile-popover-content[data-placement=right][data-align=center]){left:calc(100% + 5.5px);top:50%;transform:translateY(-50%);animation:popover-fade-in-right-center .2s ease-out}:where(.motile-popover-content[data-placement=right][data-align=end]){left:calc(100% + 5.5px);bottom:0;animation:popover-fade-in-right .2s ease-out}@keyframes popover-fade-in-top{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes popover-fade-in-top-center{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}@keyframes popover-fade-in-bottom{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes popover-fade-in-bottom-center{0%{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%)}}@keyframes popover-fade-in-left{0%{opacity:0;transform:translate(8px)}to{opacity:1;transform:translate(0)}}@keyframes popover-fade-in-left-center{0%{opacity:0;transform:translate(8px,-50%)}to{opacity:1;transform:translateY(-50%)}}@keyframes popover-fade-in-right{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}@keyframes popover-fade-in-right-center{0%{opacity:0;transform:translate(-8px,-50%)}to{opacity:1;transform:translateY(-50%)}}:where(.motile-popover-content[data-placement=top][data-align=start][data-bounce=true]),:where(.motile-popover-content[data-placement=top][data-align=end][data-bounce=true]){animation:popover-bounce-top .7s ease-out;animation-iteration-count:var(--bounce-count, 1)}:where(.motile-popover-content[data-placement=top][data-align=center][data-bounce=true]){animation:popover-bounce-top-center .7s ease-out;animation-iteration-count:var(--bounce-count, 1)}:where(.motile-popover-content[data-placement=bottom][data-align=start][data-bounce=true]),:where(.motile-popover-content[data-placement=bottom][data-align=end][data-bounce=true]){animation:popover-bounce-bottom .7s ease-out;animation-iteration-count:var(--bounce-count, 1)}:where(.motile-popover-content[data-placement=bottom][data-align=center][data-bounce=true]){animation:popover-bounce-bottom-center .7s ease-out;animation-iteration-count:var(--bounce-count, 1)}:where(.motile-popover-content[data-placement=left][data-align=start][data-bounce=true]),:where(.motile-popover-content[data-placement=left][data-align=end][data-bounce=true]){animation:popover-bounce-left .7s ease-out;animation-iteration-count:var(--bounce-count, 1)}:where(.motile-popover-content[data-placement=left][data-align=center][data-bounce=true]){animation:popover-bounce-left-center .7s ease-out;animation-iteration-count:var(--bounce-count, 1)}:where(.motile-popover-content[data-placement=right][data-align=start][data-bounce=true]),:where(.motile-popover-content[data-placement=right][data-align=end][data-bounce=true]){animation:popover-bounce-right .7s ease-out;animation-iteration-count:var(--bounce-count, 1)}:where(.motile-popover-content[data-placement=right][data-align=center][data-bounce=true]){animation:popover-bounce-right-center .7s ease-out;animation-iteration-count:var(--bounce-count, 1)}@keyframes popover-bounce-top{0%,to{transform:translateY(0)}30%{transform:translateY(-10px)}50%{transform:translateY(0)}65%{transform:translateY(-3px)}80%{transform:translateY(0)}}@keyframes popover-bounce-top-center{0%,to{transform:translate(-50%)}30%{transform:translate(-50%,-10px)}50%{transform:translate(-50%)}65%{transform:translate(-50%,-3px)}80%{transform:translate(-50%)}}@keyframes popover-bounce-bottom{0%,to{transform:translateY(0)}30%{transform:translateY(10px)}50%{transform:translateY(0)}65%{transform:translateY(3px)}80%{transform:translateY(0)}}@keyframes popover-bounce-bottom-center{0%,to{transform:translate(-50%)}30%{transform:translate(-50%,10px)}50%{transform:translate(-50%)}65%{transform:translate(-50%,3px)}80%{transform:translate(-50%)}}@keyframes popover-bounce-left{0%,to{transform:translate(0)}30%{transform:translate(-10px)}50%{transform:translate(0)}65%{transform:translate(-3px)}80%{transform:translate(0)}}@keyframes popover-bounce-left-center{0%,to{transform:translateY(-50%)}30%{transform:translate(-10px,-50%)}50%{transform:translateY(-50%)}65%{transform:translate(-3px,-50%)}80%{transform:translateY(-50%)}}@keyframes popover-bounce-right{0%,to{transform:translate(0)}30%{transform:translate(10px)}50%{transform:translate(0)}65%{transform:translate(3px)}80%{transform:translate(0)}}@keyframes popover-bounce-right-center{0%,to{transform:translateY(-50%)}30%{transform:translate(10px,-50%)}50%{transform:translateY(-50%)}65%{transform:translate(3px,-50%)}80%{transform:translateY(-50%)}}:where(.motile-popover-arrow){position:absolute;pointer-events:none;z-index:1}:where(.motile-popover-content[data-placement=top] .motile-popover-arrow){bottom:-7.25px;transform:rotate(180deg)}:where(.motile-popover-content[data-placement=top][data-align=start] .motile-popover-arrow){left:20px}:where(.motile-popover-content[data-placement=top][data-align=center] .motile-popover-arrow){left:50%;margin-left:-6px}:where(.motile-popover-content[data-placement=top][data-align=end] .motile-popover-arrow){right:20px}:where(.motile-popover-content[data-placement=bottom] .motile-popover-arrow){top:-7.25px;transform:rotate(0)}:where(.motile-popover-content[data-placement=bottom][data-align=start] .motile-popover-arrow){left:20px}:where(.motile-popover-content[data-placement=bottom][data-align=center] .motile-popover-arrow){left:50%;margin-left:-6px}:where(.motile-popover-content[data-placement=bottom][data-align=end] .motile-popover-arrow){right:20px}:where(.motile-popover-content[data-placement=left] .motile-popover-arrow){right:-9.25px;transform:rotate(90deg)}:where(.motile-popover-content[data-placement=left][data-align=start] .motile-popover-arrow){top:12px}:where(.motile-popover-content[data-placement=left][data-align=center] .motile-popover-arrow){top:50%;margin-top:-4px}:where(.motile-popover-content[data-placement=left][data-align=end] .motile-popover-arrow){bottom:12px}:where(.motile-popover-content[data-placement=right] .motile-popover-arrow){left:-9.25px;transform:rotate(-90deg)}:where(.motile-popover-content[data-placement=right][data-align=start] .motile-popover-arrow){top:12px}:where(.motile-popover-content[data-placement=right][data-align=center] .motile-popover-arrow){top:50%;margin-top:-4px}:where(.motile-popover-content[data-placement=right][data-align=end] .motile-popover-arrow){bottom:12px}
@@ -1,105 +1,105 @@
1
- import { jsxs as $, jsx as g } from "react/jsx-runtime";
2
- import h, { useCallback as R, useId as k, useRef as I, useMemo as N, createContext as j, useContext as E } from "react";
3
- import { useClickOutside as T } from "../../hooks/useClickOutside.js";
1
+ import { jsxs as y, jsx as g } from "react/jsx-runtime";
2
+ import $, { useCallback as b, useId as N, useRef as I, useMemo as j, createContext as E, useContext as T } from "react";
3
+ import { useClickOutside as h } from "../../hooks/useClickOutside.js";
4
4
  import { useEscapeKey as A } from "../../hooks/useEscapeKey.js";
5
5
  import { FloatingArrow as B } from "../../utils/FloatingArrow.js";
6
6
  import { Slot as F } from "../../utils/Slot.js";
7
7
  import './Popover.css';/* empty css */
8
- const S = j(null);
8
+ const S = E(null);
9
9
  function C() {
10
- const t = E(S);
10
+ const t = T(S);
11
11
  if (!t)
12
12
  throw new Error("Popover components must be used within Popover.Root");
13
13
  return t;
14
14
  }
15
15
  function K({
16
16
  value: t,
17
- defaultValue: s = !1,
17
+ defaultValue: p = !1,
18
18
  onChange: o
19
19
  }) {
20
- const e = t !== void 0, [r, i] = h.useState(s), l = e ? t : r, a = R(
21
- (c) => {
22
- const m = typeof c == "function" ? c(l) : c;
23
- e || i(m), o == null || o(m);
20
+ const e = t !== void 0, [r, s] = $.useState(p), l = e ? t : r, c = b(
21
+ (a) => {
22
+ const d = typeof a == "function" ? a(l) : a;
23
+ e || s(d), o == null || o(d);
24
24
  },
25
25
  [e, o, l]
26
26
  );
27
- return [l, a];
27
+ return [l, c];
28
28
  }
29
29
  function M({
30
30
  children: t,
31
- position: s = "top",
31
+ position: p = "top",
32
32
  align: o = "center",
33
33
  variant: e = "filled",
34
34
  showArrow: r = !1,
35
- zIndex: i = 10,
35
+ zIndex: s = 10,
36
36
  color: l,
37
- bounceCount: a = 0,
38
- open: c,
39
- defaultOpen: m = !1,
40
- onOpenChange: f,
37
+ bounceCount: c = 0,
38
+ open: a,
39
+ defaultOpen: d = !1,
40
+ onOpenChange: m,
41
41
  onClickOutside: u,
42
42
  onDismiss: v,
43
- autoClose: d = !0
43
+ autoClose: f = !0
44
44
  }) {
45
- const n = k().replace(/:/g, ""), x = I(null), w = I(null), b = I(null), [P, p] = K({
46
- value: c,
47
- defaultValue: m,
48
- onChange: f
49
- }), y = N(
45
+ const n = N().replace(/:/g, ""), x = I(null), w = I(null), P = I(null), [R, i] = K({
46
+ value: a,
47
+ defaultValue: d,
48
+ onChange: m
49
+ }), k = j(
50
50
  () => ({
51
- open: P,
52
- setOpen: p,
53
- position: s,
51
+ open: R,
52
+ setOpen: i,
53
+ position: p,
54
54
  align: o,
55
55
  variant: e,
56
56
  showArrow: r,
57
- zIndex: i,
57
+ zIndex: s,
58
58
  color: l,
59
- autoClose: d,
60
- bounceCount: a,
61
- onOpenChange: f,
59
+ autoClose: f,
60
+ bounceCount: c,
61
+ onOpenChange: m,
62
62
  onClickOutside: u,
63
63
  onDismiss: v,
64
64
  triggerId: `${n}-trigger`,
65
65
  contentId: `${n}-content`,
66
66
  triggerRef: x,
67
67
  contentRef: w,
68
- wrapperRef: b
68
+ wrapperRef: P
69
69
  }),
70
70
  [
71
- P,
71
+ R,
72
+ i,
72
73
  p,
73
- s,
74
74
  o,
75
75
  e,
76
76
  r,
77
- i,
77
+ s,
78
78
  l,
79
- d,
80
- a,
81
79
  f,
80
+ c,
81
+ m,
82
82
  u,
83
83
  v,
84
84
  n
85
85
  ]
86
86
  );
87
- return /* @__PURE__ */ g(S.Provider, { value: y, children: /* @__PURE__ */ g("div", { ref: b, className: "motile-popover-wrapper", children: t }) });
87
+ return /* @__PURE__ */ g(S.Provider, { value: k, children: /* @__PURE__ */ g("div", { ref: P, className: "motile-popover-wrapper", children: t }) });
88
88
  }
89
- function V({ children: t, asChild: s = !1 }) {
90
- const { open: o, setOpen: e, triggerId: r, contentId: i, triggerRef: l } = C(), a = R(() => {
91
- e((c) => !c);
89
+ function V({ children: t, asChild: p = !1 }) {
90
+ const { open: o, setOpen: e, triggerId: r, contentId: s, triggerRef: l } = C(), c = b(() => {
91
+ e((a) => !a);
92
92
  }, [e]);
93
- return s ? /* @__PURE__ */ g(
93
+ return p ? /* @__PURE__ */ g(
94
94
  F,
95
95
  {
96
- ref: (c) => {
97
- l.current = c;
96
+ ref: (a) => {
97
+ l.current = a;
98
98
  },
99
99
  id: r,
100
100
  "aria-expanded": o,
101
- "aria-controls": i,
102
- onClick: a,
101
+ "aria-controls": s,
102
+ onClick: c,
103
103
  children: t
104
104
  }
105
105
  ) : /* @__PURE__ */ g(
@@ -109,79 +109,76 @@ function V({ children: t, asChild: s = !1 }) {
109
109
  id: r,
110
110
  type: "button",
111
111
  "aria-expanded": o,
112
- "aria-controls": i,
113
- onClick: a,
112
+ "aria-controls": s,
113
+ onClick: c,
114
114
  children: t
115
115
  }
116
116
  );
117
117
  }
118
118
  function q({
119
119
  children: t,
120
- className: s = "",
120
+ className: p = "",
121
121
  style: o
122
122
  }) {
123
123
  const {
124
124
  open: e,
125
125
  setOpen: r,
126
- position: i,
126
+ position: s,
127
127
  align: l,
128
- variant: a,
129
- showArrow: c,
130
- zIndex: m,
131
- color: f,
128
+ variant: c,
129
+ showArrow: a,
130
+ zIndex: d,
131
+ color: m,
132
132
  autoClose: u,
133
133
  bounceCount: v,
134
- onClickOutside: d,
134
+ onClickOutside: f,
135
135
  onDismiss: n,
136
136
  contentId: x,
137
137
  contentRef: w,
138
- wrapperRef: b
138
+ wrapperRef: P
139
139
  } = C();
140
140
  if (A({
141
- handler: R(
142
- (p) => {
143
- u && (n == null || n(p), p.defaultPrevented || r(!1));
141
+ handler: b(
142
+ (i) => {
143
+ u && (n == null || n(i), i.defaultPrevented || r(!1));
144
144
  },
145
145
  [u, n, r]
146
146
  ),
147
- enabled: e
148
- }), T({
149
- refs: [b],
150
- handler: R(
151
- (p) => {
152
- u && (d == null || d(p), n == null || n(p), p.defaultPrevented || r(!1));
147
+ // enabled 정직하게 계산 — 닫히지 않을(autoClose=false) 팝오버가
148
+ // ESC 스택의 top을 점유해 아래 오버레이의 ESC를 삼키지 않게
149
+ enabled: e && u,
150
+ stacked: !0
151
+ // 중첩 오버레이에서 ESC는 최상단만 닫는다
152
+ }), h({
153
+ refs: [P],
154
+ handler: b(
155
+ (i) => {
156
+ u && (f == null || f(i), n == null || n(i), i.defaultPrevented || r(!1));
153
157
  },
154
- [u, d, n, r]
158
+ [u, f, n, r]
155
159
  ),
156
160
  enabled: e
157
161
  }), !e) return null;
158
- const P = v !== 0;
159
- return /* @__PURE__ */ $(
162
+ const R = v !== 0;
163
+ return /* @__PURE__ */ y(
160
164
  "div",
161
165
  {
162
166
  ref: w,
163
167
  id: x,
164
168
  role: "dialog",
165
169
  "aria-modal": "false",
166
- className: `motile-popover-content motile-popover-content--${a} ${s}`,
167
- "data-placement": i,
170
+ className: `motile-popover-content motile-popover-content--${c} ${p}`,
171
+ "data-placement": s,
168
172
  "data-align": l,
169
- "data-bounce": P ? "true" : "false",
173
+ "data-bounce": R ? "true" : "false",
170
174
  style: {
171
- zIndex: m,
172
- ...f && { "--motile-popover-color": f },
175
+ zIndex: d,
176
+ ...m && { "--motile-popover-color": m },
173
177
  "--bounce-count": v,
174
178
  ...o
175
179
  },
176
180
  children: [
177
- c && /* @__PURE__ */ g(
178
- B,
179
- {
180
- className: "motile-popover-arrow",
181
- variant: a,
182
- color: f || (a === "filled" ? "var(--motile-ui-popover, var(--motile-theme, #3b82f6))" : "var(--motile-ui-popover, var(--motile-theme, #e5e7eb))")
183
- }
184
- ),
181
+ a && /* @__PURE__ */ g(B, { className: "motile-popover-arrow", variant: c }),
185
182
  t
186
183
  ]
187
184
  }
@@ -1 +1 @@
1
- .motile-select__trigger{position:relative;box-sizing:border-box;width:100%;min-height:48px;padding:12px 40px 12px 16px;display:flex;align-items:center;background-color:#fff;border:1px solid #d1d5db;border-radius:8px;font-size:16px;color:#1f2937;text-align:left;cursor:pointer;transition:border-color .2s ease}.motile-select__trigger[aria-expanded=true]{border-color:color-mix(in srgb,var( --motile-select-color, var(--motile-ui-select, var(--motile-theme, #3b82f6)) ) 60%,transparent);background-color:#e5e7eb80;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);filter:blur(1.5px);color:#1f293780}.motile-select__trigger:disabled,.motile-select__trigger[disabled]{background-color:#f9fafb;color:#9ca3af;border-color:#e5e7eb;cursor:not-allowed}.motile-select__icon{position:absolute;right:12px;top:50%;transform:translateY(-50%);pointer-events:none;transition:transform .2s}.motile-select__trigger[aria-expanded=true] .motile-select__icon{transform:translateY(-50%) rotate(180deg)}.motile-select__value{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.motile-select__content{position:absolute;top:calc(100% + 4px);left:0;width:100%;box-sizing:border-box;max-height:300px;overflow-y:auto;background-color:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;transform-origin:top center;visibility:hidden;opacity:0;transform:translateY(-12px) scaleY(.85);pointer-events:none;transition:opacity .45s cubic-bezier(.34,1.56,.64,1),transform .45s cubic-bezier(.34,1.56,.64,1),visibility 0s linear .45s}.motile-select__content--open{visibility:visible;opacity:1;transform:translateY(0) scaleY(1);pointer-events:auto;transition:opacity .45s cubic-bezier(.34,1.56,.64,1),transform .45s cubic-bezier(.34,1.56,.64,1),visibility 0s linear 0s}.motile-select__content::-webkit-scrollbar{width:8px}.motile-select__content::-webkit-scrollbar-track{background:transparent}.motile-select__content::-webkit-scrollbar-thumb{background-color:#d1d5db;border-radius:4px}.motile-select__content::-webkit-scrollbar-thumb:hover{background-color:#9ca3af}.motile-select__item{position:relative;box-sizing:border-box;min-height:44px;padding:12px 40px 12px 16px;display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:16px;line-height:1.5;color:#1f2937;cursor:pointer;transition:background-color .15s;-webkit-tap-highlight-color:transparent}.motile-select__item:hover:not(.motile-select__item--disabled){background-color:#f9fafb}.motile-select__item--selected{font-weight:500}.motile-select__item--selected:not(.motile-select__item--disabled){background-color:color-mix(in srgb,var( --motile-select-color, var(--motile-ui-select, var(--motile-theme, #3b82f6)) ) 5%,transparent)}.motile-select__item--disabled{color:#d1d5db;cursor:not-allowed}.motile-select__check{position:absolute;right:12px;color:var( --motile-select-color, var(--motile-ui-select, var(--motile-theme, #3b82f6)) )}@media (prefers-color-scheme: dark){.motile-select__trigger:disabled,.motile-select__trigger[disabled]{background-color:#1f2937;color:#6b7280;border-color:#374151}.motile-select__content{background-color:#1f2937;border-color:#374151}.motile-select__item{color:#f9fafb}.motile-select__item:hover:not(.motile-select__item--disabled){background-color:#374151}.motile-select__item--selected:not(.motile-select__item--disabled){background-color:#3b82f626}.motile-select__item--disabled{color:#4b5563}}.motile-select__mobile-list{width:100%;box-sizing:border-box;padding-bottom:16px;padding-bottom:max(16px,env(safe-area-inset-bottom))}@media (prefers-reduced-motion: reduce){.motile-select__content,.motile-select__item{transition:none}}
1
+ :where(.motile-select__trigger){position:relative;box-sizing:border-box;width:100%;min-height:48px;padding:12px 40px 12px 16px;display:flex;align-items:center;background-color:#fff;border:1px solid #d1d5db;border-radius:8px;font-size:16px;color:#1f2937;text-align:left;cursor:pointer;transition:border-color .2s ease}:where(.motile-select__trigger[aria-expanded=true]){border-color:color-mix(in srgb,var( --motile-select-color, var(--motile-ui-select, var(--motile-theme, #3b82f6)) ) 60%,transparent);background-color:#e5e7eb80;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);filter:blur(1.5px);color:#1f293780}:where(.motile-select__trigger:disabled),:where(.motile-select__trigger[disabled]){background-color:#f9fafb;color:#9ca3af;border-color:#e5e7eb;cursor:not-allowed}:where(.motile-select__icon){position:absolute;right:12px;top:50%;transform:translateY(-50%);pointer-events:none;transition:transform .2s}:where(.motile-select__trigger[aria-expanded=true] .motile-select__icon){transform:translateY(-50%) rotate(180deg)}:where(.motile-select__value){flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:where(.motile-select__content){position:absolute;top:calc(100% + 4px);left:0;width:100%;box-sizing:border-box;max-height:300px;overflow-y:auto;background-color:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;transform-origin:top center;visibility:hidden;opacity:0;transform:translateY(-12px) scaleY(.85);pointer-events:none;transition:opacity .45s cubic-bezier(.34,1.56,.64,1),transform .45s cubic-bezier(.34,1.56,.64,1),visibility 0s linear .45s}:where(.motile-select__content--open){visibility:visible;opacity:1;transform:translateY(0) scaleY(1);pointer-events:auto;transition:opacity .45s cubic-bezier(.34,1.56,.64,1),transform .45s cubic-bezier(.34,1.56,.64,1),visibility 0s linear 0s}:where(.motile-select__content)::-webkit-scrollbar{width:8px}:where(.motile-select__content)::-webkit-scrollbar-track{background:transparent}:where(.motile-select__content)::-webkit-scrollbar-thumb{background-color:#d1d5db;border-radius:4px}:where(.motile-select__content)::-webkit-scrollbar-thumb:hover{background-color:#9ca3af}:where(.motile-select__item){position:relative;box-sizing:border-box;min-height:44px;padding:12px 40px 12px 16px;display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:16px;line-height:1.5;color:#1f2937;cursor:pointer;transition:background-color .15s;-webkit-tap-highlight-color:transparent}:where(.motile-select__item:hover:not(.motile-select__item--disabled)){background-color:#f9fafb}:where(.motile-select__item--selected){font-weight:500}:where(.motile-select__item--selected:not(.motile-select__item--disabled)){background-color:color-mix(in srgb,var( --motile-select-color, var(--motile-ui-select, var(--motile-theme, #3b82f6)) ) 5%,transparent)}:where(.motile-select__item--disabled){color:#d1d5db;cursor:not-allowed}:where(.motile-select__check){position:absolute;right:12px;color:var( --motile-select-color, var(--motile-ui-select, var(--motile-theme, #3b82f6)) )}@media (prefers-color-scheme: dark){:where(.motile-select__trigger:disabled),:where(.motile-select__trigger[disabled]){background-color:#1f2937;color:#6b7280;border-color:#374151}:where(.motile-select__content){background-color:#1f2937;border-color:#374151}:where(.motile-select__item){color:#f9fafb}:where(.motile-select__item:hover:not(.motile-select__item--disabled)){background-color:#374151}:where(.motile-select__item--selected:not(.motile-select__item--disabled)){background-color:#3b82f626}:where(.motile-select__item--disabled){color:#4b5563}}:where(.motile-select__mobile-list){width:100%;box-sizing:border-box;padding-bottom:16px;padding-bottom:max(16px,env(safe-area-inset-bottom))}@media (prefers-reduced-motion: reduce){:where(.motile-select__content){transition:none}:where(.motile-select__item){transition:none}}