@threadlabs/looma 0.37.5 → 0.38.0

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 (56) hide show
  1. package/components/ui-button/ui-button.html +20 -5
  2. package/components/ui-combobox/ui-combobox.html +24 -3
  3. package/components/ui-combobox/ui-combobox.js +18 -3
  4. package/components/ui-icon-button/ui-icon-button.html +17 -8
  5. package/components/ui-menu-item/ui-menu-item.html +6 -1
  6. package/components/ui-select/ui-select.html +12 -0
  7. package/components/ui-skeleton/ui-skeleton.html +91 -0
  8. package/dist/index.js +1 -1
  9. package/docs/README.md +23 -10
  10. package/docs/catalog.json +246 -31
  11. package/docs/customizer-render.mjs +36 -20
  12. package/docs/customizer.js +76 -25
  13. package/docs/documentation.css +2 -0
  14. package/docs/palette.mjs +3 -3
  15. package/docs/site.mjs +1 -1
  16. package/docs/theme-session.mjs +1 -0
  17. package/docs/theme.mjs +11 -10
  18. package/package.json +2 -2
  19. package/styles/ui-button.css +19 -9
  20. package/styles/ui-combobox.css +40 -2
  21. package/styles/ui-icon-button.css +12 -2
  22. package/styles/ui-menu-item.css +6 -1
  23. package/styles/ui-select.css +9 -0
  24. package/styles/ui-skeleton.css +91 -0
  25. package/theme-system.css +7 -2
  26. package/vanilla/UiButton.js +1 -1
  27. package/vanilla/UiCombobox.d.ts +1 -0
  28. package/vanilla/UiCombobox.js +38 -37
  29. package/vanilla/UiIconButton.d.ts +1 -1
  30. package/vanilla/UiIconButton.js +1 -1
  31. package/vanilla/UiSelect.d.ts +1 -0
  32. package/vanilla/UiSelect.js +7 -7
  33. package/vanilla/UiSkeleton.d.ts +26 -0
  34. package/vanilla/UiSkeleton.js +42 -0
  35. package/vanilla/index.js +1 -0
  36. package/vue/UiButton.vue +30 -12
  37. package/vue/UiCombobox.d.ts +6 -0
  38. package/vue/UiCombobox.vue +70 -6
  39. package/vue/UiIconButton.d.ts +2 -2
  40. package/vue/UiIconButton.vue +23 -18
  41. package/vue/UiMenuItem.vue +6 -1
  42. package/vue/UiSelect.d.ts +6 -0
  43. package/vue/UiSelect.vue +30 -1
  44. package/vue/UiSkeleton.d.ts +37 -0
  45. package/vue/UiSkeleton.js +2 -0
  46. package/vue/UiSkeleton.vue +235 -0
  47. package/vue/chunks/UiButton.js +4 -4
  48. package/vue/chunks/UiCombobox.js +72 -46
  49. package/vue/chunks/UiIconButton.js +6 -7
  50. package/vue/chunks/UiMenuItem.js +1 -1
  51. package/vue/chunks/UiSelect.js +27 -2
  52. package/vue/chunks/UiSkeleton.js +151 -0
  53. package/vue/components.css +197 -25
  54. package/vue/editor/index.js +2 -3
  55. package/vue/index.d.ts +1 -0
  56. package/vue/index.js +2 -1
