mnfst 0.5.188 → 0.5.190

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.
Files changed (58) hide show
  1. package/lib/manifest.accordion.css +3 -1
  2. package/lib/manifest.appwrite.auth.js +7 -1
  3. package/lib/manifest.appwrite.data.js +8 -1
  4. package/lib/manifest.avatar.css +6 -4
  5. package/lib/manifest.button.css +7 -5
  6. package/lib/manifest.chart.css +2 -0
  7. package/lib/manifest.chat.js +7 -0
  8. package/lib/manifest.checkbox.css +6 -4
  9. package/lib/manifest.code.css +3 -1
  10. package/lib/manifest.code.js +6 -0
  11. package/lib/manifest.code.min.css +1 -1
  12. package/lib/manifest.colorpicker.css +7 -5
  13. package/lib/manifest.colorpicker.js +3 -0
  14. package/lib/manifest.combobox.css +14 -2
  15. package/lib/manifest.combobox.js +24 -5
  16. package/lib/manifest.components.js +7 -1
  17. package/lib/manifest.css +133 -67
  18. package/lib/manifest.d.ts +214 -30
  19. package/lib/manifest.data.js +71 -29
  20. package/lib/manifest.datepicker.css +15 -13
  21. package/lib/manifest.dialog.css +2 -0
  22. package/lib/manifest.divider.css +3 -1
  23. package/lib/manifest.dropdown.css +6 -4
  24. package/lib/manifest.dropdowns.js +25 -2
  25. package/lib/manifest.export.js +6 -0
  26. package/lib/manifest.form.css +3 -1
  27. package/lib/manifest.input.css +7 -5
  28. package/lib/manifest.integrity.json +25 -25
  29. package/lib/manifest.js +39 -0
  30. package/lib/manifest.localization.js +6 -1
  31. package/lib/manifest.markdown.js +24 -1
  32. package/lib/manifest.min.css +1 -1
  33. package/lib/manifest.native.js +7 -0
  34. package/lib/manifest.payments.js +7 -0
  35. package/lib/manifest.radio.css +2 -0
  36. package/lib/manifest.range.css +6 -4
  37. package/lib/manifest.resize.css +3 -1
  38. package/lib/manifest.resize.js +6 -1
  39. package/lib/manifest.router.js +7 -0
  40. package/lib/manifest.schema.json +29 -0
  41. package/lib/manifest.sidebar.css +2 -0
  42. package/lib/manifest.slides.css +2 -0
  43. package/lib/manifest.status.js +7 -0
  44. package/lib/manifest.svg.js +6 -0
  45. package/lib/manifest.switch.css +5 -3
  46. package/lib/manifest.table.css +4 -2
  47. package/lib/manifest.tabs.js +6 -1
  48. package/lib/manifest.theme.css +4 -2
  49. package/lib/manifest.toast.css +4 -2
  50. package/lib/manifest.toasts.js +6 -1
  51. package/lib/manifest.tooltip.css +2 -0
  52. package/lib/manifest.tooltips.js +6 -0
  53. package/lib/manifest.typography.css +5 -3
  54. package/lib/manifest.url.parameters.js +6 -0
  55. package/lib/manifest.utilities.css +7 -5
  56. package/lib/manifest.utilities.js +20 -1
  57. package/lib/manifest.virtual.js +6 -0
  58. package/package.json +5 -5
@@ -1,5 +1,7 @@
1
1
  /* Manifest Range */
2
2
 
