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 Accordions */
2
2
 
3
+ @layer base, components, utilities;
4
+
3
5
  @layer components {
4
6
 
5
7
 
@@ -55,7 +57,7 @@
55
57
  order: 1;
56
58
  width: 1rem;
57
59
  height: 1rem;
58
- background-color: color-mix(in oklch, var(--color-field-surface, color-mix(oklch(20.5% 0 0) 10%, transparent)) 50%, var(--color-field-inverse, oklch(43.9% 0 0)));
60
+ background-color: color-mix(in oklch, var(--color-field-surface, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent)) 50%, var(--color-field-inverse, oklch(43.9% 0 0)));
59
61
  -webkit-mask-image: var(--icon-accordion, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 256 256'%3E%3Cpath fill='%23000' d='m184.49 136.49l-80 80a12 12 0 0 1-17-17L159 128L87.51 56.49a12 12 0 1 1 17-17l80 80a12 12 0 0 1-.02 17'/%3E%3C/svg%3E"));
60
62
  mask-image: var(--icon-accordion, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 256 256'%3E%3Cpath fill='%23000' d='m184.49 136.49l-80 80a12 12 0 0 1-17-17L159 128L87.51 56.49a12 12 0 1 1 17-17l80 80a12 12 0 0 1-.02 17'/%3E%3C/svg%3E"));
61
63
  -webkit-mask-repeat: no-repeat;
@@ -1,3 +1,7 @@
1
+ /* manifest.appwrite.auth.js — built from scripts/auth/ */
2
+
3
+ (function () {
4
+
1
5
  /* Manifest Appwrite Auth — config resolution
2
6
  /* By Andrew Matlock under MIT license
3
7
  */
@@ -6993,4 +6997,6 @@ if (window.ManifestAppwriteAuthConfig) {
6993
6997
  initializeCallbacks();
6994
6998
  }
6995
6999
  });
6996
- }
7000
+ }
7001
+
7002
+ })();
@@ -1,3 +1,7 @@
1
+ /* manifest.appwrite.data.js — built from scripts/data/ */
2
+
3
+ (function () {
4
+
1
5
  /* Manifest Data Sources - Appwrite Integration */
2
6
 
3
7
  // Cache for Appwrite client (initialized once)
@@ -863,7 +867,7 @@ function debugAuthStore() {
863
867
  if (store.user) {
864
868
  }
865
869
  } catch (error) {
866
- console.error('[Manifest Data Debug] Error inspecting auth store:', error);
870
+ console.error('[Manifest Data] Error inspecting auth store:', error);
867
871
  }
868
872
  }
869
873
 
@@ -1570,3 +1574,6 @@ window.ManifestDataPagination = {
1570
1574
  getPrevPage,
1571
1575
  getPage
1572
1576
  };
1577
+
1578
+
1579
+ })();
@@ -1,5 +1,7 @@
1
1
  /* Manifest Avatars */
2
2
 
3
+ @layer base, components, utilities;
4
+
3
5
  @layer utilities {
4
6
 
5
7
  :where(.avatar) {
@@ -15,7 +17,7 @@
15
17
  text-align: center;
16
18
  text-transform: uppercase;
17
19
  color: var(--color-field-inverse, oklch(43.9% 0 0));
18
- background-color: var(--color-field-surface, color-mix(oklch(20.5% 0 0) 10%, transparent));
20
+ background-color: var(--color-field-surface, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent));
19
21
  background-clip: content-box;
20
22
  background-size: cover;
21
23
  background-position: center;
@@ -47,7 +49,7 @@
47
49
  width: 9px;
48
50
  height: 9px;
49
51
  z-index: 1;
50
- background-color: var(--color-field-surface, color-mix(oklch(20.5% 0 0) 10%, transparent));
52
+ background-color: var(--color-field-surface, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent));
51
53
  border: 1px solid var(--color-page, oklch(98.5% 0 0));
52
54
  border-radius: 50%
53
55
  }
@@ -59,7 +61,7 @@
59
61
  background-blend-mode: normal;
60
62
 