@@ -3,7 +3,7 @@ import { attachGeneratedController, buildTemplate, checkReference, clearRegion,
3
3
  import * as controller from "../components/ui-combobox/ui-combobox.js";
4
4
  import "../styles/ui-combobox.css";
5
5
 
6
- const T0 = ["",[],"\n ",["label",[],0,1],"\n ",["div",["class","control"],"\n ",["div",["class","field"],"\n ",["div",["class","entry"],"\n ",4,"\n ",1,"\n ",["input",["role","combobox","aria-autocomplete","list","autocomplete","off"]],"\n "],"\n ",1,"\n ",1,"\n ",1,"\n ",1,"\n "],"\n ",1,"\n "],"\n ",1,"\n ",["div",["class","popup"],"\n ",["div",["role","listbox"],"\n ",2,"\n ",1,"\n ",1,"\n ",1,"\n "],"\n ",4,"\n "],"\n ",["div",["class","message"],"\n ",2,"\n "],"\n ",["div",["class","sr-only","role","status","aria-live","polite","aria-atomic","true"],0],"\n ",["div",["class","authored-options","hidden","","aria-hidden","true"],4],"\n "];
6
+ const T0 = ["",[],"\n ",["label",[],0,1],"\n ",["div",["class","control"],"\n ",["div",["class","field"],"\n ",["div",["class","entry"],"\n ",["span",["class","start"],4],"\n ",1,"\n ",["input",["role","combobox","aria-autocomplete","list","autocomplete","off"]],"\n "],"\n ",1,"\n ",1,"\n ",1,"\n ",1,"\n "],"\n ",1,"\n "],"\n ",1,"\n ",["div",["class","popup"],"\n ",["div",["role","listbox"],"\n ",2,"\n ",1,"\n ",1,"\n ",1,"\n "],"\n ",4,"\n "],"\n ",["div",["class","message"],"\n ",2,"\n "],"\n ",["div",["class","sr-only","role","status","aria-live","polite","aria-atomic","true"],0],"\n ",["div",["class","authored-options","hidden","","aria-hidden","true"],4],"\n "];
7
7
  const T1 = ["",[],"\n *"];
8
8
  const T2 = ["",[]];
9
9
  const T3 = ["",[],"\n ",2,"\n "];
@@ -36,7 +36,7 @@ const K1 = (v0) => (plainObject(v0) && "id" in v0 && typeof v0["id"] == "string"
36
36
  let P0, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15, P16, P17, P18, P19, P20, P21, P22, P23, P24, P25, P26, P27;
37
37
  const E = new Map();
38
38
  const S = { n: ["internalItems","raw","display","selected","expanded","rows","active","helpOpen","lookupError","validation","uid","submitted","groups","creatable","createIndex","message","statusText","validationStatus"], t: [["l",["o",["id","s","value","s","label","s","group","s","disabled","b","description","s","tag",["o",["label","s","tone",["p",formatOf(keywordFormat)],"color","s"]]]]],"s","s","s","b",["l",["o",["id","s","value","s","label","s","group","s","disabled","b","selected","b","description","s","tag",["o",["label","s","tone",["p",formatOf(keywordFormat)],"color","s"]]]]],"i","b","s",["o",["status",["p",formatOf(keywordFormat)],"touched","b","dirty","b","issues",["l",["o",["message","s"]]]],1],"s","s",["l",["o",["name","s","role",["p",formatOf(keywordFormat)],"label","s","rows",["l",["o",["id","s","value","s","label","s","group","s","disabled","b","selected","b","description","s","tag",["o",["label","s","tone",["p",formatOf(keywordFormat)],"color","s"]],"index","i","labelledBy","s","detail","s","option",["o",["id","s","value","s","label","s","group","s","disabled","b","description","s","tag",["o",["label","s","tone",["p",formatOf(keywordFormat)],"color","s"]],"selected","b"]]]]]]]],"b","i","s","s","s"], f: import.meta.url, g: "ui-combobox", d: { "query-change": [detailCheck(checkObject([["query", checkString, false], ["display", checkString, false], ["trigger", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["keyboard","pointer","programmatic"]}), false]], false)), true, true, false], "value-change": [detailCheck(checkObject([["value", checkString, true], ["query", checkString, false], ["option", checkObject([["id", checkString, false], ["value", checkString, false], ["label", checkString, false], ["group", checkString, true], ["disabled", checkBoolean, true], ["description", checkString, true], ["tag", checkObject([["label", checkString, false], ["tone", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["neutral","accent","info","success","warning","danger"]}), true], ["color", checkString, true]], false), true]], false), true], ["kind", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["selection","clear","free-entry","create"]}), false], ["trigger", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["keyboard","pointer","programmatic"]}), false]], false)), true, true, false], "items-change": [detailCheck(checkList(checkObject([["id", checkString, false], ["value", checkString, false], ["label", checkString, false], ["group", checkString, true], ["disabled", checkBoolean, true], ["description", checkString, true], ["tag", checkObject([["label", checkString, false], ["tone", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["neutral","accent","info","success","warning","danger"]}), true], ["color", checkString, true]], false), true]], false))), true, true, false], "free-entry": [detailCheck(checkObject([["value", checkString, true], ["query", checkString, false], ["option", checkObject([["id", checkString, false], ["value", checkString, false], ["label", checkString, false], ["group", checkString, true], ["disabled", checkBoolean, true], ["description", checkString, true], ["tag", checkObject([["label", checkString, false], ["tone", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["neutral","accent","info","success","warning","danger"]}), true], ["color", checkString, true]], false), true]], false), true], ["kind", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["selection","clear","free-entry","create"]}), false], ["trigger", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["keyboard","pointer","programmatic"]}), false]], false)), true, true, false], "create-entry": [detailCheck(checkObject([["value", checkString, true], ["query", checkString, false], ["option", checkObject([["id", checkString, false], ["value", checkString, false], ["label", checkString, false], ["group", checkString, true], ["disabled", checkBoolean, true], ["description", checkString, true], ["tag", checkObject([["label", checkString, false], ["tone", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["neutral","accent","info","success","warning","danger"]}), true], ["color", checkString, true]], false), true]], false), true], ["kind", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["selection","clear","free-entry","create"]}), false], ["trigger", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["keyboard","pointer","programmatic"]}), false]], false)), true, true, false], "validation-change": [detailCheck(checkObject([["status", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["pristine","pending","valid","warning","error"]}), false], ["touched", checkBoolean, false], ["dirty", checkBoolean, false], ["issues", checkList(checkObject([["message", checkString, false], ["path", checkList(checkUnknown), true], ["severity", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["error","warning"]}), true]], false)), false], ["output", checkUnknown, true]], false)), true, true, false], "options-change": [detailCheck(checkList(checkObject([["id", checkString, false], ["value", checkString, false], ["label", checkString, false], ["group", checkString, true], ["disabled", checkBoolean, true], ["description", checkString, true], ["tag", checkObject([["label", checkString, false], ["tone", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["neutral","accent","info","success","warning","danger"]}), true], ["color", checkString, true]], false), true]], false))), true, true, false], "add-item": [detailCheck(checkObject([["item", checkObject([["id", checkString, false], ["value", checkString, false], ["label", checkString, false], ["group", checkString, true], ["disabled", checkBoolean, true], ["description", checkString, true], ["tag", checkObject([["label", checkString, false], ["tone", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["neutral","accent","info","success","warning","danger"]}), true], ["color", checkString, true]], false), true]], false), false], ["index", checkInteger, false], ["trigger", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["keyboard","pointer","programmatic"]}), false]], false)), true, true, false], "remove-item": [detailCheck(checkObject([["item", checkObject([["id", checkString, false], ["value", checkString, false], ["label", checkString, false], ["group", checkString, true], ["disabled", checkBoolean, true], ["description", checkString, true], ["tag", checkObject([["label", checkString, false], ["tone", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["neutral","accent","info","success","warning","danger"]}), true], ["color", checkString, true]], false), true]], false), false], ["index", checkInteger, false], ["trigger", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["keyboard","pointer","programmatic"]}), false]], false)), true, true, false], "create-item": [detailCheck(checkObject([["query", checkString, false], ["trigger", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["keyboard","pointer","programmatic"]}), false]], false)), true, true, false], "selected-values-change": [detailCheck(checkObject([["selectedValues", checkList(checkString), false], ["trigger", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["keyboard","pointer","programmatic"]}), false]], false)), true, true, false] }, x: dispatchDeclared, a: (host, I) => C(host, I), b: generatedInputs, i: [[], "", "", null, false, [], null, false, "", { "status": "pristine", "touched": false, "dirty": false, "issues": [] }, "", "", [], false, 0, "", "", "pristine"] };