3
+ @layer base, components, utilities;
4
+
3
5
  @layer components {
4
6
 
5
7
  input[type=range]:not(.unstyle) {
@@ -10,14 +12,14 @@
10
12
 
11
13
  &::-webkit-slider-runnable-track {
12
14
  height: calc(var(--spacing, 0.25rem) * 2);
13
- background-color: var(--color-field-surface, color-mix(oklch(20.5% 0 0) 10%, transparent));
15
+ background-color: var(--color-field-surface, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent));
14
16
  border-radius: var(--radius, 0.5rem);
15
17
  cursor: pointer;
16
18
  transition: var(--transition, all .05s ease-in-out)
17
19
  }
18
20
 
19
21
  &:hover::-webkit-slider-runnable-track {
20
- background-color: var(--color-field-surface-hover, color-mix(oklch(20.5% 0 0) 15%, transparent));
22
+ background-color: var(--color-field-surface-hover, color-mix(in oklch, oklch(20.5% 0 0) 15%, transparent));
21
23
  }
22
24
 
23
25
  &::-webkit-slider-thumb {
@@ -27,7 +29,7 @@
27
29
  width: calc(var(--spacing-field-height, 2.25rem) * 0.5);
28
30
  height: calc(var(--spacing-field-height, 2.25rem) * 0.5);
29
31
  transform: translateY(-50%);
30
- background-color: color-mix(in oklch, var(--color-field-surface, color-mix(oklch(20.5% 0 0) 10%, transparent)) 60%, var(--color-field-inverse, oklch(43.9% 0 0)));
32
+ background-color: color-mix(in oklch, var(--color-field-surface, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent)) 60%, var(--color-field-inverse, oklch(43.9% 0 0)));
31
33
  border-radius: 200px;
32
34
  box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
33
35
  cursor: pointer;
@@ -35,7 +37,7 @@
35
37
  }
36
38
 
37
39
  &::-webkit-slider-thumb:hover {
38
- background-color: color-mix(in oklch, var(--color-field-surface, color-mix(oklch(20.5% 0 0) 10%, transparent)) 30%, var(--color-field-inverse, oklch(43.9% 0 0)));
40
+ background-color: color-mix(in oklch, var(--color-field-surface, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent)) 30%, var(--color-field-inverse, oklch(43.9% 0 0)));
39
41
  }
40
42
  }
41
43
 
@@ -1,5 +1,7 @@
1
1
  /* Manifest Resize Handles */
2
2
 
3
+ @layer base, components, utilities;
4
+
3
5
  @layer utilities {
4
6
 
5
7
  :where([x-resize]) {
@@ -32,7 +34,7 @@
32
34
 
33
35
  &:hover::before,
34
36
  &:active::before {
35
- background-color: var(--color-line, color-mix(oklch(20.5% 0 0) 10%, transparent));
37
+ background-color: var(--color-line, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent));
36
38
  }
37
39
  }
38
40
 
@@ -1,5 +1,8 @@
1
1
  /* Manifest Resizer */
2
2
 
3
+ (function () {
4
+
5
+
3
6
  function initializeResizablePlugin() {
4
7
  // Cache for unit conversions to avoid repeated DOM manipulation
5
8
  const unitCache = new Map();
@@ -480,4 +483,6 @@ if (window.Alpine && typeof window.Alpine.directive === 'function') {
480
483
  }
481
484
  }, 10);
482
485
  setTimeout(() => clearInterval(checkAlpine), 5000);
483
- }
486
+ }
487
+
488
+ })();
@@ -1,3 +1,7 @@
1
+ /* manifest.router.js — built from scripts/router/ */
2
+
3
+ (function () {
4
+
1
5
  /* Manifest Router */
2
6
 
3
7
  // Main routing initialization
@@ -1565,3 +1569,6 @@ if (typeof Alpine !== 'undefined' && window.ManifestRoutingNavigation && window.
1565
1569
  window.ManifestRoutingMagic = {
1566
1570
  initialize: initializeRouterMagic
1567
1571
  };
1572
+
1573
+
1574
+ })();
@@ -269,6 +269,35 @@
269
269
  ]
270
270
  }
271
271
  },
