@devup-ui/components 0.1.35 → 0.1.36

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,2 +1,2 @@
1
1
  "use client";
2
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),k=require("react"),l=require("@devup-ui/react"),D=require("clsx"),y=require("../../contexts/useSelect.cjs"),j=require("../Button/index.cjs"),C=require("./IconCheck.cjs");function A({type:i="default",children:c,defaultValue:g,value:o,onChange:d,defaultOpen:h,open:x,onOpenChange:b,colors:r,typography:u,options:s,...m}){const n=k.useRef(null),[f,a]=k.useState(h??!1),[p,v]=k.useState(g??(i==="checkbox"?[]:""));k.useEffect(()=>{const t=E=>{n.current&&n.current.contains(E.target)||a(!1)};return document.addEventListener("click",t),()=>document.removeEventListener("click",t)},[f,a]);const S=t=>{b?.(t),a(t)},F=t=>{if(d?.(t),i!=="default"){if(i==="radio"){v(t);return}Array.isArray(p)&&p.includes(t)?v(p.filter(E=>E!==t)):v([...p,t])}};return e.jsx(y.SelectContext.Provider,{value:{open:x??f,setOpen:S,value:o??p,setValue:F,type:i,ref:n},children:e.jsx(l.Box,{ref:n,display:"inline-block",h:"fit-content",selectors:{"&, & *":{boxSizing:"border-box"}},styleOrder:1,styleVars:{primary:r?.primary,border:r?.border,inputBackground:r?.inputBackground,base10:r?.base10,title:r?.title,selectDisabled:r?.selectDisabled,primaryBg:r?.primaryBg,inputDisabledBackground:r?.inputDisabledBackground,inputDisabledText:r?.inputDisabledText},typography:u,...m,children:s?e.jsxs(e.Fragment,{children:[e.jsx(w,{children:c}),e.jsx(O,{children:s?.map(t=>k.createElement(B,{...t,key:"option-"+t.value},t.label??t.value))})]}):c})})}function w({className:i,children:c,asChild:g,...o}){const{open:d,setOpen:h}=y.useSelect(),x=()=>{h(!d)};if(g){const b=k.Children.only(c),r=b.type;return e.jsx(r,{"aria-expanded":d,"aria-label":"Select toggle",onClick:x,...b.props})}return e.jsx(j.Button,{"aria-expanded":d,"aria-label":"Select toggle",className:D(l.css({borderRadius:"8px",styleOrder:2}),i),onClick:x,...o,children:c})}function O({children:i,showConfirmButton:c,confirmButtonText:g="완료",x:o=0,y:d=0,...h}){const{open:x,setOpen:b,type:r,ref:u}=y.useSelect();return x?e.jsxs(l.VStack,{ref:s=>{if(!u.current||!s)return;const m=u.current,n=()=>{const{height:f,x:a,y:p,top:v,left:S}=m.getBoundingClientRect(),F=s.offsetHeight+v+window.scrollY+f+d>document.documentElement.scrollHeight,t=s.offsetWidth+S+window.scrollX+o>document.documentElement.scrollWidth;F?s.style.bottom=`${window.innerHeight-p+10}px`:s.style.top=`${p+f+10+d}px`,t?s.style.left=`${Math.max(a-s.offsetWidth+m.offsetWidth,0)+o}px`:s.style.left=`${a+o}px`};return n(),window.addEventListener("scroll",n,!0),window.addEventListener("resize",n),()=>{window.removeEventListener("scroll",n,!0),window.removeEventListener("resize",n)}},"aria-label":"Select container",bg:"var(--inputBg, light-dark(#FFF,#2E2E2E))",border:"1px solid var(--border, light-dark(#E4E4E4,#434343))",borderRadius:"8px",bottom:"-4px",boxShadow:"0 2px 2px 0 var(--base10, light-dark(#0000001A,#FFFFFF1A))",boxSize:"fit-content",gap:"6px",minW:"232px",p:"10px",pos:"fixed",styleOrder:1,userSelect:"none",zIndex:1,...h,children:[i,c&&r==="checkbox"&&e.jsx(l.Flex,{justifyContent:"end",w:"100%",children:e.jsx(j.Button,{"aria-label":"Select confirm button",className:l.css({textAlign:"end",bg:"var(--primary, light-dark(#674DC7, #8163E1))",borderRadius:"8px",w:"fit-content",px:"30px",py:"10px",color:"#FFF",typography:"buttonS"}),onClick:()=>b(!1),variant:"primary",children:g})})]}):null}function B({disabled:i,onClick:c,children:g,value:o,showCheck:d=!0,...h}){const{setOpen:x,setValue:b,value:r,type:u}=y.useSelect(),s=()=>{u!=="checkbox"&&x(!1)},m=(a,p)=>{if(c){c(a,p);return}typeof a=="string"&&b(a),s()},n={default:!1,radio:r===o,checkbox:Array.isArray(r)&&o&&r.includes(o)}[u],f=!i&&!(u==="radio"&&n);return e.jsxs(l.Flex,{_hover:f&&{bg:"var(--primaryBg, light-dark(#F4F3FA, #F4F3FA0D))"},alignItems:"center","aria-label":"Select option",borderRadius:"6px",color:i?"var(--selectDisabled, light-dark(#C4C5D1, #45464D))":n?"var(--primary, light-dark(#674DC7, #8163E1)":"var(--title, light-dark(#1A1A1A,#FAFAFA))",cursor:f?"pointer":"default","data-value":o,fontWeight:n?"700":"400",gap:{checkbox:"10px",radio:"6px",default:"0"}[u],h:"40px",onClick:i?void 0:a=>m(o,a),px:"10px",styleOrder:1,transition:"background-color 0.1s ease-in-out",...h,children:[d&&{checkbox:e.jsx(l.Box,{bg:i?"var(--inputDisabledBackground, light-dark(#F0F0F3, #414244))":n?"var(--primary, light-dark(#674DC7, #8163E1)":"var(--border, light-dark(#E4E4E4, #434343))",borderRadius:"4px",boxSize:"18px",pos:"relative",transition:"background-color 0.1s ease-in-out",children:n&&e.jsx(C.IconCheck,{className:l.css({color:i?"var(--inputDisabledText, light-dark(#E5E5E5, #373737))":"#FFF",position:"absolute",top:"55%",left:"50%",transform:"translate(-50%, -50%)"})})}),radio:e.jsx(e.Fragment,{children:n&&e.jsx(l.Box,{borderRadius:"4px",boxSize:"18px",pos:"relative",transition:"background-color 0.1s ease-in-out",children:e.jsx(C.IconCheck,{className:l.css({position:"absolute",top:"55%",left:"50%",transform:"translate(-50%, -50%)",color:"inherit"})})})}),default:null}[u],g]})}function R({...i}){return e.jsx(l.Box,{bg:"var(--border, light-dark(#E4E4E4,#434343)",h:"1px",styleOrder:1,w:"100%",...i})}exports.Select=A;exports.SelectContainer=O;exports.SelectDivider=R;exports.SelectOption=B;exports.SelectTrigger=w;
2
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),v=require("react"),a=require("@devup-ui/react"),q=require("clsx"),E=require("../../contexts/useSelect.cjs"),w=require("../Button/index.cjs"),j=require("./IconCheck.cjs");function z({type:r="default",children:l,defaultValue:f,value:o,onChange:c,defaultOpen:g,open:x,onOpenChange:b,colors:t,typography:d,options:s,triggerProps:k,containerProps:i,optionProps:h,...u}){const p=v.useRef(null),[F,y]=v.useState(g??!1),[m,S]=v.useState(f??(r==="checkbox"?[]:""));v.useEffect(()=>{const n=C=>{p.current&&p.current.contains(C.target)||y(!1)};return document.addEventListener("click",n),()=>document.removeEventListener("click",n)},[F,y]);const A=n=>{b?.(n),y(n)},R=n=>{if(c?.(n),r!=="default"){if(r==="radio"){S(n);return}Array.isArray(m)&&m.includes(n)?S(m.filter(C=>C!==n)):S([...m,n])}};return e.jsx(E.SelectContext.Provider,{value:{open:x??F,setOpen:A,value:o??m,setValue:R,type:r,ref:p},children:e.jsx(a.Box,{ref:p,display:"inline-block",h:"fit-content",selectors:{"&, & *":{boxSizing:"border-box"}},styleOrder:1,styleVars:{primary:t?.primary,border:t?.border,inputBackground:t?.inputBackground,base10:t?.base10,title:t?.title,selectDisabled:t?.selectDisabled,primaryBg:t?.primaryBg,inputDisabledBackground:t?.inputDisabledBackground,inputDisabledText:t?.inputDisabledText},typography:d,...u,children:s?e.jsxs(e.Fragment,{children:[e.jsx(O,{...k,children:l}),e.jsx(B,{...i,children:s?.map(n=>v.createElement(D,{...h,...n,key:"option-"+n.value},n.label??n.value))})]}):l})})}function O({className:r,children:l,asChild:f,...o}){const{open:c,setOpen:g}=E.useSelect(),x=()=>{g(!c)};if(f){const b=v.Children.only(l),t=b.type;return e.jsx(t,{"aria-expanded":c,"aria-label":"Select toggle",onClick:x,...b.props})}return e.jsx(w.Button,{"aria-expanded":c,"aria-label":"Select toggle",className:q(a.css({borderRadius:"8px",styleOrder:2}),r),onClick:x,...o,children:l})}function B({children:r,showConfirmButton:l,confirmButtonText:f="완료",x:o=0,y:c=0,...g}){const{open:x,setOpen:b,type:t,ref:d}=E.useSelect();return x?e.jsxs(a.VStack,{ref:s=>{if(!d.current||!s)return;const k=d.current,i=()=>{const{height:h,x:u,y:p,top:F,left:y}=k.getBoundingClientRect(),m=s.offsetHeight+F+window.scrollY+h+c>document.documentElement.scrollHeight,S=s.offsetWidth+y+window.scrollX+o>document.documentElement.scrollWidth;m?s.style.bottom=`${window.innerHeight-p+10}px`:s.style.top=`${p+h+10+c}px`,S?s.style.left=`${Math.max(u-s.offsetWidth+k.offsetWidth,0)+o}px`:s.style.left=`${u+o}px`};return i(),window.addEventListener("scroll",i,!0),window.addEventListener("resize",i),()=>{window.removeEventListener("scroll",i,!0),window.removeEventListener("resize",i)}},"aria-label":"Select container",bg:"var(--inputBg, light-dark(#FFF,#2E2E2E))",border:"1px solid var(--border, light-dark(#E4E4E4,#434343))",borderRadius:"8px",bottom:"-4px",boxShadow:"0 2px 2px 0 var(--base10, light-dark(#0000001A,#FFFFFF1A))",boxSize:"fit-content",gap:"6px",minW:"232px",p:"10px",pos:"fixed",styleOrder:1,userSelect:"none",zIndex:1,...g,children:[r,l&&t==="checkbox"&&e.jsx(a.Flex,{justifyContent:"end",w:"100%",children:e.jsx(w.Button,{"aria-label":"Select confirm button",className:a.css({textAlign:"end",bg:"var(--primary, light-dark(#674DC7, #8163E1))",borderRadius:"8px",w:"fit-content",px:"30px",py:"10px",color:"#FFF",typography:"buttonS"}),onClick:()=>b(!1),variant:"primary",children:f})})]}):null}function D({disabled:r,onClick:l,children:f,value:o,showCheck:c=!0,...g}){const{setOpen:x,setValue:b,value:t,type:d}=E.useSelect(),s=()=>{d!=="checkbox"&&x(!1)},k=(u,p)=>{if(l){l(u,p);return}typeof u=="string"&&b(u),s()},i={default:!1,radio:t===o,checkbox:Array.isArray(t)&&o&&t.includes(o)}[d],h=!r&&!(d==="radio"&&i);return e.jsxs(a.Flex,{_hover:h&&{bg:"var(--primaryBg, light-dark(#F4F3FA, #F4F3FA0D))"},alignItems:"center","aria-label":"Select option",borderRadius:"6px",color:r?"var(--selectDisabled, light-dark(#C4C5D1, #45464D))":i?"var(--primary, light-dark(#674DC7, #8163E1)":"var(--title, light-dark(#1A1A1A,#FAFAFA))",cursor:h?"pointer":"default","data-value":o,fontWeight:i?"700":"400",gap:{checkbox:"10px",radio:"6px",default:"0"}[d],h:"40px",onClick:r?void 0:u=>k(o,u),px:"10px",styleOrder:1,transition:"background-color 0.1s ease-in-out",...g,children:[c&&{checkbox:e.jsx(a.Box,{bg:r?"var(--inputDisabledBackground, light-dark(#F0F0F3, #414244))":i?"var(--primary, light-dark(#674DC7, #8163E1)":"var(--border, light-dark(#E4E4E4, #434343))",borderRadius:"4px",boxSize:"18px",pos:"relative",transition:"background-color 0.1s ease-in-out",children:i&&e.jsx(j.IconCheck,{className:a.css({color:r?"var(--inputDisabledText, light-dark(#E5E5E5, #373737))":"#FFF",position:"absolute",top:"55%",left:"50%",transform:"translate(-50%, -50%)"})})}),radio:e.jsx(e.Fragment,{children:i&&e.jsx(a.Box,{borderRadius:"4px",boxSize:"18px",pos:"relative",transition:"background-color 0.1s ease-in-out",children:e.jsx(j.IconCheck,{className:a.css({position:"absolute",top:"55%",left:"50%",transform:"translate(-50%, -50%)",color:"inherit"})})})}),default:null}[d],f]})}function L({...r}){return e.jsx(a.Box,{bg:"var(--border, light-dark(#E4E4E4,#434343)",h:"1px",styleOrder:1,w:"100%",...r})}exports.Select=z;exports.SelectContainer=B;exports.SelectDivider=L;exports.SelectOption=D;exports.SelectTrigger=O;
@@ -30,8 +30,11 @@ interface SelectProps extends Omit<ComponentProps<'div'>, 'onChange'> {
30
30
  showCheck?: boolean;
31
31
  value: string;
32
32
  }[];
