meticulous-ui 3.8.2 → 3.8.4

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,11 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("react/jsx-runtime"),C=require("react"),h=require("styled-components"),U=require("prop-types"),c=require("../../colors/grey.cjs"),q=require("../../colors/green.cjs"),d=require("../../colors/white.cjs"),z=e=>e&&e.__esModule?e:{default:e},f=z(h),t=z(U),u=1.9,s=.28,n=u+s*2,E=.7,p=s+u,G=f.default.button`
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const m=require("react/jsx-runtime"),i=require("react"),y=require("styled-components"),N=require("prop-types"),g=require("../../colors/grey.cjs"),B=require("../../colors/green.cjs"),b=require("../../colors/white.cjs"),E=e=>e&&e.__esModule?e:{default:e},h=E(y),t=E(N),p=1.9,d=.28,c=p+d*2,X=.7,k=d+p,Z=h.default.button`
2
2
  position: relative;
3
3
  isolation: isolate;
4
- height: ${n}rem;
4
+ height: ${c}rem;
5
5
  width: ${({$hasLabel:e})=>e?"max-content":"4.8rem"};
6
6
  min-width: 4.8rem;
7
7
  max-width: 20rem;
8
- border-radius: ${n/2}rem;
8
+ border-radius: ${c/2}rem;
9
9
  border: 0.094rem solid rgba(0, 0, 0, 0.08);
10
10
  display: flex;
11
11
  align-items: center;
@@ -14,8 +14,8 @@
14
14
  cursor: ${({$disabled:e})=>e?"not-allowed":"pointer"};
15
15
  outline: none;
16
16
 
17
- padding-left: ${({$checked:e,$hasLabel:r})=>r?e?`${s}rem`:`${p}rem`:"0"};
18
- padding-right: ${({$checked:e,$hasLabel:r})=>r?e?`${p}rem`:`${s}rem`:"0"};
17
+ padding-left: ${({$checked:e,$hasLabel:r})=>r?e?`${d}rem`:`${k}rem`:"0"};
18
+ padding-right: ${({$checked:e,$hasLabel:r})=>r?e?`${k}rem`:`${d}rem`:"0"};
19
19
 
20
20
  transition:
21
21
  background-color 0.3s ease,
@@ -23,13 +23,13 @@
23
23
  padding-left 0.3s cubic-bezier(0.34, 1.56, 0.64, 1),
24
24
  padding-right 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
25
25
 
26
- background-color: ${({$checked:e,$onColor:r,$offColor:o,$disabled:i})=>i?c.default.m300:e?r||q.default.m500:o||c.default.m400};
26
+ background-color: ${({$checked:e,$onColor:r,$offColor:s,$disabled:u})=>u?g.default.m300:e?r||B.default.m500:s||g.default.m400};
27
27
 
28
28
  &:focus-visible {
29
- outline: 0.188rem solid ${({$onColor:e})=>e?`${e}88`:`${q.default.m500}88`};
29
+ outline: 0.188rem solid ${({$onColor:e})=>e?`${e}88`:`${B.default.m500}88`};
30
30
  outline-offset: 0.125rem;
31
31
  }
32
- `,O=f.default.div`
32
+ `,C=h.default.div`
33
33
  position: absolute;
34
34
  top: 50%;
35
35
  transform: translateY(-50%);
@@ -40,10 +40,13 @@
40
40
  transition: all 0.45s cubic-bezier(0.34, 1.56, 0.64, 1);
41
41
  z-index: 10;
42
42
 
