@threadlabs/looma 0.22.12 → 0.22.14

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 (71) hide show
  1. package/components/shared/icons.js +4 -0
  2. package/components/ui-card/ui-card.html +21 -2
  3. package/components/ui-icon/ui-icon.html +4 -0
  4. package/components/ui-input/ui-input.html +1 -0
  5. package/components/ui-input-group/ui-input-group.html +11 -0
  6. package/components/ui-popover/ui-popover.html +15 -0
  7. package/components/ui-scroll-area/ui-scroll-area.html +12 -0
  8. package/components/ui-search-result-row/ui-search-result-row.html +11 -0
  9. package/components/ui-stack/ui-stack.html +6 -3
  10. package/components/ui-text/ui-text.html +12 -0
  11. package/dist/index.js +1 -1
  12. package/editor/chunks/extensions.js +75 -6
  13. package/editor/extensions/index.d.ts +1 -0
  14. package/editor/extensions/index.js +2 -2
  15. package/editor/extensions/preset.d.ts +2 -0
  16. package/editor/extensions/relative-links.d.ts +8 -0
  17. package/editor/extensions/slash-command.d.ts +5 -3
  18. package/editor/icons.d.ts +4 -0
  19. package/editor/index.js +7 -3
  20. package/package.json +1 -1
  21. package/styles/ui-card.css +17 -0
  22. package/styles/ui-input-group.css +9 -0
  23. package/styles/ui-input.css +1 -0
  24. package/styles/ui-popover.css +13 -0
  25. package/styles/ui-scroll-area.css +10 -0
  26. package/styles/ui-search-result-row.css +9 -0
  27. package/styles/ui-stack.css +3 -0
  28. package/styles/ui-text.css +8 -0
  29. package/vanilla/UiCard.d.ts +2 -1
  30. package/vanilla/UiCard.js +1 -1
  31. package/vanilla/UiIcon.js +1 -1
  32. package/vanilla/UiInputGroup.d.ts +1 -0
  33. package/vanilla/UiInputGroup.js +1 -1
  34. package/vanilla/UiPopover.d.ts +1 -0
  35. package/vanilla/UiPopover.js +1 -1
  36. package/vanilla/UiScrollArea.d.ts +1 -0
  37. package/vanilla/UiScrollArea.js +1 -1
  38. package/vanilla/UiSearchResultRow.d.ts +1 -0
  39. package/vanilla/UiSearchResultRow.js +1 -1
  40. package/vanilla/UiStack.d.ts +1 -1
  41. package/vanilla/UiStack.js +1 -1
  42. package/vanilla/UiText.d.ts +2 -0
  43. package/vanilla/UiText.js +1 -1
  44. package/vue/UiCard.d.ts +12 -3
  45. package/vue/UiCard.vue +49 -5
  46. package/vue/UiIcon.vue +23 -0
  47. package/vue/UiInput.vue +1 -0
  48. package/vue/UiInputGroup.d.ts +9 -0
  49. package/vue/UiInputGroup.vue +33 -2
  50. package/vue/UiPopover.d.ts +9 -0
  51. package/vue/UiPopover.vue +43 -2
  52. package/vue/UiScrollArea.d.ts +9 -0
  53. package/vue/UiScrollArea.vue +35 -2
  54. package/vue/UiSearchResultRow.d.ts +9 -0
  55. package/vue/UiSearchResultRow.vue +38 -1
  56. package/vue/UiStack.d.ts +3 -3
  57. package/vue/UiStack.vue +10 -4
  58. package/vue/UiText.d.ts +18 -0
  59. package/vue/UiText.vue +70 -0
  60. package/vue/chunks/UiCard.js +39 -3
  61. package/vue/chunks/UiIcon.js +69 -1
  62. package/vue/chunks/UiInput.js +1 -1
  63. package/vue/chunks/UiInputGroup.js +59 -22
  64. package/vue/chunks/UiPopover.js +37 -5
  65. package/vue/chunks/UiScrollArea.js +66 -23
  66. package/vue/chunks/UiSearchResultRow.js +28 -2
  67. package/vue/chunks/UiStack.js +3 -2
  68. package/vue/chunks/UiText.js +92 -4
  69. package/vue/components.css +174 -297
  70. package/vue/editor/LoomaEditor.d.ts +11 -0
  71. package/vue/editor/index.js +262 -145