33
+ triggerProps?: ComponentProps<typeof SelectTrigger>;
34
+ containerProps?: ComponentProps<typeof SelectContainer>;
35
+ optionProps?: ComponentProps<typeof SelectOption>;
33
36
  }
34
- export declare function Select({ type, children, defaultValue, value: valueProp, onChange, defaultOpen, open: openProp, onOpenChange, colors, typography, options, ...props }: SelectProps): import("react/jsx-runtime").JSX.Element;
37
+ export declare function Select({ type, children, defaultValue, value: valueProp, onChange, defaultOpen, open: openProp, onOpenChange, colors, typography, options, triggerProps, containerProps, optionProps, ...props }: SelectProps): import("react/jsx-runtime").JSX.Element;
35
38
  interface SelectTriggerProps extends ComponentProps<typeof Button> {
36
39
  asChild?: boolean;
37
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Select/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Select/index.tsx"],"names":[],"mappings":"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"}
@@ -1,60 +1,63 @@
1
1
  "use client";
2
- import { jsx as i, jsxs as S, Fragment as O } from "react/jsx-runtime";
3
- import { useRef as R, useState as w, useEffect as z, createElement as L, Children as W } from "react";
4
- import { Box as k, VStack as H, Flex as A, css as v } from "@devup-ui/react";
5
- import N from "clsx";
6
- import { SelectContext as T, useSelect as C } from "../../contexts/useSelect.js";
7
- import { Button as B } from "../Button/index.js";
8
- import { IconCheck as D } from "./IconCheck.js";
9
- function G({
10
- type: n = "default",
11
- children: s,
12
- defaultValue: h,
2
+ import { jsx as i, jsxs as C, Fragment as A } from "react/jsx-runtime";
3
+ import { useRef as W, useState as D, useEffect as H, createElement as N, Children as T } from "react";
4
+ import { Box as F, VStack as $, Flex as B, css as E } from "@devup-ui/react";
5
+ import j from "clsx";
6
+ import { SelectContext as I, useSelect as w } from "../../contexts/useSelect.js";
7
+ import { Button as R } from "../Button/index.js";
8
+ import { IconCheck as O } from "./IconCheck.js";
9
+ function Q({
10
+ type: t = "default",
11
+ children: l,
12
+ defaultValue: b,
13
13
  value: o,
14
- onChange: c,
15
- defaultOpen: g,
14
+ onChange: s,
15
+ defaultOpen: h,
16
16
  open: u,
17
17
  onOpenChange: f,
18
- colors: t,
19
- typography: d,
18
+ colors: e,
19
+ typography: c,
20
20
  options: a,
21
- ...m
21
+ triggerProps: x,
22
+ containerProps: n,
23
+ optionProps: g,
24
+ ...d
22
25
  }) {
23
- const r = R(null), [b, l] = w(g ?? !1), [p, x] = w(
24
- h ?? (n === "checkbox" ? [] : "")
26
+ const p = W(null), [y, k] = D(h ?? !1), [m, v] = D(
27
+ b ?? (t === "checkbox" ? [] : "")
25
28
  );
26
- z(() => {
27
- const e = (E) => {
28
- r.current && r.current.contains(E.target) || l(!1);
29
+ H(() => {
30
+ const r = (S) => {
31
+ p.current && p.current.contains(S.target) || k(!1);
29
32
  };
30
- return document.addEventListener("click", e), () => document.removeEventListener("click", e);
31
- }, [b, l]);
32
- const y = (e) => {
33
- f?.(e), l(e);
34
- }, F = (e) => {
35
- if (c?.(e), n !== "default") {
36
- if (n === "radio") {
37
- x(e);
33
+ return document.addEventListener("click", r), () => document.removeEventListener("click", r);
34
+ }, [y, k]);
35
+ const z = (r) => {
36
+ f?.(r), k(r);
37
+ }, L = (r) => {
38
+ if (s?.(r), t !== "default") {
39
+ if (t === "radio") {
40
+ v(r);
38
41
  return;
39
42
  }
40
- Array.isArray(p) && p.includes(e) ? x(p.filter((E) => E !== e)) : x([...p, e]);
43
+ Array.isArray(m) && m.includes(r) ? v(m.filter((S) => S !== r)) : v([...m, r]);
41
44
  }
42
45
  };
43
46
  return /* @__PURE__ */ i(
44
- T.Provider,
47
+ I.Provider,
45
48
  {
46
49
  value: {
47
- open: u ?? b,
48
- setOpen: y,
49
- value: o ?? p,
50
- setValue: F,
51
- type: n,
52
- ref: r
50
+ open: u ?? y,
51
+ setOpen: z,
52
+ value: o ?? m,
53
+ setValue: L,
54
+ type: t,
55
+ ref: p
53
56
  },
54
57
  children: /* @__PURE__ */ i(
55
- k,
58
+ F,
56
59
  {
57
- ref: r,
60
+ ref: p,
58
61
  display: "inline-block",
59
62
  h: "fit-content",
60
63
  selectors: {
@@ -64,42 +67,50 @@ function G({
64
67
  },
65
68
  styleOrder: 1,
66
69
  styleVars: {
67
- primary: t?.primary,
68
- border: t?.border,
69
- inputBackground: t?.inputBackground,
70
- base10: t?.base10,
71
- title: t?.title,
72
- selectDisabled: t?.selectDisabled,
73
- primaryBg: t?.primaryBg,
74
- inputDisabledBackground: t?.inputDisabledBackground,
75
- inputDisabledText: t?.inputDisabledText
70
+ primary: e?.primary,
71
+ border: e?.border,
72
+ inputBackground: e?.inputBackground,
73
+ base10: e?.base10,
74
+ title: e?.title,
75
+ selectDisabled: e?.selectDisabled,
76
+ primaryBg: e?.primaryBg,
77
+ inputDisabledBackground: e?.inputDisabledBackground,
78
+ inputDisabledText: e?.inputDisabledText
76
79
  },
77
- typography: d,
78
- ...m,
79
- children: a ? /* @__PURE__ */ S(O, { children: [
80
- /* @__PURE__ */ i($, { children: s }),
81
- /* @__PURE__ */ i(j, { children: a?.map((e) => /* @__PURE__ */ L(I, { ...e, key: "option-" + e.value }, e.label ?? e.value)) })
82
- ] }) : s
80
+ typography: c,
81
+ ...d,
82
+ children: a ? /* @__PURE__ */ C(A, { children: [
83
+ /* @__PURE__ */ i(V, { ...x, children: l }),
84
+ /* @__PURE__ */ i(P, { ...n, children: a?.map((r) => /* @__PURE__ */ N(
85
+ X,
86
+ {
87
+ ...g,
88
+ ...r,
89
+ key: "option-" + r.value
90
+ },
91
+ r.label ?? r.value
92
+ )) })
93
+ ] }) : l
83
94
  }
84
95
  )
85
96
  }
86
97
  );
87
98
  }
88
- function $({
89
- className: n,
90
- children: s,
91
- asChild: h,
99
+ function V({
100
+ className: t,
101
+ children: l,
102
+ asChild: b,
92
103
  ...o
93
104
  }) {
94
- const { open: c, setOpen: g } = C(), u = () => {
95
- g(!c);
105
+ const { open: s, setOpen: h } = w(), u = () => {
106
+ h(!s);
96
107
  };
97
- if (h) {
98
- const f = W.only(s), t = f.type;
108
+ if (b) {
109
+ const f = T.only(l), e = f.type;
99
110
  return /* @__PURE__ */ i(
100
- t,
111
+ e,
101
112
  {
102
- "aria-expanded": c,
113
+ "aria-expanded": s,
103
114
  "aria-label": "Select toggle",
104
115
  onClick: u,
105
116
  ...f.props
@@ -107,49 +118,49 @@ function $({
107
118
  );
108
119
  }
109
120
  return /* @__PURE__ */ i(
110
- B,
121
+ R,
111
122
  {
112
- "aria-expanded": c,
123
+ "aria-expanded": s,
113
124
  "aria-label": "Select toggle",
114
- className: N(
115
- v({
125
+ className: j(
126
+ E({
116
127
  borderRadius: "8px",
117
128
  styleOrder: 2
118
129
  }),
119
- n
130
+ t
120
131
  ),
121
132
  onClick: u,
122
133
  ...o,
123
- children: s
134
+ children: l
124
135
  }
125
136
  );
126
137
  }
127
- function j({
128
- children: n,
129
- showConfirmButton: s,
130
- confirmButtonText: h = "완료",
138
+ function P({
139
+ children: t,
140
+ showConfirmButton: l,
141
+ confirmButtonText: b = "완료",
131
142
  x: o = 0,
132
- y: c = 0,
133
- ...g
143
+ y: s = 0,
144
+ ...h
134
145
  }) {
135
- const { open: u, setOpen: f, type: t, ref: d } = C();
136
- return u ? /* @__PURE__ */ S(
137
- H,
146
+ const { open: u, setOpen: f, type: e, ref: c } = w();
147
+ return u ? /* @__PURE__ */ C(
148
+ $,
138
149
  {
139
150
  ref: (a) => {
140
- if (!d.current || !a) return;
141
- const m = d.current, r = () => {
151
+ if (!c.current || !a) return;
152
+ const x = c.current, n = () => {
142
153
  const {
143
- height: b,
144
- x: l,
154
+ height: g,
155
+ x: d,
145
156
  y: p,
146
- top: x,
147
- left: y
148
- } = m.getBoundingClientRect(), F = a.offsetHeight + x + window.scrollY + b + c > document.documentElement.scrollHeight, e = a.offsetWidth + y + window.scrollX + o > document.documentElement.scrollWidth;
149
- F ? a.style.bottom = `${window.innerHeight - p + 10}px` : a.style.top = `${p + b + 10 + c}px`, e ? a.style.left = `${Math.max(l - a.offsetWidth + m.offsetWidth, 0) + o}px` : a.style.left = `${l + o}px`;
157
+ top: y,
158
+ left: k
159
+ } = x.getBoundingClientRect(), m = a.offsetHeight + y + window.scrollY + g + s > document.documentElement.scrollHeight, v = a.offsetWidth + k + window.scrollX + o > document.documentElement.scrollWidth;
160
+ m ? a.style.bottom = `${window.innerHeight - p + 10}px` : a.style.top = `${p + g + 10 + s}px`, v ? a.style.left = `${Math.max(d - a.offsetWidth + x.offsetWidth, 0) + o}px` : a.style.left = `${d + o}px`;
150
161
  };
151
- return r(), window.addEventListener("scroll", r, !0), window.addEventListener("resize", r), () => {
152
- window.removeEventListener("scroll", r, !0), window.removeEventListener("resize", r);
162
+ return n(), window.addEventListener("scroll", n, !0), window.addEventListener("resize", n), () => {
163
+ window.removeEventListener("scroll", n, !0), window.removeEventListener("resize", n);
153
164
  };
154
165
  },
155
166
  "aria-label": "Select container",
@@ -166,14 +177,14 @@ function j({
166
177
  styleOrder: 1,
167
178
  userSelect: "none",
168
179
  zIndex: 1,
169
- ...g,
180
+ ...h,
170
181
  children: [
171
- n,
172
- s && t === "checkbox" && /* @__PURE__ */ i(A, { justifyContent: "end", w: "100%", children: /* @__PURE__ */ i(
173
- B,
182
+ t,
183
+ l && e === "checkbox" && /* @__PURE__ */ i(B, { justifyContent: "end", w: "100%", children: /* @__PURE__ */ i(
184
+ R,
174
185
  {
175
186
  "aria-label": "Select confirm button",
176
- className: v({
187
+ className: E({
177
188
  textAlign: "end",
178
189
  bg: "var(--primary, light-dark(#674DC7, #8163E1))",
179
190
  borderRadius: "8px",
@@ -185,73 +196,73 @@ function j({
185
196
  }),
186
197
  onClick: () => f(!1),
187
198
  variant: "primary",
188
- children: h
199
+ children: b
189
200
  }
190
201
  ) })
191
202
  ]
192
203
  }
193
204
  ) : null;
194
205
  }
195
- function I({
196
- disabled: n,
197
- onClick: s,
198
- children: h,
206
+ function X({
207
+ disabled: t,
208
+ onClick: l,
209
+ children: b,
199
210
  value: o,
200
- showCheck: c = !0,
201
- ...g
211
+ showCheck: s = !0,
212
+ ...h
202
213
  }) {
203
- const { setOpen: u, setValue: f, value: t, type: d } = C(), a = () => {
204
- d !== "checkbox" && u(!1);
205
- }, m = (l, p) => {
206
- if (s) {
207
- s(l, p);
214
+ const { setOpen: u, setValue: f, value: e, type: c } = w(), a = () => {
215
+ c !== "checkbox" && u(!1);
216
+ }, x = (d, p) => {
217
+ if (l) {
218
+ l(d, p);
208
219
  return;
209
220
  }
210
- typeof l == "string" && f(l), a();
211
- }, r = {
221
+ typeof d == "string" && f(d), a();
222
+ }, n = {
212
223
  default: !1,
213
- radio: t === o,
214
- checkbox: Array.isArray(t) && o && t.includes(o)
215
- }[d], b = !n && !(d === "radio" && r);
216
- return /* @__PURE__ */ S(
217
- A,
224
+ radio: e === o,
225
+ checkbox: Array.isArray(e) && o && e.includes(o)
226
+ }[c], g = !t && !(c === "radio" && n);
227
+ return /* @__PURE__ */ C(
228
+ B,
218
229
  {
219
- _hover: b && {
230
+ _hover: g && {
220
231
  bg: "var(--primaryBg, light-dark(#F4F3FA, #F4F3FA0D))"
221
232
  },
222
233
  alignItems: "center",
223
234
  "aria-label": "Select option",
224
235
  borderRadius: "6px",
225
- color: n ? "var(--selectDisabled, light-dark(#C4C5D1, #45464D))" : r ? "var(--primary, light-dark(#674DC7, #8163E1)" : "var(--title, light-dark(#1A1A1A,#FAFAFA))",
226
- cursor: b ? "pointer" : "default",
236
+ color: t ? "var(--selectDisabled, light-dark(#C4C5D1, #45464D))" : n ? "var(--primary, light-dark(#674DC7, #8163E1)" : "var(--title, light-dark(#1A1A1A,#FAFAFA))",
237
+ cursor: g ? "pointer" : "default",
227
238
  "data-value": o,
228
- fontWeight: r ? "700" : "400",
239
+ fontWeight: n ? "700" : "400",
229
240
  gap: {
230
241
  checkbox: "10px",
231
242
  radio: "6px",
232
243
  default: "0"
233
- }[d],
244
+ }[c],
234
245
  h: "40px",
235
- onClick: n ? void 0 : (l) => m(o, l),
246
+ onClick: t ? void 0 : (d) => x(o, d),
236
247
  px: "10px",
237
248
  styleOrder: 1,
238
249
  transition: "background-color 0.1s ease-in-out",
239
- ...g,
250
+ ...h,
240
251
  children: [
241
- c && {
252
+ s && {
242
253
  checkbox: /* @__PURE__ */ i(
243
- k,
254
+ F,
244
255
  {
245
- bg: n ? "var(--inputDisabledBackground, light-dark(#F0F0F3, #414244))" : r ? "var(--primary, light-dark(#674DC7, #8163E1)" : "var(--border, light-dark(#E4E4E4, #434343))",
256
+ bg: t ? "var(--inputDisabledBackground, light-dark(#F0F0F3, #414244))" : n ? "var(--primary, light-dark(#674DC7, #8163E1)" : "var(--border, light-dark(#E4E4E4, #434343))",
246
257
  borderRadius: "4px",
247
258
  boxSize: "18px",
248
259
  pos: "relative",
249
260
  transition: "background-color 0.1s ease-in-out",
250
- children: r && /* @__PURE__ */ i(
251
- D,
261
+ children: n && /* @__PURE__ */ i(
262
+ O,
252
263
  {
253
- className: v({
254
- color: n ? "var(--inputDisabledText, light-dark(#E5E5E5, #373737))" : "#FFF",
264
+ className: E({
265
+ color: t ? "var(--inputDisabledText, light-dark(#E5E5E5, #373737))" : "#FFF",
255
266
  position: "absolute",
256
267
  top: "55%",
257
268
  left: "50%",
@@ -261,17 +272,17 @@ function I({
261
272
  )
262
273
  }
263
274
  ),
264
- radio: /* @__PURE__ */ i(O, { children: r && /* @__PURE__ */ i(
265
- k,
275
+ radio: /* @__PURE__ */ i(A, { children: n && /* @__PURE__ */ i(
276
+ F,
266
277
  {
267
278
  borderRadius: "4px",
268
279
  boxSize: "18px",
269
280
  pos: "relative",
270
281
  transition: "background-color 0.1s ease-in-out",
271
282
  children: /* @__PURE__ */ i(
272
- D,
283
+ O,
273
284
  {
274
- className: v({
285
+ className: E({
275
286
  position: "absolute",
276
287
  top: "55%",
277
288
  left: "50%",
@@ -283,28 +294,28 @@ function I({
283
294
  }
284
295
  ) }),
285
296
  default: null
286
- }[d],
287
- h
297
+ }[c],
298
+ b
288
299
  ]
289
300
  }
290
301
  );
291
302
  }
292
- function J({ ...n }) {
303
+ function U({ ...t }) {
293
304
  return /* @__PURE__ */ i(
294
- k,
305
+ F,
295
306
  {
296
307
  bg: "var(--border, light-dark(#E4E4E4,#434343)",
297
308
  h: "1px",
298
309
  styleOrder: 1,
299
310
  w: "100%",
300
- ...n
311
+ ...t
301
312
  }
302
313
  );
303
314
  }
304
315
  export {
305
- G as Select,
306
- j as SelectContainer,
307
- J as SelectDivider,
308
- I as SelectOption,
309
- $ as SelectTrigger
316
+ Q as Select,
317
+ P as SelectContainer,
318
+ U as SelectDivider,
319
+ X as SelectOption,
320
+ V as SelectTrigger
310
321
  };
package/package.json CHANGED
@@ -16,7 +16,7 @@
16
16
  "css-in-js-framework",
17
17
  "react"
18
18
  ],
19
- "version": "0.1.35",
19
+ "version": "0.1.36",
20
20
  "type": "module",
21
21
  "publishConfig": {
22
22
  "access": "public"
@@ -36,21 +36,21 @@
36
36
  "types": "./dist/index.d.ts",
37
37
  "dependencies": {
38
38
  "csstype-extra": "latest",
39
- "react": "^19.1.1",
40
- "react-dom": "^19.1.1",
39
+ "react": "^19.2.0",
40
+ "react-dom": "^19.2.0",
41
41
  "clsx": "^2.1",
42
- "@devup-ui/react": "1.0.26"
42
+ "@devup-ui/react": "1.0.27"
43
43
  },
44
44
  "devDependencies": {
45
- "@storybook/addon-docs": "^9.1",
46
- "@storybook/addon-onboarding": "^9.1",
47
- "@storybook/react-vite": "^9.1",
48
- "@types/react": "^19.2.2",
49
- "eslint-plugin-storybook": "^9.1",
45
+ "@storybook/addon-docs": "^10.0",
46
+ "@storybook/addon-onboarding": "^10.0",
47
+ "@storybook/react-vite": "^10.0",
48
+ "@types/react": "^19.2.6",
49
+ "eslint-plugin-storybook": "^10.0",
50
50
  "rollup-plugin-preserve-directives": "^0.4",
51
- "storybook": "^9.1",
51
+ "storybook": "^10.0",
52
52
  "typescript": "^5.9",
53
- "vite": "^7.1",
53
+ "vite": "^7.2",
54
54
  "vite-plugin-dts": "^4.5",
55
55
  "vitest": "^4.0",
56
56
  "@devup-ui/vite-plugin": "1.0.49"
@@ -58,7 +58,7 @@
58
58
  "peerDependencies": {
59
59
  "csstype-extra": "*",
60
60
  "react": "*",
61
- "@devup-ui/react": "1.0.26"
61
+ "@devup-ui/react": "1.0.27"
62
62
  },
63
63
  "scripts": {
64
64
  "lint": "eslint",