@t7blocks/ui 0.0.4 → 0.0.6

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/LICENSE.md ADDED
@@ -0,0 +1,77 @@
1
+ MIT + Commons Clause License Condition v1.0
2
+
3
+ Copyright (c) 2026 Ashirwad Singh (T7blocks)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, and distribute the Software **as part of
9
+ an application, website, or product**, subject to the following conditions:
10
+
11
+
12
+
13
+ ## 1. Attribution Requirement
14
+
15
+ The above copyright notice and this permission notice shall be included in all
16
+ copies or substantial portions of the Software.
17
+
18
+ If you use these components in a **public-facing project**, you must include
19
+ visible credit in at least one [Optional] of the following ways:
20
+
21
+ - A "Built with T7blocks" notice in your site footer, README, or credits page
22
+ - A link to [t7blocks.xyz](https://t7blocks.xyz) in your project documentation
23
+
24
+ Removing, hiding, or obfuscating authorship information to avoid this
25
+ requirement is a violation of this license.
26
+
27
+
28
+
29
+ ## 2. Commons Clause Restriction
30
+
31
+ You may use this Software, including for any commercial purpose, **so long as
32
+ you do not**:
33
+
34
+ - Sell, sublicense, or redistribute the components themselves — whether alone,
35
+ in a bundle, as a port, or in any modified form — as a standalone product,
36
+ template kit, or component library
37
+ - White-label, rename, or repackage the components and publish them as your
38
+ own original work, regardless of how much the source has been modified
39
+ - Compile, minify, obfuscate, or transform the components into another format
40
+ for the purpose of redistribution or resale
41
+ - Use the components as the core offering of a paid tool, SaaS product, or
42
+ AI training dataset where the components themselves are the primary value
43
+ being sold or distributed
44
+
45
+
46
+
47
+ ## 3. Permitted Uses
48
+
49
+ For clarity, the following are explicitly permitted:
50
+
51
+ - Using components in personal, client, or commercial websites and applications
52
+ - Modifying components to fit your project's needs
53
+ - Including components in open source projects that are not component libraries
54
+ - Deploying projects that use these components for commercial purposes
55
+
56
+
57
+
58
+ ## 4. AI and Automated Systems
59
+
60
+ You may not use the source code of these components, in whole or in part, to
61
+ train, fine-tune, or build machine learning models, AI code generation tools,
62
+ or automated component generation systems that are distributed or sold to
63
+ third parties.
64
+
65
+
66
+ ## 5. No Warranty
67
+
68
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
69
+ IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS
70
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ASHIRWAD SINGH
71
+ BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
72
+ CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
73
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
74
+
75
+ ---
76
+
77
+ For licensing inquiries: hello.t7labs@gmail.com
package/dist/index.d.mts CHANGED
@@ -18,4 +18,6 @@ interface DotlaunchbuttonProps {
18
18
  }
19
19
  declare function Dotlaunchbutton({ label, onClick, className, accentColor, btnColor, animationSpeed, }: DotlaunchbuttonProps): react_jsx_runtime.JSX.Element;
20
20
 
21
- export { Button1, Dotlaunchbutton };
21
+ declare const PopHero: () => react_jsx_runtime.JSX.Element;
22
+
23
+ export { Button1, Dotlaunchbutton, PopHero };
package/dist/index.d.ts CHANGED
@@ -18,4 +18,6 @@ interface DotlaunchbuttonProps {
18
18
  }
19
19
  declare function Dotlaunchbutton({ label, onClick, className, accentColor, btnColor, animationSpeed, }: DotlaunchbuttonProps): react_jsx_runtime.JSX.Element;
20
20
 
21
- export { Button1, Dotlaunchbutton };
21
+ declare const PopHero: () => react_jsx_runtime.JSX.Element;
22
+
23
+ export { Button1, Dotlaunchbutton, PopHero };
package/dist/index.js CHANGED
@@ -1,7 +1,10 @@
1
+ "use client";
1
2
  "use strict";
3
+ var __create = Object.create;
2
4
  var __defProp = Object.defineProperty;
3
5
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
6
  var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
5
8
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
9
  var __export = (target, all) => {
7
10
  for (var name in all)
@@ -15,13 +18,22 @@ var __copyProps = (to, from, except, desc) => {
15
18
  }
16
19
  return to;
17
20
  };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
18
29
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
30
 
20
31
  // src/index.ts
21
32
  var index_exports = {};
22
33
  __export(index_exports, {
23
34
  Button1: () => Button1,
24
- Dotlaunchbutton: () => Dotlaunchbutton
35
+ Dotlaunchbutton: () => Dotlaunchbutton,
36
+ PopHero: () => PopHero
25
37
  });
26
38
  module.exports = __toCommonJS(index_exports);
27
39
 
@@ -181,9 +193,156 @@ function Dotlaunchbutton({
181
193
  }
182
194
  );
183
195
  }