272
+ "payments": {
273
+ "type": "object",
274
+ "description": "Payments plugin config. Presence of this block auto-loads the payments plugin ($pay / x-pay).",
275
+ "properties": {
276
+ "provider": {
277
+ "type": "string",
278
+ "description": "Payment adapter name (built-in or registered)."
279
+ },
280
+ "endpoint": {
281
+ "type": "string",
282
+ "description": "Backend endpoint for checkout/portal/state calls. Supports env() references."
283
+ }
284
+ },
285
+ "additionalProperties": true
286
+ },
287
+ "ai": {
288
+ "description": "Chat plugin config. Presence (object or bare true) auto-loads the chat plugin ($chat). Custom-adapter projects can use true with no config.",
289
+ "oneOf": [
290
+ { "type": "boolean" },
291
+ { "type": "object", "additionalProperties": true }
292
+ ]
293
+ },
294
+ "chat": {
295
+ "description": "Alias of ai — presence auto-loads the chat plugin ($chat).",
296
+ "oneOf": [
297
+ { "type": "boolean" },
298
+ { "type": "object", "additionalProperties": true }
299
+ ]
300
+ },
272
301
  "render": {
273
302
  "type": "object",
274
303
  "description": "Static rendering configuration consumed by mnfst-render.",
@@ -1,5 +1,7 @@
1
1
  /* Manifest Sidebars */
2
2
 
3
+ @layer base, components, utilities;
4
+
3
5
  [popover]:not(.unstyle):not(:popover-open) {
4
6
  display: none;
5
7
  }
@@ -1,5 +1,7 @@
1
1
  /* Manifest Slides */
2
2
 
3
+ @layer base, components, utilities;
4
+
3
5
  @layer components {
4
6
 
5
7
  [x-carousel] {
@@ -1,3 +1,7 @@
1
+ /* manifest.status.js — built from scripts/status/ */
2
+
3
+ (function () {
4
+
1
5
  /* Manifest Status — config
2
6
  /* By Andrew Matlock under MIT license
3
7
  /* https://manifestx.dev
@@ -642,3 +646,6 @@
642
646
  setTimeout(() => clearInterval(checkAlpine), 5000);
643
647
  }
644
648
  })();
649
+
650
+
651
+ })();
@@ -1,5 +1,8 @@
1
1
  /* Manifest SVG */
2
2
 
3
+ (function () {
4
+
5
+
3
6
  const svgCache = new Map();
4
7
 
5
8
  // Shared DOMPurify loader for the .safe modifier (user-supplied SVG can carry
@@ -292,3 +295,6 @@ document.addEventListener('alpine:init', ensureSvgPluginInitialized);
292
295
  if (window.Alpine && typeof window.Alpine.directive === 'function') {
293
296
  ensureSvgPluginInitialized();
294
297
  }
298
+
299
+
300
+ })();
@@ -1,5 +1,7 @@
1
1
  /* Manifest Switches */
2
2
 
3
+ @layer base, components, utilities;
4
+
3
5
  @layer components {
4
6
 
5
7
  :where(input[role=switch]):not(.unstyle) {
@@ -21,14 +23,14 @@
21
23
  width: calc(var(--spacing-field-height, 2.25rem) * 0.65 - 0.125rem * 2);
22
24
  height: calc(var(--spacing-field-height, 2.25rem) * 0.65 - 0.125rem * 2);
23
25
  border-radius: 50%;
24
- background-color: color-mix(in oklch, var(--color-field-surface, color-mix(oklch(20.5% 0 0) 10%, transparent)) 60%, var(--color-field-inverse, oklch(43.9% 0 0)));
26
+ background-color: color-mix(in oklch, var(--color-field-surface, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent)) 60%, var(--color-field-inverse, oklch(43.9% 0 0)));
25
27
  box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
26
28
  transition: var(--transition, all .05s ease-in-out)
27
29
  }
28
30
 
29
31
  /* Checked */
30
32
  &:checked {
31
- background-color: var(--color-field-surface, color-mix(oklch(20.5% 0 0) 10%, transparent));
33
+ background-color: var(--color-field-surface, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent));
32
34
 
33
35
  /* Marker */
34
36
  &::before {
@@ -37,7 +39,7 @@
37
39
  }
38
40
 
39
41
  &:hover {
40
- background-color: var(--color-field-surface-hover, color-mix(oklch(20.5% 0 0) 15%, transparent))
42
+ background-color: var(--color-field-surface-hover, color-mix(in oklch, oklch(20.5% 0 0) 15%, transparent))
41
43
  }
42
44
  }
43
45
  }
@@ -1,5 +1,7 @@
1
1
  /* Manifest Tables */
2
2
 
3
+ @layer base, components, utilities;
4
+
3
5
  @layer components {
4
6
 
5
7
  :where(.grid-table):not(.unstyle) {
@@ -23,7 +25,7 @@
23
25
  /* Header row */
24
26
  :where(thead, .grid-header > *) {
25
27
  background-color: var(--color-surface-1, oklch(97% 0 0));
26
- border-bottom: 1px solid var(--color-line, color-mix(oklch(20.5% 0 0) 10%, transparent))
28
+ border-bottom: 1px solid var(--color-line, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent))
27
29
  }
28
30
 
29
31
  /* Header cell */
@@ -33,7 +35,7 @@
33
35
 
34
36
  /* Row */
35
37
  :where(tr, .grid-row > *) {
36
- border-bottom: 1px solid var(--color-line, color-mix(oklch(20.5% 0 0) 10%, transparent))
38
+ border-bottom: 1px solid var(--color-line, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent))
37
39
  }
38
40
 
39
41
  /* Cell */
@@ -1,5 +1,8 @@
1
1
  /* Manifest Tabs */
2
2
 
3
+ (function () {
4
+
5
+
3
6
  // Simple tabs plugin that acts as a proxy for Alpine's native functionality
4
7
  function initializeTabsPlugin() {
5
8
  // Process all tab elements
@@ -364,4 +367,6 @@ function ensureTabsPluginInitialized() {
364
367
  window.ensureTabsPluginInitialized = ensureTabsPluginInitialized;
365
368
 
366
369
  // Initialize immediately (tabs doesn't require Alpine)
367
- ensureTabsPluginInitialized();
370
+ ensureTabsPluginInitialized();
371
+
372
+ })();
@@ -4,6 +4,8 @@
4
4
  /* Modify values to customize your project theme
5
5
  */
6
6
 
7
+ @layer base, components, utilities;
8
+
7
9
  :root,
8
10
  ::selection {
9
11
 
@@ -38,7 +40,7 @@
38
40
  --color-negative-content: var(--color-red-600);
39
41
 
40
42
  /* Fonts */
41
- --font-sans: Manrope, ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
43
+ --font-sans: Inter, ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
42
44
 
43
45
  /* Sizes */
44
46
  --radius: 0.5rem;
@@ -114,7 +116,7 @@
114
116
 
115
117
  /* Text selection */
116
118
  ::selection {
117
- background-color: color-mix(currentColor 25%, transparent)
119
+ background-color: color-mix(in oklch, currentColor 25%, transparent)
118
120
  }
119
121
 
120
122
  /* Focus state */
@@ -1,5 +1,7 @@
1
1
  /* ManifestToasts */
2
2
 
3
+ @layer base, components, utilities;
4
+
3
5
  @layer utilities {
4
6
 
5
7
  :where(.toast-container) {
@@ -22,7 +24,7 @@
22
24
  pointer-events: auto;
23
25
  max-width: 90vw;
24
26
  background-color: var(--color-popover-surface, oklch(98.5% 0 0));
25
- border: 1px solid var(--color-line, color-mix(oklch(20.5% 0 0) 10%, transparent));
27
+ border: 1px solid var(--color-line, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent));
26
28
  border-radius: calc(var(--radius, 0.5rem) * 2);
27
29
  box-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
28
30
  overflow: hidden;
@@ -75,7 +77,7 @@
75
77
  /* Brand, accent, positive, negative utility class overrides (see Utilities) */
76
78
  :where(.toast.brand, .toast.accent, .toast.positive, .toast.negative) {
77
79
  color: var(--color-field-inverse, oklch(43.9% 0 0));
78
- background-color: var(--color-field-surface, color-mix(oklch(20.5% 0 0) 10%, transparent));
80
+ background-color: var(--color-field-surface, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent));
79
81
 
80
82
  :where(.toast-dismiss-button) {
81
83
  border-inline-start: 1px solid color-mix(in oklch, var(--color-field-inverse, oklch(43.9% 0 0)) 20%, transparent);
@@ -1,5 +1,8 @@
1
1
  /* Manifest Toasts */
2
2
 
3
+ (function () {
4
+
5
+
3
6
  const TOAST_DURATION = 3000; // Default duration in ms
4
7
 
5
8
  function initializeToastPlugin() {
@@ -289,4 +292,6 @@ if (window.Alpine && typeof window.Alpine.directive === 'function') {
289
292
  }
290
293
  }, 10);
291
294
  setTimeout(() => clearInterval(checkAlpine), 5000);
292
- }
295
+ }
296
+
297
+ })();
@@ -1,5 +1,7 @@
1
1
  /* Manifest Tooltips */
2
2
 
3
+ @layer base, components, utilities;
4
+
3
5
  [popover]:not(.unstyle):not(:popover-open) {
4
6
  display: none;
5
7
  }
@@ -1,5 +1,8 @@
1
1
  /* Manifest Tooltips */
2
2
 
3
+ (function () {
4
+
5
+
3
6
  // Hover delay from CSS var (with time-unit parsing). Defaults to 500ms.
4
7
  function getTooltipHoverDelay(element) {
5
8
  let computedStyle = getComputedStyle(element);
@@ -361,3 +364,6 @@ if (window.Alpine && typeof window.Alpine.directive === 'function') {
361
364
  }, 50);
362
365
  setTimeout(() => clearInterval(checkAlpine), 5000);
363
366
  }
367
+
368
+
369
+ })();
@@ -1,5 +1,7 @@
1
1
  /* Manifest Typography */
2
2
 
3
+ @layer base, components, utilities;
4
+
3
5
  @layer base {
4
6
 
5
7
  /* All text elements */
@@ -117,7 +119,7 @@
117
119
  /* Asides */
118
120
  :where(aside):not(.unstyle) {
119
121
  padding: calc(var(--spacing, 0.25rem) * 4);
120
- border: 1px solid var(--color-line, color-mix(oklch(20.5% 0 0) 10%, transparent));
122
+ border: 1px solid var(--color-line, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent));
121
123
  border-radius: var(--radius, 0.5rem)
122
124
  }
123
125
 
@@ -134,7 +136,7 @@
134
136
  font-size: 0.75rem;
135
137
  line-height: 1;
136
138
  color: var(--color-field-inverse, oklch(43.9% 0 0));
137
- background-color: var(--color-field-surface, color-mix(oklch(97% 0 0) 10%, transparent));
139
+ background-color: var(--color-field-surface, color-mix(in oklch, oklch(97% 0 0) 10%, transparent));
138
140
  border-radius: 100px;
139
141
 
140
142
  /* Solo icons */
@@ -377,7 +379,7 @@
377
379
  font-size: 0.8125rem;
378
380
  line-height: 1.7;
379
381
  background-color: var(--color-page, oklch(98.5% 0 0));
380
- border: 1px solid var(--color-line, color-mix(oklch(20.5% 0 0) 10%, transparent));
382
+ border: 1px solid var(--color-line, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent));
381
383
  border-radius: var(--radius, 0.5rem);
382
384
  overflow: hidden;
383
385
  tab-size: 4;
@@ -1,5 +1,8 @@
1
1
  /* Manifest URL Parameters */
2
2
 
3
+ (function () {
4
+
5
+
3
6
  function initializeUrlParametersPlugin() {
4
7
  const DEBOUNCE_DELAY = 300;
5
8
 
@@ -191,3 +194,6 @@ if (window.Alpine && typeof window.Alpine.directive === 'function') {
191
194
  }, 10);
192
195
  setTimeout(() => clearInterval(checkAlpine), 5000);
193
196
  }
197
+
198
+
199
+ })();
@@ -1,5 +1,7 @@
1
1
  /* Manifest Utilities */
2
2
 
3
+ @layer base, components, utilities;
4
+
3
5
  @layer utilities {
4
6
 
5
7
  /* Center in flex parent */
@@ -63,12 +65,12 @@
63
65
  :where(.outlined) {
64
66
  border-width: 1px;
65
67
  border-style: solid;
66
- border-color: color-mix(in oklch, var(--color-field-surface, color-mix(oklch(20.5% 0 0) 10%, transparent)) 90%, var(--color-field-inverse, oklch(43.9% 0 0)))
68
+ border-color: color-mix(in oklch, var(--color-field-surface, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent)) 90%, var(--color-field-inverse, oklch(43.9% 0 0)))
67
69
  }
68
70
 
69
71
  /* Dark theme override */
70
72
  .dark :where(.outlined) {
71
- border-color: color-mix(in oklch, var(--color-field-surface, color-mix(oklch(20.5% 0 0) 10%, transparent)) 80%, var(--color-field-inverse, oklch(43.9% 0 0)))
73
+ border-color: color-mix(in oklch, var(--color-field-surface, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent)) 80%, var(--color-field-inverse, oklch(43.9% 0 0)))
72
74
  }
73
75
 
74
76
  /* Transparent */
@@ -226,8 +228,8 @@
226
228
  padding: calc(var(--spacing, 0.25rem) * 4);
227
229
  border-radius: calc(var(--radius, 0.5rem) * 2);
228
230
  color: var(--color-content-stark, oklch(43.9% 0 0));
229
- background-color: color-mix(in oklch, var(--color-field-surface, color-mix(oklch(20.5% 0 0) 10%, transparent)) 20%, transparent);
230
- border: 1px solid color-mix(in oklch, var(--color-field-surface, color-mix(oklch(20.5% 0 0) 10%, transparent)) 15%, transparent);
231
+ background-color: color-mix(in oklch, var(--color-field-surface, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent)) 20%, transparent);
232
+ border: 1px solid color-mix(in oklch, var(--color-field-surface, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent)) 15%, transparent);
231
233
 