61
63
  &:hover {
62
- background-color: var(--color-field-surface-hover, color-mix(oklch(20.5% 0 0) 15%, transparent));
64
+ background-color: var(--color-field-surface-hover, color-mix(in oklch, oklch(20.5% 0 0) 15%, transparent));
63
65
  background-blend-mode: multiply;
64
66
 
65
67
  & img {
@@ -111,7 +113,7 @@
111
113
  padding-inline-end: 1.5ch;
112
114
 
113
115
  &:hover .avatar {
114
- background-color: var(--color-field-surface-hover, color-mix(oklch(20.5% 0 0) 15%, transparent));
116
+ background-color: var(--color-field-surface-hover, color-mix(in oklch, oklch(20.5% 0 0) 15%, transparent));
115
117
  transition: var(--transition, all .05s ease-in-out)
116
118
  }
117
119
  }
@@ -1,5 +1,7 @@
1
1
  /* Manifest Buttons */
2
2
 
3
+ @layer base, components, utilities;
4
+
3
5
  @layer components {
4
6
 
5
7
  :where(button:not(.link), [role=button], [type=button], [type=reset], [type=submit], select):not(code, .unstyle) {
@@ -18,12 +20,12 @@
18
20
  white-space: nowrap;
19
21
  text-overflow: ellipsis;
20
22
  color: var(--color-field-inverse, oklch(43.9% 0 0));
21
- background-color: var(--color-field-surface, color-mix(oklch(20.5% 0 0) 10%, transparent));
23
+ background-color: var(--color-field-surface, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent));
22
24
  border-width: 0;
23
25
  border-style: solid;
24
26
  border-color: transparent;
25
27
  border-radius: var(--radius, 0.5rem);
26
- outline-color: var(--color-line, color-mix(oklch(20.5% 0 0) 10%, transparent));
28
+ outline-color: var(--color-line, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent));
27
29
  cursor: pointer;
28
30
  transition: var(--transition, all .05s ease-in-out);
29
31
  appearance: button;
@@ -52,15 +54,15 @@
52
54
  }
53
55
 
54
56
  &:hover {
55
- background-color: var(--color-field-surface-hover, color-mix(oklch(20.5% 0 0) 15%, transparent))
57
+ background-color: var(--color-field-surface-hover, color-mix(in oklch, oklch(20.5% 0 0) 15%, transparent))
56
58
  }
57
59
 
58
60
  &:active {
59
- background-color: var(--color-field-surface-hover, color-mix(oklch(20.5% 0 0) 15%, transparent))
61
+ background-color: var(--color-field-surface-hover, color-mix(in oklch, oklch(20.5% 0 0) 15%, transparent))
60
62
  }
61
63
 
62
64
  &:focus-visible {
63
- background-color: var(--color-field-surface, color-mix(oklch(20.5% 0 0) 10%, transparent))
65
+ background-color: var(--color-field-surface, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent))
64
66
  }
65
67
  }
66
68
 
@@ -1,5 +1,7 @@
1
1
  /* Manifest Charts */
2
2
 
3
+ @layer base, components, utilities;
4
+
3
5
  :root {
4
6
  /* Chart guidance */
5
7
  --color-chart-grid: var(--color-line, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent));