196
+
197
+ // src/hero/PopHero/PopHero.tsx
198
+ var import_react3 = require("react");
199
+ var import_gsap = __toESM(require("gsap"));
200
+
201
+ // #style-inject:#style-inject
202
+ function styleInject(css, { insertAt } = {}) {
203
+ if (!css || typeof document === "undefined") return;
204
+ const head = document.head || document.getElementsByTagName("head")[0];
205
+ const style = document.createElement("style");
206
+ style.type = "text/css";
207
+ if (insertAt === "top") {
208
+ if (head.firstChild) {
209
+ head.insertBefore(style, head.firstChild);
210
+ } else {
211
+ head.appendChild(style);
212
+ }
213
+ } else {
214
+ head.appendChild(style);
215
+ }
216
+ if (style.styleSheet) {
217
+ style.styleSheet.cssText = css;
218
+ } else {
219
+ style.appendChild(document.createTextNode(css));
220
+ }
221
+ }
222
+
223
+ // src/hero/PopHero/PopHero.css
224
+ styleInject(':root {\n --font-display: "Instrument Serif", serif;\n}\n::-webkit-scrollbar {\n display: none;\n}\nhtml {\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n.pop-hero-main {\n font-family: var(--font-display), serif;\n}\n');
225
+
226
+ // src/hero/PopHero/PopHero.tsx
227
+ var import_jsx_runtime3 = require("react/jsx-runtime");
228
+ var PopHero = () => {
229
+ const containerRef = (0, import_react3.useRef)(null);
230
+ const imageWrapperRef = (0, import_react3.useRef)(null);
231
+ const navbarRef = (0, import_react3.useRef)(null);
232
+ const centerTextRef = (0, import_react3.useRef)(null);
233
+ (0, import_react3.useEffect)(() => {
234
+ if (!imageWrapperRef.current || !navbarRef.current || !centerTextRef.current) return;
235
+ const mm = import_gsap.default.matchMedia();
236
+ mm.add({
237
+ isMobile: "(max-width: 768px)",
238
+ isDesktop: "(min-width: 769px)"
239
+ }, (context) => {
240
+ const { isMobile } = context.conditions;
241
+ import_gsap.default.set(imageWrapperRef.current, {
242
+ y: "100vh",
243
+ rotation: isMobile ? 8 : 15,
244
+ scale: isMobile ? 0.7 : 0.5,
245
+ opacity: 0,
246
+ width: isMobile ? "85vw" : "60vw",
247
+ height: isMobile ? "65vh" : "75vh",
248
+ borderRadius: isMobile ? "1.5rem" : "2rem",
249
+ transformOrigin: "center center"
250
+ });
251
+ import_gsap.default.set(centerTextRef.current, {
252
+ opacity: 0,
253
+ y: 20
254
+ });
255
+ import_gsap.default.fromTo(
256
+ navbarRef.current,
257
+ { opacity: 0, y: -20 },
258
+ { opacity: 1, y: 0, duration: 1, delay: 0.5, ease: "power2.out" }
259
+ );
260
+ const tl = import_gsap.default.timeline({
261
+ defaults: { ease: "power2.out" }
262
+ });
263
+ tl.to(imageWrapperRef.current, {
264
+ y: "0%",
265
+ scale: isMobile ? 0.85 : 0.7,
266
+ opacity: 1,
267
+ duration: 1.2
268
+ }).to(imageWrapperRef.current, {
269
+ rotation: 0,
270
+ scale: 1,
271
+ width: "100vw",
272
+ height: "100vh",
273
+ borderRadius: "0px",
274
+ duration: 1.4,
275
+ ease: "expo.out"
276
+ }, "-=0.1").to(centerTextRef.current, {
277
+ opacity: 1,
278
+ y: 0,
279
+ duration: 1.5,
280
+ ease: "power3.out"
281
+ }, "-=0.5");
282
+ });
283
+ return () => mm.revert();
284
+ }, []);
285
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
286
+ "main",
287
+ {
288
+ ref: containerRef,
289
+ className: "pop-hero-main relative min-h-screen bg-black text-white overflow-hidden selection:bg-[#EBDCCB] selection:text-black",
290
+ children: [
291
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
292
+ "nav",
293
+ {
294
+ ref: navbarRef,
295
+ className: "fixed top-0 left-0 w-full z-50 px-6 py-8 md:p-10 flex justify-between items-center pointer-events-auto",
296
+ children: [
297
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "text-base md:text-2xl font-normal tracking-tighter uppercase opacity-90 drop-shadow-sm", children: "Waves.studios" }),
298
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex gap-4 md:gap-16 text-[10px] md:text-[11px] uppercase tracking-widest md:tracking-[0.4em] font-normal opacity-70", children: [
299
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("a", { href: "#", className: "hover:opacity-100 transition-opacity", children: "Work" }),
300
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("a", { href: "#", className: "hover:opacity-100 transition-opacity", children: "About" }),
301
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("a", { href: "#", className: "hover:opacity-100 transition-opacity", children: "Contact" })
302
+ ] })
303
+ ]
304
+ }
305
+ ),
306
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "relative h-screen w-full flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
307
+ "div",
308
+ {
309
+ ref: imageWrapperRef,
310
+ className: "relative overflow-hidden shadow-2xl z-10 will-change-transform",
311
+ children: [
312
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
313
+ "video",
314
+ {
315
+ src: "https://d8j0ntlcm91z4.cloudfront.net/user_38xzZboKViGWJOttwIXH07lWA1P/hf_20260228_065522_522e2295-ba22-457e-8fdb-fbcd68109c73.mp4",
316
+ autoPlay: true,
317
+ loop: true,
318
+ muted: true,
319
+ playsInline: true,
320
+ className: "absolute inset-0 w-full h-full object-cover transition-all duration-1000"
321
+ }
322
+ ),
323
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
324
+ "div",
325
+ {
326
+ ref: centerTextRef,
327
+ className: "absolute inset-0 flex flex-col items-center justify-center z-20 pointer-events-none px-6 -translate-y-6 md:-translate-y-12",
328
+ children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("h1", { className: "text-4xl md:text-[9rem] tracking-tight text-[#fdfcfb] drop-shadow-[0_10px_30px_rgba(0,0,0,0.5)] leading-[1.1] md:leading-[0.9] text-center", children: [
329
+ "Nature's ",
330
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "italic block mt-0 md:mt-[-0.1em] opacity-90", children: "Quiet Pulse" })
331
+ ] })
332
+ }
333
+ )
334
+ ]
335
+ }
336
+ ) }),
337
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "absolute inset-0 pointer-events-none -z-10 text-white/5 flex items-center justify-center text-[20vw] font-bold opacity-10 blur-3xl", children: "WAVES" })
338
+ ]
339
+ }
340
+ );
341
+ };
184
342
  // Annotate the CommonJS export names for ESM import in node:
185
343
  0 && (module.exports = {
186
344
  Button1,
187
- Dotlaunchbutton
345
+ Dotlaunchbutton,
346
+ PopHero
188
347
  });
189
348
  //# sourceMappingURL=index.js.map
package/dist/index.mjs CHANGED
@@ -1,3 +1,5 @@
1
+ "use client";
2
+
1
3
  // src/components/button/button-1/Button1.tsx
2
4
  import { motion } from "framer-motion";
3
5
  import { useRef } from "react";
@@ -154,8 +156,155 @@ function Dotlaunchbutton({
154
156
  }
155
157
  );
156
158
  }
159
+
160
+ // src/hero/PopHero/PopHero.tsx
161
+ import { useEffect as useEffect2, useRef as useRef3 } from "react";
162
+ import gsap from "gsap";
163
+
164
+ // #style-inject:#style-inject
165
+ function styleInject(css, { insertAt } = {}) {
166
+ if (!css || typeof document === "undefined") return;
167
+ const head = document.head || document.getElementsByTagName("head")[0];
168
+ const style = document.createElement("style");
169
+ style.type = "text/css";
170
+ if (insertAt === "top") {
171
+ if (head.firstChild) {
172
+ head.insertBefore(style, head.firstChild);
173
+ } else {
174
+ head.appendChild(style);
175
+ }
176
+ } else {
177
+ head.appendChild(style);
178
+ }
179
+ if (style.styleSheet) {
180
+ style.styleSheet.cssText = css;
181
+ } else {
182
+ style.appendChild(document.createTextNode(css));
183
+ }
184
+ }
185
+
186
+ // src/hero/PopHero/PopHero.css
187
+ styleInject(':root {\n --font-display: "Instrument Serif", serif;\n}\n::-webkit-scrollbar {\n display: none;\n}\nhtml {\n scrollbar-width: none;\n -ms-overflow-style: none;\n}\n.pop-hero-main {\n font-family: var(--font-display), serif;\n}\n');
188
+
189
+ // src/hero/PopHero/PopHero.tsx
190
+ import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
191
+ var PopHero = () => {
192
+ const containerRef = useRef3(null);
193
+ const imageWrapperRef = useRef3(null);
194
+ const navbarRef = useRef3(null);
195
+ const centerTextRef = useRef3(null);
196
+ useEffect2(() => {
197
+ if (!imageWrapperRef.current || !navbarRef.current || !centerTextRef.current) return;
198
+ const mm = gsap.matchMedia();
199
+ mm.add({
200
+ isMobile: "(max-width: 768px)",
201
+ isDesktop: "(min-width: 769px)"
202
+ }, (context) => {
203
+ const { isMobile } = context.conditions;
204
+ gsap.set(imageWrapperRef.current, {
205
+ y: "100vh",
206
+ rotation: isMobile ? 8 : 15,
207
+ scale: isMobile ? 0.7 : 0.5,
208
+ opacity: 0,
209
+ width: isMobile ? "85vw" : "60vw",
210
+ height: isMobile ? "65vh" : "75vh",
211
+ borderRadius: isMobile ? "1.5rem" : "2rem",
212
+ transformOrigin: "center center"
213
+ });
214
+ gsap.set(centerTextRef.current, {
215
+ opacity: 0,
216
+ y: 20
217
+ });
218
+ gsap.fromTo(
219
+ navbarRef.current,
220
+ { opacity: 0, y: -20 },
221
+ { opacity: 1, y: 0, duration: 1, delay: 0.5, ease: "power2.out" }
222
+ );
223
+ const tl = gsap.timeline({
224
+ defaults: { ease: "power2.out" }
225
+ });
226
+ tl.to(imageWrapperRef.current, {
227
+ y: "0%",
228
+ scale: isMobile ? 0.85 : 0.7,
229
+ opacity: 1,
230
+ duration: 1.2
231
+ }).to(imageWrapperRef.current, {
232
+ rotation: 0,
233
+ scale: 1,
234
+ width: "100vw",
235
+ height: "100vh",
236
+ borderRadius: "0px",
237
+ duration: 1.4,
238
+ ease: "expo.out"
239
+ }, "-=0.1").to(centerTextRef.current, {
240
+ opacity: 1,
241
+ y: 0,
242
+ duration: 1.5,
243
+ ease: "power3.out"
244
+ }, "-=0.5");
245
+ });
246
+ return () => mm.revert();
247
+ }, []);
248
+ return /* @__PURE__ */ jsxs2(
249
+ "main",
250
+ {
251
+ ref: containerRef,
252
+ className: "pop-hero-main relative min-h-screen bg-black text-white overflow-hidden selection:bg-[#EBDCCB] selection:text-black",
253
+ children: [
254
+ /* @__PURE__ */ jsxs2(
255
+ "nav",
256
+ {
257
+ ref: navbarRef,
258
+ className: "fixed top-0 left-0 w-full z-50 px-6 py-8 md:p-10 flex justify-between items-center pointer-events-auto",
259
+ children: [
260
+ /* @__PURE__ */ jsx3("div", { className: "text-base md:text-2xl font-normal tracking-tighter uppercase opacity-90 drop-shadow-sm", children: "Waves.studios" }),
261
+ /* @__PURE__ */ jsxs2("div", { className: "flex gap-4 md:gap-16 text-[10px] md:text-[11px] uppercase tracking-widest md:tracking-[0.4em] font-normal opacity-70", children: [
262
+ /* @__PURE__ */ jsx3("a", { href: "#", className: "hover:opacity-100 transition-opacity", children: "Work" }),
263
+ /* @__PURE__ */ jsx3("a", { href: "#", className: "hover:opacity-100 transition-opacity", children: "About" }),
264
+ /* @__PURE__ */ jsx3("a", { href: "#", className: "hover:opacity-100 transition-opacity", children: "Contact" })
265
+ ] })
266
+ ]
267
+ }
268
+ ),
269
+ /* @__PURE__ */ jsx3("div", { className: "relative h-screen w-full flex items-center justify-center", children: /* @__PURE__ */ jsxs2(
270
+ "div",
271
+ {
272
+ ref: imageWrapperRef,
273
+ className: "relative overflow-hidden shadow-2xl z-10 will-change-transform",
274
+ children: [
275
+ /* @__PURE__ */ jsx3(
276
+ "video",
277
+ {
278
+ src: "https://d8j0ntlcm91z4.cloudfront.net/user_38xzZboKViGWJOttwIXH07lWA1P/hf_20260228_065522_522e2295-ba22-457e-8fdb-fbcd68109c73.mp4",
279
+ autoPlay: true,
280
+ loop: true,
281
+ muted: true,
282
+ playsInline: true,
283
+ className: "absolute inset-0 w-full h-full object-cover transition-all duration-1000"
284
+ }
285
+ ),
286
+ /* @__PURE__ */ jsx3(
287
+ "div",
288
+ {
289
+ ref: centerTextRef,
290
+ className: "absolute inset-0 flex flex-col items-center justify-center z-20 pointer-events-none px-6 -translate-y-6 md:-translate-y-12",
291
+ children: /* @__PURE__ */ jsxs2("h1", { className: "text-4xl md:text-[9rem] tracking-tight text-[#fdfcfb] drop-shadow-[0_10px_30px_rgba(0,0,0,0.5)] leading-[1.1] md:leading-[0.9] text-center", children: [
292
+ "Nature's ",
293
+ /* @__PURE__ */ jsx3("span", { className: "italic block mt-0 md:mt-[-0.1em] opacity-90", children: "Quiet Pulse" })
294
+ ] })
295
+ }
296
+ )
297
+ ]
298
+ }
299
+ ) }),
300
+ /* @__PURE__ */ jsx3("div", { className: "absolute inset-0 pointer-events-none -z-10 text-white/5 flex items-center justify-center text-[20vw] font-bold opacity-10 blur-3xl", children: "WAVES" })
301
+ ]
302
+ }
303
+ );
304
+ };
157
305
  export {
158
306
  Button1,
159
- Dotlaunchbutton
307
+ Dotlaunchbutton,
308
+ PopHero
160
309
  };
