@creativoma/liquid-glass 1.0.3 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,38 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [Unreleased]
9
+
10
+ ## [1.1.0] - 2026-02-14
11
+
12
+ ### Added
13
+
14
+ - Exported `useBrowserDetection` hook for public use, allowing consumers to detect Safari/iOS browsers
15
+ - Performance optimizations: RegExp patterns hoisted to module level in browser detection
16
+ - Claude Code development files to `.gitignore` (`.claude/`, `.agents/`)
17
+
18
+ ### Changed
19
+
20
+ - Updated package.json exports field: moved `types` condition first for better TypeScript compatibility
21
+ - Updated package.json paths to use relative `./` prefix for improved module resolution
22
+ - Updated major dependencies:
23
+ - `eslint-plugin-react-hooks` `^5.2.0` → `^7.0.1`
24
+ - `@vitejs/plugin-react` `^4.7.0` → `^5.1.4`
25
+ - Updated minor dependencies:
26
+ - `@types/node` `^20.19.25` → `^25.2.3`
27
+ - `@types/react` `^19.2.7` → `^19.2.14`
28
+ - `typescript-eslint` `^8.48.1` → `^8.55.0`
29
+ - React `^19.2.1` → `^19.2.4`
30
+ - Vite `^7.2.6` → `^7.3.1`
31
+ - And other dev dependencies to latest versions
32
+
33
+ ### Documentation
34
+
35
+ - Improved README.md with professional formatting
36
+ - Removed emoji decorators from section headers
37
+ - Added comprehensive feature list and additional badges
38
+ - Enhanced API reference structure
39
+
8
40
  ## [1.0.3] - 2025-12-06
9
41
 
10
42
  ### Fixed
package/README.md CHANGED
@@ -1,12 +1,24 @@
1
1
  # @creativoma/liquid-glass
2
2
 