@@ -1,3 +1,7 @@
1
+ /* manifest.chat.js — built from scripts/chat/ */
2
+
3
+ (function () {
4
+
1
5
  /* Manifest Chat — store / engine
2
6
  /* By Andrew Matlock under MIT license
3
7
  /* https://manifestx.dev
@@ -803,3 +807,6 @@
803
807
  setTimeout(() => clearInterval(check), 5000);
804
808
  }
805
809
  })();
810
+
811
+
812
+ })();
@@ -1,5 +1,7 @@
1
1
  /* Manifest Checkboxes */
2
2
 
3
+ @layer base, components, utilities;
4
+
3
5
  @layer components {
4
6
 
5
7
  input[type=checkbox]:not([role=switch], .unstyle) {
@@ -16,13 +18,13 @@
16
18
  &:checked {
17
19
 
18
20
  &:hover {
19
- background-color: var(--color-field-surface-hover, color-mix(oklch(20.5% 0 0) 15%, transparent));
20
- border-color: var(--color-field-surface-hover, color-mix(oklch(20.5% 0 0) 15%, transparent))
21
+ background-color: var(--color-field-surface-hover, color-mix(in oklch, oklch(20.5% 0 0) 15%, transparent));
22
+ border-color: var(--color-field-surface-hover, color-mix(in oklch, oklch(20.5% 0 0) 15%, transparent))
21
23
  }
22
24
 
23
25
  &:active {
24
- background-color: var(--color-field-surface-hover, color-mix(oklch(20.5% 0 0) 15%, transparent));
25
- border-color: var(--color-field-surface-hover, color-mix(oklch(20.5% 0 0) 15%, transparent))
26
+ background-color: var(--color-field-surface-hover, color-mix(in oklch, oklch(20.5% 0 0) 15%, transparent));
27
+ border-color: var(--color-field-surface-hover, color-mix(in oklch, oklch(20.5% 0 0) 15%, transparent))
26
28
  }
27
29
  }
28
30
 
@@ -3,6 +3,8 @@
3
3
  /* https://manifestx.dev/styles/code
4
4
  */
5
5
 
6
+ @layer base, components, utilities;
7
+
6
8
  @import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&display=swap');
7
9
 
8
10
  :root {
@@ -284,7 +286,7 @@
284
286
 
285
287
  &:hover {
286
288
  color: var(--color-content-stark, oklch(43.9% 0 0));
287
- background-color: var(--color-field-surface, color-mix(oklch(20.5% 0 0) 10%, transparent))
289
+ background-color: var(--color-field-surface, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent))
288
290
  }
289
291
 
290
292
  &[aria-selected="true"] {
@@ -10,6 +10,9 @@
10
10
  // Decided on first call; a later auto-detect block flips to full mode
11
11
  // (harmless — the full bundle overwrites the single hljs global).
12
12
 
13
+
14
+ (function () {
15
+
13
16
  const HLJS_FULL_URL = 'https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.11.1/build/highlight.min.js';
14
17
  // esm.run resolves extension-less specifiers; ".js" triggers a deprecation warning.
15
18
  const HLJS_CORE_URL = 'https://esm.run/highlight.js@11.11.1/lib/core';
@@ -837,3 +840,6 @@ window.ManifestCode = {
837
840
  };
838
841
 
839
842
  ensureCodePluginInitialized();
843
+
844
+
845
+ })();
@@ -1 +1 @@
1
- @import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&display=swap");:root{--icon-code-copy:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Crect width='14' height='14' x='8' y='8' rx='2' ry='2'/%3E%3Cpath d='M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2'/%3E%3C/g%3E%3C/svg%3E");--icon-code-copied:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1jb3B5LWNoZWNrLWljb24gbHVjaWRlLWNvcHktY2hlY2siIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0ibTEyIDE1IDIgMiA0LTQiLz48cmVjdCB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHg9IjgiIHk9IjgiIHJ4PSIyIiByeT0iMiIvPjxwYXRoIGQ9Ik00IDE2Yy0xLjEgMC0yLS45LTItMlY0YzAtMS4xLjktMiAyLTJoMTBjMS4xIDAgMiAuOSAyIDIiLz48L3N2Zz4=");--icon-code-expand:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m6 9 6 6 6-6'/%3E%3C/svg%3E");--color-code-keyword:#b8860b;--color-code-string:#8b4513;--color-code-comment:gray;--color-code-function:peru;--color-code-number:sienna;--color-code-operator:#2f4f4f;--color-code-class-name:#daa520;--color-code-tag:#4682b4;--color-code-attr-name:#ff8c00;--color-code-attr-value:#8b4513;--color-code-property:sienna;--color-code-selector:#4682b4;--color-code-punctuation:#2f4f4f;--color-code-builtin:#b8860b;--color-code-constant:sienna;--color-code-boolean:sienna;--color-code-regex:#8b4513;--color-code-symbol:#daa520;--color-code-entity:#daa520;--color-code-url:sienna;--color-code-atrule:#b8860b;--color-code-rule:#4682b4;--color-code-doctype:gray;--color-code-cdata:gray;--color-code-prolog:gray;--color-code-namespace:gray;--color-code-important:#b8860b;--color-code-inserted:#228b22;--color-code-deleted:#dc143c;--color-code-char:#8b4513}.dark{--color-code-keyword:#f4a460;--color-code-string:#deb887;--color-code-comment:#8b8b8b;--color-code-function:#daa520;--color-code-number:tan;--color-code-operator:wheat;--color-code-class-name:peru;--color-code-tag:#87ceeb;--color-code-attr-name:gold;--color-code-attr-value:#deb887;--color-code-property:tan;--color-code-selector:#87ceeb;--color-code-punctuation:wheat;--color-code-builtin:#f4a460;--color-code-constant:tan;--color-code-boolean:tan;--color-code-regex:#deb887;--color-code-symbol:peru;--color-code-entity:peru;--color-code-url:tan;--color-code-atrule:#f4a460;--color-code-rule:#98fb98;--color-code-doctype:#8b8b8b;--color-code-cdata:#8b8b8b;--color-code-prolog:#8b8b8b;--color-code-namespace:#8b8b8b;--color-code-important:#f4a460;--color-code-inserted:#98fb98;--color-code-deleted:#f08080;--color-code-char:#deb887}@layer utilities{.hljs-comment{color:var(--color-code-comment)!important}.hljs-keyword{color:var(--color-code-keyword)!important}.hljs-string{color:var(--color-code-string)!important}.hljs-number{color:var(--color-code-number)!important}.hljs-literal{color:var(--color-code-constant)!important}.hljs-type{color:var(--color-code-class-name)!important}.hljs-variable{color:var(--color-code-property)!important}.hljs-variable.language_{color:var(--color-code-keyword)!important}.hljs-variable.constant_{color:var(--color-code-constant)!important}.hljs-title{color:var(--color-code-function)!important}.hljs-title.class_.inherited__{color:var(--color-code-class-name)!important}.hljs-title.function_.invoke__{color:var(--color-code-function)!important}.hljs-params{color:var(--color-code-property)!important}.hljs-doctag{color:var(--color-code-keyword)!important;font-weight:600!important}.hljs-meta{color:var(--color-code-comment)!important}.hljs-meta.keyword_,.hljs-meta.prompt_{color:var(--color-code-keyword)!important}.hljs-meta.string_{color:var(--color-code-string)!important}.hljs-section{color:var(--color-code-keyword)!important;font-weight:600!important}.hljs-name{color:var(--color-code-tag)!important}.hljs-attribute{color:var(--color-code-attr-name)!important}.hljs-bullet{color:var(--color-code-punctuation)!important}.hljs-code{color:var(--color-code-property)!important}.hljs-formula{color:var(--color-code-number)!important}.hljs-quote{color:var(--color-code-string)!important}.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo{color:var(--color-code-selector)!important}.hljs-template-tag{color:var(--color-code-tag)!important}.hljs-template-variable{color:var(--color-code-property)!important}.hljs-subst{color:var(--color-code-string)!important}}@layer components{:where(code[role=button]){height:fit-content}:where(.code-copied-icon){background-color:currentColor;display:inline-block;height:1em;mask-image:var(--icon-code-copied);mask-position:center;mask-repeat:no-repeat;mask-size:1em;vertical-align:middle;width:1em;@supports (height:1lh){height:1lh;vertical-align:top}}:where([x-code],[x-code-group]):not(.unstyle){position:relative;:where(header):not(:where(:is(aside.frame) header)){align-items:center;background-color:color-mix(in oklch,var(--color-content-stark,oklch(43.9% 0 0)) 8%,transparent);color:var(--color-content-neutral,oklch(43.9% 0 0));display:flex;flex-direction:row;font-family:var(--font-sans,sans-serif);font-size:inherit;min-height:var(--spacing-field-height,2.25rem);padding-inline-end:var(--spacing-field-height);padding-inline-start:calc(var(--spacing, .25rem)*4);width:100%;&:has(button[role=tab]){padding-inline-start:calc(var(--spacing, .25rem)*2)}& [role=tablist]{display:flex;flex-direction:row;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;&::-webkit-scrollbar{display:none}& button[role=tab]{background:transparent;border:0;color:inherit;flex-shrink:0;font-family:inherit;font-size:inherit;height:fit-content;justify-content:start;&:hover{background-color:var(--color-field-surface,color-mix(oklch(20.5% 0 0) 10%,transparent));color:var(--color-content-stark,oklch(43.9% 0 0))}&[aria-selected=true]{color:var(--color-brand-content,oklch(68.1% .162 75.834));pointer-events:none;position:relative}}}}& button.copy{background-color:transparent;font-size:75%;inset-inline-end:0;position:absolute;top:0;&:hover{background-color:transparent;&:after{background-color:var(--color-field-inverse,oklch(43.9% 0 0))}}&:after{background-color:var(--color-content-neutral,oklch(43.9% 0 0));content:"";display:block;height:.8125rem;mask-image:var(--icon-code-copy);mask-repeat:no-repeat;mask-size:contain;width:.8125rem}&.copied:after{mask-image:var(--icon-code-copied)}}:where(header)::-webkit-scrollbar{display:none}& .lines{background-color:var(--color-page,oklch(98.5% 0 0));color:var(--color-content-subtle,oklch(55.6% 0 0));display:inline-flex;flex-direction:column;font-family:inherit;font-size:inherit;inset-inline-start:0;line-height:inherit;padding:calc(var(--spacing, .25rem)*4);pointer-events:none;position:absolute;text-align:end;user-select:none}&:has(.lines) code{padding-inline-start:calc(var(--spacing, .25rem)*8 + 2ch)}:where(code){flex:1 1 100%;min-width:0;white-space:pre;white-space-collapse:preserve}& button.expand{align-items:center;background:transparent;border:0;border-radius:0;color:var(--color-content-subtle,oklch(55.6% 0 0));cursor:pointer;display:flex;font-family:var(--font-sans,sans-serif);font-size:inherit;height:var(--spacing-field-height,2.25rem);justify-content:center;order:99;padding:0 calc(var(--spacing, .25rem)*2);transition:var(--transition,all .05s ease-in-out);width:100%;&:hover{background:color-mix(in oklch,var(--color-content-stark,oklch(43.9% 0 0)) 8%,transparent);color:var(--color-content-neutral,oklch(43.9% 0 0))}}&[data-collapsed] .lines,&[data-collapsed] code{mask-image:linear-gradient(180deg,#000 0,#000 calc(100% - 3em),transparent calc(100% - .75em),transparent);max-height:calc(var(--collapse-lines, 20)*1.7em + var(--spacing, .25rem)*8);overflow:hidden}:where(aside.frame){background:unset;border:0;box-shadow:unset;color:unset;font-family:unset;font-size:unset;font-weight:unset;line-height:unset;white-space:normal;white-space-collapse:collapse}}:where([x-code-group]){flex-flow:column;:where([x-code]){background:transparent;border:0;border-radius:0}}:where([x-code]):has(>header){& .lines{top:var(--spacing-field-height,2.25rem)}}}
1
+ @layer base, components, utilities;@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&display=swap");:root{--icon-code-copy:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Crect width='14' height='14' x='8' y='8' rx='2' ry='2'/%3E%3Cpath d='M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2'/%3E%3C/g%3E%3C/svg%3E");--icon-code-copied:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIyIiBjbGFzcz0ibHVjaWRlIGx1Y2lkZS1jb3B5LWNoZWNrLWljb24gbHVjaWRlLWNvcHktY2hlY2siIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0ibTEyIDE1IDIgMiA0LTQiLz48cmVjdCB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHg9IjgiIHk9IjgiIHJ4PSIyIiByeT0iMiIvPjxwYXRoIGQ9Ik00IDE2Yy0xLjEgMC0yLS45LTItMlY0YzAtMS4xLjktMiAyLTJoMTBjMS4xIDAgMiAuOSAyIDIiLz48L3N2Zz4=");--icon-code-expand:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m6 9 6 6 6-6'/%3E%3C/svg%3E");--color-code-keyword:#b8860b;--color-code-string:#8b4513;--color-code-comment:gray;--color-code-function:peru;--color-code-number:sienna;--color-code-operator:#2f4f4f;--color-code-class-name:#daa520;--color-code-tag:#4682b4;--color-code-attr-name:#ff8c00;--color-code-attr-value:#8b4513;--color-code-property:sienna;--color-code-selector:#4682b4;--color-code-punctuation:#2f4f4f;--color-code-builtin:#b8860b;--color-code-constant:sienna;--color-code-boolean:sienna;--color-code-regex:#8b4513;--color-code-symbol:#daa520;--color-code-entity:#daa520;--color-code-url:sienna;--color-code-atrule:#b8860b;--color-code-rule:#4682b4;--color-code-doctype:gray;--color-code-cdata:gray;--color-code-prolog:gray;--color-code-namespace:gray;--color-code-important:#b8860b;--color-code-inserted:#228b22;--color-code-deleted:#dc143c;--color-code-char:#8b4513}.dark{--color-code-keyword:#f4a460;--color-code-string:#deb887;--color-code-comment:#8b8b8b;--color-code-function:#daa520;--color-code-number:tan;--color-code-operator:wheat;--color-code-class-name:peru;--color-code-tag:#87ceeb;--color-code-attr-name:gold;--color-code-attr-value:#deb887;--color-code-property:tan;--color-code-selector:#87ceeb;--color-code-punctuation:wheat;--color-code-builtin:#f4a460;--color-code-constant:tan;--color-code-boolean:tan;--color-code-regex:#deb887;--color-code-symbol:peru;--color-code-entity:peru;--color-code-url:tan;--color-code-atrule:#f4a460;--color-code-rule:#98fb98;--color-code-doctype:#8b8b8b;--color-code-cdata:#8b8b8b;--color-code-prolog:#8b8b8b;--color-code-namespace:#8b8b8b;--color-code-important:#f4a460;--color-code-inserted:#98fb98;--color-code-deleted:#f08080;--color-code-char:#deb887}@layer utilities{.hljs-comment{color:var(--color-code-comment)!important}.hljs-keyword{color:var(--color-code-keyword)!important}.hljs-string{color:var(--color-code-string)!important}.hljs-number{color:var(--color-code-number)!important}.hljs-literal{color:var(--color-code-constant)!important}.hljs-type{color:var(--color-code-class-name)!important}.hljs-variable{color:var(--color-code-property)!important}.hljs-variable.language_{color:var(--color-code-keyword)!important}.hljs-variable.constant_{color:var(--color-code-constant)!important}.hljs-title{color:var(--color-code-function)!important}.hljs-title.class_.inherited__{color:var(--color-code-class-name)!important}.hljs-title.function_.invoke__{color:var(--color-code-function)!important}.hljs-params{color:var(--color-code-property)!important}.hljs-doctag{color:var(--color-code-keyword)!important;font-weight:600!important}.hljs-meta{color:var(--color-code-comment)!important}.hljs-meta.keyword_,.hljs-meta.prompt_{color:var(--color-code-keyword)!important}.hljs-meta.string_{color:var(--color-code-string)!important}.hljs-section{color:var(--color-code-keyword)!important;font-weight:600!important}.hljs-name{color:var(--color-code-tag)!important}.hljs-attribute{color:var(--color-code-attr-name)!important}.hljs-bullet{color:var(--color-code-punctuation)!important}.hljs-code{color:var(--color-code-property)!important}.hljs-formula{color:var(--color-code-number)!important}.hljs-quote{color:var(--color-code-string)!important}.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo{color:var(--color-code-selector)!important}.hljs-template-tag{color:var(--color-code-tag)!important}.hljs-template-variable{color:var(--color-code-property)!important}.hljs-subst{color:var(--color-code-string)!important}}@layer components{:where(code[role=button]){height:fit-content}:where(.code-copied-icon){background-color:currentColor;display:inline-block;height:1em;mask-image:var(--icon-code-copied);mask-position:center;mask-repeat:no-repeat;mask-size:1em;vertical-align:middle;width:1em;@supports (height:1lh){height:1lh;vertical-align:top}}:where([x-code],[x-code-group]):not(.unstyle){position:relative;:where(header):not(:where(:is(aside.frame) header)){align-items:center;background-color:color-mix(in oklch,var(--color-content-stark,oklch(43.9% 0 0)) 8%,transparent);color:var(--color-content-neutral,oklch(43.9% 0 0));display:flex;flex-direction:row;font-family:var(--font-sans,sans-serif);font-size:inherit;min-height:var(--spacing-field-height,2.25rem);padding-inline-end:var(--spacing-field-height);padding-inline-start:calc(var(--spacing, .25rem)*4);width:100%;&:has(button[role=tab]){padding-inline-start:calc(var(--spacing, .25rem)*2)}& [role=tablist]{display:flex;flex-direction:row;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;&::-webkit-scrollbar{display:none}& button[role=tab]{background:transparent;border:0;color:inherit;flex-shrink:0;font-family:inherit;font-size:inherit;height:fit-content;justify-content:start;&:hover{background-color:var(--color-field-surface,color-mix(in oklch,oklch(20.5% 0 0) 10%,transparent));color:var(--color-content-stark,oklch(43.9% 0 0))}&[aria-selected=true]{color:var(--color-brand-content,oklch(68.1% .162 75.834));pointer-events:none;position:relative}}}}& button.copy{background-color:transparent;font-size:75%;inset-inline-end:0;position:absolute;top:0;&:hover{background-color:transparent;&:after{background-color:var(--color-field-inverse,oklch(43.9% 0 0))}}&:after{background-color:var(--color-content-neutral,oklch(43.9% 0 0));content:"";display:block;height:.8125rem;mask-image:var(--icon-code-copy);mask-repeat:no-repeat;mask-size:contain;width:.8125rem}&.copied:after{mask-image:var(--icon-code-copied)}}:where(header)::-webkit-scrollbar{display:none}& .lines{background-color:var(--color-page,oklch(98.5% 0 0));color:var(--color-content-subtle,oklch(55.6% 0 0));display:inline-flex;flex-direction:column;font-family:inherit;font-size:inherit;inset-inline-start:0;line-height:inherit;padding:calc(var(--spacing, .25rem)*4);pointer-events:none;position:absolute;text-align:end;user-select:none}&:has(.lines) code{padding-inline-start:calc(var(--spacing, .25rem)*8 + 2ch)}:where(code){flex:1 1 100%;min-width:0;white-space:pre;white-space-collapse:preserve}& button.expand{align-items:center;background:transparent;border:0;border-radius:0;color:var(--color-content-subtle,oklch(55.6% 0 0));cursor:pointer;display:flex;font-family:var(--font-sans,sans-serif);font-size:inherit;height:var(--spacing-field-height,2.25rem);justify-content:center;order:99;padding:0 calc(var(--spacing, .25rem)*2);transition:var(--transition,all .05s ease-in-out);width:100%;&:hover{background:color-mix(in oklch,var(--color-content-stark,oklch(43.9% 0 0)) 8%,transparent);color:var(--color-content-neutral,oklch(43.9% 0 0))}}&[data-collapsed] .lines,&[data-collapsed] code{mask-image:linear-gradient(180deg,#000 0,#000 calc(100% - 3em),transparent calc(100% - .75em),transparent);max-height:calc(var(--collapse-lines, 20)*1.7em + var(--spacing, .25rem)*8);overflow:hidden}:where(aside.frame){background:unset;border:0;box-shadow:unset;color:unset;font-family:unset;font-size:unset;font-weight:unset;line-height:unset;white-space:normal;white-space-collapse:collapse}}:where([x-code-group]){flex-flow:column;:where([x-code]){background:transparent;border:0;border-radius:0}}:where([x-code]):has(>header){& .lines{top:var(--spacing-field-height,2.25rem)}}}
@@ -1,7 +1,9 @@
1
1
  /* Manifest Color Picker */
2
2
 
3
+ @layer base, components, utilities;
4
+
3
5
  :root {
4
- --color-picker-swatch: var(--color-line, color-mix(oklch(20.5% 0 0) 10%, transparent));
6
+ --color-picker-swatch: var(--color-line, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent));
5
7
  --icon-color-solid: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-paint-roller-icon lucide-paint-roller'%3E%3Crect width='16' height='6' x='2' y='2' rx='2'/%3E%3Cpath d='M10 16v-2a2 2 0 0 1 2-2h8a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2'/%3E%3Crect width='4' height='6' x='8' y='16' rx='1'/%3E%3C/svg%3E");
6
8
  --icon-color-gradient: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-blend-icon lucide-blend'%3E%3Ccircle cx='9' cy='9' r='7'/%3E%3Ccircle cx='15' cy='15' r='7'/%3E%3C/svg%3E");
7
9
  --icon-color-library: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-swatch-book-icon lucide-swatch-book'%3E%3Cpath d='M11 17a4 4 0 0 1-8 0V5a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2Z'/%3E%3Cpath d='M16.7 13H19a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H7'/%3E%3Cpath d='M 7 17h.01'/%3E%3Cpath d='m11 8 2.3-2.3a2.4 2.4 0 0 1 3.404.004L18.6 7.6a2.4 2.4 0 0 1 .026 3.434L9.9 19.8'/%3E%3C/svg%3E");
@@ -83,7 +85,7 @@
83
85
  display: flex;
84
86
  width: 100%;
85
87
  padding: 2px;
86
- border-bottom: 1px solid var(--color-line, color-mix(oklch(20.5% 0 0) 10%, transparent));
88
+ border-bottom: 1px solid var(--color-line, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent));
87
89
 