@@ -6,6 +6,7 @@ import { computed, createElementBlock, defineComponent, getCurrentInstance, merg
6
6
  var _hoisted_1 = [
7
7
  "data-as",
8
8
  "data-padding",
9
+ "data-size",
9
10
  "data-tone",
10
11
  "data-variant",
11
12
  "data-ui-card-state"
@@ -13,6 +14,7 @@ var _hoisted_1 = [
13
14
  var _hoisted_2 = [
14
15
  "data-as",
15
16
  "data-padding",
17
+ "data-size",
16
18
  "data-tone",
17
19
  "data-variant",
18
20
  "data-ui-card-state"
@@ -20,6 +22,7 @@ var _hoisted_2 = [
20
22
  var _hoisted_3 = [
21
23
  "data-as",
22
24
  "data-padding",
25
+ "data-size",
23
26
  "data-tone",
24
27
  "data-variant",
25
28
  "data-ui-card-state"
@@ -27,6 +30,7 @@ var _hoisted_3 = [
27
30
  var _hoisted_4 = [
28
31
  "data-as",
29
32
  "data-padding",
33
+ "data-size",
30
34
  "data-tone",
31
35
  "data-variant",
32
36
  "data-ui-card-state"
@@ -45,6 +49,10 @@ var UiCard_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
45
49
  type: null,
46
50
  default: "md"
47
51
  },
52
+ size: {
53
+ type: null,
54
+ default: "content"
55
+ },
48
56
  tone: {
49
57
  type: null,
50
58
  default: "neutral"
@@ -79,14 +87,31 @@ var UiCard_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
79
87
  },
80
88
  required: false,
81
89
  target: { attribute: "padding" },
82
- description: "The space inside the card: sm is snug (0.75rem), md is the default (1.5rem), and lg is roomy (2rem).",
90
+ description: "The space inside the card: xs is compact (0.5rem), sm is snug (0.75rem), md is the default (1.5rem), and lg is roomy (2rem).",
83
91
  values: [
92
+ "xs",
84
93
  "sm",
85
94
  "md",
86
95
  "lg"
87
96
  ],
88
97
  default: "md"
89
98
  },
99
+ size: {
100
+ type: {
101
+ kind: "terminal",
102
+ name: "keyword"
103
+ },
104
+ required: false,
105
+ target: { attribute: "size" },
106
+ description: "Optional size preset. content keeps the existing intrinsic sizing; the other sizes constrain the surface for compact, medium, or large content.",
107
+ values: [
108
+ "content",
109
+ "sm",
110
+ "md",
111
+ "lg"
112
+ ],
113
+ default: "content"
114
+ },
90
115
  tone: {
91
116
  type: {
92
117
  kind: "terminal",
@@ -118,6 +143,7 @@ var UiCard_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
118
143
  const acceptedProps = {
119
144
  as: "div",
120
145
  padding: "md",
146
+ size: "content",
121
147
  tone: "neutral",
122
148
  variant: "outlined"
123
149
  };
@@ -130,6 +156,10 @@ var UiCard_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
130
156
  kind: "terminal",
131
157
  name: "keyword"
132
158
  }, false, "padding", acceptedProps),
159
+ size: checkedProp(props["size"], {
160
+ kind: "terminal",
161
+ name: "keyword"
162
+ }, false, "size", acceptedProps),
133
163
  tone: checkedProp(props["tone"], {
134
164
  kind: "terminal",
135
165
  name: "keyword"
@@ -173,7 +203,9 @@ var UiCard_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
173
203
  checkedProps.value.variant && "variant",
174
204
  checkedProps.value.variant != null && `variant=${encodeURIComponent(checkedProps.value.variant)}`,
175
205
  checkedProps.value.tone && "tone",
176
- checkedProps.value.tone != null && `tone=${encodeURIComponent(checkedProps.value.tone)}`
206
+ checkedProps.value.tone != null && `tone=${encodeURIComponent(checkedProps.value.tone)}`,
207
+ checkedProps.value.size && "size",
208
+ checkedProps.value.size != null && `size=${encodeURIComponent(checkedProps.value.size)}`
177
209
  ].filter(Boolean).join(" "));
178
210
  return (_ctx, _cache) => {
179
211
  return checkedProps.value.as === "section" ? withDirectives((openBlock(), createElementBlock("section", mergeProps({
@@ -182,6 +214,7 @@ var UiCard_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
182
214
  }, nativeAttrs(_ctx.$attrs), {
183
215
  "data-as": reflectedProp("as", "as", checkedProps.value.as, void 0, false),
184
216
  "data-padding": reflectedProp("padding", "padding", checkedProps.value.padding, void 0, false),
217
+ "data-size": reflectedProp("size", "size", checkedProps.value.size, void 0, false),
185
218
  "data-tone": reflectedProp("tone", "tone", checkedProps.value.tone, void 0, false),
186
219
  "data-variant": reflectedProp("variant", "variant", checkedProps.value.variant, void 0, false),
187
220
  "data-ui-card-state": hostState.value || void 0,
@@ -195,6 +228,7 @@ var UiCard_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
195
228
  }, nativeAttrs(_ctx.$attrs), {
196
229
  "data-as": reflectedProp("as", "as", checkedProps.value.as, void 0, false),
197
230
  "data-padding": reflectedProp("padding", "padding", checkedProps.value.padding, void 0, false),
231
+ "data-size": reflectedProp("size", "size", checkedProps.value.size, void 0, false),
198
232
  "data-tone": reflectedProp("tone", "tone", checkedProps.value.tone, void 0, false),
199
233
  "data-variant": reflectedProp("variant", "variant", checkedProps.value.variant, void 0, false),
200
234
  "data-ui-card-state": hostState.value || void 0,
@@ -208,6 +242,7 @@ var UiCard_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
208
242
  }, nativeAttrs(_ctx.$attrs), {
209
243
  "data-as": reflectedProp("as", "as", checkedProps.value.as, void 0, false),
210
244
  "data-padding": reflectedProp("padding", "padding", checkedProps.value.padding, void 0, false),
245
+ "data-size": reflectedProp("size", "size", checkedProps.value.size, void 0, false),
211
246
  "data-tone": reflectedProp("tone", "tone", checkedProps.value.tone, void 0, false),
212
247
  "data-variant": reflectedProp("variant", "variant", checkedProps.value.variant, void 0, false),
213
248
  "data-ui-card-state": hostState.value || void 0,
@@ -221,6 +256,7 @@ var UiCard_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
221
256
  }, nativeAttrs(_ctx.$attrs), {
222
257
  "data-as": reflectedProp("as", "as", checkedProps.value.as, void 0, false),
223
258
  "data-padding": reflectedProp("padding", "padding", checkedProps.value.padding, void 0, false),
259
+ "data-size": reflectedProp("size", "size", checkedProps.value.size, void 0, false),
224
260
  "data-tone": reflectedProp("tone", "tone", checkedProps.value.tone, void 0, false),
225
261
  "data-variant": reflectedProp("variant", "variant", checkedProps.value.variant, void 0, false),
226
262
  "data-ui-card-state": hostState.value || void 0,
@@ -231,6 +267,6 @@ var UiCard_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
231
267
  }]]);
232
268
  };
233
269
  }
234
- }), [["__scopeId", "data-v-6699d01e"]]);
270
+ }), [["__scopeId", "data-v-5ac43da6"]]);
235
271
  //#endregion