43
- ${({$isGlass:e,$checked:r})=>e?h.css`
44
- width: ${n*1.55}rem;
45
- height: ${n*1.9}rem;
46
- left: ${r?`calc(100% - ${n*1.2+.1}rem)`:"-0.75rem"};
43
+ ${({$isGlass:e,$checked:r})=>e?y.css`
44
+ width: ${c*1.55}rem;
45
+ height: ${c*1.9}rem;
46
+ left: -0.75rem;
47
+ transform: translateY(-50%) translateX(${r?"var(--glass-travel, 0rem)":"0"});
48
+ transition: transform 0.45s cubic-bezier(0.34, 1.56, 0.64, 1);
49
+ will-change: transform;
47
50
 
48
51
  /* transparent center, rim-only glass */
49
52
  background: radial-gradient(
@@ -83,14 +86,14 @@
83
86
  &::after {
84
87
  display: none;
85
88
  }
86
- `:h.css`
87
- width: ${u}rem;
88
- height: ${u}rem;
89
- left: ${r?`calc(100% - ${p}rem)`:`${s}rem`};
90
- background: ${d.default};
89
+ `:y.css`
90
+ width: ${p}rem;
91
+ height: ${p}rem;
92
+ left: ${r?`calc(100% - ${k}rem)`:`${d}rem`};
93
+ background: ${b.default};
91
94
  box-shadow: 0 0.125rem 0.375rem rgba(0, 0, 0, 0.25);
92
95
  `}
93
- `,R=f.default.span`
96
+ `,J=h.default.span`
94
97
  position: relative;
95
98
  z-index: 2;
96
99
  font-size: 0.9rem;
@@ -102,9 +105,9 @@
102
105
  text-overflow: ellipsis;
103
106
  user-select: none;
104
107
  pointer-events: none;
105
- padding: ${({$isGlass:e,$checked:r})=>e?r?"0 1.6rem 0 0.6rem":"0 0.6rem 0 1.6rem":`0 ${E}rem`};
108
+ padding: ${({$isGlass:e,$checked:r})=>e?r?"0 1.6rem 0 0.6rem":"0 0.6rem 0 1.6rem":`0 ${X}rem`};
106
109
  color: rgba(255, 255, 255, 0.95);
107
- `,K=f.default.span`
110
+ `,Q=h.default.span`
108
111
  display: flex;
109
112
  align-items: center;
110
113
  justify-content: center;
@@ -113,9 +116,9 @@
113
116
  stroke-width: 2.5;
114
117
  }
115
118
 
116
- filter: drop-shadow(0 0 0.25rem ${({$color:e})=>e||d.default})
117
- drop-shadow(0 0 0.625rem ${({$color:e})=>e||d.default})
118
- drop-shadow(0 0 1.25rem ${({$color:e})=>e||d.default})
119
- drop-shadow(0 0 2.5rem ${({$color:e})=>e?`${e}99`:`${c.default.m100}99`})
120
- drop-shadow(0 0 3.75rem ${({$color:e})=>e?`${e}4D`:`${c.default.m200}4D`});
121
- `,D=({checked:e,defaultChecked:r=!1,onChange:o,onIcon:i,offIcon:$,onColor:w,offColor:x,onLabel:k,offLabel:v,label:L,id:M,disabled:m=!1,isGlass:b,...I})=>{const[P,A]=C.useState(r),y=e!==void 0,a=y?e:P,B=S=>{if(S.preventDefault(),m)return;const j=!a;y||A(j),o==null||o(j)},H=i!=null||$!=null,_=k!=null||v!=null,T=a?i:$,g=a?k:v;return l.jsxs(G,{...I,id:M,type:"button",role:"switch","aria-checked":a,"aria-label":L||g||void 0,"aria-disabled":m||void 0,onClick:B,$checked:a,$disabled:m,$onColor:w,$offColor:x,$hasLabel:_,children:[l.jsx(O,{"aria-hidden":"true",$checked:a,$isGlass:b,children:b?l.jsx(K,{$color:a?w:x,children:T}):H&&T}),_&&g&&l.jsx(R,{$isGlass:b,$checked:a,"aria-live":"polite","aria-atomic":"true",children:g})]})};D.propTypes={checked:t.default.bool,defaultChecked:t.default.bool,onChange:t.default.func,onIcon:t.default.node,offIcon:t.default.node,onColor:t.default.string,offColor:t.default.string,onLabel:t.default.string,offLabel:t.default.string,label:t.default.string,id:t.default.string,disabled:t.default.bool,isGlass:t.default.bool};exports.default=D;
119
+ filter: drop-shadow(0 0 0.25rem ${({$color:e})=>e||b.default})
120
+ drop-shadow(0 0 0.625rem ${({$color:e})=>e||b.default})
121
+ drop-shadow(0 0 1.25rem ${({$color:e})=>e||b.default})
122
+ drop-shadow(0 0 2.5rem ${({$color:e})=>e?`${e}99`:`${g.default.m100}99`})
123
+ drop-shadow(0 0 3.75rem ${({$color:e})=>e?`${e}4D`:`${g.default.m200}4D`});
124
+ `,H=({checked:e,defaultChecked:r=!1,onChange:s,onIcon:u,offIcon:_,onColor:T,offColor:D,onLabel:z,offLabel:j,label:I,id:P,disabled:f=!1,isGlass:l,...$})=>{const[A,q]=i.useState(r),w=e!==void 0,o=w?e:A,v=i.useRef(null);i.useRef(0);const[R,F]=i.useState(null);i.useEffect(()=>{if(!l||!v.current)return;const n=v.current,a=()=>{const Y=parseFloat(getComputedStyle(document.documentElement).fontSize),G=n.getBoundingClientRect().width/Y-(c*1.2+.1-.75);F(`${G.toFixed(4)}rem`)};a();const M=new ResizeObserver(a);return M.observe(n),()=>M.disconnect()},[l]);const O=n=>{if(n.preventDefault(),f)return;const a=!o;w||q(a),s==null||s(a)},U=n=>{if(n.key==="Enter"||n.key===" "){if(n.repeat){n.preventDefault();return}if(n.preventDefault(),!f){const a=!o;w||q(a),s==null||s(a)}}},K=u!=null||_!=null,S=z!=null||j!=null,L=o?u:_,x=o?z:j;return m.jsxs(Z,{...$,ref:v,id:P,type:"button",role:"switch","aria-checked":o,"aria-label":I||x||void 0,"aria-disabled":f||void 0,onClick:O,onKeyDown:U,$checked:o,$disabled:f,$onColor:T,$offColor:D,$hasLabel:S,style:R!=null?{...$.style,"--glass-travel":R}:$.style,children:[m.jsx(C,{"aria-hidden":"true",$checked:o,$isGlass:l,children:l?m.jsx(Q,{$color:o?T:D,children:L}):K&&L}),S&&x&&m.jsx(J,{$isGlass:l,$checked:o,"aria-live":"polite","aria-atomic":"true",children:x})]})};H.propTypes={checked:t.default.bool,defaultChecked:t.default.bool,onChange:t.default.func,onIcon:t.default.node,offIcon:t.default.node,onColor:t.default.string,offColor:t.default.string,onLabel:t.default.string,offLabel:t.default.string,label:t.default.string,id:t.default.string,disabled:t.default.bool,isGlass:t.default.bool};exports.default=H;
@@ -1,18 +1,18 @@
1
- import { jsxs as P, jsx as h } from "react/jsx-runtime";
2
- import { useState as U } from "react";
3
- import m, { css as D } from "styled-components";
1
+ import { jsxs as N, jsx as v } from "react/jsx-runtime";
2
+ import { useState as R, useRef as _, useEffect as X } from "react";
3
+ import p, { css as j } from "styled-components";
4
4
  import r from "prop-types";
5
- import d from "../../colors/grey.js";
6
- import L from "../../colors/green.js";
7
- import l from "../../colors/white.js";
8
- const c = 1.9, s = 0.28, n = c + s * 2, E = 0.7, u = s + c, G = m.button`
5
+ import b from "../../colors/grey.js";
6
+ import A from "../../colors/green.js";
7
+ import u from "../../colors/white.js";
8
+ const f = 1.9, l = 0.28, c = f + l * 2, Z = 0.7, k = l + f, q = p.button`
9
9
  position: relative;
10
10
  isolation: isolate;
11
- height: ${n}rem;
11
+ height: ${c}rem;
12
12
  width: ${({ $hasLabel: e }) => e ? "max-content" : "4.8rem"};
13
13
  min-width: 4.8rem;
14
14
  max-width: 20rem;
15
- border-radius: ${n / 2}rem;
15
+ border-radius: ${c / 2}rem;
16
16
  border: 0.094rem solid rgba(0, 0, 0, 0.08);
17
17
  display: flex;
18
18
  align-items: center;
@@ -21,8 +21,8 @@ const c = 1.9, s = 0.28, n = c + s * 2, E = 0.7, u = s + c, G = m.button`
21
21
  cursor: ${({ $disabled: e }) => e ? "not-allowed" : "pointer"};
22
22
  outline: none;
23
23
 
24
- padding-left: ${({ $checked: e, $hasLabel: t }) => t ? e ? `${s}rem` : `${u}rem` : "0"};
25
- padding-right: ${({ $checked: e, $hasLabel: t }) => t ? e ? `${u}rem` : `${s}rem` : "0"};
24
+ padding-left: ${({ $checked: e, $hasLabel: t }) => t ? e ? `${l}rem` : `${k}rem` : "0"};
25
+ padding-right: ${({ $checked: e, $hasLabel: t }) => t ? e ? `${k}rem` : `${l}rem` : "0"};
26
26
 
27
27
  transition:
28
28
  background-color 0.3s ease,
@@ -30,13 +30,13 @@ const c = 1.9, s = 0.28, n = c + s * 2, E = 0.7, u = s + c, G = m.button`
30
30
  padding-left 0.3s cubic-bezier(0.34, 1.56, 0.64, 1),
31
31
  padding-right 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
32
32
 
33
- background-color: ${({ $checked: e, $onColor: t, $offColor: i, $disabled: a }) => a ? d.m300 : e ? t || L.m500 : i || d.m400};
33
+ background-color: ${({ $checked: e, $onColor: t, $offColor: i, $disabled: d }) => d ? b.m300 : e ? t || A.m500 : i || b.m400};
34
34
 
35
35
  &:focus-visible {
36
- outline: 0.188rem solid ${({ $onColor: e }) => e ? `${e}88` : `${L.m500}88`};
36
+ outline: 0.188rem solid ${({ $onColor: e }) => e ? `${e}88` : `${A.m500}88`};
37
37
  outline-offset: 0.125rem;
38
38
  }
39
- `, S = m.div`
39
+ `, C = p.div`
40
40
  position: absolute;
41
41
  top: 50%;
42
42
  transform: translateY(-50%);
@@ -47,10 +47,13 @@ const c = 1.9, s = 0.28, n = c + s * 2, E = 0.7, u = s + c, G = m.button`
47
47
  transition: all 0.45s cubic-bezier(0.34, 1.56, 0.64, 1);
48
48
  z-index: 10;
49
49
 
50
- ${({ $isGlass: e, $checked: t }) => e ? D`
51
- width: ${n * 1.55}rem;
52
- height: ${n * 1.9}rem;
53
- left: ${t ? `calc(100% - ${n * 1.2 + 0.1}rem)` : "-0.75rem"};
50
+ ${({ $isGlass: e, $checked: t }) => e ? j`
51
+ width: ${c * 1.55}rem;
52
+ height: ${c * 1.9}rem;
53
+ left: -0.75rem;
54
+ transform: translateY(-50%) translateX(${t ? "var(--glass-travel, 0rem)" : "0"});
55
+ transition: transform 0.45s cubic-bezier(0.34, 1.56, 0.64, 1);
56
+ will-change: transform;
54
57
 
55
58
  /* transparent center, rim-only glass */
56
59
  background: radial-gradient(
@@ -90,14 +93,14 @@ const c = 1.9, s = 0.28, n = c + s * 2, E = 0.7, u = s + c, G = m.button`
90
93
  &::after {
91
94
  display: none;
92
95
  }
93
- ` : D`
94
- width: ${c}rem;
95
- height: ${c}rem;
96
- left: ${t ? `calc(100% - ${u}rem)` : `${s}rem`};
97
- background: ${l};
96
+ ` : j`
97
+ width: ${f}rem;
98
+ height: ${f}rem;
99
+ left: ${t ? `calc(100% - ${k}rem)` : `${l}rem`};
100
+ background: ${u};
98
101
  box-shadow: 0 0.125rem 0.375rem rgba(0, 0, 0, 0.25);
99
102
  `}
100
- `, K = m.span`
103
+ `, J = p.span`
101
104
  position: relative;
102
105
  z-index: 2;
103
106
  font-size: 0.9rem;
@@ -109,9 +112,9 @@ const c = 1.9, s = 0.28, n = c + s * 2, E = 0.7, u = s + c, G = m.button`
109
112
  text-overflow: ellipsis;
110
113
  user-select: none;
111
114
  pointer-events: none;
112
- padding: ${({ $isGlass: e, $checked: t }) => e ? t ? "0 1.6rem 0 0.6rem" : "0 0.6rem 0 1.6rem" : `0 ${E}rem`};
115
+ padding: ${({ $isGlass: e, $checked: t }) => e ? t ? "0 1.6rem 0 0.6rem" : "0 0.6rem 0 1.6rem" : `0 ${Z}rem`};
113
116
  color: rgba(255, 255, 255, 0.95);
114
- `, N = m.span`
117
+ `, Q = p.span`
115
118
  display: flex;
116
119
  align-items: center;
117
120
  justify-content: center;
@@ -120,56 +123,83 @@ const c = 1.9, s = 0.28, n = c + s * 2, E = 0.7, u = s + c, G = m.button`
120
123
  stroke-width: 2.5;
121
124
  }
122
125
 
123
- filter: drop-shadow(0 0 0.25rem ${({ $color: e }) => e || l})
124
- drop-shadow(0 0 0.625rem ${({ $color: e }) => e || l})
125
- drop-shadow(0 0 1.25rem ${({ $color: e }) => e || l})
126
- drop-shadow(0 0 2.5rem ${({ $color: e }) => e ? `${e}99` : `${d.m100}99`})
127
- drop-shadow(0 0 3.75rem ${({ $color: e }) => e ? `${e}4D` : `${d.m200}4D`});
128
- `, O = ({
126
+ filter: drop-shadow(0 0 0.25rem ${({ $color: e }) => e || u})
127
+ drop-shadow(0 0 0.625rem ${({ $color: e }) => e || u})
128
+ drop-shadow(0 0 1.25rem ${({ $color: e }) => e || u})
129
+ drop-shadow(0 0 2.5rem ${({ $color: e }) => e ? `${e}99` : `${b.m100}99`})
130
+ drop-shadow(0 0 3.75rem ${({ $color: e }) => e ? `${e}4D` : `${b.m200}4D`});
131
+ `, V = ({
129
132
  checked: e,
130
133
  defaultChecked: t = !1,
131
134
  onChange: i,
132
- onIcon: a,
133
- offIcon: f,
134
- onColor: $,
135
- offColor: w,
136
- onLabel: x,
137
- offLabel: k,
138
- label: I,
139
- id: _,
140
- disabled: b = !1,
141
- isGlass: p,
142
- ...j
135
+ onIcon: d,
136
+ offIcon: x,
137
+ onColor: y,
138
+ offColor: T,
139
+ onLabel: z,
140
+ offLabel: D,
141
+ label: S,
142
+ id: F,
143
+ disabled: m = !1,
144
+ isGlass: a,
145
+ ...g
143
146
  }) => {
144
- const [A, B] = U(t), v = e !== void 0, o = v ? e : A, H = (M) => {
145
- if (M.preventDefault(), b) return;
146
- const z = !o;
147
- v || B(z), i == null || i(z);
148
- }, C = a != null || f != null, y = x != null || k != null, T = o ? a : f, g = o ? x : k;
149
- return /* @__PURE__ */ P(
150
- G,
147
+ const [M, L] = R(t), h = e !== void 0, n = h ? e : M, $ = _(null);
148
+ _(0);
149
+ const [B, P] = R(null);
150
+ X(() => {
151
+ if (!a || !$.current) return;
152
+ const o = $.current, s = () => {
153
+ const Y = parseFloat(getComputedStyle(document.documentElement).fontSize), G = o.getBoundingClientRect().width / Y - (c * 1.2 + 0.1 - 0.75);
154
+ P(`${G.toFixed(4)}rem`);
155
+ };
156
+ s();
157
+ const I = new ResizeObserver(s);
158
+ return I.observe(o), () => I.disconnect();
159
+ }, [a]);
160
+ const U = (o) => {
161
+ if (o.preventDefault(), m) return;
162
+ const s = !n;
163
+ h || L(s), i == null || i(s);
164
+ }, K = (o) => {
165
+ if (o.key === "Enter" || o.key === " ") {
166
+ if (o.repeat) {
167
+ o.preventDefault();
168
+ return;
169
+ }
170
+ if (o.preventDefault(), !m) {
171
+ const s = !n;
172
+ h || L(s), i == null || i(s);
173
+ }
174
+ }
175
+ }, O = d != null || x != null, E = z != null || D != null, H = n ? d : x, w = n ? z : D;
176
+ return /* @__PURE__ */ N(
177
+ q,
151
178
  {
152
- ...j,
153
- id: _,
179
+ ...g,
180
+ ref: $,
181
+ id: F,
154
182
  type: "button",
155
183
  role: "switch",
156
- "aria-checked": o,
157
- "aria-label": I || g || void 0,
158
- "aria-disabled": b || void 0,
159
- onClick: H,
160
- $checked: o,
161
- $disabled: b,
162
- $onColor: $,
163
- $offColor: w,
164
- $hasLabel: y,
184
+ "aria-checked": n,
185
+ "aria-label": S || w || void 0,
186
+ "aria-disabled": m || void 0,
187
+ onClick: U,
188
+ onKeyDown: K,
189
+ $checked: n,
190
+ $disabled: m,
191
+ $onColor: y,
192
+ $offColor: T,
193
+ $hasLabel: E,
194
+ style: B != null ? { ...g.style, "--glass-travel": B } : g.style,
165
195
  children: [
166
- /* @__PURE__ */ h(S, { "aria-hidden": "true", $checked: o, $isGlass: p, children: p ? /* @__PURE__ */ h(N, { $color: o ? $ : w, children: T }) : C && T }),
167
- y && g && /* @__PURE__ */ h(K, { $isGlass: p, $checked: o, "aria-live": "polite", "aria-atomic": "true", children: g })
196
+ /* @__PURE__ */ v(C, { "aria-hidden": "true", $checked: n, $isGlass: a, children: a ? /* @__PURE__ */ v(Q, { $color: n ? y : T, children: H }) : O && H }),
197
+ E && w && /* @__PURE__ */ v(J, { $isGlass: a, $checked: n, "aria-live": "polite", "aria-atomic": "true", children: w })
168
198
  ]
169
199
  }
170
200
  );
171
201
  };
172
- O.propTypes = {
202
+ V.propTypes = {
173
203
  checked: r.bool,
174
204
  defaultChecked: r.bool,
175
205
  onChange: r.func,
@@ -185,5 +215,5 @@ O.propTypes = {
185
215
  isGlass: r.bool
186
216
  };
187
217
  export {
188
- O as default
218
+ V as default
189
219
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "meticulous-ui",
3
- "version": "3.8.2",
3
+ "version": "3.8.4",
4
4
  "license": "ISC",
5
5
  "description": "A comprehensive React UI component library with a wide range of customizable components, icons, colors, and utilities for building modern web applications.",
6
6
  "types": "./index.d.ts",