88
90
  /* Distribute button widths equally */
89
91
  & button {
@@ -258,7 +260,7 @@
258
260
 
259
261
  /* Gradient layers */
260
262
  & :where(.layer-options-wrapper) {
261
- border-bottom: 1px solid var(--color-line, color-mix(oklch(20.5% 0 0) 10%, transparent));
263
+ border-bottom: 1px solid var(--color-line, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent));
262
264
 
263
265
  /* Layer options inputs */
264
266
  & :where(.layer-options-inputs) {
@@ -308,7 +310,7 @@
308
310
  margin-inline-end: 0.5rem;
309
311
  border-radius: 1rem;
310
312
  cursor: pointer;
311
- background: var(--color-field-surface, color-mix(oklch(20.5% 0 0) 10%, transparent));
313
+ background: var(--color-field-surface, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent));
312
314
 
313
315
  /* Stop handle */
314
316
  & :where(.stop-handle) {
@@ -397,7 +399,7 @@
397
399
 
398
400
  /* Only apply border to all except last library-group */
399
401
  &:not(:last-child) {
400
- border-bottom: 1px solid var(--color-line, color-mix(oklch(20.5% 0 0) 10%, transparent));
402
+ border-bottom: 1px solid var(--color-line, color-mix(in oklch, oklch(20.5% 0 0) 10%, transparent));
401
403
  }
402
404
 
403
405
  /* Palette wrapper */
@@ -1736,6 +1736,9 @@ function initializeColorpickerPlugin() {
1736
1736
  // library div) without tearing down others' x-dropdown.context timers.
1737
1737
  _renderIntoContainer(container) {
1738
1738
  if (!container || !container.isConnected) return;
1739
+ // Runtime-regenerated: the prerenderer empties stamped containers
1740
+ // at serialize (this method rebuilds them from scratch at boot).
1741
+ container.setAttribute('data-mnfst-generated', '');
1739
1742
  const groups = this._resolveLibraryGroups();
1740
1743
  const layoutTpl = this.libraryTemplate || _defaultLibraryLayoutTpl;
1741
1744
  container.innerHTML = '';
@@ -1,5 +1,7 @@
1
1
  /* Manifest Combobox */
2
2
 
3
+ @layer base, components, utilities;
4
+
3
5
  @layer components {
4
6
 
5
7
  /* Wrapper */
@@ -35,9 +37,19 @@
35
37
  padding-inline: calc(var(--spacing, 0.25rem) * 1.25)
36
38
  }
37
39
 
38
- &:has(> :where(input, textarea):disabled) {
40
+ /* Plugin-set from render(), so it tracks any editor type — including a
41
+ <button> editor, which the old :has(> input:disabled) rule missed. */
42
+ &[data-disabled] {
39
43
  opacity: .5;
40
- pointer-events: none
44
+ pointer-events: none;
45
+ cursor: default;
46
+
47
+ /* The × stays (layout), inert — the field is already dimmed as a whole,
48
+ so don't let the global :disabled dimming stack on top of it. */
49
+ .combobox-chip>button:disabled {
50
+ opacity: 1;
51
+ cursor: default
52
+ }
41
53
  }
42
54
 
43
55
  /* Inner typing surface */
@@ -337,6 +337,12 @@ function initializeComboboxPlugin() {
337
337
  let lockedSet = computeLocked();
338
338
  const isLocked = (v) => lockedSet.has(String(v).toLowerCase());
339
339
 
340
+ // ----- Disabled -----
341
+ // Native `disabled` on the editor (input/textarea/button), live so `:disabled`
342
+ // tracks. Chips drop their × entirely — CSS pointer-events can't stop keyboard
343
+ // activation, and an .unstyle field has no CSS at all.
344
+ const isDisabled = () => !!el.disabled;
345
+
340
346
  // ----- Reactive model (x-model), owned here -----
341
347
  // Preserve the author's shape (array or CSV; array default for .multiple). Chips
342
348
  // show labels, the model carries values. Read/effect/set wired near mount.
@@ -617,7 +623,7 @@ function initializeComboboxPlugin() {
617
623
  announce(label + ' added');
618
624
  }
619
625
  function removeValue(value) {
620
- if (isLocked(value)) return; // locked chips stay put
626
+ if (isLocked(value) || isDisabled()) return; // locked/disabled chips stay put
621
627
  const i = selected.findIndex(s => String(s.value).toLowerCase() === String(value).toLowerCase());
622
628
  if (i < 0) return;
623
629
  const [g] = selected.splice(i, 1);
@@ -685,16 +691,19 @@ function initializeComboboxPlugin() {
685
691
  t.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true }));
686
692
  });
687
693
  }
688
- // Add/drop the × to match locked state. Re-run from render() so a reactive
689
- // `locked` change toggles existing chips too.
694
+ // Add/drop the × to match locked/disabled state. Re-run from render() so a
695
+ // reactive `locked` or `:disabled` change toggles existing chips too.
690
696
  function applyLock(chip, value, label) {
691
697
  const locked = isLocked(value);
692
698
  chip.toggleAttribute('data-locked', locked);
693
699
  const btn = chip.querySelector(':scope > button');
694
- if (locked) { if (btn) btn.remove(); return; }
695
- if (btn) return;
700
+ if (locked) { if (btn) btn.remove(); return; } // locked drops the × by design
701
+ // Disabled keeps the × for layout but makes it inert: a disabled button is
702
+ // out of the tab order and can't be activated by mouse or keyboard.
703
+ if (btn) { btn.disabled = isDisabled(); return; }
696
704
  const x = document.createElement('button');
697
705
  x.type = 'button';
706
+ x.disabled = isDisabled();
698
707
  x.setAttribute('aria-label', 'Remove ' + (label || (chip.querySelector(':scope > span') || {}).textContent || value));
699
708
  x.textContent = '×';
700
709
  x.addEventListener('click', () => removeValue(value));
@@ -705,11 +714,15 @@ function initializeComboboxPlugin() {
705
714
  h.type = 'hidden';
706
715
  h.name = name;
707
716
  h.value = value;
717
+ h.disabled = isDisabled(); // native: a disabled field doesn't submit
708
718
  h.setAttribute('data-cb', '');
709
719
  return h;
710
720
  }
711
721
 
712
722
  function render() {
723
+ // Styling hook — CSS keys off this, not :has(:disabled), so a <button>
724
+ // editor dims too.
725
+ wrap.toggleAttribute('data-disabled', isDisabled());
713
726
  if (chips) {
714
727
  // Incremental: keep existing chip nodes, add/drop/refresh only. Recreating
715
728
  // all re-inserts next to the focused editor, collapsing them in WebKit.
@@ -867,6 +880,12 @@ function initializeComboboxPlugin() {
867
880
  // as a stale duplicate. Authored/adopted menus go with their container.
868
881
  if (cleanup && generatedMenu) cleanup(() => { if (generatedMenu.isConnected) generatedMenu.remove(); });
869
882
 
883
+ // `:disabled` is written straight onto the editor by Alpine — observe it so
884
+ // toggling re-renders (chips regain their × when re-enabled).
885
+ const disabledObserver = new MutationObserver(() => { closeMenu(); render(); });
886
+ disabledObserver.observe(el, { attributes: true, attributeFilter: ['disabled'] });
887
+ if (cleanup) cleanup(() => disabledObserver.disconnect());
888
+
870
889
  // ----- Reactive model (x-model) -----
871
890
  // Render chips from the bound value on init and external change; write back on
872
891
  // add/remove. Read inside an Alpine effect so $x / nested state stay reactive.
@@ -1,3 +1,7 @@
1
+ /* manifest.components.js — built from scripts/components/ */
2
+
3
+ (function () {
4
+
1
5
  /* Manifest Components */
2
6
 
3
7
  // Base URL for manifest-relative paths (e.g. "../" when viewing dist/index.html). Used by component loader, data loaders, localization.
@@ -938,4 +942,6 @@ if (document.readyState === 'loading') {
938
942
 
939
943
  window.ManifestComponents = {
940
944
  initialize: initializeComponents
941
- };
945
+ };
946
+
947
+ })();