236
272
  export { UiCard_default as t };
@@ -352,6 +352,20 @@ var UiIcon_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
352
352
  tag: "path",
353
353
  d: "m5.082 11.09 8.828 8.828"
354
354
  }],
355
+ "external-link": [
356
+ {
357
+ tag: "path",
358
+ d: "M15 3h6v6"
359
+ },
360
+ {
361
+ tag: "path",
362
+ d: "M10 14 21 3"
363
+ },
364
+ {
365
+ tag: "path",
366
+ d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"
367
+ }
368
+ ],
355
369
  "file-text": [
356
370
  {
357
371
  tag: "path",
@@ -824,6 +838,13 @@ var UiIcon_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
824
838
  tag: "path",
825
839
  d: "M3 9h18"
826
840
  }],
841
+ pencil: [{
842
+ tag: "path",
843
+ d: "M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"
844
+ }, {
845
+ tag: "path",
846
+ d: "m15 5 4 4"
847
+ }],
827
848
  pilcrow: [
828
849
  {
829
850
  tag: "path",
@@ -891,6 +912,15 @@ var UiIcon_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
891
912
  d: "M21 15H3"
892
913
  }
893
914
  ],
915
+ search: [{
916
+ tag: "path",
917
+ d: "m21 21-4.34-4.34"
918
+ }, {
919
+ tag: "circle",
920
+ cx: "11",
921
+ cy: "11",
922
+ r: "8"
923
+ }],
894
924
  settings: [{
895
925
  tag: "path",
896
926
  d: "M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915"
@@ -1028,6 +1058,44 @@ var UiIcon_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
1028
1058
  tag: "path",
1029
1059
  d: "M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11"
1030
1060
  }],
