@fynd-design-engineering/fynd-bloom 0.0.1
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/README.md +183 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +7 -0
- package/dist/styles.css +1 -0
- package/dist/styles.css.map +7 -0
- package/package.json +36 -0
package/README.md
ADDED
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
# Your Project
|
|
2
|
+
|
|
3
|
+
> **Note:** This README is a starting point.
|
|
4
|
+
> Update it with your project-specific details, file explanations, and logic descriptions to make it more informative and maintainable.
|
|
5
|
+
|
|
6
|
+
This project was generated using [**CDN-Starter**](https://www.npmjs.com/package/create-cdn-starter) — a modern template for building and deploying TypeScript/JavaScript code to Webflow or any CDN environment.
|
|
7
|
+
You can now customize it with your own scripts, utilities, and design logic.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Getting Started
|
|
12
|
+
|
|
13
|
+
### 1. Install Dependencies
|
|
14
|
+
|
|
15
|
+
Run the following command inside your project folder:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
pnpm install
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
This will install all required development and build dependencies.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
### 2. Update `package.json`
|
|
26
|
+
|
|
27
|
+
After installation, open the `package.json` file and fill in your own details:
|
|
28
|
+
|
|
29
|
+
```json
|
|
30
|
+
{
|
|
31
|
+
"name": "your-project-name",
|
|
32
|
+
"version": "0.0.0",
|
|
33
|
+
"description": "brief description of your project",
|
|
34
|
+
"homepage": "your-project-homepage",
|
|
35
|
+
"license": "MIT",
|
|
36
|
+
"keywords": [],
|
|
37
|
+
"author": {
|
|
38
|
+
"name": "your-name",
|
|
39
|
+
"url": "your-website-or-profile"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Only update the above fields.
|
|
45
|
+
Other configurations are pre-optimized for TypeScript builds, linting, and npm releases.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
### 3. Edit Source Files
|
|
50
|
+
|
|
51
|
+
All editable files are inside the `src/` folder.
|
|
52
|
+
This is where you add your scripts, components, utilities, and styles.
|
|
53
|
+
|
|
54
|
+
Example workflow:
|
|
55
|
+
|
|
56
|
+
- Modify `src/index.ts` or create new folders like `src/home/` or `src/utils/`.
|
|
57
|
+
- Whenever you add a new file, include it in `bin/build.js` under `ENTRY_POINTS`.
|
|
58
|
+
|
|
59
|
+
```js
|
|
60
|
+
const ENTRY_POINTS = [
|
|
61
|
+
"src/index.ts",
|
|
62
|
+
"src/styles/global.css",
|
|
63
|
+
"src/home/index.ts"
|
|
64
|
+
];
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Any file listed here will be automatically compiled into the `dist/` folder when you build.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Available Commands
|
|
72
|
+
|
|
73
|
+
### Development
|
|
74
|
+
|
|
75
|
+
Start a local development environment:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
pnpm dev
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
This command compiles your code in real time and serves it at:
|
|
82
|
+
[http://localhost:3000](http://localhost:3000)
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
### Build for Production
|
|
87
|
+
|
|
88
|
+
Generate optimized and minified builds:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
pnpm build
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Output files are created inside the `dist/` directory.
|
|
95
|
+
These are the files you can upload to your CDN or include in Webflow.
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
### Linting and Formatting
|
|
100
|
+
|
|
101
|
+
Maintain code consistency and quality:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
pnpm lint # Check for lint issues
|
|
105
|
+
pnpm lint:fix # Auto-fix lint issues
|
|
106
|
+
pnpm format # Format code using Prettier
|
|
107
|
+
pnpm check # Type check using TypeScript
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
### Versioning and Releasing
|
|
113
|
+
|
|
114
|
+
Handle versioning and publishing to npm:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
pnpm changeset
|
|
118
|
+
pnpm changeset version
|
|
119
|
+
pnpm release
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Run these sequentially to version and release your package.
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
### Generate CDN Links
|
|
127
|
+
|
|
128
|
+
After publishing, run:
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
pnpm cdn
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
This displays ready-to-use `<script>` or `<link>` tags pointing to the latest version of your npm package.
|
|
135
|
+
|
|
136
|
+
Example:
|
|
137
|
+
|
|
138
|
+
```html
|
|
139
|
+
<script defer src="https://cdn.jsdelivr.net/npm/your-package-name@latest/dist/index.js"></script>
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Folder Structure
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
your-project/
|
|
148
|
+
├── src/ # All editable source files
|
|
149
|
+
│ ├── index.ts
|
|
150
|
+
│ ├── styles/
|
|
151
|
+
│ │ └── global.css
|
|
152
|
+
│ └── home/
|
|
153
|
+
│ └── index.ts
|
|
154
|
+
├── bin/ # Build configuration (edit ENTRY_POINTS here)
|
|
155
|
+
│ └── build.js
|
|
156
|
+
├── dist/ # Generated build output (do not edit)
|
|
157
|
+
├── package.json
|
|
158
|
+
├── tsconfig.json
|
|
159
|
+
├── eslint.config.js
|
|
160
|
+
└── README.md
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
**Important:**
|
|
164
|
+
Every file you create inside `src/` must be listed in `bin/build.js` under `ENTRY_POINTS` to be compiled into `dist/`.
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## Notes
|
|
169
|
+
|
|
170
|
+
- Keep editable files limited to the `src/` directory.
|
|
171
|
+
- Avoid manual edits in `dist/` — it’s auto-generated.
|
|
172
|
+
- Use **semantic versioning** (`major.minor.patch`) for clear release cycles.
|
|
173
|
+
- Always commit changes before running a release.
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## License
|
|
178
|
+
|
|
179
|
+
This project is licensed under the [MIT License](./LICENSE).
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
Built using [**CDN-Starter**](https://www.npmjs.com/package/create-cdn-starter).
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(()=>{"scrollRestoration"in history&&(history.scrollRestoration="manual");var v=()=>{window.scrollTo(0,0),document.documentElement.scrollTop=0,document.body.scrollTop=0};window.addEventListener("load",()=>{v()});window.addEventListener("pageshow",t=>{t.persisted&&v()});var u=!1;document.addEventListener("DOMContentLoaded",()=>{let t=document.querySelectorAll("[data-anchor-trigger]"),s=document.querySelectorAll("[data-page-anchor]"),n=()=>window.innerWidth>992?120:52,o=e=>{t.forEach(r=>{let c=r.getAttribute("data-anchor-trigger");r.setAttribute("data-current-anchor",c===e?"true":"false")})},i=()=>{let e=n(),r=[];s.forEach(l=>{let g=l.getBoundingClientRect();g.top-e<=0&&g.bottom>e&&r.push(l)});let c=r.map(l=>l.getAttribute("data-page-anchor")).filter(l=>l!==null);c.length>0&&o(c[0])};t.forEach(e=>{e.addEventListener("click",()=>{let r=e.getAttribute("data-anchor-trigger");if(!r)return;let c=document.querySelector(`[data-page-anchor="${r}"]`);if(!c)return;let l=n(),g=c.getBoundingClientRect().top+window.scrollY-l;window.scrollTo({top:g,behavior:"auto"}),u&&(d(),u=!1),o(r),i()})}),window.addEventListener("scroll",i);let m=992,p=()=>window.innerWidth<m;function f(){let e=document.getElementById("menu-toggle");e&&(e.checked=!0)}function E(){let e=document.getElementById("menu-toggle");e&&(e.checked=!1)}function a(){if(!p())return;let e=document.querySelector("[data-menu-content]");e&&(e.style.display="block",f())}function d(){let e=document.querySelector("[data-menu-content]");e&&(e.style.display="none",E())}d(),u=!1;let y=document.querySelector("[data-menu-toggle]");y&&y.addEventListener("click",()=>{u=!u,u?a():d()}),i()});document.querySelectorAll("[large-card]").forEach(t=>{if(t.classList.contains("w-condition-invisible"))return;let s=t.parentElement;s&&s.setAttribute("col-span","2")});document.addEventListener("DOMContentLoaded",()=>{let t=document.querySelector("[bloom-element='video-1']"),s=document.querySelector("[bloom-element='video-poster-1']"),n=document.querySelector("[bloom-element='video-2']"),o=document.querySelector("[bloom-element='content']");if(!t||!s||!n||!o){console.warn("Required elements missing");return}v(),document.body.classList.add("scroll-locked"),o.style.transition="none",o.style.transform="translateY(100vh)",o.getBoundingClientRect(),o.style.transition="transform 0.8s ease";let i=!1,m=!1,p=()=>{if(i)return;i=!0;let a=t.play();a&&a.then(()=>{s.style.display="none"}).catch(()=>{})};t.readyState>=HTMLMediaElement.HAVE_METADATA?p():t.addEventListener("loadedmetadata",p,{once:!0}),t.addEventListener("ended",()=>{t.pause(),t.currentTime=t.duration,n.style.display="block"});let f=a=>{if(m)return;a.preventDefault(),m=!0,window.removeEventListener("wheel",f);let d=n.play();d&&d.catch(()=>{})};window.addEventListener("wheel",f,{passive:!1}),n.addEventListener("ended",()=>{n.pause(),n.currentTime=n.duration,E()});let E=()=>{requestAnimationFrame(()=>{o.style.transform="translateY(0)"}),setTimeout(()=>{document.body.classList.remove("scroll-locked")},900)}});})();
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/index.ts"],
|
|
4
|
+
"sourcesContent": ["// =======================================\n// GLOBAL SCROLL RESET (CRITICAL, TOP ONLY)\n// =======================================\n\n// Disable browser automatic scroll restoration\nif (\"scrollRestoration\" in history) {\n history.scrollRestoration = \"manual\";\n}\n\nconst forceScrollTop = (): void => {\n window.scrollTo(0, 0);\n document.documentElement.scrollTop = 0;\n document.body.scrollTop = 0;\n};\n\n// After full page load (catches late restores)\nwindow.addEventListener(\"load\", () => {\n forceScrollTop();\n});\n\n// Handle back/forward cache restores (Safari, Firefox)\nwindow.addEventListener(\"pageshow\", (event: PageTransitionEvent) => {\n if (event.persisted) {\n forceScrollTop();\n }\n});\n\n\n// =======================================\n// Smooth scrolling, anchor highlighting,\n// and mobile menu handling\n// =======================================\n\nlet mobileMenuOpen = false;\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n /* -----------------------------\n Anchor scrolling & highlighting\n ----------------------------- */\n\n const triggers = document.querySelectorAll<HTMLElement>(\"[data-anchor-trigger]\");\n const anchors = document.querySelectorAll<HTMLElement>(\"[data-page-anchor]\");\n\n const getScrollTopSpacer = (): number =>\n window.innerWidth > 992 ? 120 : 52;\n\n const updateCurrentAnchor = (value: string): void => {\n triggers.forEach(trigger => {\n const triggerValue = trigger.getAttribute(\"data-anchor-trigger\");\n trigger.setAttribute(\n \"data-current-anchor\",\n triggerValue === value ? \"true\" : \"false\"\n );\n });\n };\n\n const logVisiblePageAnchor = (): void => {\n const scrollTopSpacer = getScrollTopSpacer();\n const visibleAnchors: HTMLElement[] = [];\n\n anchors.forEach(anchor => {\n const rect = anchor.getBoundingClientRect();\n const adjustedTop = rect.top - scrollTopSpacer;\n\n if (adjustedTop <= 0 && rect.bottom > scrollTopSpacer) {\n visibleAnchors.push(anchor);\n }\n });\n\n const values = visibleAnchors\n .map(a => a.getAttribute(\"data-page-anchor\"))\n .filter((v): v is string => v !== null);\n\n if (values.length > 0) {\n updateCurrentAnchor(values[0]);\n }\n };\n\n triggers.forEach(trigger => {\n trigger.addEventListener(\"click\", () => {\n const value = trigger.getAttribute(\"data-anchor-trigger\");\n if (!value) return;\n\n const target = document.querySelector<HTMLElement>(\n `[data-page-anchor=\"${value}\"]`\n );\n if (!target) return;\n\n const scrollTopSpacer = getScrollTopSpacer();\n const targetTop =\n target.getBoundingClientRect().top + window.scrollY - scrollTopSpacer;\n\n window.scrollTo({ top: targetTop, behavior: \"auto\" });\n\n if (mobileMenuOpen) {\n menuClose();\n mobileMenuOpen = false;\n }\n\n updateCurrentAnchor(value);\n logVisiblePageAnchor();\n });\n });\n\n window.addEventListener(\"scroll\", logVisiblePageAnchor);\n\n /* -----------------------------\n Mobile menu toggle\n ----------------------------- */\n\n const MOBILE_BREAKPOINT = 992;\n\n const isMobileScreen = (): boolean =>\n window.innerWidth < MOBILE_BREAKPOINT;\n\n function openMenuAnimation(): void {\n const checkbox = document.getElementById(\"menu-toggle\") as HTMLInputElement | null;\n if (!checkbox) return;\n checkbox.checked = true;\n }\n\n function closeMenuAnimation(): void {\n const checkbox = document.getElementById(\"menu-toggle\") as HTMLInputElement | null;\n if (!checkbox) return;\n checkbox.checked = false;\n }\n\n function menuOpen(): void {\n if (!isMobileScreen()) return;\n\n const menu = document.querySelector<HTMLElement>(\"[data-menu-content]\");\n if (!menu) return;\n\n menu.style.display = \"block\";\n openMenuAnimation();\n }\n\n function menuClose(): void {\n const menu = document.querySelector<HTMLElement>(\"[data-menu-content]\");\n if (!menu) return;\n\n menu.style.display = \"none\";\n closeMenuAnimation();\n }\n\n menuClose();\n mobileMenuOpen = false;\n\n const toggle = document.querySelector<HTMLElement>(\"[data-menu-toggle]\");\n if (toggle) {\n toggle.addEventListener(\"click\", () => {\n mobileMenuOpen = !mobileMenuOpen;\n mobileMenuOpen ? menuOpen() : menuClose();\n });\n }\n\n logVisiblePageAnchor();\n});\n\n\n/* -----------------------------\n Adjust grid column span for large cards\n----------------------------- */\n\ndocument\n .querySelectorAll<HTMLElement>(\"[large-card]\")\n .forEach(card => {\n if (card.classList.contains(\"w-condition-invisible\")) return;\n\n const parent = card.parentElement;\n if (!parent) return;\n\n parent.setAttribute(\"col-span\", \"2\");\n });\n\n\n/* -----------------------------\n Video autoplay and poster handling\n----------------------------- */\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const video1 = document.querySelector(\n \"[bloom-element='video-1']\"\n ) as HTMLVideoElement | null;\n\n const poster1 = document.querySelector(\n \"[bloom-element='video-poster-1']\"\n ) as HTMLImageElement | null;\n\n const video2 = document.querySelector(\n \"[bloom-element='video-2']\"\n ) as HTMLVideoElement | null;\n\n const content = document.querySelector(\n \"[bloom-element='content']\"\n ) as HTMLElement | null;\n\n if (!video1 || !poster1 || !video2 || !content) {\n console.warn(\"Required elements missing\");\n return;\n }\n\n /* ---------- HARD RESET ---------- */\n\n forceScrollTop();\n\n document.body.classList.add(\"scroll-locked\");\n\n content.style.transition = \"none\";\n content.style.transform = \"translateY(100vh)\";\n content.getBoundingClientRect();\n content.style.transition = \"transform 0.8s ease\";\n\n let video1Played = false;\n let video2Triggered = false;\n\n /* ---------- VIDEO 1 ---------- */\n\n const playVideo1Once = () => {\n if (video1Played) return;\n video1Played = true;\n\n const playPromise = video1.play();\n if (playPromise) {\n playPromise\n .then(() => {\n poster1.style.display = \"none\";\n })\n .catch(() => { });\n }\n };\n\n if (video1.readyState >= HTMLMediaElement.HAVE_METADATA) {\n playVideo1Once();\n } else {\n video1.addEventListener(\"loadedmetadata\", playVideo1Once, { once: true });\n }\n\n video1.addEventListener(\"ended\", () => {\n video1.pause();\n video1.currentTime = video1.duration;\n video2.style.display = \"block\";\n });\n\n /* ---------- VIDEO 2 (SCROLL-INTENT GATED) ---------- */\n\n const onFirstScrollIntent = (event: WheelEvent) => {\n if (video2Triggered) return;\n\n event.preventDefault();\n video2Triggered = true;\n window.removeEventListener(\"wheel\", onFirstScrollIntent);\n\n const playPromise = video2.play();\n if (playPromise) {\n playPromise.catch(() => { });\n }\n };\n\n window.addEventListener(\"wheel\", onFirstScrollIntent, { passive: false });\n\n video2.addEventListener(\"ended\", () => {\n video2.pause();\n video2.currentTime = video2.duration;\n\n revealContent();\n });\n\n /* ---------- CONTENT REVEAL ---------- */\n\n const revealContent = () => {\n requestAnimationFrame(() => {\n content.style.transform = \"translateY(0)\";\n });\n\n setTimeout(() => {\n document.body.classList.remove(\"scroll-locked\");\n }, 900);\n };\n});"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/styles.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[data-current-anchor=true]{backdrop-filter:blur(6px);background-color:#ffffff38;box-shadow:inset 0 0 0 1px #ffffff6b}@media screen and (max-width: 991px){[data-current-anchor=true]{box-shadow:none;background-color:#ffffff24;justify-content:flex-start;align-items:center;width:100%;height:auto}}[col-span="2"]{grid-area:span 1 / span 2 / span 1 / span 2}@media screen and (max-width: 991px){[col-span="2"]{grid-column:span 2 / span 2}}@media screen and (max-width: 767px){[col-span="2"]{grid-column:span 1 / span 1}}[bloom-element=video-1]{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1}[bloom-element=video-poster-1]{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:2}[bloom-element=video-2]{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1;display:none}.scroll-locked{overflow:hidden}[bloom-element=content]{transform:translateY(100vh);transition:transform .8s ease}.reveal{transform:translateY(0)}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/styles.css"],
|
|
4
|
+
"sourcesContent": ["[data-current-anchor=\"true\"] {\n backdrop-filter: blur(6px);\n background-color: #ffffff38;\n box-shadow: inset 0 0 0 1px #ffffff6b;\n}\n@media screen and (max-width: 991px) {\n [data-current-anchor=\"true\"]{\n box-shadow: none;\n background-color: #ffffff24;\n justify-content: flex-start;\n align-items: center;\n width: 100%;\n height: auto;\n }\n}\n\n[col-span=\"2\"] {\n grid-area: span 1 / span 2 / span 1 / span 2;\n}\n@media screen and (max-width: 991px) {\n [col-span=\"2\"] {\n grid-column: span 2 / span 2;\n }\n}\n@media screen and (max-width: 767px) {\n[col-span=\"2\"]{\n grid-column: span 1 / span 1;\n }\n}\n\n[bloom-element=\"video-1\"]{\nposition: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: 1;\n\n}\n[bloom-element=\"video-poster-1\"]{\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: 2;\n}\n[bloom-element=\"video-2\"]{\nposition: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: 1;\ndisplay: none;\n}\n\n.scroll-locked{\n overflow: hidden;\n}\n\n[bloom-element=\"content\"]{\n transform: translate(0, 100vh);\n transition: transform 0.8s ease;\n}\n.reveal {\n transform: translateY(0);\n}"],
|
|
5
|
+
"mappings": ";AAAA,CAAC;AACG,mBAAiB,KAAK;AACtB,oBAAkB;AAClB,cAAY,MAAM,EAAE,EAAE,EAAE,IAAI;AAChC;AACA,OAAO,OAAO,IAAI,CAAC,SAAS,EAAE;AAC1B,GAAC;AACG,gBAAY;AACZ,sBAAkB;AAClB,qBAAiB;AACjB,iBAAa;AACb,WAAO;AACP,YAAQ;AACZ;AACJ;AAEA,CAAC;AACG,aAAW,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK;AAC/C;AACA,OAAO,OAAO,IAAI,CAAC,SAAS,EAAE;AAC1B,GAAC;AACG,iBAAa,KAAK,EAAE,EAAE,KAAK;AAC/B;AACJ;AACA,OAAO,OAAO,IAAI,CAAC,SAAS,EAAE;AAC9B,GAAC;AACO,iBAAa,KAAK,EAAE,EAAE,KAAK;AAC/B;AACJ;AAEA,CAAC;AACD,YAAU;AACR,SAAO;AACP,SAAO;AACP,UAAQ;AACR,cAAY;AACZ,WAAS;AAEX;AACA,CAAC;AACC,YAAU;AACV,SAAO;AACP,SAAO;AACP,UAAQ;AACR,cAAY;AACZ,WAAS;AACX;AACA,CAAC;AACD,YAAU;AACR,SAAO;AACP,SAAO;AACP,UAAQ;AACR,cAAY;AACZ,WAAS;AACX,WAAS;AACT;AAEA,CAAC;AACG,YAAU;AACd;AAEA,CAAC;AACO,aAAW,UAAU,CAAC,EAAE;AACxB,cAAY,UAAU,KAAK;AACnC;AACA,CAAC;AACC,aAAW,WAAW;AACxB;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@fynd-design-engineering/fynd-bloom",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Bloom edition static javascript library",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"keywords": [],
|
|
7
|
+
"author": {
|
|
8
|
+
"name": "Raimon",
|
|
9
|
+
"url": "https://github.com/rtstic"
|
|
10
|
+
},
|
|
11
|
+
"type": "module",
|
|
12
|
+
"main": "dist/index.ts",
|
|
13
|
+
"module": "dist/index.ts",
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"publishConfig": {
|
|
18
|
+
"access": "public"
|
|
19
|
+
},
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"@changesets/cli": "^2.29.4",
|
|
22
|
+
"cross-env": "^7.0.3",
|
|
23
|
+
"esbuild": "^0.25.5"
|
|
24
|
+
},
|
|
25
|
+
"scripts": {
|
|
26
|
+
"dev": "cross-env NODE_ENV=development node ./bin/build.js",
|
|
27
|
+
"build": "cross-env NODE_ENV=production node ./bin/build.js",
|
|
28
|
+
"cdn": "node ./bin/cdn.js",
|
|
29
|
+
"lint": "eslint ./src && prettier --check ./src",
|
|
30
|
+
"lint:fix": "eslint ./src --fix",
|
|
31
|
+
"check": "tsc --noEmit",
|
|
32
|
+
"format": "prettier --write ./src",
|
|
33
|
+
"release": "changeset publish",
|
|
34
|
+
"update": "pnpm update -i -L -r"
|
|
35
|
+
}
|
|
36
|
+
}
|