@creativoma/liquid-glass 1.0.0 → 1.0.2

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.
package/CHANGELOG.md ADDED
@@ -0,0 +1,34 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [1.0.2] - 2025-12-06
9
+
10
+ ### Changed
11
+
12
+ - Updated dependencies to latest versions
13
+
14
+ ## [1.0.1] - 2025-10-22
15
+
16
+ ### Fixed
17
+
18
+ - Updated SVG structure and styling for improved favicon appearance
19
+
20
+ ### Documentation
21
+
22
+ - Added screenshot to README for better visual reference
23
+
24
+ ## [1.0.0] - 2025-10-22
25
+
26
+ ### Added
27
+
28
+ - Initial release of Liquid Glass component
29
+ - React wrapper component with liquid frosted glass effect
30
+ - Full TypeScript support
31
+ - TailwindCSS integration
32
+ - Customizable backdrop blur, tint color, and displacement scale
33
+ - SVG filter effects for liquid glass appearance
34
+ - Support for polymorphic component API (`as` prop)
package/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # @creativoma/liquid-glass
2
2
 
3
+ ![Screenshot](public/screenshot.jpeg)
4
+
3
5
  A modern React component with liquid frosted glass effect using TailwindCSS. Perfect for creating elegant interfaces with glassmorphism effect.
4
6
 