1061
+ unlink: [
1062
+ {
1063
+ tag: "path",
1064
+ d: "m18.84 12.25 1.72-1.71h-.02a5.004 5.004 0 0 0-.12-7.07 5.006 5.006 0 0 0-6.95 0l-1.72 1.71"
1065
+ },
1066
+ {
1067
+ tag: "path",
1068
+ d: "m5.17 11.75-1.71 1.71a5.004 5.004 0 0 0 .12 7.07 5.006 5.006 0 0 0 6.95 0l1.71-1.71"
1069
+ },
1070
+ {
1071
+ tag: "line",
1072
+ x1: "8",
1073
+ x2: "8",
1074
+ y1: "2",
1075
+ y2: "5"
1076
+ },
1077
+ {
1078
+ tag: "line",
1079
+ x1: "2",
1080
+ x2: "5",
1081
+ y1: "8",
1082
+ y2: "8"
1083
+ },
1084
+ {
1085
+ tag: "line",
1086
+ x1: "16",
1087
+ x2: "16",
1088
+ y1: "19",
1089
+ y2: "22"
1090
+ },
1091
+ {
1092
+ tag: "line",
1093
+ x1: "19",
1094
+ x2: "22",
1095
+ y1: "16",
1096
+ y2: "16"
1097
+ }
1098
+ ],
1031
1099
  "user-round": [{
1032
1100
  tag: "circle",
1033
1101
  cx: "12",
@@ -1123,6 +1191,6 @@ var UiIcon_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
1123
1191
  }]]);
1124
1192
  };
1125
1193
  }
1126
- }), [["__scopeId", "data-v-d26ad280"]]);
1194
+ }), [["__scopeId", "data-v-5aa6beca"]]);
1127
1195
  //#endregion
1128
1196
  export { UiIcon_default as t };
@@ -690,6 +690,6 @@ var UiInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
690
690
  }]]);
691
691
  };
692
692
  }
693
- }), [["__scopeId", "data-v-0226cb52"]]);
693
+ }), [["__scopeId", "data-v-f900b391"]]);
694
694
  //#endregion
695
695
  export { UiInput_default as t };
@@ -3,7 +3,11 @@ import { r as useComponentHost, t as createDispatch } from "./host.js";
3
3
  import { i as vPropValidity, n as propValidityState, t as checkedProp } from "./props.js";
4
4
  import { computed, createElementBlock, createElementVNode, defineComponent, getCurrentInstance, mergeProps, openBlock, ref, renderSlot, unref, watchSyncEffect, withDirectives } from "vue";