3
- ![Screenshot](public/screenshot.jpeg)
3
+ [![npm version](https://img.shields.io/npm/v/@creativoma/liquid-glass.svg)](https://www.npmjs.com/package/@creativoma/liquid-glass)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.0-blue.svg)](https://www.typescriptlang.org/)
6
+ [![React](https://img.shields.io/badge/React-18+-61DAFB.svg)](https://reactjs.org/)
4
7
 
5
- A modern React component with liquid frosted glass effect using TailwindCSS. Perfect for creating elegant interfaces with glassmorphism effect.
8
+ A modern React component library featuring liquid frosted glass effect using TailwindCSS and SVG filters. Create elegant glassmorphism interfaces with advanced visual effects.
6
9
 
7
- [![npm version](https://img.shields.io/npm/v/@creativoma/liquid-glass.svg)](https://www.npmjs.com/package/@creativoma/liquid-glass)
10
+ ## Features
8
11
 
9
- ## 🚀 Installation
12
+ - Liquid frosted glass effect with customizable displacement mapping
13
+ - Full TypeScript support with comprehensive type definitions
14
+ - TailwindCSS integration for seamless styling
15
+ - Polymorphic component API (render as any HTML element)
16
+ - Cross-browser compatible with Safari/iOS fallback support
17
+ - Customizable blur, tint, and turbulence parameters
18
+ - Zero dependencies (peer dependencies only)
19
+ - ESM and UMD formats for maximum compatibility
20
+
21
+ ## Installation
10
22
 
11
23
  ```bash
12
24
  npm install @creativoma/liquid-glass
@@ -20,7 +32,7 @@ yarn add @creativoma/liquid-glass
20
32
  pnpm add @creativoma/liquid-glass
21
33
  ```
22
34
 
23
- ## 📖 Basic Usage
35
+ ## Quick Start
24
36
 
25
37
  ```jsx
26
38
  import { LiquidGlass } from '@creativoma/liquid-glass'
@@ -37,7 +49,9 @@ function App() {
37
49
  }
38
50
  ```
39
51
 
40
- ## ⚙️ Props
52
+ ## API Reference
53
+
54
+ ### Props
41
55
 
42
56
  | Prop | Type | Default | Description |
43
57
  | ------------------------- | ----------------- | --------------------------- | ----------------------------------------------------- |
@@ -51,7 +65,7 @@ function App() {
51
65
  | `as` | `ElementType` | `'div'` | HTML component to render (div, button, section, etc.) |
52
66
  | `style` | `CSSProperties` | - | Additional inline styles |
53
67
 
54
- ## 💡 Advanced Examples
68
+ ## Usage Examples
55
69
 
56
70
  ### Card with glass effect
57
71
 
@@ -137,7 +151,7 @@ function App() {
137
151
  </LiquidGlass>
138
152
  ```
139
153
 
140
- ## 🛠️ Development
154
+ ## Development
141
155
 
142
156
  ```bash
143
157
  # Clone the repository
@@ -167,7 +181,7 @@ pnpm run preview
167
181
  npm publish
168
182
  ```
169
183
 
170
- ## 🧪 Project Structure
184
+ ## Project Structure
171
185
 
172
186
  ```
173
187
  liquid-glass/
@@ -189,13 +203,13 @@ liquid-glass/
189
203
  └── tailwind.config.js
190
204
  ```
191
205
 
192
- ## 📋 Requirements
206
+ ## Requirements
193
207
 
194
208
  - React >= 18.0.0
195
209
  - React DOM >= 18.0.0
196
210
  - TailwindCSS (component uses Tailwind classes)
197
211
 
198
- ## 🏗️ Technologies
212
+ ## Technologies
199
213
 
200
214
  - **React** - Component library
201
215
  - **TypeScript** - Static typing
@@ -203,7 +217,7 @@ liquid-glass/
203
217
  - **Tailwind CSS** - CSS framework for glassmorphism effect
204
218
  - **SVG Filters** - Advanced visual effects with feTurbulence and feDisplacementMap
205
219
 
206
- ## 📦 Available Formats
220
+ ## Package Formats
207
221
 
208
222
  This package includes multiple formats for maximum compatibility:
209
223
 
@@ -211,7 +225,7 @@ This package includes multiple formats for maximum compatibility:
211
225
  - **UMD** (`dist/index.umd.js`) - For universal compatibility
212
226
  - **TypeScript** (`dist/index.d.ts`) - Type definitions
213
227
 
214
- ## 🤝 Contributing
228
+ ## Contributing
215
229
 
216
230
  Contributions are welcome! Please:
217
231
 
@@ -221,10 +235,10 @@ Contributions are welcome! Please:
221
235
  4. Push to the branch (`git push origin feature/amazing-feature`)
222
236
  5. Open a Pull Request
223
237
 
224
- ## 📄 License
238
+ ## License
225
239
 
226
240
  MIT © [creativoma](https://github.com/creativoma)
227
241
 
228
- ## 📜 Changelog
242
+ ## Changelog
229
243
 
230
244
  See [CHANGELOG.md](./CHANGELOG.md) for a detailed list of changes.
@@ -1 +1 @@
1
- {"version":3,"file":"LiquidGlass.d.ts","sourceRoot":"","sources":["../../src/components/LiquidGlass.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAA8B,MAAM,OAAO,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAkB/C,QAAA,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAmJrC,CAAA;AAED,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"LiquidGlass.d.ts","sourceRoot":"","sources":["../../src/components/LiquidGlass.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAS,MAAM,OAAO,CAAA;AACjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAG/C,QAAA,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CA6IrC,CAAA;AAED,eAAe,WAAW,CAAA"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Custom hook for detecting browser capabilities
3
+ * Returns whether a simplified filter should be used for Safari/iOS
4
+ */
5
+ export declare const useBrowserDetection: () => {
6
+ useSimplifiedFilter: boolean;
7
+ };
8
+ //# sourceMappingURL=useBrowserDetection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBrowserDetection.d.ts","sourceRoot":"","sources":["../../src/hooks/useBrowserDetection.ts"],"names":[],"mappings":"AAsBA;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;CAM/B,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export { default as LiquidGlass } from './components/LiquidGlass';
2
2
  export type { LiquidGlassProps } from './components/types';
3
+ export { useBrowserDetection } from './hooks/useBrowserDetection';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACjE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACjE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA"}
package/dist/index.esm.js CHANGED
@@ -1,48 +1,48 @@
1
- import ee, { useId as re, useState as te, useEffect as ne } from "react";
2
- var h = { exports: {} }, _ = {};
3
- var L;
4
- function ae() {
5
- if (L) return _;
6
- L = 1;
7
- var i = Symbol.for("react.transitional.element"), c = Symbol.for("react.fragment");
8
- function u(d, s, l) {
1
+ import ee, { useState as re, useId as te } from "react";
2
+ var h = { exports: {} }, v = {};
3
+ var D;
4
+ function ne() {
5
+ if (D) return v;
6
+ D = 1;
7
+ var s = /* @__PURE__ */ Symbol.for("react.transitional.element"), c = /* @__PURE__ */ Symbol.for("react.fragment");
8
+ function u(d, l, i) {
9
9
  var f = null;
10
- if (l !== void 0 && (f = "" + l), s.key !== void 0 && (f = "" + s.key), "key" in s) {
11
- l = {};
12
- for (var m in s)
13
- m !== "key" && (l[m] = s[m]);
14
- } else l = s;
15
- return s = l.ref, {
16
- $$typeof: i,
10
+ if (i !== void 0 && (f = "" + i), l.key !== void 0 && (f = "" + l.key), "key" in l) {
11
+ i = {};
12
+ for (var m in l)
13
+ m !== "key" && (i[m] = l[m]);
14
+ } else i = l;
15
+ return l = i.ref, {
16
+ $$typeof: s,
17
17
  type: d,
18
18
  key: f,
19
- ref: s !== void 0 ? s : null,
20
- props: l
19
+ ref: l !== void 0 ? l : null,
20
+ props: i
21
21
  };
22
22
  }
23
- return _.Fragment = c, _.jsx = u, _.jsxs = u, _;
23
+ return v.Fragment = c, v.jsx = u, v.jsxs = u, v;
24
24
  }
25
- var x = {};
26
- var D;
27
- function oe() {
28
- return D || (D = 1, process.env.NODE_ENV !== "production" && (function() {
29
- function i(e) {
25
+ var _ = {};
26
+ var L;
27
+ function ae() {
28
+ return L || (L = 1, process.env.NODE_ENV !== "production" && (function() {
29
+ function s(e) {
30
30
  if (e == null) return null;
31
31
  if (typeof e == "function")
32
- return e.$$typeof === H ? null : e.displayName || e.name || null;
32
+ return e.$$typeof === Z ? null : e.displayName || e.name || null;
33
33
  if (typeof e == "string") return e;
34
34
  switch (e) {
35
35
  case y:
36
36
  return "Fragment";
37
- case W:
38
- return "Profiler";
39
37
  case U:
38
+ return "Profiler";
39
+ case W:
40
40
  return "StrictMode";
41
41
  case J:
42
42
  return "Suspense";
43
43
  case V:
44
44
  return "SuspenseList";
45
- case Z:
45
+ case H:
46
46
  return "Activity";
47
47
  }
48
48
  if (typeof e == "object")
@@ -59,11 +59,11 @@ function oe() {
59
59
  var r = e.render;
60
60
  return e = e.displayName, e || (e = r.displayName || r.name || "", e = e !== "" ? "ForwardRef(" + e + ")" : "ForwardRef"), e;
61
61
  case X:
62
- return r = e.displayName || null, r !== null ? r : i(e.type) || "Memo";
62
+ return r = e.displayName || null, r !== null ? r : s(e.type) || "Memo";
63
63
  case k:
64
64
  r = e._payload, e = e._init;
65
65
  try {
66
- return i(e(r));
66
+ return s(e(r));
67
67
  } catch {
68
68
  }
69
69
  }
@@ -94,17 +94,17 @@ function oe() {
94
94
  if (typeof e == "object" && e !== null && e.$$typeof === k)
95
95
  return "<...>";
96
96
  try {
97
- var r = i(e);
97
+ var r = s(e);
98
98
  return r ? "<" + r + ">" : "<...>";
99
99
  } catch {
100
100
  return "<...>";
101
101
  }
102
102
  }
103
- function s() {
103
+ function l() {
104
104
  var e = S.A;
105
105
  return e === null ? null : e.getOwner();
106
106
  }
107
- function l() {
107
+ function i() {
108
108
  return Error("react-stack-top-frame");
109
109
  }
110
110
  function f(e) {
@@ -127,7 +127,7 @@ function oe() {
127
127
  });
128
128
  }
129
129
  function T() {
130
- var e = i(this.type);
130
+ var e = s(this.type);
131
131
  return F[e] || (F[e] = !0, console.error(
132
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."
133
133
  )), e = this.props.ref, e !== void 0 ? e : null;
@@ -135,7 +135,7 @@ function oe() {
135
135
  function g(e, r, n, a, R, O) {
136
136
  var o = n.ref;
137
137
  return e = {
138
- $$typeof: A,
138
+ $$typeof: P,
139
139
  type: e,
140
140
  key: r,
141
141
  props: n,
@@ -179,11 +179,11 @@ function oe() {
179
179
  );
180
180
  else p(o);
181
181
  if (N.call(r, "key")) {
182
- o = i(e);
183
- var v = Object.keys(r).filter(function(K) {
182
+ o = s(e);
183
+ var b = Object.keys(r).filter(function(K) {
184
184
  return K !== "key";
185
185
  });
186
- a = 0 < v.length ? "{key: someKey, " + v.join(": ..., ") + ": ...}" : "{key: someKey}", Y[o + a] || (v = 0 < v.length ? "{" + v.join(": ..., ") + ": ...}" : "{}", console.error(
186
+ a = 0 < b.length ? "{key: someKey, " + b.join(": ..., ") + ": ...}" : "{key: someKey}", Y[o + a] || (b = 0 < b.length ? "{" + b.join(": ..., ") + ": ...}" : "{}", console.error(
187
187
  `A props object containing a "key" prop is being spread into JSX:
188
188
  let props = %s;
189
189
  <%s {...props} />
@@ -192,14 +192,14 @@ React keys must be passed directly to JSX without using spread:
192
192
  <%s key={someKey} {...props} />`,
193
193
  a,
194
194
  o,
195
- v,
195
+ b,
196
196
  o
197
197
  ), Y[o + a] = !0);
198
198
  }
199
199
  if (o = null, n !== void 0 && (u(n), o = "" + n), f(r) && (u(r.key), o = "" + r.key), "key" in r) {
200
200
  n = {};
201
- for (var P in r)
202
- P !== "key" && (n[P] = r[P]);
201
+ for (var A in r)
202
+ A !== "key" && (n[A] = r[A]);
203
203
  } else n = r;
204
204
  return o && m(
205
205
  n,
@@ -208,7 +208,7 @@ React keys must be passed directly to JSX without using spread:
208
208
  e,
209
209
  o,
210
210
  n,
211
- s(),
211
+ l(),
212
212
  R,
213
213
  O
214
214
  );
@@ -217,69 +217,70 @@ React keys must be passed directly to JSX without using spread:
217
217
  E(e) ? e._store && (e._store.validated = 1) : typeof e == "object" && e !== null && e.$$typeof === k && (e._payload.status === "fulfilled" ? E(e._payload.value) && e._payload.value._store && (e._payload.value._store.validated = 1) : e._store && (e._store.validated = 1));
218
218
  }
219
219
  function E(e) {
220
- return typeof e == "object" && e !== null && e.$$typeof === A;
220
+ return typeof e == "object" && e !== null && e.$$typeof === P;
221
221
  }
222
- var b = ee, A = Symbol.for("react.transitional.element"), G = Symbol.for("react.portal"), y = Symbol.for("react.fragment"), U = Symbol.for("react.strict_mode"), W = Symbol.for("react.profiler"), q = Symbol.for("react.consumer"), z = Symbol.for("react.context"), B = Symbol.for("react.forward_ref"), J = Symbol.for("react.suspense"), V = Symbol.for("react.suspense_list"), X = Symbol.for("react.memo"), k = Symbol.for("react.lazy"), Z = Symbol.for("react.activity"), H = Symbol.for("react.client.reference"), S = b.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, N = Object.prototype.hasOwnProperty, Q = Array.isArray, w = console.createTask ? console.createTask : function() {
222
+ var x = ee, P = /* @__PURE__ */ Symbol.for("react.transitional.element"), G = /* @__PURE__ */ Symbol.for("react.portal"), y = /* @__PURE__ */ Symbol.for("react.fragment"), W = /* @__PURE__ */ Symbol.for("react.strict_mode"), U = /* @__PURE__ */ Symbol.for("react.profiler"), q = /* @__PURE__ */ Symbol.for("react.consumer"), z = /* @__PURE__ */ Symbol.for("react.context"), B = /* @__PURE__ */ Symbol.for("react.forward_ref"), J = /* @__PURE__ */ Symbol.for("react.suspense"), V = /* @__PURE__ */ Symbol.for("react.suspense_list"), X = /* @__PURE__ */ Symbol.for("react.memo"), k = /* @__PURE__ */ Symbol.for("react.lazy"), H = /* @__PURE__ */ Symbol.for("react.activity"), Z = /* @__PURE__ */ Symbol.for("react.client.reference"), S = x.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, N = Object.prototype.hasOwnProperty, Q = Array.isArray, w = console.createTask ? console.createTask : function() {
223
223
  return null;
224
224
  };
225
- b = {
225
+ x = {
226
226
  react_stack_bottom_frame: function(e) {
227
227
  return e();
228
228
  }
229
229
  };
230
- var C, F = {}, $ = b.react_stack_bottom_frame.bind(
231
- b,
232
- l
233
- )(), I = w(d(l)), Y = {};
234
- x.Fragment = y, x.jsx = function(e, r, n) {
230
+ var C, F = {}, I = x.react_stack_bottom_frame.bind(
231
+ x,
232
+ i
233
+ )(), $ = w(d(i)), Y = {};
234
+ _.Fragment = y, _.jsx = function(e, r, n) {
235
235
  var a = 1e4 > S.recentlyCreatedOwnerStacks++;
236
236
  return j(
237
237
  e,
238
238
  r,
239
239
  n,
240
240
  !1,
241
- a ? Error("react-stack-top-frame") : $,
242
- a ? w(d(e)) : I
241
+ a ? Error("react-stack-top-frame") : I,
242
+ a ? w(d(e)) : $
243
243
  );
244
- }, x.jsxs = function(e, r, n) {
244
+ }, _.jsxs = function(e, r, n) {
245
245
  var a = 1e4 > S.recentlyCreatedOwnerStacks++;
246
246
  return j(
247
247
  e,
248
248
  r,
249
249
  n,
250
250
  !0,
251
- a ? Error("react-stack-top-frame") : $,
252
- a ? w(d(e)) : I
251
+ a ? Error("react-stack-top-frame") : I,
252
+ a ? w(d(e)) : $
253
253
  );
254
254
  };
255
- })()), x;
255
+ })()), _;
256
256
  }
257
257
  var M;
258
- function se() {
259
- return M || (M = 1, process.env.NODE_ENV === "production" ? h.exports = ae() : h.exports = oe()), h.exports;
258
+ function oe() {
259
+ return M || (M = 1, process.env.NODE_ENV === "production" ? h.exports = ne() : h.exports = ae()), h.exports;
260
260
  }
261
- var t = se();
262
- const le = () => {
261
+ var t = oe();
262
+ const se = /iPad|iPhone|iPod/, le = /^((?!chrome|android).)*safari/i, ie = () => {
263
263
  if (typeof window > "u") return !1;
264
- const i = window.navigator.userAgent, c = /iPad|iPhone|iPod/.test(i), u = /^((?!chrome|android).)*safari/i.test(i);
264
+ const s = window.navigator.userAgent, c = se.test(s), u = le.test(s);
265
265
  return c || u;
266
- }, ue = ({
267
- children: i,
266
+ }, ue = () => {
267
+ const [s] = re(() => ie());
268
+ return { useSimplifiedFilter: s };
269
+ }, fe = ({
270
+ children: s,
268
271
  className: c = "",
269
272
  backdropBlur: u = 2,
270
273
  tintColor: d = "rgba(255, 255, 255, .2)",
271
- displacementScale: s = 150,
272
- turbulenceBaseFrequency: l = "0.008 0.008",
274
+ displacementScale: l = 150,
275
+ turbulenceBaseFrequency: i = "0.008 0.008",
273
276
  turbulenceSeed: f = 1.5,
274
277
  as: m = "div",
275
278
  style: T,
276
279
  ...g
277
280
  }) => {
278
- const p = `liquid-glass-${re().replace(/:/g, "-")}`, [E, b] = te(!1);
279
- return ne(() => {
280
- b(le());
281
- }, []), /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
282
- /* @__PURE__ */ t.jsx("svg", { style: { display: "none" }, children: E ? (
281
+ const p = `liquid-glass-${te().replace(/:/g, "-")}`, { useSimplifiedFilter: E } = ue();
282
+ return /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
283
+ /* @__PURE__ */ t.jsx("svg", { style: { display: "none" }, suppressHydrationWarning: !0, children: E ? (
283
284
  // Simplified filter for Safari/iOS - uses only well-supported primitives
284
285
  /* @__PURE__ */ t.jsxs(
285
286
  "filter",
@@ -295,7 +296,7 @@ const le = () => {
295
296
  "feTurbulence",
296
297
  {
297
298
  type: "fractalNoise",
298
- baseFrequency: l,
299
+ baseFrequency: i,
299
300
  numOctaves: 2,
300
301
  seed: f,
301
302
  result: "turbulence"
@@ -334,7 +335,7 @@ const le = () => {
334
335
  "feTurbulence",
335
336
  {
336
337
  type: "fractalNoise",
337
- baseFrequency: l,
338
+ baseFrequency: i,
338
339
  numOctaves: 1,
339
340
  seed: f,
340
341
  result: "turbulence"
@@ -375,7 +376,7 @@ const le = () => {
375
376
  {
376
377
  in: "SourceGraphic",
377
378
  in2: "softMap",
378
- scale: s,
379
+ scale: l,
379
380
  xChannelSelector: "R",
380
381
  yChannelSelector: "G"
381
382
  }
@@ -420,12 +421,13 @@ const le = () => {
420
421
  }
421
422
  }
422
423
  ),
423
- /* @__PURE__ */ t.jsx("div", { className: "relative z-[2]", children: i })
424
+ /* @__PURE__ */ t.jsx("div", { className: "relative z-[2]", children: s })
424
425
  ]
425
426
  }
426
427
  )
427
428
  ] });
428
429
  };
429
430
  export {
430
- ue as LiquidGlass
431
+ fe as LiquidGlass,
432
+ ue as useBrowserDetection
431
433
  };
package/dist/index.umd.js CHANGED
@@ -1,9 +1,9 @@
1
- (function(m,c){typeof exports=="object"&&typeof module<"u"?c(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],c):(m=typeof globalThis<"u"?globalThis:m||self,c(m.LiquidGlass={},m.React))})(this,(function(m,c){"use strict";var T={exports:{}},_={};var C;function W(){if(C)return _;C=1;var l=Symbol.for("react.transitional.element"),f=Symbol.for("react.fragment");function u(p,o,i){var d=null;if(i!==void 0&&(d=""+i),o.key!==void 0&&(d=""+o.key),"key"in o){i={};for(var b in o)b!=="key"&&(i[b]=o[b])}else i=o;return o=i.ref,{$$typeof:l,type:p,key:d,ref:o!==void 0?o:null,props:i}}return _.Fragment=f,_.jsx=u,_.jsxs=u,_}var R={};var F;function z(){return F||(F=1,process.env.NODE_ENV!=="production"&&(function(){function l(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===ae?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case S:return"Fragment";case Z:return"Profiler";case X:return"StrictMode";case ee:return"Suspense";case re:return"SuspenseList";case ne: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 Q:return e.displayName||"Context";case H:return(e._context.displayName||"Context")+".Consumer";case K:var r=e.render;return e=e.displayName,e||(e=r.displayName||r.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case te:return r=e.displayName||null,r!==null?r:l(e.type)||"Memo";case w:r=e._payload,e=e._init;try{return l(e(r))}catch{}}return null}function f(e){return""+e}function u(e){try{f(e);var r=!1}catch{r=!0}if(r){r=console;var n=r.error,a=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return n.call(r,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",a),f(e)}}function p(e){if(e===S)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===w)return"<...>";try{var r=l(e);return r?"<"+r+">":"<...>"}catch{return"<...>"}}function o(){var e=O.A;return e===null?null:e.getOwner()}function i(){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 b(e,r){function n(){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))}n.isReactWarning=!0,Object.defineProperty(e,"key",{get:n,configurable:!0})}function j(){var e=l(this.type);return D[e]||(D[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 y(e,r,n,a,g,A){var s=n.ref;return e={$$typeof:Y,type:e,key:r,props:n,_owner:a},(s!==void 0?s: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:g}),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,n,a,g,A){var s=r.children;if(s!==void 0)if(a)if(se(s)){for(a=0;a<s.length;a++)v(s[a]);Object.freeze&&Object.freeze(s)}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 v(s);if(L.call(r,"key")){s=l(e);var x=Object.keys(r).filter(function(oe){return oe!=="key"});a=0<x.length?"{key: someKey, "+x.join(": ..., ")+": ...}":"{key: someKey}",U[s+a]||(x=0<x.length?"{"+x.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
1
+ (function(c,m){typeof exports=="object"&&typeof module<"u"?m(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],m):(c=typeof globalThis<"u"?globalThis:c||self,m(c.LiquidGlass={},c.React))})(this,(function(c,m){"use strict";var h={exports:{}},_={};var C;function q(){if(C)return _;C=1;var o=Symbol.for("react.transitional.element"),f=Symbol.for("react.fragment");function u(p,i,l){var d=null;if(l!==void 0&&(d=""+l),i.key!==void 0&&(d=""+i.key),"key"in i){l={};for(var b in i)b!=="key"&&(l[b]=i[b])}else l=i;return i=l.ref,{$$typeof:o,type:p,key:d,ref:i!==void 0?i:null,props:l}}return _.Fragment=f,_.jsx=u,_.jsxs=u,_}var x={};var F;function z(){return F||(F=1,process.env.NODE_ENV!=="production"&&(function(){function o(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===ie?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case k:return"Fragment";case K:return"Profiler";case Q:return"StrictMode";case ne:return"Suspense";case ae:return"SuspenseList";case oe: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 Z:return"Portal";case re:return e.displayName||"Context";case ee:return(e._context.displayName||"Context")+".Consumer";case te:var r=e.render;return e=e.displayName,e||(e=r.displayName||r.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case se:return r=e.displayName||null,r!==null?r:o(e.type)||"Memo";case w:r=e._payload,e=e._init;try{return o(e(r))}catch{}}return null}function f(e){return""+e}function u(e){try{f(e);var r=!1}catch{r=!0}if(r){r=console;var n=r.error,a=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return n.call(r,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",a),f(e)}}function p(e){if(e===k)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===w)return"<...>";try{var r=o(e);return r?"<"+r+">":"<...>"}catch{return"<...>"}}function i(){var e=O.A;return e===null?null:e.getOwner()}function l(){return Error("react-stack-top-frame")}function d(e){if(D.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 n(){G||(G=!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))}n.isReactWarning=!0,Object.defineProperty(e,"key",{get:n,configurable:!0})}function j(){var e=o(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 y(e,r,n,a,g,P){var s=n.ref;return e={$$typeof:L,type:e,key:r,props:n,_owner:a},(s!==void 0?s: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:g}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:P}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function S(e,r,n,a,g,P){var s=r.children;if(s!==void 0)if(a)if(le(s)){for(a=0;a<s.length;a++)E(s[a]);Object.freeze&&Object.freeze(s)}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 E(s);if(D.call(r,"key")){s=o(e);var v=Object.keys(r).filter(function(ue){return ue!=="key"});a=0<v.length?"{key: someKey, "+v.join(": ..., ")+": ...}":"{key: someKey}",U[s+a]||(v=0<v.length?"{"+v.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
2
2
  let props = %s;
3
3
  <%s {...props} />
4
4
  React keys must be passed directly to JSX without using spread:
5
5
  let props = %s;
6
- <%s key={someKey} {...props} />`,a,s,x,s),U[s+a]=!0)}if(s=null,n!==void 0&&(u(n),s=""+n),d(r)&&(u(r.key),s=""+r.key),"key"in r){n={};for(var N in r)N!=="key"&&(n[N]=r[N])}else n=r;return s&&b(n,typeof e=="function"?e.displayName||e.name||"Unknown":e),y(e,s,n,o(),g,A)}function v(e){h(e)?e._store&&(e._store.validated=1):typeof e=="object"&&e!==null&&e.$$typeof===w&&(e._payload.status==="fulfilled"?h(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function h(e){return typeof e=="object"&&e!==null&&e.$$typeof===Y}var E=c,Y=Symbol.for("react.transitional.element"),V=Symbol.for("react.portal"),S=Symbol.for("react.fragment"),X=Symbol.for("react.strict_mode"),Z=Symbol.for("react.profiler"),H=Symbol.for("react.consumer"),Q=Symbol.for("react.context"),K=Symbol.for("react.forward_ref"),ee=Symbol.for("react.suspense"),re=Symbol.for("react.suspense_list"),te=Symbol.for("react.memo"),w=Symbol.for("react.lazy"),ne=Symbol.for("react.activity"),ae=Symbol.for("react.client.reference"),O=E.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,L=Object.prototype.hasOwnProperty,se=Array.isArray,P=console.createTask?console.createTask:function(){return null};E={react_stack_bottom_frame:function(e){return e()}};var M,D={},G=E.react_stack_bottom_frame.bind(E,i)(),$=P(p(i)),U={};R.Fragment=S,R.jsx=function(e,r,n){var a=1e4>O.recentlyCreatedOwnerStacks++;return k(e,r,n,!1,a?Error("react-stack-top-frame"):G,a?P(p(e)):$)},R.jsxs=function(e,r,n){var a=1e4>O.recentlyCreatedOwnerStacks++;return k(e,r,n,!0,a?Error("react-stack-top-frame"):G,a?P(p(e)):$)}})()),R}var I;function q(){return I||(I=1,process.env.NODE_ENV==="production"?T.exports=W():T.exports=z()),T.exports}var t=q();const B=()=>{if(typeof window>"u")return!1;const l=window.navigator.userAgent,f=/iPad|iPhone|iPod/.test(l),u=/^((?!chrome|android).)*safari/i.test(l);return f||u},J=({children:l,className:f="",backdropBlur:u=2,tintColor:p="rgba(255, 255, 255, .2)",displacementScale:o=150,turbulenceBaseFrequency:i="0.008 0.008",turbulenceSeed:d=1.5,as:b="div",style:j,...y})=>{const v=`liquid-glass-${c.useId().replace(/:/g,"-")}`,[h,E]=c.useState(!1);return c.useEffect(()=>{E(B())},[]),t.jsxs(t.Fragment,{children:[t.jsx("svg",{style:{display:"none"},children:h?t.jsxs("filter",{id:v,x:"-20%",y:"-20%",width:"140%",height:"140%",filterUnits:"objectBoundingBox",children:[t.jsx("feTurbulence",{type:"fractalNoise",baseFrequency:i,numOctaves:2,seed:d,result:"turbulence"}),t.jsx("feGaussianBlur",{in:"turbulence",stdDeviation:"2",result:"blur"}),t.jsx("feColorMatrix",{in:"blur",type:"matrix",values:`1 0 0 0 0
6
+ <%s key={someKey} {...props} />`,a,s,v,s),U[s+a]=!0)}if(s=null,n!==void 0&&(u(n),s=""+n),d(r)&&(u(r.key),s=""+r.key),"key"in r){n={};for(var N in r)N!=="key"&&(n[N]=r[N])}else n=r;return s&&b(n,typeof e=="function"?e.displayName||e.name||"Unknown":e),y(e,s,n,i(),g,P)}function E(e){R(e)?e._store&&(e._store.validated=1):typeof e=="object"&&e!==null&&e.$$typeof===w&&(e._payload.status==="fulfilled"?R(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function R(e){return typeof e=="object"&&e!==null&&e.$$typeof===L}var T=m,L=Symbol.for("react.transitional.element"),Z=Symbol.for("react.portal"),k=Symbol.for("react.fragment"),Q=Symbol.for("react.strict_mode"),K=Symbol.for("react.profiler"),ee=Symbol.for("react.consumer"),re=Symbol.for("react.context"),te=Symbol.for("react.forward_ref"),ne=Symbol.for("react.suspense"),ae=Symbol.for("react.suspense_list"),se=Symbol.for("react.memo"),w=Symbol.for("react.lazy"),oe=Symbol.for("react.activity"),ie=Symbol.for("react.client.reference"),O=T.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,D=Object.prototype.hasOwnProperty,le=Array.isArray,A=console.createTask?console.createTask:function(){return null};T={react_stack_bottom_frame:function(e){return e()}};var G,M={},$=T.react_stack_bottom_frame.bind(T,l)(),W=A(p(l)),U={};x.Fragment=k,x.jsx=function(e,r,n){var a=1e4>O.recentlyCreatedOwnerStacks++;return S(e,r,n,!1,a?Error("react-stack-top-frame"):$,a?A(p(e)):W)},x.jsxs=function(e,r,n){var a=1e4>O.recentlyCreatedOwnerStacks++;return S(e,r,n,!0,a?Error("react-stack-top-frame"):$,a?A(p(e)):W)}})()),x}var I;function B(){return I||(I=1,process.env.NODE_ENV==="production"?h.exports=q():h.exports=z()),h.exports}var t=B();const J=/iPad|iPhone|iPod/,V=/^((?!chrome|android).)*safari/i,X=()=>{if(typeof window>"u")return!1;const o=window.navigator.userAgent,f=J.test(o),u=V.test(o);return f||u},Y=()=>{const[o]=m.useState(()=>X());return{useSimplifiedFilter:o}},H=({children:o,className:f="",backdropBlur:u=2,tintColor:p="rgba(255, 255, 255, .2)",displacementScale:i=150,turbulenceBaseFrequency:l="0.008 0.008",turbulenceSeed:d=1.5,as:b="div",style:j,...y})=>{const E=`liquid-glass-${m.useId().replace(/:/g,"-")}`,{useSimplifiedFilter:R}=Y();return t.jsxs(t.Fragment,{children:[t.jsx("svg",{style:{display:"none"},suppressHydrationWarning:!0,children:R?t.jsxs("filter",{id:E,x:"-20%",y:"-20%",width:"140%",height:"140%",filterUnits:"objectBoundingBox",children:[t.jsx("feTurbulence",{type:"fractalNoise",baseFrequency:l,numOctaves:2,seed:d,result:"turbulence"}),t.jsx("feGaussianBlur",{in:"turbulence",stdDeviation:"2",result:"blur"}),t.jsx("feColorMatrix",{in:"blur",type:"matrix",values:`1 0 0 0 0
7
7
  0 1 0 0 0
8
8
  0 0 1 0 0
9
- 0 0 0 0.15 0`,result:"transparency"}),t.jsx("feBlend",{in:"SourceGraphic",in2:"transparency",mode:"normal"})]}):t.jsxs("filter",{id:v,x:"0%",y:"0%",width:"100%",height:"100%",filterUnits:"objectBoundingBox",children:[t.jsx("feTurbulence",{type:"fractalNoise",baseFrequency:i,numOctaves:1,seed:d,result:"turbulence"}),t.jsxs("feComponentTransfer",{in:"turbulence",result:"mapped",children:[t.jsx("feFuncR",{type:"gamma",amplitude:1,exponent:10,offset:.5}),t.jsx("feFuncG",{type:"gamma",amplitude:0,exponent:1,offset:0}),t.jsx("feFuncB",{type:"gamma",amplitude:0,exponent:1,offset:.5})]}),t.jsx("feGaussianBlur",{in:"turbulence",stdDeviation:3,result:"softMap"}),t.jsx("feSpecularLighting",{in:"softMap",surfaceScale:5,specularConstant:1,specularExponent:100,lightingColor:"white",result:"specLight",children:t.jsx("fePointLight",{x:-200,y:-200,z:300})}),t.jsx("feComposite",{in:"specLight",operator:"arithmetic",k1:0,k2:1,k3:1,k4:0,result:"litImage"}),t.jsx("feDisplacementMap",{in:"SourceGraphic",in2:"softMap",scale:o,xChannelSelector:"R",yChannelSelector:"G"})]})}),t.jsxs(b,{className:`relative overflow-hidden ${f}`,style:{boxShadow:"0 6px 6px rgba(0, 0, 0, 0.2), 0 0 20px rgba(0, 0, 0, 0.1)",...j},...y,children:[t.jsx("div",{className:"absolute inset-0 z-0 overflow-hidden",style:{backdropFilter:`blur(${u}px)`,WebkitBackdropFilter:`blur(${u}px)`,filter:`url(#${v})`,isolation:"isolate",...h&&{transform:"translateZ(0)",willChange:"transform"}}}),t.jsx("div",{className:"absolute inset-0 z-[1]",style:{background:p}}),t.jsx("div",{className:"relative z-[2]",children:l})]})]})};m.LiquidGlass=J,Object.defineProperty(m,Symbol.toStringTag,{value:"Module"})}));
9
+ 0 0 0 0.15 0`,result:"transparency"}),t.jsx("feBlend",{in:"SourceGraphic",in2:"transparency",mode:"normal"})]}):t.jsxs("filter",{id:E,x:"0%",y:"0%",width:"100%",height:"100%",filterUnits:"objectBoundingBox",children:[t.jsx("feTurbulence",{type:"fractalNoise",baseFrequency:l,numOctaves:1,seed:d,result:"turbulence"}),t.jsxs("feComponentTransfer",{in:"turbulence",result:"mapped",children:[t.jsx("feFuncR",{type:"gamma",amplitude:1,exponent:10,offset:.5}),t.jsx("feFuncG",{type:"gamma",amplitude:0,exponent:1,offset:0}),t.jsx("feFuncB",{type:"gamma",amplitude:0,exponent:1,offset:.5})]}),t.jsx("feGaussianBlur",{in:"turbulence",stdDeviation:3,result:"softMap"}),t.jsx("feSpecularLighting",{in:"softMap",surfaceScale:5,specularConstant:1,specularExponent:100,lightingColor:"white",result:"specLight",children:t.jsx("fePointLight",{x:-200,y:-200,z:300})}),t.jsx("feComposite",{in:"specLight",operator:"arithmetic",k1:0,k2:1,k3:1,k4:0,result:"litImage"}),t.jsx("feDisplacementMap",{in:"SourceGraphic",in2:"softMap",scale:i,xChannelSelector:"R",yChannelSelector:"G"})]})}),t.jsxs(b,{className:`relative overflow-hidden ${f}`,style:{boxShadow:"0 6px 6px rgba(0, 0, 0, 0.2), 0 0 20px rgba(0, 0, 0, 0.1)",...j},...y,children:[t.jsx("div",{className:"absolute inset-0 z-0 overflow-hidden",style:{backdropFilter:`blur(${u}px)`,WebkitBackdropFilter:`blur(${u}px)`,filter:`url(#${E})`,isolation:"isolate",...R&&{transform:"translateZ(0)",willChange:"transform"}}}),t.jsx("div",{className:"absolute inset-0 z-[1]",style:{background:p}}),t.jsx("div",{className:"relative z-[2]",children:o})]})]})};c.LiquidGlass=H,c.useBrowserDetection=Y,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})}));
@@ -1 +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-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--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)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.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-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@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}
1
+ @import"https://api.fontshare.com/v2/css?f[]=clash-display@400,500,600,700&f[]=satoshi@300,400,500,700,900&display=swap";@layer properties,theme,base,components,utilities;@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-green-400:oklch(79.2% .209 151.711);--color-blue-500:oklch(62.3% .214 259.815);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-7xl:80rem;--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-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--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-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-6xl:3.75rem;--text-6xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--text-8xl:6rem;--text-8xl--line-height:1;--text-9xl:8rem;--text-9xl--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;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--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}:root{--color-void:#0a0f1e;--color-void-light:#1a1f35;--color-electric-blue:#3b82f6;--color-electric-purple:#a855f7;--color-cyan-glow:#22d3ee;--color-indigo-deep:#4f46e5;--color-violet-bright:#8b5cf6;--color-sky-light:#60a5fa;--color-white-ghost:#f5f5f5;--gradient-void:radial-gradient(ellipse at top,#1a1f35,#0a0f1e);--gradient-electric:linear-gradient(135deg,var(--color-electric-purple)0%,var(--color-cyan-glow)100%);--gradient-ocean:linear-gradient(135deg,var(--color-electric-blue)0%,var(--color-indigo-deep)100%);--gradient-mesh:radial-gradient(at 20% 30%,#8b5cf633 0px,transparent 50%),radial-gradient(at 80% 70%,#3b82f633 0px,transparent 50%),radial-gradient(at 50% 50%,#4f46e526 0px,transparent 50%)}body{background:var(--color-void);color:var(--color-white-ghost);cursor:none;font-family:Satoshi,-apple-system,BlinkMacSystemFont,sans-serif;position:relative;overflow-x:hidden}h1,h2,h3,h4,h5,h6{letter-spacing:-.03em;font-family:Clash Display,system-ui,sans-serif;font-weight:600}.custom-cursor{background:var(--color-electric-purple);pointer-events:none;z-index:9999;mix-blend-mode:difference;border-radius:50%;width:20px;height:20px;transition:transform .15s;position:fixed}.custom-cursor:before{content:"";border:1px solid var(--color-white-ghost);opacity:.3;border-radius:50%;position:absolute;inset:-10px}}@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)}.top-1\/2{top:50%}.top-\[20\%\]{top:20%}.top-\[60\%\]{top:60%}.right-0{right:calc(var(--spacing)*0)}.right-2{right:calc(var(--spacing)*2)}.right-\[15\%\]{right:15%}.bottom-\[10\%\]{bottom:10%}.left-0{left:calc(var(--spacing)*0)}.left-\[10\%\]{left:10%}.left-\[50\%\]{left:50%}.isolate{isolation:isolate}.-z-10{z-index:-10}.-z-15{z-index:-15}.-z-20{z-index:-20}.-z-25{z-index:-25}.-z-30{z-index:-30}.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}.mt-6{margin-top:calc(var(--spacing)*6)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.block{display:block}.flex{display:flex}.grid{display:grid}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-1{height:calc(var(--spacing)*1)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-\[350px\]{height:350px}.h-\[400px\]{height:400px}.h-\[500px\]{height:500px}.h-full{height:100%}.h-screen{height:100vh}.min-h-screen{min-height:100vh}.w-1\.5{width:calc(var(--spacing)*1.5)}.w-3\/4{width:75%}.w-\[350px\]{width:350px}.w-\[400px\]{width:400px}.w-\[500px\]{width:500px}.w-full{width:100%}.max-w-7xl{max-width:var(--container-7xl)}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-xl{max-width:var(--container-xl)}.flex-1{flex:1}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.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{border-style:var(--tw-border-style);border-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-\[var\(--color-electric-purple\)\]\/20{border-color:var(--color-electric-purple)}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--color-electric-purple\)\]\/20{border-color:color-mix(in oklab,var(--color-electric-purple)20%,transparent)}}.border-\[var\(--color-electric-purple\)\]\/30{border-color:var(--color-electric-purple)}@supports (color:color-mix(in lab,red,red)){.border-\[var\(--color-electric-purple\)\]\/30{border-color:color-mix(in oklab,var(--color-electric-purple)30%,transparent)}}.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-\[var\(--color-electric-blue\)\]{background-color:var(--color-electric-blue)}.bg-\[var\(--color-electric-purple\)\]{background-color:var(--color-electric-purple)}.bg-\[var\(--color-indigo-deep\)\]{background-color:var(--color-indigo-deep)}.bg-\[var\(--color-void\)\]{background-color:var(--color-void)}.bg-black\/30{background-color:#0000004d}@supports (color:color-mix(in lab,red,red)){.bg-black\/30{background-color:color-mix(in oklab,var(--color-black)30%,transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black)40%,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)}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.bg-white\/10{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-\[var\(--color-electric-purple\)\]{--tw-gradient-from:var(--color-electric-purple);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-\[var\(--color-cyan-glow\)\]{--tw-gradient-to:var(--color-cyan-glow);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.object-cover{-o-object-fit:cover;object-fit:cover}.p-1\.5{padding:calc(var(--spacing)*1.5)}.p-3{padding:calc(var(--spacing)*3)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.p-12{padding:calc(var(--spacing)*12)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.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-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-8{padding-block:calc(var(--spacing)*8)}.pr-10{padding-right:calc(var(--spacing)*10)}.text-center{text-align:center}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--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))}.text-\[10px\]{font-size:10px}.leading-\[0\.95\]{--tw-leading:.95;line-height:.95}.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-\[var\(--color-electric-purple\)\]{color:var(--color-electric-purple)}.text-green-400{color:var(--color-green-400)}.text-white{color:var(--color-white)}.text-white\/40{color:#fff6}@supports (color:color-mix(in lab,red,red)){.text-white\/40{color:color-mix(in oklab,var(--color-white)40%,transparent)}}.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}.opacity-0{opacity:0}.opacity-20{opacity:.2}.opacity-60{opacity:.6}.mix-blend-luminosity{mix-blend-mode:luminosity}.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,)}.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-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));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{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-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;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))}.delay-100{transition-delay:.1s}.delay-300{transition-delay:.3s}.delay-1000{transition-delay:1s}@media(hover:hover){.hover\:scale-90:hover{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;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\:bg-white\/10:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/10:hover{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.hover\:text-\[var\(--color-electric-purple\)\]:hover{color:var(--color-electric-purple)}.hover\:text-white:hover{color:var(--color-white)}}.active\:scale-75:active{--tw-scale-x:75%;--tw-scale-y:75%;--tw-scale-z:75%;scale:var(--tw-scale-x)var(--tw-scale-y)}@media(min-width:40rem){.sm\:right-3{right:calc(var(--spacing)*3)}.sm\:mt-8{margin-top:calc(var(--spacing)*8)}.sm\:mb-4{margin-bottom:calc(var(--spacing)*4)}.sm\:mb-6{margin-bottom:calc(var(--spacing)*6)}.sm\:mb-12{margin-bottom:calc(var(--spacing)*12)}.sm\:mb-16{margin-bottom:calc(var(--spacing)*16)}.sm\:h-2{height:calc(var(--spacing)*2)}.sm\:h-5{height:calc(var(--spacing)*5)}.sm\:w-2{width:calc(var(--spacing)*2)}.sm\:w-5{width:calc(var(--spacing)*5)}.sm\:gap-4{gap:calc(var(--spacing)*4)}.sm\:gap-6{gap:calc(var(--spacing)*6)}.sm\:gap-8{gap:calc(var(--spacing)*8)}.sm\:rounded-2xl{border-radius:var(--radius-2xl)}.sm\:rounded-3xl{border-radius:var(--radius-3xl)}.sm\:rounded-xl{border-radius:var(--radius-xl)}.sm\:p-2{padding:calc(var(--spacing)*2)}.sm\:p-4{padding:calc(var(--spacing)*4)}.sm\:p-8{padding:calc(var(--spacing)*8)}.sm\:px-3{padding-inline:calc(var(--spacing)*3)}.sm\:px-4{padding-inline:calc(var(--spacing)*4)}.sm\:px-6{padding-inline:calc(var(--spacing)*6)}.sm\:px-8{padding-inline:calc(var(--spacing)*8)}.sm\:py-1{padding-block:calc(var(--spacing)*1)}.sm\:py-1\.5{padding-block:calc(var(--spacing)*1.5)}.sm\:py-4{padding-block:calc(var(--spacing)*4)}.sm\:py-12{padding-block:calc(var(--spacing)*12)}.sm\:pr-12{padding-right:calc(var(--spacing)*12)}.sm\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.sm\:text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.sm\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}@media(min-width:48rem){.md\:text-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--line-height))}}@media(min-width:64rem){.lg\:mb-16{margin-bottom:calc(var(--spacing)*16)}.lg\:mb-24{margin-bottom:calc(var(--spacing)*24)}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:gap-12{gap:calc(var(--spacing)*12)}.lg\:p-10{padding:calc(var(--spacing)*10)}.lg\:px-12{padding-inline:calc(var(--spacing)*12)}.lg\:py-16{padding-block:calc(var(--spacing)*16)}.lg\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.lg\:text-8xl{font-size:var(--text-8xl);line-height:var(--tw-leading,var(--text-8xl--line-height))}.lg\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}}@media(min-width:80rem){.xl\:text-9xl{font-size:var(--text-9xl);line-height:var(--tw-leading,var(--text-9xl--line-height))}}.font-display{font-family:Clash Display,system-ui,sans-serif}.font-body{font-family:Satoshi,-apple-system,BlinkMacSystemFont,sans-serif}.text-gradient-electric{background:var(--gradient-electric);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.text-gradient-ocean{background:var(--gradient-ocean);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.bg-mesh{background:var(--gradient-mesh)}.noise-overlay:before{content:"";pointer-events:none;z-index:1;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 400 400' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.2' numOctaves='5' /%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.15'/%3E%3C/svg%3E");position:absolute;inset:0}.blob{filter:blur(60px);opacity:.3;border-radius:40% 60% 70% 30%/40% 50% 60%;animation:20s ease-in-out infinite morph;position:absolute}@keyframes morph{0%,to{border-radius:40% 60% 70% 30%/40% 50% 60%;transform:translate(0)rotate(0)}25%{border-radius:60% 40% 30% 70%/60% 30% 70% 40%;transform:translate(50px,-50px)rotate(90deg)}50%{border-radius:30% 70% 50% 50%/50% 60% 40%;transform:translate(-30px,30px)rotate(180deg)}75%{border-radius:70% 30% 60% 40%/30% 70% 50% 50%;transform:translate(30px,50px)rotate(270deg)}}@keyframes liquid-float{0%,to{transform:translateY(0)rotate(0)}25%{transform:translateY(-30px)rotate(2deg)}50%{transform:translateY(-15px)rotate(-2deg)}75%{transform:translateY(-40px)rotate(1deg)}}.animate-liquid-float{animation:8s ease-in-out infinite liquid-float}@keyframes fade-scale-in{0%{opacity:0;transform:scale(.9)translateY(20px)}to{opacity:1;transform:scale(1)translateY(0)}}.animate-fade-scale-in{animation:.8s cubic-bezier(.16,1,.3,1) forwards fade-scale-in}@keyframes pulse-glow{0%,to{box-shadow:0 0 20px #a855f766}50%{box-shadow:0 0 40px #a855f7b3}}.animate-pulse-glow{animation:3s ease-in-out infinite pulse-glow}@keyframes rotate-slow{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-rotate-slow{animation:30s linear infinite rotate-slow}.delay-100{animation-delay:.1s}.delay-200{animation-delay:.2s}.delay-300{animation-delay:.3s}.delay-400{animation-delay:.4s}.delay-500{animation-delay:.5s}.delay-600{animation-delay:.6s}.delay-700{animation-delay:.7s}.delay-800{animation-delay:.8s}.delay-1000{animation-delay:1s}.delay-1200{animation-delay:1.2s}.glass-border-glow{border:1px solid #a855f733;position:relative}.glass-border-glow:before{content:"";border-radius:inherit;pointer-events:none;opacity:0;background:linear-gradient(135deg,#a855f766,#0000,#3b82f666);padding:2px;transition:opacity .3s;position:absolute;inset:-2px;-webkit-mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);-webkit-mask-position:0 0,0 0;-webkit-mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.glass-border-glow:hover:before{opacity:1}.hover-lift{transition:transform .3s cubic-bezier(.16,1,.3,1),box-shadow .3s}.hover-lift:hover{transform:translateY(-8px)rotate(-1deg);box-shadow:0 20px 60px #a855f74d}.shimmer-text{background-size:200%;background:linear-gradient(90deg,#f5f5f5 25%,var(--color-electric-purple)50%,#f5f5f5 75%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;animation:3s linear infinite shimmer-slide}@keyframes shimmer-slide{to{background-position:200%}}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@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}@keyframes pulse{50%{opacity:.5}}@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-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--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}}}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@creativoma/liquid-glass",
3
- "version": "1.0.3",
3
+ "version": "1.1.0",
4
4
  "type": "module",
5
5
  "description": "A React wrapper component with liquid frosted glass effect using TailwindCSS",
6
- "main": "dist/index.js",
7
- "module": "dist/index.esm.js",
8
- "types": "dist/index.d.ts",
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.esm.js",
8
+ "types": "./dist/index.d.ts",
9
9
  "homepage": "https://github.com/creativoma/liquid-glass#readme",
10
10
  "repository": {
11
11
  "type": "git",
@@ -13,9 +13,9 @@
13
13
  },
14
14
  "exports": {
15
15
  ".": {
16
+ "types": "./dist/index.d.ts",
16
17
  "import": "./dist/index.esm.js",
17
- "require": "./dist/index.js",
18
- "types": "./dist/index.d.ts"
18
+ "require": "./dist/index.js"
19
19
  }
20
20
  },
21
21
  "files": [
@@ -48,26 +48,26 @@
48
48
  "react-dom": ">=18.0.0"
49
49
  },
50
50
  "devDependencies": {
51
- "@eslint/js": "^9.39.1",
52
- "@tailwindcss/postcss": "^4.1.17",
53
- "@types/node": "^20.19.25",
54
- "@types/react": "^19.2.7",
51
+ "@eslint/js": "^9.39.2",
52
+ "@tailwindcss/postcss": "^4.1.18",
53
+ "@types/node": "^25.2.3",
54
+ "@types/react": "^19.2.14",
55
55
  "@types/react-dom": "^19.2.3",
56
- "@vitejs/plugin-react": "^4.7.0",
57
- "autoprefixer": "^10.4.22",
58
- "eslint": "^9.39.1",
59
- "eslint-plugin-react-hooks": "^5.2.0",
60
- "eslint-plugin-react-refresh": "^0.4.24",
61
- "globals": "^16.5.0",
56
+ "@vitejs/plugin-react": "^5.1.4",
57
+ "autoprefixer": "^10.4.24",
58
+ "eslint": "^9.39.2",
59
+ "eslint-plugin-react-hooks": "^7.0.1",
60
+ "eslint-plugin-react-refresh": "^0.5.0",
61
+ "globals": "^17.3.0",
62
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",
63
+ "prettier": "^3.8.1",
64
+ "prettier-plugin-tailwindcss": "^0.7.2",
65
+ "react": "^19.2.4",
66
+ "react-dom": "^19.2.4",
67
+ "tailwindcss": "^4.1.18",
68
68
  "typescript": "^5.9.3",
69
- "typescript-eslint": "^8.48.1",
70
- "vite": "^7.2.6",
69
+ "typescript-eslint": "^8.55.0",
70
+ "vite": "^7.3.1",
71
71
  "vite-plugin-dts": "^4.5.4"
72
72
  },
73
73
  "publishConfig": {