161
310
  //# sourceMappingURL=index.mjs.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@t7blocks/ui",
3
- "version": "0.0.4",
3
+ "version": "0.0.6",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.mjs",
6
6
  "types": "./dist/index.d.ts",
@@ -9,17 +9,19 @@
9
9
  "types": "./dist/index.d.ts",
10
10
  "import": "./dist/index.mjs",
11
11
  "require": "./dist/index.js"
12
- }
12
+ },
13
+ "./dist/index.css": "./dist/index.css"
13
14
  },
14
15
  "peerDependencies": {
15
- "framer-motion": "^11.0.0",
16
- "react": "^18.0.0"
16
+ "framer-motion": "^11.0.0 || ^12.0.0",
17
+ "react": "^18.0.0 || ^19.0.0"
17
18
  },
18
19
  "devDependencies": {
19
20
  "@tailwindcss/postcss": "^4.2.2",
20
- "@types/react": "^18.0.0",
21
- "@types/react-dom": "^19.2.3",
21
+ "@types/react": "^18.0.0 || ^19.0.0",
22
+ "@types/react-dom": "^18.0.0 || ^19.0.0",
22
23
  "framer-motion": "^12.38.0",
24
+ "gsap": "^3.14.2",
23
25
  "postcss": "^8.5.9",
24
26
  "tailwindcss": "^4.2.2",
25
27
  "tsup": "^8.0.0",