5
5
  //#region .build/vue/UiInputGroup.vue?vue&type=script&setup=true&lang.ts
6
- var _hoisted_1 = ["data-disabled", "data-ui-input-group-state"];
6
+ var _hoisted_1 = [
7
+ "data-disabled",
8
+ "data-prefix-kind",
9
+ "data-ui-input-group-state"
10
+ ];
7
11
  var _hoisted_2 = { class: "affix" };
8
12
  var _hoisted_3 = { class: "field" };
9
13
  var _hoisted_4 = { class: "affix" };
@@ -13,27 +17,55 @@ var _hoisted_5 = { class: "action" };
13
17
  var UiInputGroup_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
14
18
  inheritAttrs: false,
15
19
  __name: "UiInputGroup",
16
- props: { disabled: {
17
- type: null,
18
- default: false
19
- } },
20
+ props: {
21
+ disabled: {
22
+ type: null,
23
+ default: false
24
+ },
25
+ prefixKind: {
26
+ type: null,
27
+ default: "text"
28
+ }
29
+ },
20
30
  setup(__props) {
21
- const propValidityContract = { props: { disabled: {
22
- type: {
23
- kind: "terminal",
24
- name: "boolean"
31
+ const propValidityContract = { props: {
32
+ disabled: {
33
+ type: {
34
+ kind: "terminal",
35
+ name: "boolean"
36
+ },
37
+ required: false,
38
+ target: { attribute: "disabled" },
39
+ description: "Fades the group's framing to match a disabled input inside it. Disable the input itself too.",
40
+ default: false
25
41
  },
26
- required: false,
27
- target: { attribute: "disabled" },
28
- description: "Fades the group's framing to match a disabled input inside it. Disable the input itself too.",
29
- default: false
30
- } } };
42
+ prefixKind: {
43
+ type: {
44
+ kind: "terminal",
45
+ name: "keyword"
46
+ },
47
+ required: false,
48
+ target: { attribute: "prefixkind" },
49
+ description: "Text affixes have their own framing. An icon prefix shares the field surface and uses one compact icon-to-value gap.",
50
+ values: ["text", "icon"],
51
+ default: "text"
52
+ }
53
+ } };
31
54
  const props = __props;
32
- const acceptedProps = { disabled: false };
33
- const checkedProps = computed(() => ({ disabled: checkedProp(props["disabled"], {
34
- kind: "terminal",
35
- name: "boolean"
36
- }, false, "disabled", acceptedProps) }));
55
+ const acceptedProps = {
56
+ disabled: false,
57
+ prefixKind: "text"
58
+ };
59
+ const checkedProps = computed(() => ({
60
+ disabled: checkedProp(props["disabled"], {
61
+ kind: "terminal",
62
+ name: "boolean"
63
+ }, false, "disabled", acceptedProps),
64
+ prefixKind: checkedProp(props["prefixKind"], {
65
+ kind: "terminal",
66
+ name: "keyword"
67
+ }, false, "prefixKind", acceptedProps)
68
+ }));
37
69
  checkedProps.value;
38
70
  watchSyncEffect(() => {
39
71
  checkedProps.value;
@@ -61,7 +93,11 @@ var UiInputGroup_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
61
93
  })
62
94
  });
63
95
  /** The values the styles' :host-state() rules test. */
64
- const hostState = computed(() => [checkedProps.value.disabled && "disabled"].filter(Boolean).join(" "));
96
+ const hostState = computed(() => [
97
+ checkedProps.value.disabled && "disabled",
98
+ checkedProps.value.prefixKind && "prefixKind",
99
+ checkedProps.value.prefixKind != null && `prefixKind=${encodeURIComponent(checkedProps.value.prefixKind)}`
100
+ ].filter(Boolean).join(" "));
65
101
  const dispatch = createDispatch(root);