39
- const D = { g: "ui-combobox", props: { "allowCreate": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "allowFreeText": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "autoHighlight": { "required":false,"values":["none","single"],"default":"none", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "clearQueryOnBlur": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "clearable": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "disabled": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "disclosure": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "filter": { "required":false,"values":["label","none"],"default":"label", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "help": { "required":false,"default":"", c: checkString, t: "string", j: 0, m: "s" }, "invalid": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "items": { "required":false, c: checkList(checkObject([["id", checkString, false], ["value", checkString, false], ["label", checkString, false], ["group", checkString, true], ["disabled", checkBoolean, true], ["description", checkString, true], ["tag", checkObject([["label", checkString, false], ["tone", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["neutral","accent","info","success","warning","danger"]}), true], ["color", checkString, true]], false), true]], false)), j: 1, m: ["l",["o",["id","s","value","s","label","s","group","s","disabled","b","description","s","tag",["o",["label","s","tone",["p",formatOf(keywordFormat)],"color","s"]]]]] }, "label": { "required":false,"default":"", c: checkString, t: "string", j: 0, m: "s" }, "labelVisibility": { "required":false,"values":["visible","sr-only"],"default":"visible", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "loading": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "multiple": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "name": { "required":false,"default":"", c: checkString, t: "string", j: 0, m: "s" }, "openOnFocus": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "placeholder": { "required":false,"default":"", c: checkString, t: "string", j: 0, m: "s" }, "query": { "required":false, c: checkString, t: "string", j: 0, m: "s" }, "readonly": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "required": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "selectOnTab": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "selectedValues": { "required":false, c: checkList(checkString), j: 1, m: ["l","s"] }, "size": { "required":false,"values":["sm","md","lg"],"default":"md", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "tokenSeparators": { "required":false, c: checkList(checkString), j: 1, m: ["l","s"] }, "value": { "required":false, c: checkString, t: "string", j: 0, m: "s" } } };
39
+ const D = { g: "ui-combobox", props: { "allowCreate": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "allowFreeText": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "autoHighlight": { "required":false,"values":["none","single"],"default":"none", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "clearQueryOnBlur": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "clearable": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "disabled": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "disclosure": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "filter": { "required":false,"values":["label","none"],"default":"label", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "help": { "required":false,"default":"", c: checkString, t: "string", j: 0, m: "s" }, "invalid": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "items": { "required":false, c: checkList(checkObject([["id", checkString, false], ["value", checkString, false], ["label", checkString, false], ["group", checkString, true], ["disabled", checkBoolean, true], ["description", checkString, true], ["tag", checkObject([["label", checkString, false], ["tone", checkConstrained(checkFormat("keyword", keywordFormat), "keyword", {"values":["neutral","accent","info","success","warning","danger"]}), true], ["color", checkString, true]], false), true]], false)), j: 1, m: ["l",["o",["id","s","value","s","label","s","group","s","disabled","b","description","s","tag",["o",["label","s","tone",["p",formatOf(keywordFormat)],"color","s"]]]]] }, "label": { "required":false,"default":"", c: checkString, t: "string", j: 0, m: "s" }, "labelVisibility": { "required":false,"values":["visible","sr-only"],"default":"visible", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "loading": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "multiple": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "muted": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "name": { "required":false,"default":"", c: checkString, t: "string", j: 0, m: "s" }, "openOnFocus": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "placeholder": { "required":false,"default":"", c: checkString, t: "string", j: 0, m: "s" }, "query": { "required":false, c: checkString, t: "string", j: 0, m: "s" }, "readonly": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "required": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "selectOnTab": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "selectedValues": { "required":false, c: checkList(checkString), j: 1, m: ["l","s"] }, "size": { "required":false,"values":["sm","md","lg"],"default":"md", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "tokenSeparators": { "required":false, c: checkList(checkString), j: 1, m: ["l","s"] }, "value": { "required":false, c: checkString, t: "string", j: 0, m: "s" } } };
40
40
  const C = (host) => activateModule(controller, host);
41
41
 
42
42
  export function createUiCombobox(options = {}, html) {
@@ -48,7 +48,7 @@ export function createUiCombobox(options = {}, html) {
48
48
  }
49
49
  element.setAttribute("data-component", "ui-combobox");
50
50
  element.append((P0 ??= buildTemplate(T0)).cloneNode(true));
51
- const v = [[], "", "", null, false, [], null, false, "", { "status": "pristine", "touched": false, "dirty": false, "issues": [] }, "", "", [], false, 0, "", "", "pristine", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null];
51
+ const v = [[], "", "", null, false, [], null, false, "", { "status": "pristine", "touched": false, "dirty": false, "issues": [] }, "", "", [], false, 0, "", "", "pristine", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null];
52
52
  const B = acceptProps(element, D, S.n, v, componentProps, [], html);
53
53
  v[6] = negate(1, undefined);
54
54
  const m1 = (d) => {
@@ -95,7 +95,7 @@ export function createUiCombobox(options = {}, html) {
95
95
  if (s0 !== r.v0) writeAttribute(r.n, "data-index", r.v0 = s0);
96
96
  }
97
97
  if (c & 1619001344) {
98
- const x1 = ((truthy(v[23]) || truthy(v[37])) || truthy(trackContainer(r, readMember(o, "disabled"))));
98
+ const x1 = ((truthy(v[23]) || truthy(v[38])) || truthy(trackContainer(r, readMember(o, "disabled"))));
99
99
  const s1 = toAttribute(x1, "disabled");
100
100
  if (s1 !== r.v1) writeAttribute(r.n, "disabled", r.v1 = s1);
101
101
  }
@@ -144,7 +144,7 @@ export function createUiCombobox(options = {}, html) {
144
144
  };
145
145
  const p6 = (r, c, d) => {
146
146
  if (c & 536870912) {
147
- const x0 = v[33];
147
+ const x0 = v[34];
148
148
  const s0 = toAttribute(x0, "name");
149
149
  if (s0 !== r.v0) writeAttribute(r.n, "name", r.v0 = s0);
150
150
  }
@@ -180,7 +180,7 @@ export function createUiCombobox(options = {}, html) {
180
180
  const o = r.i;
181
181
  if (c & 1073741824) r.w = 0;
182
182
  if (c & 536870912) {
183
- const x0 = v[33];
183
+ const x0 = v[34];
184
184
  const s0 = toAttribute(x0, "name");
185
185
  if (s0 !== r.v0) writeAttribute(r.n, "name", r.v0 = s0);
186
186
  }
@@ -203,7 +203,7 @@ export function createUiCombobox(options = {}, html) {
203
203
  };
204
204
  const p9 = (r, c, d) => {
205
205
  if (c & 545259530) {
206
- const x0 = ((truthy(v[23]) || truthy(v[37])) || (!truthy(v[1]) && (truthy(v[32]) || (v[3] === null))));
206
+ const x0 = ((truthy(v[23]) || truthy(v[38])) || (!truthy(v[1]) && (truthy(v[32]) || (v[3] === null))));
207
207
  const s0 = toAttribute(x0, "disabled");
208
208
  if (s0 !== r.v0) writeAttribute(r.n, "disabled", r.v0 = s0);
209
209
  }
@@ -223,7 +223,7 @@ export function createUiCombobox(options = {}, html) {
223
223
  }
224
224
  }
225
225
  if (c & 545259520) {
226
- const x1 = (truthy(v[23]) || truthy(v[37]));
226
+ const x1 = (truthy(v[23]) || truthy(v[38]));
227
227
  const s1 = toAttribute(x1, "disabled");
228
228
  if (s1 !== r.v1) writeAttribute(r.n, "disabled", r.v1 = s1);
229
229
  }
@@ -661,7 +661,7 @@ export function createUiCombobox(options = {}, html) {
661
661
  }
662
662
  }
663
663
  if (c & 536870912) {
664
- const x10 = v[35];
664
+ const x10 = v[36];
665
665
  const s9 = toAttribute(x10, "placeholder");
666
666
  if (s9 !== r.v9) writeAttribute(r.a6, "placeholder", r.v9 = s9);
667
667
  }
@@ -671,7 +671,7 @@ export function createUiCombobox(options = {}, html) {
671
671
  if (s10 !== r.v10) writeAttribute(r.a6, "disabled", r.v10 = s10);
672
672
  }
673
673
  if (c & 536870912) {
674
- const x12 = v[37];
674
+ const x12 = v[38];
675
675
  const s11 = toAttribute(x12, "readonly");
676
676
  if (s11 !== r.v11) writeAttribute(r.a6, "readonly", r.v11 = s11);
677
677
  const x13 = textCall("concat", [v[29], " suggestions"]);
@@ -684,7 +684,7 @@ export function createUiCombobox(options = {}, html) {
684
684
  if (s16 !== r.v16) writeAttribute(r.a14, "aria-busy", r.v16 = s16);
685
685
  }
686
686
  if (c & 1610612737) {
687
- const x15 = (checkReference(S, readDeclared(v[0], ["0"]), ["o",["id","s","value","s","label","s","group","s","disabled","b","description","s","tag",["o",["label","s","tone",["p",formatOf(keywordFormat)],"color","s"]]]], "expression:$required and not ($multiple and $internalItems.0):internalItems.0", "Reference `internalItems.0` must satisfy object({ id: string, value: string, label: string, group?: string, disabled?: boolean, description?: string, tag?: object({ label: string, tone?: keyword with values neutral, accent, info, success, warning, danger, color?: string }) }).") ? (truthy(v[38]) && !(truthy(v[32]) && truthy(readIndex(v[0], 0)))) : NONCONFORMING);
687
+ const x15 = (checkReference(S, readDeclared(v[0], ["0"]), ["o",["id","s","value","s","label","s","group","s","disabled","b","description","s","tag",["o",["label","s","tone",["p",formatOf(keywordFormat)],"color","s"]]]], "expression:$required and not ($multiple and $internalItems.0):internalItems.0", "Reference `internalItems.0` must satisfy object({ id: string, value: string, label: string, group?: string, disabled?: boolean, description?: string, tag?: object({ label: string, tone?: keyword with values neutral, accent, info, success, warning, danger, color?: string }) }).") ? (truthy(v[39]) && !(truthy(v[32]) && truthy(readIndex(v[0], 0)))) : NONCONFORMING);
688
688
  if (x15 !== NONCONFORMING) {
689
689
  const s12 = toAttribute(x15, "required");
690
690
  if (s12 !== r.v12) writeAttribute(r.a6, "required", r.v12 = s12);
@@ -701,11 +701,11 @@ export function createUiCombobox(options = {}, html) {
701
701
  if (s19 !== r.v19) r.a22.data = r.v19 = s19;
702
702
  }
703
703
  if (c & 671219712) {
704
- const x18 = hostState(["size","validationStatus","invalid","multiple"], [v[41], v[17], v[27], v[32]]);
704
+ const x18 = hostState(["size","muted","validationStatus","invalid","multiple"], [v[42], v[33], v[17], v[27], v[32]]);
705
705
  const s20 = x18;
706
706
  if (s20 !== r.v20) writeAttribute(r.n, "data-ui-combobox-state", (r.v20 = s20) === "" ? null : s20);
707
707
  }
708
- if (c & 536870912 && !(truthy(v[38])) !== !r.b0) {
708
+ if (c & 536870912 && !(truthy(v[39])) !== !r.b0) {
709
709
  if (r.b0) { r.b0 = undefined; clearRegion(r.a2, r.e0); }
710
710
  else { r.b0 = m1(d); r.e0.before(r.b0.n); }
711
711
  } else if (r.b0 !== undefined) p1(r.b0, c, d);
@@ -713,11 +713,11 @@ export function createUiCombobox(options = {}, html) {
713
713
  if (r.b2) { dispose(r.b2); r.b2 = undefined; clearRegion(r.a5, r.e2); }
714
714
  else { r.b2 = m3(d); r.e2.before(r.b2.n); }
715
715
  } else if (r.b2 !== undefined) p3(r.b2, c, d);
716
- if (c & 536870912 && !((truthy(v[33]) && !truthy(v[32]))) !== !r.b3) {
716
+ if (c & 536870912 && !((truthy(v[34]) && !truthy(v[32]))) !== !r.b3) {
717
717
  if (r.b3) { r.b3 = undefined; clearRegion(r.a7, r.e3); }
718
718
  else { r.b3 = m6(d); r.e3.before(r.b3.n); }
719
719
  } else if (r.b3 !== undefined) p6(r.b3, c, d);
720
- if (c & 536870912 && !((truthy(v[33]) && truthy(v[32]))) !== !r.b4) {
720
+ if (c & 536870912 && !((truthy(v[34]) && truthy(v[32]))) !== !r.b4) {
721
721
  if (r.b4) { r.b4 = undefined; clearRegion(r.a8, r.e4); }
722
722
  else { r.b4 = m7(d); r.e4.before(r.b4.n); }
723
723
  } else if (r.b4 !== undefined) p7(r.b4, c, d);
@@ -772,38 +772,39 @@ export function createUiCombobox(options = {}, html) {
772
772
  const t4 = t3.firstChild.nextSibling;
773
773
  const t5 = t4.firstChild.nextSibling;
774
774
  const t6 = t5.firstChild.nextSibling;
775
- const t7 = t6.nextSibling.nextSibling.nextSibling;
776
- const t8 = t7.nextSibling.nextSibling.nextSibling;
777
- const t9 = t5.nextSibling.nextSibling;
778
- const t10 = t9.nextSibling.nextSibling.nextSibling;
775
+ const t7 = t6.firstChild;
776
+ const t8 = t6.nextSibling.nextSibling;
777
+ const t9 = t8.nextSibling.nextSibling.nextSibling;
778
+ const t10 = t5.nextSibling.nextSibling;
779
779
  const t11 = t10.nextSibling.nextSibling.nextSibling;
780
780
  const t12 = t11.nextSibling.nextSibling.nextSibling;
781
- const t13 = t4.nextSibling.nextSibling;
782
- const t14 = t3.nextSibling.nextSibling;
783
- const t15 = t14.nextSibling.nextSibling.nextSibling;
784
- const t16 = t15.firstChild.nextSibling;
781
+ const t13 = t12.nextSibling.nextSibling.nextSibling;
782
+ const t14 = t4.nextSibling.nextSibling;
783
+ const t15 = t3.nextSibling.nextSibling;
784
+ const t16 = t15.nextSibling.nextSibling.nextSibling;
785
785
  const t17 = t16.firstChild.nextSibling;
786
- const t18 = t17.nextSibling.nextSibling.nextSibling;
786
+ const t18 = t17.firstChild.nextSibling;
787
787
  const t19 = t18.nextSibling.nextSibling.nextSibling;
788
788
  const t20 = t19.nextSibling.nextSibling.nextSibling;
789
- const t21 = t16.nextSibling.nextSibling;
790
- const t22 = t15.nextSibling.nextSibling;
791
- const t23 = t22.firstChild.nextSibling;
792
- const t24 = t22.nextSibling.nextSibling;
793
- const t25 = t24.firstChild;
794
- const t26 = t24.nextSibling.nextSibling;
795
- const t27 = t26.firstChild;
796
- const R = { n: element, a0: t0, a1: t1, a6: t8, a13: t15, a14: t16, a20: t22, a22: t25, v0: null, v1: false, v2: "", v3: null, v4: null, v5: null, v6: null, v7: null, v8: undefined, v9: null, v10: null, v11: null, v12: null, v13: null, v14: null, v15: null, v16: null, v17: null, v18: null, v19: "", v20: undefined, a2: t2, e0: t2.nextSibling, b0: undefined, a4: t6, e1: t6.nextSibling, b1: undefined, f1: undefined, a5: t7, e2: t7.nextSibling, b2: undefined, a7: t9, e3: t9.nextSibling, b3: undefined, a8: t10, e4: t10.nextSibling, b4: undefined, a9: t11, e5: t11.nextSibling, b5: undefined, a10: t12, e6: t12.nextSibling, b6: undefined, a11: t13, e7: t13.nextSibling, b7: undefined, a12: t14, e8: t14.nextSibling, b8: undefined, L9: new KeyedList(t17, t17.nextSibling, m13, p13, (o) => readMember(o, "name"), "group"), a16: t18, e10: t18.nextSibling, b10: undefined, a17: t19, e11: t19.nextSibling, b11: undefined, a18: t20, e12: t20.nextSibling, b12: undefined, a19: t21, e13: t21.nextSibling, b13: undefined, f13: undefined, L14: new IndexedList(t23, t23.nextSibling, m26, p26, undefined, "issue"), a24: t27, e15: t27.nextSibling, b15: undefined, f15: undefined };
789
+ const t21 = t20.nextSibling.nextSibling.nextSibling;
790
+ const t22 = t17.nextSibling.nextSibling;
791
+ const t23 = t16.nextSibling.nextSibling;
792
+ const t24 = t23.firstChild.nextSibling;
793
+ const t25 = t23.nextSibling.nextSibling;
794
+ const t26 = t25.firstChild;
795
+ const t27 = t25.nextSibling.nextSibling;
796
+ const t28 = t27.firstChild;
797
+ const R = { n: element, a0: t0, a1: t1, a6: t9, a13: t16, a14: t17, a20: t23, a22: t26, v0: null, v1: false, v2: "", v3: null, v4: null, v5: null, v6: null, v7: null, v8: undefined, v9: null, v10: null, v11: null, v12: null, v13: null, v14: null, v15: null, v16: null, v17: null, v18: null, v19: "", v20: undefined, a2: t2, e0: t2.nextSibling, b0: undefined, a4: t7, e1: t7.nextSibling, b1: undefined, f1: undefined, a5: t8, e2: t8.nextSibling, b2: undefined, a7: t10, e3: t10.nextSibling, b3: undefined, a8: t11, e4: t11.nextSibling, b4: undefined, a9: t12, e5: t12.nextSibling, b5: undefined, a10: t13, e6: t13.nextSibling, b6: undefined, a11: t14, e7: t14.nextSibling, b7: undefined, a12: t15, e8: t15.nextSibling, b8: undefined, L9: new KeyedList(t18, t18.nextSibling, m13, p13, (o) => readMember(o, "name"), "group"), a16: t19, e10: t19.nextSibling, b10: undefined, a17: t20, e11: t20.nextSibling, b11: undefined, a18: t21, e12: t21.nextSibling, b12: undefined, a19: t22, e13: t22.nextSibling, b13: undefined, f13: undefined, L14: new IndexedList(t24, t24.nextSibling, m26, p26, undefined, "issue"), a24: t28, e15: t28.nextSibling, b15: undefined, f15: undefined };
797
798
  const I = { B };
798
799
  const J = project(I, children, slots);
799
800
  I.R = new Set();
800
801
  attachGeneratedController(element, S, v, (c, d) => { ((c, d) => p0(R, c, d))(c, d); for (const f of I.R) f(c, d); }, undefined, undefined, I);
801
802
  manageProps(I);
802
803
  I.r["field"] = t4;
803
- I.r["input"] = t8;
804
- I.r["popup"] = t15;
805
- I.r["listbox"] = t16;
806
- I.r["options"] = t26;
804
+ I.r["input"] = t9;
805
+ I.r["popup"] = t16;
806
+ I.r["listbox"] = t17;
807
+ I.r["options"] = t27;
807
808
  return element;
808
809
  }
809
- defineComponent("ui-combobox", createUiCombobox, ["allowCreate","allowFreeText","autoHighlight","clearQueryOnBlur","clearable","disabled","disclosure","filter","help","invalid","items","label","labelVisibility","loading","multiple","name","openOnFocus","placeholder","query","readonly","required","selectOnTab","selectedValues","size","tokenSeparators","value"]);
810
+ defineComponent("ui-combobox", createUiCombobox, ["allowCreate","allowFreeText","autoHighlight","clearQueryOnBlur","clearable","disabled","disclosure","filter","help","invalid","items","label","labelVisibility","loading","multiple","muted","name","openOnFocus","placeholder","query","readonly","required","selectOnTab","selectedValues","size","tokenSeparators","value"]);
@@ -21,7 +21,7 @@ export interface UiIconButtonProps {
21
21
  revealed?: boolean | null;
22
22
  round?: boolean | null;
23
23
  size?: "sm" | "md" | "lg" | null;
24
- tone?: "auto" | "accent" | "neutral" | "danger" | "success" | "warning" | "info" | null;
24
+ tone?: "accent" | "neutral" | "danger" | "success" | "warning" | "info" | null;
25
25
  variant?: "ghost" | "outline" | "solid" | null;
26
26
  attributes?: Readonly<Record<string, string | number | boolean | null | undefined>>;
27
27
  children?: readonly (string | Node)[];
@@ -8,7 +8,7 @@ const T1 = ["ui-spinner",["size","sm"]];
8
8
  const T2 = ["",[]];
9
9
  let P0, P1, P2;
10
10
  const S = { n: ["appearance","colorTone"], t: ["?","?"], f: import.meta.url, g: "ui-icon-button", k: 0, r: readonlyView, a: (host, I) => C(host, I), b: generatedInputs };
11
- const D = { g: "ui-icon-button", props: { "anticipatory": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "disabled": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "guide": { "required":false,"values":["dot","bar"],"default":"dot", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "label": { "required":false, c: checkString, t: "string", j: 0, m: "s" }, "loading": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "matchButton": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "pending": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "preset": { "required":false,"values":["none","primary","standard","quiet","destructive"],"default":"none", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "revealed": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "round": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "size": { "required":false,"values":["sm","md","lg"],"default":"md", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "tone": { "required":false,"values":["auto","accent","neutral","danger","success","warning","info"],"default":"auto", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "variant": { "required":false,"values":["ghost","outline","solid"],"default":"ghost", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] } } };
11
+ const D = { g: "ui-icon-button", props: { "anticipatory": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "disabled": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "guide": { "required":false,"values":["dot","bar"],"default":"dot", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "label": { "required":false, c: checkString, t: "string", j: 0, m: "s" }, "loading": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "matchButton": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "pending": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "preset": { "required":false,"values":["none","primary","standard","quiet","destructive"],"default":"none", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "revealed": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "round": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "size": { "required":false,"values":["sm","md","lg"],"default":"md", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "tone": { "required":false,"values":["accent","neutral","danger","success","warning","info"],"default":"neutral", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "variant": { "required":false,"values":["ghost","outline","solid"],"default":"ghost", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] } } };
12
12
  const C = (host) => activateModule(controller, host);
13
13
 
14
14
  export function createUiIconButton(options = {}, html) {
@@ -12,6 +12,7 @@ export interface UiSelectElement extends HTMLSelectElement {
12
12
  export interface UiSelectProps {
13
13
  disabled?: boolean | null;
14
14
  invalid?: boolean | null;
15
+ muted?: boolean | null;
15
16
  required?: boolean | null;
16
17
  size?: "sm" | "md" | "lg" | null;
17
18
  value?: string | null;
@@ -7,7 +7,7 @@ const T0 = ["",[],4];
7
7
  const T1 = ["",[]];
8
8
  let P0, P1;
9
9
  const S = { n: [], t: [], f: import.meta.url, g: "ui-select", a: (host, I) => C(host, I), b: generatedInputs };
10
- const D = { g: "ui-select", props: { "disabled": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "invalid": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "required": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "size": { "required":false,"values":["sm","md","lg"],"default":"md", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "value": { "required":false, c: checkString, t: "string", j: 0, m: "s" } } };
10
+ const D = { g: "ui-select", props: { "disabled": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "invalid": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "muted": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "required": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "size": { "required":false,"values":["sm","md","lg"],"default":"md", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "value": { "required":false, c: checkString, t: "string", j: 0, m: "s" } } };
11
11
  const C = (host) => activateModule(controller, host);
12
12
 
13
13
  export function createUiSelect(options = {}, html) {
@@ -19,7 +19,7 @@ export function createUiSelect(options = {}, html) {
19
19
  }
20
20
  element.setAttribute("data-component", "ui-select");
21
21
  element.append((P0 ??= buildTemplate(T0)).cloneNode(true));
22
- const v = [null, null, null, null, null];
22
+ const v = [null, null, null, null, null, null];
23
23
  const B = acceptProps(element, D, S.n, v, componentProps, [], html);
24
24
  const m1 = (d) => {
25
25
  const n = (P1 ??= buildTemplate(T1)).cloneNode(true);
@@ -35,8 +35,8 @@ export function createUiSelect(options = {}, html) {
35
35
  const s0 = toAttribute(x0, "disabled");
36
36
  if (s0 !== r.v0) writeAttribute(r.n, "disabled", r.v0 = s0);
37
37
  }
38
- if (c & 4) {
39
- const x1 = v[2];
38
+ if (c & 8) {
39
+ const x1 = v[3];
40
40
  const s1 = toAttribute(x1, "required");
41
41
  if (s1 !== r.v1) writeAttribute(r.n, "required", r.v1 = s1);
42
42
  }
@@ -45,8 +45,8 @@ export function createUiSelect(options = {}, html) {
45
45
  const s2 = toAttribute(x2, "aria-invalid");
46
46
  if (s2 !== r.v2) writeAttribute(r.n, "aria-invalid", r.v2 = s2);
47
47
  }
48
- if (c & 8) {
49
- const x3 = hostState(["size"], [v[3]]);
48
+ if (c & 20) {
49
+ const x3 = hostState(["muted","size"], [v[2], v[4]]);
50
50
  const s3 = x3;
51
51
  if (s3 !== r.v3) writeAttribute(r.n, "data-ui-select-state", (r.v3 = s3) === "" ? null : s3);
52
52
  }
@@ -62,4 +62,4 @@ export function createUiSelect(options = {}, html) {
62
62
  manageProps(I);
63
63
  return element;
64
64
  }
65
- defineComponent("ui-select", createUiSelect, ["disabled","invalid","required","size","value"]);
65
+ defineComponent("ui-select", createUiSelect, ["disabled","invalid","muted","required","size","value"]);
@@ -0,0 +1,26 @@
1
+ // Generated by HTML Next 1.0.0-alpha.69 for Vanilla DOM. Do not edit.
2
+ export interface UiSkeletonEventMap {
3
+ }
4
+ export interface UiSkeletonElement extends HTMLSpanElement {
5
+ addEventListener<K extends keyof UiSkeletonEventMap>(type: K, listener: (this: UiSkeletonElement, event: UiSkeletonEventMap[K]) => unknown, options?: boolean | AddEventListenerOptions): void;
6
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: UiSkeletonElement, event: HTMLElementEventMap[K]) => unknown, options?: boolean | AddEventListenerOptions): void;
7
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
8
+ removeEventListener<K extends keyof UiSkeletonEventMap>(type: K, listener: (this: UiSkeletonElement, event: UiSkeletonEventMap[K]) => unknown, options?: boolean | EventListenerOptions): void;
9
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: UiSkeletonElement, event: HTMLElementEventMap[K]) => unknown, options?: boolean | EventListenerOptions): void;
10
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
11
+ }
12
+ export interface UiSkeletonProps {
13
+ animated?: boolean | null;
14
+ height?: string | null;
15
+ shape?: "text" | "circle" | "rectangle" | null;
16
+ width?: string | null;
17
+ attributes?: Readonly<Record<string, string | number | boolean | null | undefined>>;
18
+ children?: readonly (string | Node)[];
19
+ slots?: Readonly<Record<string, readonly (string | Node)[]>>;
20
+ }
21
+ export declare function createUiSkeleton(props?: UiSkeletonProps): UiSkeletonElement;
22
+ declare global {
23
+ interface ComponentTagMap {
24
+ "ui-skeleton": { element: UiSkeletonElement; props: Omit<UiSkeletonProps, "attributes" | "children" | "slots"> };
25
+ }
26
+ }
@@ -0,0 +1,42 @@
1
+ // Generated by HTML Next 1.0.0-alpha.69 for Vanilla DOM. Do not edit.
2
+ import { attachGeneratedController, toText, writeAttribute, formatOf, keywordFormat, hostState, acceptProps, manageProps, generatedInputs, checkBoolean, checkFormat, checkString, defineComponent } from "@nextwebwg/html-next/generated-runtime";
3
+ import "../styles/ui-skeleton.css";
4
+
5
+ const S = { n: [], t: [], f: import.meta.url, g: "ui-skeleton", b: generatedInputs };
6
+ const D = { g: "ui-skeleton", props: { "animated": { "required":false,"default":false, c: checkBoolean, t: "boolean", j: 0, m: "b" }, "height": { "required":false,"default":"", c: checkString, t: "string", j: 0, m: "s" }, "shape": { "required":false,"values":["text","circle","rectangle"],"default":"text", c: checkFormat("keyword", keywordFormat), t: "keyword", j: 0, m: ["p",formatOf(keywordFormat)] }, "width": { "required":false,"default":"", c: checkString, t: "string", j: 0, m: "s" } } };
7
+
8
+ export function createUiSkeleton(options = {}, html) {
9
+ const { attributes = {}, children = [], slots = {}, ...componentProps } = options;
10
+ const element = document.createElement("span");
11
+ for (const [name, value] of Object.entries(attributes)) {
12
+ if (value === null || value === undefined || value === false) continue;
13
+ element.setAttribute(name, value === true ? "" : String(value));
14
+ }
15
+ if (!element.hasAttribute("aria-hidden")) element.setAttribute("aria-hidden", "true");
16
+ element.setAttribute("data-component", "ui-skeleton");
17
+ const v = [null, null, null, null];
18
+ const B = acceptProps(element, D, S.n, v, componentProps, [], html);
19
+ const p0 = (r, c, d) => {
20
+ if (c & 8) {
21
+ const x0 = v[3];
22
+ const s0 = toText(x0);
23
+ if (s0 !== r.v0) r.n.style.setProperty("--ui-skeleton-width", r.v0 = s0);
24
+ }
25
+ if (c & 2) {
26
+ const x1 = v[1];
27
+ const s1 = toText(x1);
28
+ if (s1 !== r.v1) r.n.style.setProperty("--ui-skeleton-height", r.v1 = s1);
29
+ }
30
+ if (c & 5) {
31
+ const x2 = hostState(["shape","animated"], [v[2], v[0]]);
32
+ const s2 = x2;
33
+ if (s2 !== r.v2) writeAttribute(r.n, "data-ui-skeleton-state", (r.v2 = s2) === "" ? null : s2);
34
+ }
35
+ };
36
+ const R = { n: element, v0: undefined, v1: undefined, v2: undefined };
37
+ const I = { B };
38
+ attachGeneratedController(element, S, v, ((c, d) => p0(R, c, d)), undefined, undefined, I);
39
+ manageProps(I);
40
+ return element;
41
+ }
42
+ defineComponent("ui-skeleton", createUiSkeleton, ["animated","height","shape","width"]);
package/vanilla/index.js CHANGED
@@ -71,6 +71,7 @@ export * from "./UiSection.js";
71
71
  export * from "./UiSelect.js";
72
72
  export * from "./UiSeparator.js";
73
73
  export * from "./UiSidebar.js";
74
+ export * from "./UiSkeleton.js";
74
75
  export * from "./UiSlider.js";
75
76
  export * from "./UiSpinner.js";
76
77
  export * from "./UiStack.js";
package/vue/UiButton.vue CHANGED
@@ -145,7 +145,7 @@ const propValidityContract = {
145
145
  description:
146
146
  'Which colour the button speaks in. It applies to every variant, so an outline, a ghost, and a solid in the same tone are the same action at three volumes:\n tone="danger" variant="outline" is a destructive secondary action. neutral is the quiet one, for a button that should not claim a colour. The field\n variant always uses neutral field colors.',
147
147
  values: ['accent', 'neutral', 'danger', 'success', 'warning', 'info'],
148
- default: 'accent',
148
+ default: 'neutral',
149
149
  },
150
150
  type: {
151
151
  type: { kind: 'terminal', name: 'keyword' },
@@ -212,7 +212,7 @@ const acceptedProps: Record<string, unknown> = {
212
212
  square: false,
213
213
  stretch: false,
214
214
  target: null,
215
- tone: 'accent',
215
+ tone: 'neutral',
216
216
  type: 'button',
217
217
  variant: 'outline',
218
218
  }
@@ -227,7 +227,7 @@ const inputTracking = vuePropInputs(acceptedProps, {
227
227
  size: 'md',
228
228
  square: false,
229
229
  stretch: false,
230
- tone: 'accent',
230
+ tone: 'neutral',
231
231
  type: 'button',
232
232
  variant: 'outline',
233
233
  }, (name, value, source, values) => {
@@ -1039,8 +1039,6 @@ useComponentHost(() => import('../components/ui-button/ui-button.js'), {
1039
1039
  /* A link is never :enabled, so interactive states test "not unavailable" instead: for a button that
1040
1040
  is exactly :enabled, at the same specificity, and it also matches a link that can be followed. */
1041
1041
 
1042
- /* A neutral card encloses content quietly; ordinary outlines keep their action-tone edge. */
1043
-
1044
1042
  /* Pressed reads as pressed in: the highlight goes, and the shadow moves inside. */
1045
1043
 
1046
1044
  /* Tone is the colour, variant is the volume. Every pairing works: a danger outline is a
@@ -1050,9 +1048,6 @@ useComponentHost(() => import('../components/ui-button/ui-button.js'), {
1050
1048
 
1051
1049
  /* Tints derive from the text colour, not a surface token, so hover and press show on any background. */
1052
1050
 
1053
- /* Pressed, or holding its menu open, a ghost button sinks slightly: a light surface with a faint
1054
- edge and a soft inner shadow. Lighter than hover, so an open menu's trigger never reads as heavy. */
1055
-
1056
1051
  /* A soft halo that transitions in with the other box-shadow changes, layered on the raised shadow. */
1057
1052
 
1058
1053
  /* A loading action stays visually active; only an explicitly disabled action takes the
@@ -1257,6 +1252,7 @@ useComponentHost(() => import('../components/ui-button/ui-button.js'), {
1257
1252
  border-color: var(--ui-button-hover-border, var(--_tone-hover));
1258
1253
  background-color: var(--ui-button-hover-surface, oklch(from var(--_tone) l c h / 12%));
1259
1254
  }
1255
+
1260
1256
  :global(:scope[data-appearance="card"][data-tone="neutral"]:where([data-hn-ui-button])) {
1261
1257
  border-color: var(--ui-button-border, var(--ui-border));
1262
1258
  }
@@ -1264,6 +1260,12 @@ useComponentHost(() => import('../components/ui-button/ui-button.js'), {
1264
1260
  :global(:scope[data-appearance="card"][data-tone="neutral"]:hover:not(:disabled, [aria-disabled="true"]):where([data-hn-ui-button])) {
1265
1261
  border-color: var(--ui-button-hover-border, var(--ui-border-strong));
1266
1262
  }
1263
+
1264
+ :global(:scope[data-appearance="card"][aria-pressed="true"]:where([data-hn-ui-button])) {
1265
+ background-color: var(--ui-selection-surface);
1266
+ border-color: var(--ui-selection-border);
1267
+ color: var(--ui-selection-text);
1268
+ }
1267
1269
  :global(:scope:active:not(:disabled, [aria-disabled="true"]):where([data-hn-ui-button])) {
1268
1270
  scale: var(--ui-press-scale, 1);
1269
1271
  background-color: var(--ui-button-active-surface, oklch(from var(--_tone) l c h / 18%));
@@ -1308,6 +1310,24 @@ useComponentHost(() => import('../components/ui-button/ui-button.js'), {
1308
1310
  background-color: var(--ui-button-surface, var(--ui-neutral-surface));
1309
1311
  color: var(--ui-button-text, var(--ui-text));
1310
1312
  }
1313
+ :global(:scope[data-tone="neutral"][data-appearance="outline"]:where([data-hn-ui-button])) {
1314
+ border-color: var(--ui-button-border, var(--ui-control-border));
1315
+ background-color: var(--ui-button-surface, transparent);
1316
+ }
1317
+ :global(:scope[data-tone="neutral"][data-appearance="outline"]:hover:not(:disabled, [aria-disabled="true"]):where([data-hn-ui-button])) {
1318
+ border-color: var(
1319
+ --ui-button-hover-border,
1320
+ var(--ui-control-border-hover, var(--ui-control-border))
1321
+ );
1322
+ background-color: var(--ui-button-hover-surface, var(--ui-neutral-hover));
1323
+ }
1324
+ :global(:scope[data-tone="neutral"][data-appearance="outline"]:active:not(:disabled, [aria-disabled="true"]):where([data-hn-ui-button])) {
1325
+ border-color: var(
1326
+ --ui-button-hover-border,
1327
+ var(--ui-control-border-hover, var(--ui-control-border))
1328
+ );
1329
+ background-color: var(--ui-button-active-surface, var(--ui-neutral-active));
1330
+ }
1311
1331
  :global(:scope[data-tone="neutral"][data-appearance="solid"]:hover:not(:disabled, [aria-disabled="true"]):where([data-hn-ui-button])) {
1312
1332
  background-color: var(--ui-button-hover-surface, var(--ui-neutral-hover));
1313
1333
  }
@@ -1400,11 +1420,9 @@ useComponentHost(() => import('../components/ui-button/ui-button.js'), {
1400
1420
  background-color: var(--ui-button-ghost-hover-surface, oklch(from var(--_tone) l c h / 10%));
1401
1421
  border-color: transparent;
1402
1422
  }
1423
+
1403
1424
  :global(:scope[data-appearance="ghost"]:is(:active, [aria-expanded="true"]):not(:disabled, [aria-disabled="true"]):where([data-hn-ui-button])) {
1404
- background-color: var(
1405
- --ui-button-ghost-active-surface,
1406
- color-mix(in oklch, var(--ui-surface), var(--_tone) 3%)
1407
- );
1425
+ background-color: var(--ui-button-ghost-active-surface, oklch(from var(--_tone) l c h / 18%));
1408
1426
  border-color: transparent;
1409
1427
  box-shadow:
1410
1428
  inset 0 0 0 1px oklch(from var(--_tone) l c h / 10%),
@@ -95,6 +95,9 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
95
95
  multiple: {
96
96
  type: PropType<boolean | null>;
97
97
  };
98
+ muted: {
99
+ type: PropType<boolean | null>;
100
+ };
98
101
  name: {
99
102
  type: PropType<string | null>;
100
103
  };
@@ -334,6 +337,9 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
334
337
  multiple: {
335
338
  type: PropType<boolean | null>;
336
339
  };
340
+ muted: {
341
+ type: PropType<boolean | null>;
342
+ };
337
343
  name: {
338
344
  type: PropType<string | null>;
339
345
  };