@invisibleloop/pulse 0.12.0 → 0.12.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.
@@ -1375,7 +1375,7 @@ a:hover {
1375
1375
  top: 0;
1376
1376
  left: 0;
1377
1377
  width: var(--sidebar-w);
1378
- height: 100vh;
1378
+ height: 100dvh;
1379
1379
  overflow-y: auto;
1380
1380
  background: var(--surface);
1381
1381
  border-right: 1px solid var(--border);
@@ -1941,6 +1941,10 @@ hr.doc-hr {
1941
1941
  padding: 2rem 1.25rem 4rem;
1942
1942
  }
1943
1943
 
1944
+ .sidebar-nav {
1945
+ padding-bottom: 6rem;
1946
+ }
1947
+
1944
1948
  .doc-h1 {
1945
1949
  font-size: 1.75rem;
1946
1950
  }
@@ -68,6 +68,7 @@
68
68
 
69
69
  @media (max-width: 767px) {
70
70
  .obs-article { grid-template-columns: 1fr; }
71
+ .obs-aside-section:first-child { display: none; } /* ToC not useful below article on mobile */
71
72
  }
72
73
 
73
74
  /* Aside sections */
@@ -111,6 +111,53 @@ const mobileAppPreview = `
111
111
  </div>
112
112
  </div>`
113
113
 
114
+ const blogPostPreview = `
115
+ <div style="display:flex;flex-direction:column;gap:6px;font-size:0;background:#0a2239;border-radius:4px;padding:8px">
116
+
117
+ <!-- nav -->
118
+ <div style="display:flex;align-items:center;gap:6px">
119
+ ${bar('20px', 6, '#53a2be')}
120
+ ${bar('36px', 4, '#53a2be', 2)}
121
+ <div style="flex:1"></div>
122
+ ${bar('28px', 4)} ${bar('28px', 4)} ${bar('28px', 4)}
123
+ </div>
124
+
125
+ <!-- hero -->
126
+ <div style="display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 0 6px;background:linear-gradient(160deg,#0a2239 0%,#132e32 100%);border-radius:3px;margin-top:2px">
127
+ ${bar('40px', 3, '#53a2be')}
128
+ ${bar('90%', 8, 'rgba(255,255,255,0.7)', 2)}
129
+ ${bar('75%', 8, 'rgba(255,255,255,0.7)', 2)}
130
+ ${bar('65%', 4, 'rgba(83,162,190,0.6)', 2)}
131
+ ${bar('50%', 3, 'rgba(83,162,190,0.4)', 2)}
132
+ </div>
133
+
134
+ <!-- article + aside -->
135
+ <div style="display:flex;gap:6px;margin-top:2px">
136
+ <div style="flex:1;display:flex;flex-direction:column;gap:4px">
137
+ ${bar('100%', 48, 'rgba(83,162,190,0.15)', 3)}
138
+ ${bar('100%', 4, 'rgba(255,255,255,0.5)', 1)}
139
+ ${bar('90%', 4, 'rgba(255,255,255,0.5)', 1)}
140
+ ${bar('95%', 4, 'rgba(255,255,255,0.5)', 1)}
141
+ ${bar('60%', 4, 'rgba(255,255,255,0.5)', 1)}
142
+ ${bar('55%', 6, 'rgba(255,255,255,0.7)', 1)}
143
+ ${bar('100%', 3, 'rgba(255,255,255,0.4)', 1)}
144
+ ${bar('85%', 3, 'rgba(255,255,255,0.4)', 1)}
145
+ </div>
146
+ <div style="width:38px;display:flex;flex-direction:column;gap:3px">
147
+ ${bar('100%', 4, 'rgba(255,255,255,0.5)', 1)}
148
+ ${bar('100%', 3, 'rgba(83,162,190,0.6)', 1)}
149
+ ${bar('100%', 3, 'rgba(83,162,190,0.6)', 1)}
150
+ ${bar('100%', 3, 'rgba(83,162,190,0.6)', 1)}
151
+ <div style="margin-top:3px;background:#132e32;border-radius:3px;padding:3px;display:flex;flex-direction:column;gap:2px">
152
+ ${bar('60%', 3, '#53a2be')}
153
+ ${bar('100%', 5, 'rgba(255,255,255,0.6)', 1)}
154
+ ${bar('100%', 5, 'rgba(255,255,255,0.6)', 1)}
155
+ ${bar('100%', 10, 'rgba(83,162,190,0.5)', 2)}
156
+ </div>
157
+ </div>
158
+ </div>
159
+ </div>`
160
+
114
161
  const TEMPLATES = [
115
162
  {
116
163
  name: 'Mobile App Landing Page',
@@ -126,6 +173,20 @@ const TEMPLATES = [
126
173
  'JS': '~4.2 kB',
127
174
  },
128
175
  },
176
+ {
177
+ name: 'Blog Post',
178
+ route: '/templates/blog-post',
179
+ description: 'A full editorial article page — sticky nav, article hero, prose with image, two-column layout with table-of-contents sidebar, newsletter signup, and footer. Dark astronomy theme.',
180
+ tags: ['Blog', 'Editorial'],
181
+ preview: blogPostPreview,
182
+ stats: {
183
+ 'Accessibility': '100',
184
+ 'Best Practices': '100',
185
+ 'SEO': '100',
186
+ 'CLS': '0.00',
187
+ 'JS': '~4.2 kB',
188
+ },
189
+ },
129
190
  ]
130
191
 
131
192
  const content = `
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@invisibleloop/pulse",
3
- "version": "0.12.0",
3
+ "version": "0.12.1",
4
4
  "type": "module",
5
5
  "description": "AI-first frontend framework. The spec is the source of truth.",
6
6
  "license": "MIT",
@@ -1 +1 @@
1
- 0.12.0
1
+ 0.12.1