66
102
  useComponentHost(() => import("@threadlabs/looma/components/ui-input-group/ui-input-group.js"), {
67
103
  root,
@@ -76,7 +112,7 @@ var UiInputGroup_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
76
112
  const kebab = name.replace(/[A-Z]/g, (letter) => "-" + letter.toLowerCase());
77
113
  return incoming !== null && incoming !== void 0 ? incoming[name] ?? incoming[kebab] ?? null : null;
78
114
  },
79
- propNames: ["disabled"],
115
+ propNames: ["disabled", "prefixKind"],
80
116
  propValidity: (name) => propValidityState({
81
117
  contract: propValidityContract,
82
118
  values: { ...props }
@@ -85,6 +121,7 @@ var UiInputGroup_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
85
121
  return (_ctx, _cache) => {
86
122
  return withDirectives((openBlock(), createElementBlock("div", mergeProps({ "data-component": "ui-input-group" }, nativeAttrs(_ctx.$attrs), {
87
123
  "data-disabled": reflectedProp("disabled", "disabled", checkedProps.value.disabled, void 0, false),
124
+ "data-prefix-kind": reflectedProp("prefixKind", "prefix-kind", checkedProps.value.prefixKind, void 0, false),
88
125
  "data-ui-input-group-state": hostState.value || void 0,
89
126
  ref_key: "root",
90
127
  ref: root
@@ -99,6 +136,6 @@ var UiInputGroup_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
99
136
  }]]);
100
137
  };
101
138
  }
102
- }), [["__scopeId", "data-v-5cf4aea5"]]);
139
+ }), [["__scopeId", "data-v-7050a5eb"]]);
103
140
  //#endregion
104
141
  export { UiInputGroup_default as t };
@@ -7,6 +7,7 @@ var _hoisted_1 = [
7
7
  "data-for",
8
8
  "data-open",
9
9
  "data-placement",
10
+ "data-size",
10
11
  "data-ui-popover-state"
11
12
  ];
12
13
  var _hoisted_2 = { class: "surface" };
@@ -27,6 +28,10 @@ var UiPopover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
27
28
  placement: {
28
29
  type: null,
29
30
  default: "bottom-start"
31
+ },
32
+ size: {
33
+ type: null,
34
+ default: "content"
30
35
  }
31
36
  },
32
37
  emits: [
@@ -79,13 +84,30 @@ var UiPopover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
79
84
  "right-end"
80
85
  ],
81
86
  default: "bottom-start"
87
+ },
88
+ size: {
89
+ type: {
90
+ kind: "terminal",
91
+ name: "keyword"
92
+ },
93
+ required: false,
94
+ target: { attribute: "size" },
95
+ description: "Optional size preset. content keeps the existing intrinsic sizing; the other sizes constrain the surface for compact, medium, or large content.",
96
+ values: [
97
+ "content",
98
+ "sm",
99
+ "md",
100
+ "lg"
101
+ ],
102
+ default: "content"
82
103
  }
83
104
  } };
84
105
  const props = __props;
85
106
  const acceptedProps = {
86
107
  for: "",
87
108
  open: false,
88
- placement: "bottom-start"
109
+ placement: "bottom-start",
110
+ size: "content"
89
111
  };
90
112
  const checkedProps = computed(() => ({
91
113
  for: checkedProp(props["for"], {
@@ -99,7 +121,11 @@ var UiPopover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
99
121
  placement: checkedProp(props["placement"], {
100
122
  kind: "terminal",
101
123
  name: "keyword"
102
- }, false, "placement", acceptedProps)
124
+ }, false, "placement", acceptedProps),
125
+ size: checkedProp(props["size"], {
126
+ kind: "terminal",
127
+ name: "keyword"
128
+ }, false, "size", acceptedProps)
103
129
  }));
104
130
  checkedProps.value;
105
131
  watchSyncEffect(() => {
@@ -131,7 +157,11 @@ var UiPopover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
131
157
  })
132
158
  });
133
159
  /** The values the styles' :host-state() rules test. */