5
7
  [![npm version](https://img.shields.io/npm/v/@creativoma/liquid-glass.svg)](https://www.npmjs.com/package/@creativoma/liquid-glass)
@@ -223,15 +225,6 @@ Contributions are welcome! Please:
223
225
 
224
226
  MIT © [creativoma](https://github.com/creativoma)
225
227
 
226
- ## 🏷️ Changelog
227
-
228
- ### 1.0.0
228
+ ## 📜 Changelog
229
229
 
230
- - First version of LiquidGlass component
231
- - Frosted glass effect with backdrop-filter
232
- - Animated liquid effect with SVG filters (feTurbulence + feDisplacementMap)
233
- - Full customization of liquid effect (displacement scale, turbulence frequency, seed)
234
- - Support for polymorphic component with `as` prop
235
- - Full integration with TailwindCSS
236
- - Optimized build with tree-shaking
237
- - Full TypeScript support
230
+ See [CHANGELOG.md](./CHANGELOG.md) for a detailed list of changes.
@@ -1,6 +1,5 @@
1
1
  import { FC } from 'react';
2
2
  import { LiquidGlassProps } from './types';
3
-
4
3
  declare const LiquidGlass: FC<LiquidGlassProps>;
5
4
  export default LiquidGlass;
6
5
  //# sourceMappingURL=LiquidGlass.d.ts.map
@@ -1,5 +1,4 @@
1
1
  import { ReactNode, CSSProperties, ElementType, HTMLAttributes } from 'react';
2
-
3
2
  export interface LiquidGlassProps extends Omit<HTMLAttributes<HTMLElement>, 'as'> {
4
3
  /** Content to display inside the glass container */
5
4
  children?: ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/components/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAE7E,MAAM,WAAW,gBACf,SAAQ,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;IAC/C,oDAAoD;IACpD,QAAQ,CAAC,EAAE,SAAS,CAAA;IAEpB,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,uDAAuD;IACvD,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B,sDAAsD;IACtD,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAEhC,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB,4DAA4D;IAC5D,EAAE,CAAC,EAAE,WAAW,CAAA;IAEhB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,aAAa,CAAA;CACtB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/components/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAE7E,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAC5C,cAAc,CAAC,WAAW,CAAC,EAC3B,IAAI,CACL;IACC,oDAAoD;IACpD,QAAQ,CAAC,EAAE,SAAS,CAAA;IAEpB,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,uDAAuD;IACvD,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B,sDAAsD;IACtD,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAEhC,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB,4DAA4D;IAC5D,EAAE,CAAC,EAAE,WAAW,CAAA;IAEhB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,aAAa,CAAA;CACtB"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
-
2
1
  export { default as LiquidGlass } from './components/LiquidGlass';
3
2
  export type { LiquidGlassProps } from './components/types';
4
3
  //# sourceMappingURL=index.d.ts.map
package/dist/index.esm.js CHANGED
@@ -1,64 +1,46 @@
1
1
  import ee, { useId as re } from "react";
2
- var A = { exports: {} }, R = {};
3
- /**
4
- * @license React
5
- * react-jsx-runtime.production.js
6
- *
7
- * Copyright (c) Meta Platforms, Inc. and affiliates.
8
- *
9
- * This source code is licensed under the MIT license found in the
10
- * LICENSE file in the root directory of this source tree.
11
- */
12
- var D;
2
+ var x = { exports: {} }, E = {};
3
+ var L;
13
4
  function te() {
14
- if (D) return R;
15
- D = 1;
16
- var c = Symbol.for("react.transitional.element"), b = Symbol.for("react.fragment");
17
- function u(d, s, l) {
18
- var m = null;
19
- if (l !== void 0 && (m = "" + l), s.key !== void 0 && (m = "" + s.key), "key" in s) {
5
+ if (L) return E;
6
+ L = 1;
7
+ var i = Symbol.for("react.transitional.element"), m = Symbol.for("react.fragment");
8
+ function u(c, s, l) {
9
+ var f = null;
10
+ if (l !== void 0 && (f = "" + l), s.key !== void 0 && (f = "" + s.key), "key" in s) {
20
11
  l = {};
21
- for (var p in s)
22
- p !== "key" && (l[p] = s[p]);
12
+ for (var d in s)
13
+ d !== "key" && (l[d] = s[d]);
23
14
  } else l = s;
24
15
  return s = l.ref, {
25
- $$typeof: c,
26
- type: d,
27
- key: m,
16
+ $$typeof: i,
17
+ type: c,
18
+ key: f,
28
19
  ref: s !== void 0 ? s : null,
29
20
  props: l
30
21
  };
31
22
  }
32
- return R.Fragment = b, R.jsx = u, R.jsxs = u, R;
23
+ return E.Fragment = m, E.jsx = u, E.jsxs = u, E;
33
24
  }
34
- var x = {};
35
- /**
36
- * @license React
37
- * react-jsx-runtime.development.js
38
- *
39
- * Copyright (c) Meta Platforms, Inc. and affiliates.
40
- *
41
- * This source code is licensed under the MIT license found in the
42
- * LICENSE file in the root directory of this source tree.
43
- */
44
- var M;
25
+ var _ = {};
26
+ var D;
45
27
  function ne() {
46
- return M || (M = 1, process.env.NODE_ENV !== "production" && function() {
47
- function c(e) {
28
+ return D || (D = 1, process.env.NODE_ENV !== "production" && (function() {
29
+ function i(e) {
48
30
  if (e == null) return null;
49
31
  if (typeof e == "function")
50
32
  return e.$$typeof === Z ? null : e.displayName || e.name || null;
51
33
  if (typeof e == "string") return e;
52
34
  switch (e) {
53
- case j:
35
+ case k:
54
36
  return "Fragment";
55
- case G:
56
- return "Profiler";
57
37
  case z:
38
+ return "Profiler";
39
+ case q:
58
40
  return "StrictMode";
59
- case B:
41
+ case V:
60
42
  return "Suspense";
61
- case J:
43
+ case B:
62
44
  return "SuspenseList";
63
45
  case H:
64
46
  return "Activity";
@@ -69,72 +51,72 @@ function ne() {
69
51
  ), e.$$typeof) {
70
52
  case W:
71
53
  return "Portal";
72
- case q:
73
- return (e.displayName || "Context") + ".Provider";
74
54
  case U:
55
+ return e.displayName || "Context";
56
+ case G:
75
57
  return (e._context.displayName || "Context") + ".Consumer";
76
- case V:
58
+ case J:
77
59
  var r = e.render;
78
60
  return e = e.displayName, e || (e = r.displayName || r.name || "", e = e !== "" ? "ForwardRef(" + e + ")" : "ForwardRef"), e;
79
61
  case X:
80
- return r = e.displayName || null, r !== null ? r : c(e.type) || "Memo";
81
- case N:
62
+ return r = e.displayName || null, r !== null ? r : i(e.type) || "Memo";
63
+ case j:
82
64
  r = e._payload, e = e._init;
83
65
  try {
84
- return c(e(r));
66
+ return i(e(r));
85
67
  } catch {
86
68
  }
87
69
  }
88
70
  return null;
89
71
  }
90
- function b(e) {
72
+ function m(e) {
91
73
  return "" + e;
92
74
  }
93
75
  function u(e) {
94
76
  try {
95
- b(e);
77
+ m(e);
96
78
  var r = !1;
97
79
  } catch {
98
80
  r = !0;
99
81
  }
100
82
  if (r) {
101
83
  r = console;
102
- var t = r.error, a = typeof Symbol == "function" && Symbol.toStringTag && e[Symbol.toStringTag] || e.constructor.name || "Object";
84
+ var t = r.error, n = typeof Symbol == "function" && Symbol.toStringTag && e[Symbol.toStringTag] || e.constructor.name || "Object";
103
85
  return t.call(
104
86
  r,
105
87
  "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
106
- a
107
- ), b(e);
88
+ n
89
+ ), m(e);
108
90
  }
109
91
  }
110
- function d(e) {
111
- if (e === j) return "<>";
112
- if (typeof e == "object" && e !== null && e.$$typeof === N)
92
+ function c(e) {
93
+ if (e === k) return "<>";
94
+ if (typeof e == "object" && e !== null && e.$$typeof === j)
113
95
  return "<...>";
114
96
  try {
115
- var r = c(e);
97
+ var r = i(e);
116
98
  return r ? "<" + r + ">" : "<...>";
117
99
  } catch {
118
100
  return "<...>";
119
101
  }
120
102
  }
121
103
  function s() {
122
- var e = k.A;
104
+ var e = y.A;
123
105
  return e === null ? null : e.getOwner();
124
106
  }
125
107
  function l() {
126
108
  return Error("react-stack-top-frame");
127
109
  }
128
- function m(e) {
129
- if (C.call(e, "key")) {
110
+ function f(e) {
111
+ if (N.call(e, "key")) {
130
112
  var r = Object.getOwnPropertyDescriptor(e, "key").get;
131
113
  if (r && r.isReactWarning) return !1;
132
114
  }
133
115
  return e.key !== void 0;
134
116
  }
135
- function p(e, r) {
117
+ function d(e, r) {
136
118
  function t() {
137
- F || (F = !0, console.error(
119
+ C || (C = !0, console.error(
138
120
  "%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",
139
121
  r
140
122
  ));
@@ -145,19 +127,20 @@ function ne() {
145
127
  });
146
128
  }
147
129
  function T() {
148
- var e = c(this.type);
149
- return I[e] || (I[e] = !0, console.error(
130
+ var e = i(this.type);
131
+ return F[e] || (F[e] = !0, console.error(
150
132
  "Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release."
151
133
  )), e = this.props.ref, e !== void 0 ? e : null;
152
134
  }
153
- function g(e, r, t, a, f, i, y, O) {
154
- return t = i.ref, e = {
135
+ function g(e, r, t, n, R, O) {
136
+ var a = t.ref;
137
+ return e = {
155
138
  $$typeof: P,
156
139
  type: e,
157
140
  key: r,
158
- props: i,
159
- _owner: f
160
- }, (t !== void 0 ? t : null) !== null ? Object.defineProperty(e, "ref", {
141
+ props: t,
142
+ _owner: n
143
+ }, (a !== void 0 ? a : null) !== null ? Object.defineProperty(e, "ref", {
161
144
  enumerable: !1,
162
145
  get: T
163
146
  }) : Object.defineProperty(e, "ref", { enumerable: !1, value: null }), e._store = {}, Object.defineProperty(e._store, "validated", {
@@ -174,7 +157,7 @@ function ne() {
174
157
  configurable: !1,
175
158
  enumerable: !1,
176
159
  writable: !0,
177
- value: y
160
+ value: R
178
161
  }), Object.defineProperty(e, "_debugTask", {
179
162
  configurable: !1,
180
163
  enumerable: !1,
@@ -182,141 +165,141 @@ function ne() {
182
165
  value: O
183
166
  }), Object.freeze && (Object.freeze(e.props), Object.freeze(e)), e;
184
167
  }
185
- function h(e, r, t, a, f, i, y, O) {
186
- var o = r.children;
187
- if (o !== void 0)
188
- if (a)
189
- if (Q(o)) {
190
- for (a = 0; a < o.length; a++)
191
- v(o[a]);
192
- Object.freeze && Object.freeze(o);
168
+ function h(e, r, t, n, R, O) {
169
+ var a = r.children;
170
+ if (a !== void 0)
171
+ if (n)
172
+ if (Q(a)) {
173
+ for (n = 0; n < a.length; n++)
174
+ b(a[n]);
175
+ Object.freeze && Object.freeze(a);
193
176
  } else
194
177
  console.error(
195
178
  "React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."
196
179
  );
197
- else v(o);
198
- if (C.call(r, "key")) {
199
- o = c(e);
200
- var E = Object.keys(r).filter(function(K) {
180
+ else b(a);
181
+ if (N.call(r, "key")) {
182
+ a = i(e);
183
+ var p = Object.keys(r).filter(function(K) {
201
184
  return K !== "key";
202
185
  });
203
- a = 0 < E.length ? "{key: someKey, " + E.join(": ..., ") + ": ...}" : "{key: someKey}", L[o + a] || (E = 0 < E.length ? "{" + E.join(": ..., ") + ": ...}" : "{}", console.error(
186
+ n = 0 < p.length ? "{key: someKey, " + p.join(": ..., ") + ": ...}" : "{key: someKey}", Y[a + n] || (p = 0 < p.length ? "{" + p.join(": ..., ") + ": ...}" : "{}", console.error(
204
187
  `A props object containing a "key" prop is being spread into JSX:
205
188
  let props = %s;
206
189
  <%s {...props} />
207
190
  React keys must be passed directly to JSX without using spread:
208
191
  let props = %s;
209
192
  <%s key={someKey} {...props} />`,
193
+ n,
210
194
  a,
211
- o,
212
- E,
213
- o
214
- ), L[o + a] = !0);
195
+ p,
196
+ a
197
+ ), Y[a + n] = !0);
215
198
  }
216
- if (o = null, t !== void 0 && (u(t), o = "" + t), m(r) && (u(r.key), o = "" + r.key), "key" in r) {
199
+ if (a = null, t !== void 0 && (u(t), a = "" + t), f(r) && (u(r.key), a = "" + r.key), "key" in r) {
217
200
  t = {};
218
201
  for (var w in r)
219
202
  w !== "key" && (t[w] = r[w]);
220
203
  } else t = r;
221
- return o && p(
204
+ return a && d(
222
205
  t,
223
206
  typeof e == "function" ? e.displayName || e.name || "Unknown" : e
224
207
  ), g(
225
208
  e,
226
- o,
227
- i,
228
- f,
229
- s(),
209
+ a,
230
210
  t,
231
- y,
211
+ s(),
212
+ R,
232
213
  O
233
214
  );
234
215
  }
235
- function v(e) {
236
- typeof e == "object" && e !== null && e.$$typeof === P && e._store && (e._store.validated = 1);
216
+ function b(e) {
217
+ A(e) ? e._store && (e._store.validated = 1) : typeof e == "object" && e !== null && e.$$typeof === j && (e._payload.status === "fulfilled" ? A(e._payload.value) && e._payload.value._store && (e._payload.value._store.validated = 1) : e._store && (e._store.validated = 1));
237
218
  }
238
- var _ = ee, P = Symbol.for("react.transitional.element"), W = Symbol.for("react.portal"), j = Symbol.for("react.fragment"), z = Symbol.for("react.strict_mode"), G = Symbol.for("react.profiler"), U = Symbol.for("react.consumer"), q = Symbol.for("react.context"), V = Symbol.for("react.forward_ref"), B = Symbol.for("react.suspense"), J = Symbol.for("react.suspense_list"), X = Symbol.for("react.memo"), N = Symbol.for("react.lazy"), H = Symbol.for("react.activity"), Z = Symbol.for("react.client.reference"), k = _.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, C = Object.prototype.hasOwnProperty, Q = Array.isArray, S = console.createTask ? console.createTask : function() {
219
+ function A(e) {
220
+ return typeof e == "object" && e !== null && e.$$typeof === P;
221
+ }
222
+ var v = ee, P = Symbol.for("react.transitional.element"), W = Symbol.for("react.portal"), k = Symbol.for("react.fragment"), q = Symbol.for("react.strict_mode"), z = Symbol.for("react.profiler"), G = Symbol.for("react.consumer"), U = Symbol.for("react.context"), J = Symbol.for("react.forward_ref"), V = Symbol.for("react.suspense"), B = Symbol.for("react.suspense_list"), X = Symbol.for("react.memo"), j = Symbol.for("react.lazy"), H = Symbol.for("react.activity"), Z = Symbol.for("react.client.reference"), y = v.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, N = Object.prototype.hasOwnProperty, Q = Array.isArray, S = console.createTask ? console.createTask : function() {
239
223
  return null;
240
224
  };
241
- _ = {
242
- "react-stack-bottom-frame": function(e) {
225
+ v = {
226
+ react_stack_bottom_frame: function(e) {
243
227
  return e();
244
228
  }
245
229
  };
246
- var F, I = {}, Y = _["react-stack-bottom-frame"].bind(
247
- _,
230
+ var C, F = {}, $ = v.react_stack_bottom_frame.bind(
231
+ v,
248
232
  l
249
- )(), $ = S(d(l)), L = {};
250
- x.Fragment = j, x.jsx = function(e, r, t, a, f) {
251
- var i = 1e4 > k.recentlyCreatedOwnerStacks++;
233
+ )(), I = S(c(l)), Y = {};
234
+ _.Fragment = k, _.jsx = function(e, r, t) {
235
+ var n = 1e4 > y.recentlyCreatedOwnerStacks++;
252
236
  return h(
253
237
  e,
254
238
  r,
255
239
  t,
256
240
  !1,
257
- a,
258
- f,
259
- i ? Error("react-stack-top-frame") : Y,
260
- i ? S(d(e)) : $
241
+ n ? Error("react-stack-top-frame") : $,
242
+ n ? S(c(e)) : I
261
243
  );
262
- }, x.jsxs = function(e, r, t, a, f) {
263
- var i = 1e4 > k.recentlyCreatedOwnerStacks++;
244
+ }, _.jsxs = function(e, r, t) {
245
+ var n = 1e4 > y.recentlyCreatedOwnerStacks++;
264
246
  return h(
265
247
  e,
266
248
  r,
267
249
  t,
268
250
  !0,
269
- a,
270
- f,
271
- i ? Error("react-stack-top-frame") : Y,
272
- i ? S(d(e)) : $
251
+ n ? Error("react-stack-top-frame") : $,
252
+ n ? S(c(e)) : I
273
253
  );
274
254
  };
275
- }()), x;
255
+ })()), _;
256
+ }
257
+ var M;
258
+ function ae() {
259
+ return M || (M = 1, process.env.NODE_ENV === "production" ? x.exports = te() : x.exports = ne()), x.exports;
276
260
  }
277
- process.env.NODE_ENV === "production" ? A.exports = te() : A.exports = ne();
278
- var n = A.exports;
279
- const oe = ({
280
- children: c,
281
- className: b = "",
261
+ var o = ae();
262
+ const se = ({
263
+ children: i,
264
+ className: m = "",
282
265
  backdropBlur: u = 2,
283
- tintColor: d = "rgba(255, 255, 255, .2)",
266
+ tintColor: c = "rgba(255, 255, 255, .2)",
284
267
  displacementScale: s = 150,
285
268
  turbulenceBaseFrequency: l = "0.008 0.008",
286
- turbulenceSeed: m = 1.5,
287
- as: p = "div",
269
+ turbulenceSeed: f = 1.5,
270
+ as: d = "div",
288
271
  style: T,
289
272
  ...g
290
273
  }) => {
291
- const v = `liquid-glass-${re().replace(/:/g, "-")}`;
292
- return /* @__PURE__ */ n.jsxs(n.Fragment, { children: [
293
- /* @__PURE__ */ n.jsx("svg", { style: { display: "none" }, children: /* @__PURE__ */ n.jsxs(
274
+ const b = `liquid-glass-${re().replace(/:/g, "-")}`;
275
+ return /* @__PURE__ */ o.jsxs(o.Fragment, { children: [
276
+ /* @__PURE__ */ o.jsx("svg", { style: { display: "none" }, children: /* @__PURE__ */ o.jsxs(
294
277
  "filter",
295
278
  {
296
- id: v,
279
+ id: b,
297
280
  x: "0%",
298
281
  y: "0%",
299
282
  width: "100%",
300
283
  height: "100%",
301
284
  filterUnits: "objectBoundingBox",
302
285
  children: [
303
- /* @__PURE__ */ n.jsx(
286
+ /* @__PURE__ */ o.jsx(
304
287
  "feTurbulence",
305
288
  {
306
289
  type: "fractalNoise",
307
290
  baseFrequency: l,
308
291
  numOctaves: 1,
309
- seed: m,
292
+ seed: f,
310
293
  result: "turbulence"
311
294
  }
312
295
  ),
313
- /* @__PURE__ */ n.jsxs("feComponentTransfer", { in: "turbulence", result: "mapped", children: [
314
- /* @__PURE__ */ n.jsx("feFuncR", { type: "gamma", amplitude: 1, exponent: 10, offset: 0.5 }),
315
- /* @__PURE__ */ n.jsx("feFuncG", { type: "gamma", amplitude: 0, exponent: 1, offset: 0 }),
316
- /* @__PURE__ */ n.jsx("feFuncB", { type: "gamma", amplitude: 0, exponent: 1, offset: 0.5 })
296
+ /* @__PURE__ */ o.jsxs("feComponentTransfer", { in: "turbulence", result: "mapped", children: [
297
+ /* @__PURE__ */ o.jsx("feFuncR", { type: "gamma", amplitude: 1, exponent: 10, offset: 0.5 }),
298
+ /* @__PURE__ */ o.jsx("feFuncG", { type: "gamma", amplitude: 0, exponent: 1, offset: 0 }),
299
+ /* @__PURE__ */ o.jsx("feFuncB", { type: "gamma", amplitude: 0, exponent: 1, offset: 0.5 })
317
300
  ] }),
318
- /* @__PURE__ */ n.jsx("feGaussianBlur", { in: "turbulence", stdDeviation: 3, result: "softMap" }),
319
- /* @__PURE__ */ n.jsx(
301
+ /* @__PURE__ */ o.jsx("feGaussianBlur", { in: "turbulence", stdDeviation: 3, result: "softMap" }),
302
+ /* @__PURE__ */ o.jsx(
320
303
  "feSpecularLighting",
321
304
  {
322
305
  in: "softMap",
@@ -325,10 +308,10 @@ const oe = ({
325
308
  specularExponent: 100,
326
309
  lightingColor: "white",
327
310
  result: "specLight",
328
- children: /* @__PURE__ */ n.jsx("fePointLight", { x: -200, y: -200, z: 300 })
311
+ children: /* @__PURE__ */ o.jsx("fePointLight", { x: -200, y: -200, z: 300 })
329
312
  }
330
313
  ),
331
- /* @__PURE__ */ n.jsx(
314
+ /* @__PURE__ */ o.jsx(
332
315
  "feComposite",
333
316
  {
334
317
  in: "specLight",
@@ -340,7 +323,7 @@ const oe = ({
340
323
  result: "litImage"
341
324
  }
342
325
  ),
343
- /* @__PURE__ */ n.jsx(
326
+ /* @__PURE__ */ o.jsx(
344
327
  "feDisplacementMap",
345
328
  {
346
329
  in: "SourceGraphic",
@@ -353,43 +336,43 @@ const oe = ({
353
336
  ]
354
337
  }
355
338
  ) }),
356
- /* @__PURE__ */ n.jsxs(
357
- p,
339
+ /* @__PURE__ */ o.jsxs(
340
+ d,
358
341
  {
359
- className: `relative overflow-hidden ${b}`,
342
+ className: `relative overflow-hidden ${m}`,
360
343
  style: {
361
344
  boxShadow: "0 6px 6px rgba(0, 0, 0, 0.2), 0 0 20px rgba(0, 0, 0, 0.1)",
362
345
  ...T
363
346
  },
364
347
  ...g,
365
348
  children: [
366
- /* @__PURE__ */ n.jsx(
349
+ /* @__PURE__ */ o.jsx(
367
350
  "div",
368
351
  {
369
352
  className: "absolute inset-0 z-0 overflow-hidden",
370
353
  style: {
371
354
  backdropFilter: `blur(${u}px)`,
372
355
  WebkitBackdropFilter: `blur(${u}px)`,
373
- filter: `url(#${v})`,
356
+ filter: `url(#${b})`,
374
357
  isolation: "isolate"
375
358
  }
376
359
  }
377
360
  ),
378
- /* @__PURE__ */ n.jsx(
361
+ /* @__PURE__ */ o.jsx(
379
362
  "div",
380
363
  {
381
364
  className: "absolute inset-0 z-[1]",
382
365
  style: {
383
- background: d
366
+ background: c
384
367
  }
385
368
  }
386
369
  ),
387
- /* @__PURE__ */ n.jsx("div", { className: "relative z-[2]", children: c })
370
+ /* @__PURE__ */ o.jsx("div", { className: "relative z-[2]", children: i })
388
371
  ]
389
372
  }
390
373
  )
391
374
  ] });
392
375
  };
393
376
  export {
394
- oe as LiquidGlass
377
+ se as LiquidGlass
395
378
  };
package/dist/index.umd.js CHANGED
@@ -1,22 +1,6 @@
1
- (function(d,E){typeof exports=="object"&&typeof module<"u"?E(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],E):(d=typeof globalThis<"u"?globalThis:d||self,E(d.LiquidGlass={},d.React))})(this,function(d,E){"use strict";var g={exports:{}},x={};/**
2
- * @license React
3
- * react-jsx-runtime.production.js
4
- *
5
- * Copyright (c) Meta Platforms, Inc. and affiliates.
6
- *
7
- * This source code is licensed under the MIT license found in the
8
- * LICENSE file in the root directory of this source tree.
9
- */var C;function z(){if(C)return x;C=1;var u=Symbol.for("react.transitional.element"),v=Symbol.for("react.fragment");function c(m,s,l){var p=null;if(l!==void 0&&(p=""+l),s.key!==void 0&&(p=""+s.key),"key"in s){l={};for(var b in s)b!=="key"&&(l[b]=s[b])}else l=s;return s=l.ref,{$$typeof:u,type:m,key:p,ref:s!==void 0?s:null,props:l}}return x.Fragment=v,x.jsx=c,x.jsxs=c,x}var T={};/**
10
- * @license React
11
- * react-jsx-runtime.development.js
12
- *
13
- * Copyright (c) Meta Platforms, Inc. and affiliates.
14
- *
15
- * This source code is licensed under the MIT license found in the
16
- * LICENSE file in the root directory of this source tree.
17
- */var F;function U(){return F||(F=1,process.env.NODE_ENV!=="production"&&function(){function u(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===te?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case S:return"Fragment";case J:return"Profiler";case B:return"StrictMode";case Q:return"Suspense";case K:return"SuspenseList";case re:return"Activity"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case V:return"Portal";case H:return(e.displayName||"Context")+".Provider";case X:return(e._context.displayName||"Context")+".Consumer";case Z:var r=e.render;return e=e.displayName,e||(e=r.displayName||r.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case ee:return r=e.displayName||null,r!==null?r:u(e.type)||"Memo";case Y:r=e._payload,e=e._init;try{return u(e(r))}catch{}}return null}function v(e){return""+e}function c(e){try{v(e);var r=!1}catch{r=!0}if(r){r=console;var t=r.error,a=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return t.call(r,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",a),v(e)}}function m(e){if(e===S)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===Y)return"<...>";try{var r=u(e);return r?"<"+r+">":"<...>"}catch{return"<...>"}}function s(){var e=O.A;return e===null?null:e.getOwner()}function l(){return Error("react-stack-top-frame")}function p(e){if(L.call(e,"key")){var r=Object.getOwnPropertyDescriptor(e,"key").get;if(r&&r.isReactWarning)return!1}return e.key!==void 0}function b(e,r){function t(){M||(M=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",r))}t.isReactWarning=!0,Object.defineProperty(e,"key",{get:t,configurable:!0})}function j(){var e=u(this.type);return $[e]||($[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function k(e,r,t,a,f,i,A,P){return t=i.ref,e={$$typeof:I,type:e,key:r,props:i,_owner:f},(t!==void 0?t:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:j}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:A}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:P}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function y(e,r,t,a,f,i,A,P){var o=r.children;if(o!==void 0)if(a)if(ne(o)){for(a=0;a<o.length;a++)_(o[a]);Object.freeze&&Object.freeze(o)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else _(o);if(L.call(r,"key")){o=u(e);var R=Object.keys(r).filter(function(ae){return ae!=="key"});a=0<R.length?"{key: someKey, "+R.join(": ..., ")+": ...}":"{key: someKey}",W[o+a]||(R=0<R.length?"{"+R.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
1
+ (function(c,p){typeof exports=="object"&&typeof module<"u"?p(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],p):(c=typeof globalThis<"u"?globalThis:c||self,p(c.LiquidGlass={},c.React))})(this,(function(c,p){"use strict";var x={exports:{}},_={};var N;function W(){if(N)return _;N=1;var i=Symbol.for("react.transitional.element"),b=Symbol.for("react.fragment");function u(f,s,l){var d=null;if(l!==void 0&&(d=""+l),s.key!==void 0&&(d=""+s.key),"key"in s){l={};for(var m in s)m!=="key"&&(l[m]=s[m])}else l=s;return s=l.ref,{$$typeof:i,type:f,key:d,ref:s!==void 0?s:null,props:l}}return _.Fragment=b,_.jsx=u,_.jsxs=u,_}var v={};var C;function z(){return C||(C=1,process.env.NODE_ENV!=="production"&&(function(){function i(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===ne?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case y:return"Fragment";case X:return"Profiler";case B:return"StrictMode";case K:return"Suspense";case ee:return"SuspenseList";case te:return"Activity"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case V:return"Portal";case Z:return e.displayName||"Context";case H:return(e._context.displayName||"Context")+".Consumer";case Q:var r=e.render;return e=e.displayName,e||(e=r.displayName||r.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case re:return r=e.displayName||null,r!==null?r:i(e.type)||"Memo";case S:r=e._payload,e=e._init;try{return i(e(r))}catch{}}return null}function b(e){return""+e}function u(e){try{b(e);var r=!1}catch{r=!0}if(r){r=console;var t=r.error,n=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return t.call(r,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",n),b(e)}}function f(e){if(e===y)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===S)return"<...>";try{var r=i(e);return r?"<"+r+">":"<...>"}catch{return"<...>"}}function s(){var e=O.A;return e===null?null:e.getOwner()}function l(){return Error("react-stack-top-frame")}function d(e){if(L.call(e,"key")){var r=Object.getOwnPropertyDescriptor(e,"key").get;if(r&&r.isReactWarning)return!1}return e.key!==void 0}function m(e,r){function t(){$||($=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",r))}t.isReactWarning=!0,Object.defineProperty(e,"key",{get:t,configurable:!0})}function g(){var e=i(this.type);return M[e]||(M[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function j(e,r,t,n,h,A){var a=t.ref;return e={$$typeof:Y,type:e,key:r,props:t,_owner:n},(a!==void 0?a:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:g}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:h}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:A}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function k(e,r,t,n,h,A){var a=r.children;if(a!==void 0)if(n)if(ae(a)){for(n=0;n<a.length;n++)R(a[n]);Object.freeze&&Object.freeze(a)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else R(a);if(L.call(r,"key")){a=i(e);var E=Object.keys(r).filter(function(oe){return oe!=="key"});n=0<E.length?"{key: someKey, "+E.join(": ..., ")+": ...}":"{key: someKey}",q[a+n]||(E=0<E.length?"{"+E.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
18
2
  let props = %s;
19
3
  <%s {...props} />
20
4
  React keys must be passed directly to JSX without using spread:
21
5
  let props = %s;
22
- <%s key={someKey} {...props} />`,a,o,R,o),W[o+a]=!0)}if(o=null,t!==void 0&&(c(t),o=""+t),p(r)&&(c(r.key),o=""+r.key),"key"in r){t={};for(var N in r)N!=="key"&&(t[N]=r[N])}else t=r;return o&&b(t,typeof e=="function"?e.displayName||e.name||"Unknown":e),k(e,o,i,f,s(),t,A,P)}function _(e){typeof e=="object"&&e!==null&&e.$$typeof===I&&e._store&&(e._store.validated=1)}var h=E,I=Symbol.for("react.transitional.element"),V=Symbol.for("react.portal"),S=Symbol.for("react.fragment"),B=Symbol.for("react.strict_mode"),J=Symbol.for("react.profiler"),X=Symbol.for("react.consumer"),H=Symbol.for("react.context"),Z=Symbol.for("react.forward_ref"),Q=Symbol.for("react.suspense"),K=Symbol.for("react.suspense_list"),ee=Symbol.for("react.memo"),Y=Symbol.for("react.lazy"),re=Symbol.for("react.activity"),te=Symbol.for("react.client.reference"),O=h.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,L=Object.prototype.hasOwnProperty,ne=Array.isArray,w=console.createTask?console.createTask:function(){return null};h={"react-stack-bottom-frame":function(e){return e()}};var M,$={},D=h["react-stack-bottom-frame"].bind(h,l)(),G=w(m(l)),W={};T.Fragment=S,T.jsx=function(e,r,t,a,f){var i=1e4>O.recentlyCreatedOwnerStacks++;return y(e,r,t,!1,a,f,i?Error("react-stack-top-frame"):D,i?w(m(e)):G)},T.jsxs=function(e,r,t,a,f){var i=1e4>O.recentlyCreatedOwnerStacks++;return y(e,r,t,!0,a,f,i?Error("react-stack-top-frame"):D,i?w(m(e)):G)}}()),T}process.env.NODE_ENV==="production"?g.exports=z():g.exports=U();var n=g.exports;const q=({children:u,className:v="",backdropBlur:c=2,tintColor:m="rgba(255, 255, 255, .2)",displacementScale:s=150,turbulenceBaseFrequency:l="0.008 0.008",turbulenceSeed:p=1.5,as:b="div",style:j,...k})=>{const _=`liquid-glass-${E.useId().replace(/:/g,"-")}`;return n.jsxs(n.Fragment,{children:[n.jsx("svg",{style:{display:"none"},children:n.jsxs("filter",{id:_,x:"0%",y:"0%",width:"100%",height:"100%",filterUnits:"objectBoundingBox",children:[n.jsx("feTurbulence",{type:"fractalNoise",baseFrequency:l,numOctaves:1,seed:p,result:"turbulence"}),n.jsxs("feComponentTransfer",{in:"turbulence",result:"mapped",children:[n.jsx("feFuncR",{type:"gamma",amplitude:1,exponent:10,offset:.5}),n.jsx("feFuncG",{type:"gamma",amplitude:0,exponent:1,offset:0}),n.jsx("feFuncB",{type:"gamma",amplitude:0,exponent:1,offset:.5})]}),n.jsx("feGaussianBlur",{in:"turbulence",stdDeviation:3,result:"softMap"}),n.jsx("feSpecularLighting",{in:"softMap",surfaceScale:5,specularConstant:1,specularExponent:100,lightingColor:"white",result:"specLight",children:n.jsx("fePointLight",{x:-200,y:-200,z:300})}),n.jsx("feComposite",{in:"specLight",operator:"arithmetic",k1:0,k2:1,k3:1,k4:0,result:"litImage"}),n.jsx("feDisplacementMap",{in:"SourceGraphic",in2:"softMap",scale:s,xChannelSelector:"R",yChannelSelector:"G"})]})}),n.jsxs(b,{className:`relative overflow-hidden ${v}`,style:{boxShadow:"0 6px 6px rgba(0, 0, 0, 0.2), 0 0 20px rgba(0, 0, 0, 0.1)",...j},...k,children:[n.jsx("div",{className:"absolute inset-0 z-0 overflow-hidden",style:{backdropFilter:`blur(${c}px)`,WebkitBackdropFilter:`blur(${c}px)`,filter:`url(#${_})`,isolation:"isolate"}}),n.jsx("div",{className:"absolute inset-0 z-[1]",style:{background:m}}),n.jsx("div",{className:"relative z-[2]",children:u})]})]})};d.LiquidGlass=q,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})});
6
+ <%s key={someKey} {...props} />`,n,a,E,a),q[a+n]=!0)}if(a=null,t!==void 0&&(u(t),a=""+t),d(r)&&(u(r.key),a=""+r.key),"key"in r){t={};for(var P in r)P!=="key"&&(t[P]=r[P])}else t=r;return a&&m(t,typeof e=="function"?e.displayName||e.name||"Unknown":e),j(e,a,t,s(),h,A)}function R(e){I(e)?e._store&&(e._store.validated=1):typeof e=="object"&&e!==null&&e.$$typeof===S&&(e._payload.status==="fulfilled"?I(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function I(e){return typeof e=="object"&&e!==null&&e.$$typeof===Y}var T=p,Y=Symbol.for("react.transitional.element"),V=Symbol.for("react.portal"),y=Symbol.for("react.fragment"),B=Symbol.for("react.strict_mode"),X=Symbol.for("react.profiler"),H=Symbol.for("react.consumer"),Z=Symbol.for("react.context"),Q=Symbol.for("react.forward_ref"),K=Symbol.for("react.suspense"),ee=Symbol.for("react.suspense_list"),re=Symbol.for("react.memo"),S=Symbol.for("react.lazy"),te=Symbol.for("react.activity"),ne=Symbol.for("react.client.reference"),O=T.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,L=Object.prototype.hasOwnProperty,ae=Array.isArray,w=console.createTask?console.createTask:function(){return null};T={react_stack_bottom_frame:function(e){return e()}};var $,M={},D=T.react_stack_bottom_frame.bind(T,l)(),G=w(f(l)),q={};v.Fragment=y,v.jsx=function(e,r,t){var n=1e4>O.recentlyCreatedOwnerStacks++;return k(e,r,t,!1,n?Error("react-stack-top-frame"):D,n?w(f(e)):G)},v.jsxs=function(e,r,t){var n=1e4>O.recentlyCreatedOwnerStacks++;return k(e,r,t,!0,n?Error("react-stack-top-frame"):D,n?w(f(e)):G)}})()),v}var F;function U(){return F||(F=1,process.env.NODE_ENV==="production"?x.exports=W():x.exports=z()),x.exports}var o=U();const J=({children:i,className:b="",backdropBlur:u=2,tintColor:f="rgba(255, 255, 255, .2)",displacementScale:s=150,turbulenceBaseFrequency:l="0.008 0.008",turbulenceSeed:d=1.5,as:m="div",style:g,...j})=>{const R=`liquid-glass-${p.useId().replace(/:/g,"-")}`;return o.jsxs(o.Fragment,{children:[o.jsx("svg",{style:{display:"none"},children:o.jsxs("filter",{id:R,x:"0%",y:"0%",width:"100%",height:"100%",filterUnits:"objectBoundingBox",children:[o.jsx("feTurbulence",{type:"fractalNoise",baseFrequency:l,numOctaves:1,seed:d,result:"turbulence"}),o.jsxs("feComponentTransfer",{in:"turbulence",result:"mapped",children:[o.jsx("feFuncR",{type:"gamma",amplitude:1,exponent:10,offset:.5}),o.jsx("feFuncG",{type:"gamma",amplitude:0,exponent:1,offset:0}),o.jsx("feFuncB",{type:"gamma",amplitude:0,exponent:1,offset:.5})]}),o.jsx("feGaussianBlur",{in:"turbulence",stdDeviation:3,result:"softMap"}),o.jsx("feSpecularLighting",{in:"softMap",surfaceScale:5,specularConstant:1,specularExponent:100,lightingColor:"white",result:"specLight",children:o.jsx("fePointLight",{x:-200,y:-200,z:300})}),o.jsx("feComposite",{in:"specLight",operator:"arithmetic",k1:0,k2:1,k3:1,k4:0,result:"litImage"}),o.jsx("feDisplacementMap",{in:"SourceGraphic",in2:"softMap",scale:s,xChannelSelector:"R",yChannelSelector:"G"})]})}),o.jsxs(m,{className:`relative overflow-hidden ${b}`,style:{boxShadow:"0 6px 6px rgba(0, 0, 0, 0.2), 0 0 20px rgba(0, 0, 0, 0.1)",...g},...j,children:[o.jsx("div",{className:"absolute inset-0 z-0 overflow-hidden",style:{backdropFilter:`blur(${u}px)`,WebkitBackdropFilter:`blur(${u}px)`,filter:`url(#${R})`,isolation:"isolate"}}),o.jsx("div",{className:"absolute inset-0 z-[1]",style:{background:f}}),o.jsx("div",{className:"relative z-[2]",children:i})]})]})};c.LiquidGlass=J,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})}));
@@ -0,0 +1 @@
1
+ @layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-blue-500:oklch(62.3% .214 259.815);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-lg:32rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--text-5xl:3rem;--text-5xl--line-height:1;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--drop-shadow-lg:0 4px 4px #00000026;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::-moz-placeholder{opacity:1}::placeholder{opacity:1}@supports (not (-webkit-appearance:-apple-pay-button)) or (contain-intrinsic-size:1px){::-moz-placeholder{color:currentColor}::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::-moz-placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.right-0{right:calc(var(--spacing)*0)}.left-0{left:calc(var(--spacing)*0)}.isolate{isolation:isolate}.-z-10{z-index:-10}.z-0{z-index:0}.z-50{z-index:50}.z-\[1\]{z-index:1}.z-\[2\]{z-index:2}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.mb-1\.5{margin-bottom:calc(var(--spacing)*1.5)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-12{margin-bottom:calc(var(--spacing)*12)}.flex{display:flex}.grid{display:grid}.inline{display:inline}.inline-block{display:inline-block}.aspect-square{aspect-ratio:1}.h-screen{height:100vh}.min-h-screen{min-height:100vh}.w-full{width:100%}.max-w-5xl{max-width:var(--container-5xl)}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}.overflow-hidden{overflow:hidden}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-white\/20{border-color:#fff3}@supports (color:color-mix(in lab,red,red)){.border-white\/20{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.object-cover{-o-object-fit:cover;object-fit:cover}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.p-12{padding:calc(var(--spacing)*12)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-4{padding-block:calc(var(--spacing)*4)}.pt-8{padding-top:calc(var(--spacing)*8)}.text-center{text-align:center}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.text-white{color:var(--color-white)}.text-white\/60{color:#fff9}@supports (color:color-mix(in lab,red,red)){.text-white\/60{color:color-mix(in oklab,var(--color-white)60%,transparent)}}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.text-white\/70{color:color-mix(in oklab,var(--color-white)70%,transparent)}}.text-white\/80{color:#fffc}@supports (color:color-mix(in lab,red,red)){.text-white\/80{color:color-mix(in oklab,var(--color-white)80%,transparent)}}.text-white\/90{color:#ffffffe6}@supports (color:color-mix(in lab,red,red)){.text-white\/90{color:color-mix(in oklab,var(--color-white)90%,transparent)}}.uppercase{text-transform:uppercase}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow-lg{--tw-drop-shadow-size:drop-shadow(0 4px 4px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-lg));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-filter{backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media(hover:hover){.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:scale-\[1\.02\]:hover{scale:1.02}}@media(min-width:40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:p-8{padding:calc(var(--spacing)*8)}.sm\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}@media(min-width:64rem){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@creativoma/liquid-glass",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "type": "module",
5
5
  "description": "A React wrapper component with liquid frosted glass effect using TailwindCSS",
6
6
  "main": "dist/index.js",
@@ -21,6 +21,7 @@
21
21
  "files": [
22
22
  "dist",
23
23
  "README.md",
24
+ "CHANGELOG.md",
24
25
  "LICENSE"
25
26
  ],
26
27
  "sideEffects": false,
@@ -47,27 +48,27 @@
47
48
  "react-dom": ">=18.0.0"
48
49
  },
49
50
  "devDependencies": {
50
- "@tailwindcss/postcss": "^4.1.7",
51
- "@types/node": "^20.17.47",
52
- "@types/react": "^19.1.4",
53
- "@types/react-dom": "^19.1.5",
54
- "@vitejs/plugin-react": "^4.2.1",
55
- "autoprefixer": "^10.4.16",
56
- "postcss": "^8.5.3",
57
- "react": "^19.1.0",
58
- "globals": "^16.1.0",
59
- "react-dom": "^19.1.0",
60
- "tailwindcss": "^4.1.7",
61
- "typescript": "^5.8.3",
62
- "vite": "^5.0.8",
63
- "vite-plugin-dts": "^3.6.4",
64
- "prettier": "^3.5.3",
65
- "prettier-plugin-tailwindcss": "^0.6.11",
66
- "@eslint/js": "^9.27.0",
67
- "eslint": "^9.27.0",
51
+ "@eslint/js": "^9.39.1",
52
+ "@tailwindcss/postcss": "^4.1.17",
53
+ "@types/node": "^20.19.25",
54
+ "@types/react": "^19.2.7",
55
+ "@types/react-dom": "^19.2.3",
56
+ "@vitejs/plugin-react": "^4.7.0",
57
+ "autoprefixer": "^10.4.22",
58
+ "eslint": "^9.39.1",
68
59
  "eslint-plugin-react-hooks": "^5.2.0",
69
- "eslint-plugin-react-refresh": "^0.4.20",
70
- "typescript-eslint": "^8.32.1"
60
+ "eslint-plugin-react-refresh": "^0.4.24",
61
+ "globals": "^16.5.0",
62
+ "postcss": "^8.5.6",
63
+ "prettier": "^3.7.4",
64
+ "prettier-plugin-tailwindcss": "^0.6.14",
65
+ "react": "^19.2.1",
66
+ "react-dom": "^19.2.1",
67
+ "tailwindcss": "^4.1.17",
68
+ "typescript": "^5.9.3",
69
+ "typescript-eslint": "^8.48.1",
70
+ "vite": "^7.2.6",
71
+ "vite-plugin-dts": "^4.5.4"
71
72
  },
72
73
  "publishConfig": {
73
74
  "registry": "https://registry.npmjs.org/",
package/dist/style.css DELETED
@@ -1 +0,0 @@
1
- /*! tailwindcss v4.1.7 | MIT License | https://tailwindcss.com */@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-blue-500:oklch(62.3% .214 259.815);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-lg:32rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--text-5xl:3rem;--text-5xl--line-height:1;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--drop-shadow-lg:0 4px 4px #00000026;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::-moz-placeholder{opacity:1}::placeholder{opacity:1}@supports (not (-webkit-appearance:-apple-pay-button)) or (contain-intrinsic-size:1px){::-moz-placeholder{color:currentColor}::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::-moz-placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.right-0{right:calc(var(--spacing)*0)}.left-0{left:calc(var(--spacing)*0)}.isolate{isolation:isolate}.-z-10{z-index:-10}.z-0{z-index:0}.z-50{z-index:50}.z-\[1\]{z-index:1}.z-\[2\]{z-index:2}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.mb-1\.5{margin-bottom:calc(var(--spacing)*1.5)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-12{margin-bottom:calc(var(--spacing)*12)}.flex{display:flex}.grid{display:grid}.inline{display:inline}.inline-block{display:inline-block}.aspect-square{aspect-ratio:1}.h-screen{height:100vh}.min-h-screen{min-height:100vh}.w-full{width:100%}.max-w-5xl{max-width:var(--container-5xl)}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}.overflow-hidden{overflow:hidden}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-white\/20{border-color:#fff3}@supports (color:color-mix(in lab,red,red)){.border-white\/20{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.object-cover{-o-object-fit:cover;object-fit:cover}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.p-12{padding:calc(var(--spacing)*12)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-4{padding-block:calc(var(--spacing)*4)}.pt-8{padding-top:calc(var(--spacing)*8)}.text-center{text-align:center}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.text-white{color:var(--color-white)}.text-white\/60{color:#fff9}@supports (color:color-mix(in lab,red,red)){.text-white\/60{color:color-mix(in oklab,var(--color-white)60%,transparent)}}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.text-white\/70{color:color-mix(in oklab,var(--color-white)70%,transparent)}}.text-white\/80{color:#fffc}@supports (color:color-mix(in lab,red,red)){.text-white\/80{color:color-mix(in oklab,var(--color-white)80%,transparent)}}.text-white\/90{color:#ffffffe6}@supports (color:color-mix(in lab,red,red)){.text-white\/90{color:color-mix(in oklab,var(--color-white)90%,transparent)}}.uppercase{text-transform:uppercase}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow-lg{--tw-drop-shadow-size:drop-shadow(0 4px 4px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-lg));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:scale-\[1\.02\]:hover{scale:1.02}}@media (min-width:40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:p-8{padding:calc(var(--spacing)*8)}.sm\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}@media (min-width:64rem){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}