232
234
  /* Auto format asides with icons */
233
235
  &:has([x-icon]):not([x-code-group] aside, aside.frame) {
@@ -398,7 +400,7 @@
398
400
  /* Accent colors */
399
401
  :where(.accent) {
400
402
  --color-field-surface: var(--color-accent-surface, oklch(43.9% 0 0));
401
- --color-field-surface-hover: var(--color-accent-surface-hover, color-mix(oklch(20.5% 0 0) 90%, oklch(98.5% 0 0)));
403
+ --color-field-surface-hover: var(--color-accent-surface-hover, color-mix(in oklch, oklch(20.5% 0 0) 90%, oklch(98.5% 0 0)));
402
404
  --color-field-inverse: var(--color-accent-inverse, oklch(98.5% 0 0));
403
405
  --color-content-stark: var(--color-accent-content, oklch(43.9% 0 0));
404
406
  --color-content-neutral: color-mix(in oklch, var(--color-accent-content, oklch(43.9% 0 0)) 85%, transparent);
@@ -1,3 +1,7 @@
1
+ /* manifest.utilities.js — built from scripts/utilities/ */
2
+
3
+ (function () {
4
+
1
5
  // Utility generators
2
6
  // Functions that generate CSS utilities from CSS variable suffixes
3
7
 
@@ -3132,7 +3136,14 @@ TailwindCompiler.prototype.filterCriticalUtilities = function(criticalText, laye
3132
3136
 
3133
3137
  // Main compilation method
3134
3138
  TailwindCompiler.prototype.compile = async function () {
3135
- if (this.usesStaticPrerenderUtilities) return;
3139
+ if (this.usesStaticPrerenderUtilities) {
3140
+ // Static utilities shipped with the page — nothing to compile.
3141
+ if (!window.__manifestUtilitiesReady) {
3142
+ window.__manifestUtilitiesReady = true;
3143
+ window.dispatchEvent(new CustomEvent('manifest:utilities-ready'));
3144
+ }
3145
+ return;
3146
+ }
3136
3147
 
3137
3148
  const compileStart = performance.now();
3138
3149
 
@@ -3312,6 +3323,11 @@ TailwindCompiler.prototype.compile = async function () {
3312
3323
  console.error('[Manifest Utilities] Error compiling Tailwind CSS:', error);
3313
3324
  } finally {
3314
3325
  this.isCompiling = false;
3326
+ // First-compile settle signal for the manifest:ready coordinator.
3327
+ if (!window.__manifestUtilitiesReady) {
3328
+ window.__manifestUtilitiesReady = true;
3329
+ window.dispatchEvent(new CustomEvent('manifest:utilities-ready'));
3330
+ }
3315
3331
  }
3316
3332
  };
3317
3333
 
@@ -3637,3 +3653,6 @@ document.addEventListener('DOMContentLoaded', () => {
3637
3653
  }
3638
3654
  });
3639
3655
 
3656
+
3657
+
3658
+ })();
@@ -8,6 +8,9 @@
8
8
  * Column widths must be content-independent or columns shift as the window changes.
9
9
  */
10
10
 
11
+
12
+ (function () {
13
+
11
14
  function initializeVirtualPlugin() {
12
15
 
13
16
  Alpine.directive('virtual', (el, { expression }, { evaluate, evaluateLater, effect, cleanup }) => {
@@ -523,3 +526,6 @@ if (window.Alpine && typeof window.Alpine.directive === 'function') {
523
526
  }, 10);
524
527
  setTimeout(() => clearInterval(checkAlpine), 5000);
525
528
  }
529
+
530
+
531
+ })();
package/package.json CHANGED
@@ -1,13 +1,16 @@
1
1
  {
2
2
  "name": "mnfst",
3
- "version": "0.5.188",
3
+ "version": "0.5.190",
4
4
  "private": false,
5
5
  "workspaces": [
6
6
  "templates/starter",
7
7
  "packages/render",
8
8
  "packages/types",
9
9
  "packages/test",
10
- "packages/export"
10
+ "packages/export",
11
+ "packages/run",
12
+ "packages/publish",
13
+ "packages/create-starter"
11
14
  ],
12
15
  "main": "lib/manifest.js",
13
16
  "style": "lib/manifest.css",
@@ -19,13 +22,10 @@
19
22
  "scripts": {
20
23
  "clean": "rimraf src/styles/manifest.css src/styles/manifest.min.css src/styles/manifest.theme.css src/styles/manifest.code.css src/styles/manifest.code.min.css lib",
21
24
  "build": "cd src && node scripts/build.mjs",
22
- "build:docs": "echo 'Docs is a static website - no build needed'",
23
25
  "start:src": "node packages/run/serve.mjs src",
24
- "start:docs": "node packages/run/serve.mjs docs",
25
26
  "start:starter": "node packages/run/serve.mjs templates/starter --port 3001",
26
27
  "start:dist": "node packages/run/serve.mjs src/test-prerender --port 5003",
27
28
  "render": "node src/scripts/manifest.render.mjs --root src",
28
- "prerender:docs": "node src/scripts/manifest.render.mjs --root docs",
29
29
  "prerender:starter": "node src/scripts/manifest.render.mjs --root templates/starter",
30
30
  "release": "node scripts/release-bump.mjs . && npm publish && node scripts/cdn-warm.mjs --detach",
31
31
  "release:run": "node scripts/release-bump.mjs packages/run && cd packages/run && npm publish --auth-type=web",