134
- const hostState = computed(() => [internalOpen.value && "internalOpen"].filter(Boolean).join(" "));
160
+ const hostState = computed(() => [
161
+ internalOpen.value && "internalOpen",
162
+ checkedProps.value.size && "size",
163
+ checkedProps.value.size != null && `size=${encodeURIComponent(checkedProps.value.size)}`
164
+ ].filter(Boolean).join(" "));
135
165
  const isOpenDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["open"] === "boolean" && (detail["reason"] === "action" || detail["reason"] === "programmatic" || detail["reason"] === "light-dismiss" || detail["reason"] === "escape") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
136
166
  "open",
137
167
  "reason",
@@ -160,7 +190,8 @@ var UiPopover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
160
190
  propNames: [
161
191
  "for",
162
192
  "open",
163
- "placement"
193
+ "placement",
194
+ "size"
164
195
  ],
165
196
  propValidity: (name) => propValidityState({
166
197
  contract: propValidityContract,
@@ -173,6 +204,7 @@ var UiPopover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
173
204
  "data-for": reflectedProp("for", "for", checkedProps.value.for, void 0, false),
174
205
  "data-open": reflectedProp("open", "open", checkedProps.value.open, void 0, false),
175
206
  "data-placement": reflectedProp("placement", "placement", checkedProps.value.placement, void 0, false),
207
+ "data-size": reflectedProp("size", "size", checkedProps.value.size, void 0, false),
176
208
  "data-ui-popover-state": hostState.value || void 0,
177
209
  ref_key: "root",
178
210
  ref: root
@@ -182,6 +214,6 @@ var UiPopover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
182
214
  }]]);
183
215
  };
184
216
  }
185
- }), [["__scopeId", "data-v-876af604"]]);
217
+ }), [["__scopeId", "data-v-639bc886"]]);
186
218
  //#endregion
187
219
  export { UiPopover_default as t };
@@ -3,7 +3,11 @@ import { r as useComponentHost, t as createDispatch } from "./host.js";
3
3
  import { i as vPropValidity, n as propValidityState, t as checkedProp } from "./props.js";
4
4
  import { computed, createElementBlock, createElementVNode, defineComponent, getCurrentInstance, mergeProps, openBlock, ref, renderSlot, unref, useTemplateRef, watchSyncEffect, withDirectives } from "vue";
5
5
  //#region .build/vue/UiScrollArea.vue?vue&type=script&setup=true&lang.ts
6
- var _hoisted_1 = ["data-orientation", "data-ui-scroll-area-state"];
6
+ var _hoisted_1 = [
7
+ "data-orientation",
8
+ "data-size",
9
+ "data-ui-scroll-area-state"
10
+ ];
7
11
  var _hoisted_2 = {
8
12
  class: "content",
9
13
  ref: "content"
@@ -13,28 +17,61 @@ var _hoisted_2 = {
13
17
  var UiScrollArea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
14
18
  inheritAttrs: false,
15
19
  __name: "UiScrollArea",
16
- props: { orientation: {
17
- type: null,
18
- default: "vertical"
19
- } },
20
+ props: {
21
+ orientation: {
22
+ type: null,
23
+ default: "vertical"
24
+ },
25
+ size: {
26
+ type: null,
27
+ default: "content"
28
+ }
29
+ },
20
30
  setup(__props) {
21
- const propValidityContract = { props: { orientation: {
22
- type: {
23
- kind: "terminal",
24
- name: "keyword"
31
+ const propValidityContract = { props: {
32
+ orientation: {
33
+ type: {
34
+ kind: "terminal",
35
+ name: "keyword"
36
+ },
37
+ required: false,
38
+ target: { attribute: "orientation" },
39
+ description: "The direction the content scrolls. Vertical scrolls up and down and clips sideways overflow; horizontal scrolls sideways and clips vertical\n overflow.",
40
+ values: ["vertical", "horizontal"],
41
+ default: "vertical"
25
42
  },
26
- required: false,
27
- target: { attribute: "orientation" },
28
- description: "The direction the content scrolls. Vertical scrolls up and down and clips sideways overflow; horizontal scrolls sideways and clips vertical\n overflow.",
29
- values: ["vertical", "horizontal"],
30
- default: "vertical"
31
- } } };
43
+ size: {
44
+ type: {
45
+ kind: "terminal",
46
+ name: "keyword"
47
+ },
48
+ required: false,
49
+ target: { attribute: "size" },
50
+ description: "Optional height preset. content keeps intrinsic sizing; sm fits three compact 3.125rem result rows, md is 20rem, and lg is 30rem.",
51
+ values: [
52
+ "content",
53
+ "sm",
54
+ "md",
55
+ "lg"
56
+ ],
57
+ default: "content"
58
+ }
59
+ } };
32
60
  const props = __props;
33
- const acceptedProps = { orientation: "vertical" };
34
- const checkedProps = computed(() => ({ orientation: checkedProp(props["orientation"], {
35
- kind: "terminal",
36
- name: "keyword"
37
- }, false, "orientation", acceptedProps) }));
61
+ const acceptedProps = {
62
+ orientation: "vertical",
63
+ size: "content"
64
+ };
65
+ const checkedProps = computed(() => ({
66
+ orientation: checkedProp(props["orientation"], {
67
+ kind: "terminal",
68
+ name: "keyword"
69
+ }, false, "orientation", acceptedProps),
70
+ size: checkedProp(props["size"], {
71
+ kind: "terminal",
72
+ name: "keyword"
73
+ }, false, "size", acceptedProps)
74
+ }));
38
75
  checkedProps.value;
39
76
  watchSyncEffect(() => {
40
77
  checkedProps.value;
@@ -63,7 +100,12 @@ var UiScrollArea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
63
100
  })
64
101
  });
65
102
  /** The values the styles' :host-state() rules test. */
66
- const hostState = computed(() => [checkedProps.value.orientation && "orientation", checkedProps.value.orientation != null && `orientation=${encodeURIComponent(checkedProps.value.orientation)}`].filter(Boolean).join(" "));
103
+ const hostState = computed(() => [
104
+ checkedProps.value.orientation && "orientation",
105
+ checkedProps.value.orientation != null && `orientation=${encodeURIComponent(checkedProps.value.orientation)}`,
106
+ checkedProps.value.size && "size",
107
+ checkedProps.value.size != null && `size=${encodeURIComponent(checkedProps.value.size)}`
108
+ ].filter(Boolean).join(" "));
67
109
  const dispatch = createDispatch(root);
68
110
  useComponentHost(() => import("@threadlabs/looma/components/ui-scroll-area/ui-scroll-area.js"), {
69
111
  root,
@@ -78,7 +120,7 @@ var UiScrollArea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
78
120
  const kebab = name.replace(/[A-Z]/g, (letter) => "-" + letter.toLowerCase());
79
121
  return incoming !== null && incoming !== void 0 ? incoming[name] ?? incoming[kebab] ?? null : null;
80
122
  },
81
- propNames: ["orientation"],
123
+ propNames: ["orientation", "size"],
82
124
  propValidity: (name) => propValidityState({
83
125
  contract: propValidityContract,
84
126
  values: { ...props }
@@ -88,6 +130,7 @@ var UiScrollArea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
88
130
  return (_ctx, _cache) => {
89
131
  return withDirectives((openBlock(), createElementBlock("div", mergeProps({ "data-component": "ui-scroll-area" }, nativeAttrs(_ctx.$attrs), {
90
132
  "data-orientation": reflectedProp("orientation", "orientation", checkedProps.value.orientation, void 0, false),
133
+ "data-size": reflectedProp("size", "size", checkedProps.value.size, void 0, false),
91
134
  "data-ui-scroll-area-state": hostState.value || void 0,
92
135
  ref_key: "root",
93
136
  ref: root
@@ -97,6 +140,6 @@ var UiScrollArea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
97
140
  }]]);
98
141
  };
99
142
  }
100
- }), [["__scopeId", "data-v-1357c460"]]);
143
+ }), [["__scopeId", "data-v-97150230"]]);
101
144
  //#endregion
102
145
  export { UiScrollArea_default as t };