@threadlabs/looma 0.25.4 → 0.25.6

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/ui-card/ui-card.html +27 -2
  2. package/components/ui-checkbox/ui-checkbox.html +2 -0
  3. package/components/ui-cluster/ui-cluster.html +35 -2
  4. package/components/ui-editor-surface/ui-editor-surface.html +23 -0
  5. package/components/ui-list-item/ui-list-item.html +12 -3
  6. package/components/ui-scroll-area/ui-scroll-area.html +5 -0
  7. package/components/ui-stack/ui-stack.html +17 -1
  8. package/components/ui-text/ui-text.html +5 -0
  9. package/components/ui-textarea/ui-textarea.html +7 -0
  10. package/dist/index.js +1 -1
  11. package/package.json +1 -1
  12. package/styles/ui-card.css +24 -0
  13. package/styles/ui-cluster.css +28 -0
  14. package/styles/ui-editor-surface.css +19 -0
  15. package/styles/ui-list-item.css +11 -3
  16. package/styles/ui-scroll-area.css +4 -0
  17. package/styles/ui-stack.css +13 -0
  18. package/styles/ui-text.css +4 -0
  19. package/styles/ui-textarea.css +4 -0
  20. package/vanilla/UiCard.d.ts +1 -1
  21. package/vanilla/UiCard.js +1 -1
  22. package/vanilla/UiCheckbox.d.ts +1 -0
  23. package/vanilla/UiCheckbox.js +18 -15
  24. package/vanilla/UiCluster.d.ts +4 -1
  25. package/vanilla/UiCluster.js +10 -4
  26. package/vanilla/UiEditorSurface.d.ts +14 -0
  27. package/vanilla/UiEditorSurface.js +27 -0
  28. package/vanilla/UiListItem.d.ts +1 -0
  29. package/vanilla/UiListItem.js +4 -2
  30. package/vanilla/UiScrollArea.d.ts +1 -0
  31. package/vanilla/UiScrollArea.js +1 -1
  32. package/vanilla/UiStack.d.ts +2 -0
  33. package/vanilla/UiStack.js +8 -9
  34. package/vanilla/UiText.d.ts +1 -0
  35. package/vanilla/UiText.js +1 -1
  36. package/vanilla/UiTextarea.d.ts +1 -0
  37. package/vanilla/UiTextarea.js +4 -1
  38. package/vanilla/index.js +1 -0
  39. package/vue/UiCard.d.ts +3 -3
  40. package/vue/UiCard.vue +34 -5
  41. package/vue/UiCheckbox.d.ts +9 -0
  42. package/vue/UiCheckbox.vue +20 -0
  43. package/vue/UiCluster.d.ts +30 -3
  44. package/vue/UiCluster.vue +102 -5
  45. package/vue/UiEditorSurface.d.ts +26 -0
  46. package/vue/UiEditorSurface.js +2 -0
  47. package/vue/UiEditorSurface.vue +129 -0
  48. package/vue/UiListItem.d.ts +9 -0
  49. package/vue/UiListItem.vue +35 -4
  50. package/vue/UiScrollArea.d.ts +9 -0
  51. package/vue/UiScrollArea.vue +28 -2
  52. package/vue/UiStack.d.ts +18 -0
  53. package/vue/UiStack.vue +58 -1
  54. package/vue/UiText.d.ts +9 -0
  55. package/vue/UiText.vue +33 -0
  56. package/vue/UiTextarea.d.ts +9 -0
  57. package/vue/UiTextarea.vue +37 -2
  58. package/vue/chunks/UiCard.js +10 -3
  59. package/vue/chunks/UiCheckbox.js +25 -1
  60. package/vue/chunks/UiCluster.js +85 -3
  61. package/vue/chunks/UiEditorSurface.js +71 -0
  62. package/vue/chunks/UiListItem.js +23 -1
  63. package/vue/chunks/UiScrollArea.js +28 -2
  64. package/vue/chunks/UiStack.js +46 -1
  65. package/vue/chunks/UiText.js +43 -1
  66. package/vue/chunks/UiTextarea.js +28 -2
  67. package/vue/components.css +255 -162
  68. package/vue/editor/LoomaEditor.d.ts +12 -0
  69. package/vue/editor/index.js +7 -2
  70. package/vue/index.d.ts +1 -0
  71. package/vue/index.js +2 -1
@@ -32,6 +32,13 @@ const propValidityContract = {
32
32
  description: 'Exposes invalid state to assistive technology and styling.',
33
33
  default: false,
34
34
  },
35
+ maxRows: {
36
+ type: { kind: 'terminal', name: 'integer' },
37
+ required: false,
38
+ target: { attribute: 'maxrows' },
39
+ description:
40
+ 'Optional maximum visible rows, for a growing field in a bounded layout. Extra text scrolls inside the field. Omit it to retain unbounded growth.',
41
+ },
35
42
  readonly: {
36
43
  type: { kind: 'terminal', name: 'boolean' },
37
44
  required: false,
@@ -75,6 +82,7 @@ const props = defineProps({
75
82
  autosize: { type: null as unknown as PropType<boolean | null>, default: false },
76
83
  disabled: { type: null as unknown as PropType<boolean | null>, default: false },
77
84
  invalid: { type: null as unknown as PropType<boolean | null>, default: false },
85
+ maxRows: { type: null as unknown as PropType<number | null>, default: null },
78
86
  readonly: { type: null as unknown as PropType<boolean | null>, default: false },
79
87
  required: { type: null as unknown as PropType<boolean | null>, default: false },
80
88
  rows: { type: null as unknown as PropType<number | null>, default: 4 },
@@ -86,6 +94,7 @@ const acceptedProps: Record<string, unknown> = {
86
94
  autosize: false,
87
95
  disabled: false,
88
96
  invalid: false,
97
+ maxRows: null,
89
98
  readonly: false,
90
99
  required: false,
91
100
  rows: 4,
@@ -114,6 +123,13 @@ const checkedProps = computed(() => ({
114
123
  'invalid',
115
124
  acceptedProps,
116
125
  ) as boolean,
126
+ maxRows: checkedProp<number>(
127
+ props['maxRows'],
128
+ { kind: 'terminal', name: 'integer' },
129
+ false,
130
+ 'maxRows',
131
+ acceptedProps,
132
+ ),
117
133
  readonly: checkedProp<boolean>(
118
134
  props['readonly'],
119
135
  { kind: 'terminal', name: 'boolean' },
@@ -225,6 +241,8 @@ const hostState = computed(() =>
225
241
  [
226
242
  checkedProps.value.size && 'size',
227
243
  checkedProps.value.size != null && `size=${encodeURIComponent(checkedProps.value.size)}`,
244
+ checkedProps.value.maxRows && 'maxRows',
245
+ checkedProps.value.maxRows != null && `maxRows=${checkedProps.value.maxRows}`,
228
246
  checkedProps.value.autosize && 'autosize',
229
247
  ].filter(Boolean).join(' ')
230
248
  )
@@ -246,7 +264,17 @@ useComponentHost(() => import('../components/ui-textarea/ui-textarea.js'), {
246
264
  ? (incoming[name] ?? incoming[kebab] ?? null)
247
265
  : null
248
266
  },
249
- propNames: ['autosize', 'disabled', 'invalid', 'readonly', 'required', 'rows', 'size', 'value'],
267
+ propNames: [
268
+ 'autosize',
269
+ 'disabled',
270
+ 'invalid',
271
+ 'maxRows',
272
+ 'readonly',
273
+ 'required',
274
+ 'rows',
275
+ 'size',
276
+ 'value',
277
+ ],
250
278
  propValidity: (name: string) =>
251
279
  propValidityState({ contract: propValidityContract, values: { ...props } }, name),
252
280
  })
@@ -261,11 +289,12 @@ useComponentHost(() => import('../components/ui-textarea/ui-textarea.js'), {
261
289
  :required="checkedProps.required ?? undefined"
262
290
  :aria-invalid="checkedProps.invalid ?? undefined"
263
291
  :rows="checkedProps.rows ?? undefined"
264
- :style="{ '--_rows': checkedProps.rows ?? undefined }"
292
+ :style="{ '--_rows': checkedProps.rows ?? undefined, '--_max-rows': checkedProps.maxRows ?? undefined }"
265
293
  v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
266
294
  :data-autosize="reflectedProp('autosize', 'autosize', checkedProps.autosize, undefined, false)"
267
295
  :data-disabled="reflectedProp('disabled', 'disabled', checkedProps.disabled, undefined, false)"
268
296
  :data-invalid="reflectedProp('invalid', 'invalid', checkedProps.invalid, undefined, false)"
297
+ :data-max-rows="reflectedProp('maxRows', 'max-rows', checkedProps.maxRows, undefined, false)"
269
298
  :data-readonly="reflectedProp('readonly', 'readonly', checkedProps.readonly, undefined, false)"
270
299
  :data-required="reflectedProp('required', 'required', checkedProps.required, undefined, false)"
271
300
  :data-rows="reflectedProp('rows', 'rows', checkedProps.rows, undefined, false)"
@@ -466,6 +495,12 @@ useComponentHost(() => import('../components/ui-textarea/ui-textarea.js'), {
466
495
  font-size: var(--ui-font-size-md);
467
496
  }
468
497
 
498
+ [data-component~="ui-textarea"][data-ui-textarea-state~="maxRows"] {
499
+ max-block-size: calc(
500
+ max(var(--_rows), var(--_max-rows)) * 1lh + var(--_padding-block) + var(--_padding-block) + 2px
501
+ );
502
+ }
503
+
469
504
  @supports (field-sizing: content) {
470
505
  [data-component~="ui-textarea"][data-ui-textarea-state~="autosize"] {
471
506
  field-sizing: content;
@@ -119,8 +119,15 @@ var UiCard_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
119
119
  },
120
120
  required: false,
121
121
  target: { attribute: "tone" },
122
- description: "danger adds a soft danger surface and a strong leading edge for consequential content.",
123
- values: ["neutral", "danger"],
122
+ description: "accent, info, success and warning add a quiet semantic surface. danger retains its strong leading edge for consequential content. Tone never changes child\n controls.",
123
+ values: [
124
+ "neutral",
125
+ "accent",
126
+ "info",
127
+ "success",
128
+ "warning",
129
+ "danger"
130
+ ],
124
131
  default: "neutral"
125
132
  },
126
133
  variant: {
@@ -267,6 +274,6 @@ var UiCard_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
267
274
  }]]);
268
275
  };
269
276
  }
270
- }), [["__scopeId", "data-v-fa2ae386"]]);
277
+ }), [["__scopeId", "data-v-c589f774"]]);
271
278
  //#endregion
272
279
  export { UiCard_default as t };
@@ -9,6 +9,7 @@ var _hoisted_1 = [
9
9
  "data-disabled",
10
10
  "data-indeterminate",
11
11
  "data-invalid",
12
+ "data-label",
12
13
  "data-name",
13
14
  "data-required",
14
15
  "data-size",
@@ -16,6 +17,7 @@ var _hoisted_1 = [
16
17
  "data-ui-checkbox-state"
17
18
  ];
18
19
  var _hoisted_2 = [
20
+ "aria-label",
19
21
  ".indeterminate",
20
22
  "disabled",
21
23
  "aria-invalid",
@@ -55,6 +57,10 @@ var UiCheckbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
55
57
  type: null,
56
58
  default: false
57
59
  },
60
+ label: {
61
+ type: null,
62
+ default: ""
63
+ },
58
64
  name: {
59
65
  type: null,
60
66
  default: ""
@@ -119,6 +125,16 @@ var UiCheckbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
119
125
  description: "Exposes an externally validated error and styles the checkbox with the field danger colour.",
120
126
  default: false
121
127
  },
128
+ label: {
129
+ type: {
130
+ kind: "terminal",
131
+ name: "string"
132
+ },
133
+ required: false,
134
+ target: { attribute: "aria-label" },
135
+ description: "An accessible name for a checkbox without a visible label slot. It names the native input.",
136
+ default: ""
137
+ },
122
138
  name: {
123
139
  type: {
124
140
  kind: "terminal",
@@ -171,6 +187,7 @@ var UiCheckbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
171
187
  disabled: false,
172
188
  indeterminate: false,
173
189
  invalid: false,
190
+ label: "",
174
191
  name: "",
175
192
  required: false,
176
193
  size: "md",
@@ -193,6 +210,10 @@ var UiCheckbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
193
210
  kind: "terminal",
194
211
  name: "boolean"
195
212
  }, false, "invalid", acceptedProps),
213
+ label: checkedProp(props["label"], {
214
+ kind: "terminal",
215
+ name: "string"
216
+ }, false, "label", acceptedProps),
196
217
  name: checkedProp(props["name"], {
197
218
  kind: "terminal",
198
219
  name: "string"
@@ -284,6 +305,7 @@ var UiCheckbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
284
305
  "disabled",
285
306
  "indeterminate",
286
307
  "invalid",
308
+ "label",
287
309
  "name",
288
310
  "required",
289
311
  "size",
@@ -305,6 +327,7 @@ var UiCheckbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
305
327
  "data-disabled": reflectedProp("disabled", "disabled", checkedProps.value.disabled, void 0, false),
306
328
  "data-indeterminate": reflectedProp("indeterminate", "indeterminate", checkedProps.value.indeterminate, void 0, false),
307
329
  "data-invalid": reflectedProp("invalid", "invalid", checkedProps.value.invalid, void 0, false),
330
+ "data-label": reflectedProp("label", "label", checkedProps.value.label, void 0, false),
308
331
  "data-name": reflectedProp("name", "name", checkedProps.value.name, void 0, false),
309
332
  "data-required": reflectedProp("required", "required", checkedProps.value.required, void 0, false),
310
333
  "data-size": reflectedProp("size", "size", checkedProps.value.size, void 0, false),
@@ -314,6 +337,7 @@ var UiCheckbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
314
337
  ref: root
315
338
  }), [withDirectives(createElementVNode("input", {
316
339
  type: "checkbox",
340
+ "aria-label": checkedProps.value.label ?? void 0,
317
341
  ".indeterminate": checkedProps.value.indeterminate,
318
342
  disabled: checkedProps.value.disabled ?? void 0,
319
343
  "aria-invalid": checkedProps.value.invalid ?? void 0,
@@ -339,6 +363,6 @@ var UiCheckbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
339
363
  }]]);
340
364
  };
341
365
  }
342
- }), [["__scopeId", "data-v-ce204e6e"]]);
366
+ }), [["__scopeId", "data-v-3bebca63"]]);
343
367
  //#endregion
344
368
  export { UiCheckbox_default as t };
@@ -4,8 +4,11 @@ import { computed, createElementBlock, defineComponent, getCurrentInstance, merg
4
4
  //#region .build/vue/UiCluster.vue?vue&type=script&setup=true&lang.ts
5
5
  var _hoisted_1 = [
6
6
  "data-align",
7
+ "data-fixed",
7
8
  "data-gap",
8
9
  "data-justify",
10
+ "data-padding",
11
+ "data-padding-end",
9
12
  "data-wrap",
10
13
  "data-ui-cluster-state"
11
14
  ];
@@ -19,6 +22,10 @@ var UiCluster_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
19
22
  type: null,
20
23
  default: null
21
24
  },
25
+ fixed: {
26
+ type: null,
27
+ default: false
28
+ },
22
29
  gap: {
23
30
  type: null,
24
31
  default: null
@@ -27,6 +34,14 @@ var UiCluster_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
27
34
  type: null,
28
35
  default: null
29
36
  },
37
+ padding: {
38
+ type: null,
39
+ default: "none"
40
+ },
41
+ paddingEnd: {
42
+ type: null,
43
+ default: "none"
44
+ },
30
45
  wrap: {
31
46
  type: null,
32
47
  default: null
@@ -41,14 +56,25 @@ var UiCluster_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
41
56
  },
42
57
  required: false,
43
58
  target: { attribute: "align" },
44
- description: "How items line up within each row: center (the default) aligns their middles, start their tops, end their bottoms, and stretch makes every item as tall as\n its row.",
59
+ description: "How items line up within each row: center (the default) aligns their middles, start their tops, end their bottoms, and stretch makes every item as tall as\n its row. baseline aligns the first text baselines, including multiline columns.",
45
60
  values: [
46
61
  "start",
47
62
  "center",
48
63
  "end",
49
- "stretch"
64
+ "stretch",
65
+ "baseline"
50
66
  ]
51
67
  },
68
+ fixed: {
69
+ type: {
70
+ kind: "terminal",
71
+ name: "boolean"
72
+ },
73
+ required: false,
74
+ target: { attribute: "fixed" },
75
+ description: "Keeps this group at its content size inside a flex layout.",
76
+ default: false
77
+ },
52
78
  gap: {
53
79
  type: {
54
80
  kind: "terminal",
@@ -80,6 +106,39 @@ var UiCluster_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
80
106
  "between"
81
107
  ]
82
108
  },
109
+ padding: {
110
+ type: {
111
+ kind: "terminal",
112
+ name: "keyword"
113
+ },
114
+ required: false,
115
+ target: { attribute: "padding" },
116
+ description: "Optional internal space for an action group, using the shared spacing scale.",
117
+ values: [
118
+ "none",
119
+ "s",
120
+ "m",
121
+ "l"
122
+ ],
123
+ default: "none"
124
+ },
125
+ paddingEnd: {
126
+ type: {
127
+ kind: "terminal",
128
+ name: "keyword"
129
+ },
130
+ required: false,
131
+ target: { attribute: "paddingend" },
132
+ description: "Optional extra space at the inline end, such as clearance beside another control. xl is 4rem.",
133
+ values: [
134
+ "none",
135
+ "s",
136
+ "m",
137
+ "l",
138
+ "xl"
139
+ ],
140
+ default: "none"
141
+ },
83
142
  wrap: {
84
143
  type: {
85
144
  kind: "terminal",
@@ -94,8 +153,11 @@ var UiCluster_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
94
153
  const props = __props;
95
154
  const acceptedProps = {
96
155
  align: null,
156
+ fixed: false,
97
157
  gap: null,
98
158
  justify: null,
159
+ padding: "none",
160
+ paddingEnd: "none",
99
161
  wrap: null
100
162
  };
101
163
  const checkedProps = computed(() => ({
@@ -103,6 +165,10 @@ var UiCluster_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
103
165
  kind: "terminal",
104
166
  name: "keyword"
105
167
  }, false, "align", acceptedProps),
168
+ fixed: checkedProp(props["fixed"], {
169
+ kind: "terminal",
170
+ name: "boolean"
171
+ }, false, "fixed", acceptedProps),
106
172
  gap: checkedProp(props["gap"], {
107
173
  kind: "terminal",
108
174
  name: "keyword"
@@ -111,6 +177,14 @@ var UiCluster_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
111
177
  kind: "terminal",
112
178
  name: "keyword"
113
179
  }, false, "justify", acceptedProps),
180
+ padding: checkedProp(props["padding"], {
181
+ kind: "terminal",
182
+ name: "keyword"
183
+ }, false, "padding", acceptedProps),
184
+ paddingEnd: checkedProp(props["paddingEnd"], {
185
+ kind: "terminal",
186
+ name: "keyword"
187
+ }, false, "paddingEnd", acceptedProps),
114
188
  wrap: checkedProp(props["wrap"], {
115
189
  kind: "terminal",
116
190
  name: "keyword"
@@ -142,6 +216,11 @@ var UiCluster_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
142
216
  });
143
217
  /** The values the styles' :host-state() rules test. */
144
218
  const hostState = computed(() => [
219
+ checkedProps.value.fixed && "fixed",
220
+ checkedProps.value.padding && "padding",
221
+ checkedProps.value.padding != null && `padding=${encodeURIComponent(checkedProps.value.padding)}`,
222
+ checkedProps.value.paddingEnd && "paddingEnd",
223
+ checkedProps.value.paddingEnd != null && `paddingEnd=${encodeURIComponent(checkedProps.value.paddingEnd)}`,
145
224
  checkedProps.value.gap && "gap",
146
225
  checkedProps.value.gap != null && `gap=${encodeURIComponent(checkedProps.value.gap)}`,
147
226
  checkedProps.value.align && "align",
@@ -154,8 +233,11 @@ var UiCluster_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
154
233
  return (_ctx, _cache) => {
155
234
  return withDirectives((openBlock(), createElementBlock("div", mergeProps({ "data-component": "ui-cluster" }, nativeAttrs(_ctx.$attrs), {
156
235
  "data-align": reflectedProp("align", "align", checkedProps.value.align, void 0, false),
236
+ "data-fixed": reflectedProp("fixed", "fixed", checkedProps.value.fixed, void 0, false),
157
237
  "data-gap": reflectedProp("gap", "gap", checkedProps.value.gap, void 0, false),
158
238
  "data-justify": reflectedProp("justify", "justify", checkedProps.value.justify, void 0, false),
239
+ "data-padding": reflectedProp("padding", "padding", checkedProps.value.padding, void 0, false),
240
+ "data-padding-end": reflectedProp("paddingEnd", "padding-end", checkedProps.value.paddingEnd, void 0, false),
159
241
  "data-wrap": reflectedProp("wrap", "wrap", checkedProps.value.wrap, void 0, false),
160
242
  "data-ui-cluster-state": hostState.value || void 0
161
243
  }), [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_1)), [[unref(vPropValidity), {
@@ -164,6 +246,6 @@ var UiCluster_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
164
246
  }]]);
165
247
  };
166
248
  }
167
- }), [["__scopeId", "data-v-fafdad21"]]);
249
+ }), [["__scopeId", "data-v-acd23e4a"]]);
168
250
  //#endregion
169
251
  export { UiCluster_default as t };
@@ -0,0 +1,71 @@
1
+ import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
2
+ import { a as vPropValidity, n as checkedProp } from "./props.js";
3
+ import { computed, createElementBlock, defineComponent, getCurrentInstance, mergeProps, openBlock, renderSlot, unref, watchSyncEffect, withDirectives } from "vue";
4
+ //#region .build/vue/UiEditorSurface.vue?vue&type=script&setup=true&lang.ts
5
+ var _hoisted_1 = ["data-density", "data-ui-editor-surface-state"];
6
+ //#endregion
7
+ //#region .build/vue/UiEditorSurface.vue
8
+ var UiEditorSurface_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
9
+ inheritAttrs: false,
10
+ __name: "UiEditorSurface",
11
+ props: { density: {
12
+ type: null,
13
+ default: "comfortable"
14
+ } },
15
+ setup(__props) {
16
+ const propValidityContract = { props: { density: {
17
+ type: {
18
+ kind: "terminal",
19
+ name: "keyword"
20
+ },
21
+ required: false,
22
+ target: { attribute: "density" },
23
+ description: "The document canvas. comfortable preserves the editor's normal room and mobile toolbar clearance. compact fits a read-only excerpt to its content without\n outer padding.",
24
+ values: ["comfortable", "compact"],
25
+ default: "comfortable"
26
+ } } };
27
+ const props = __props;
28
+ const acceptedProps = { density: "comfortable" };
29
+ const checkedProps = computed(() => ({ density: checkedProp(props["density"], {
30
+ kind: "terminal",
31
+ name: "keyword"
32
+ }, false, "density", acceptedProps) }));
33
+ checkedProps.value;
34
+ watchSyncEffect(() => {
35
+ checkedProps.value;
36
+ });
37
+ function nativeAttrs(attrs) {
38
+ const names = Object.keys(attrs);
39
+ if (!names.some((name) => Object.hasOwn(Object.prototype, name))) return attrs;
40
+ return Object.fromEntries(names.map((name) => [Object.hasOwn(Object.prototype, name) ? name === "__proto__" ? "__Proto__" : name[0].toUpperCase() + name.slice(1) : name, attrs[name]]));
41
+ }
42
+ const componentInstance = getCurrentInstance();
43
+ function reflectedProp(name, kebab, value, fallback, bound, separator) {
44
+ const incoming = componentInstance?.vnode.props;
45
+ if (!bound && (incoming === null || incoming === void 0 || !Object.hasOwn(incoming, name) && !Object.hasOwn(incoming, kebab))) return fallback;
46
+ if (value === null || value === void 0) return void 0;
47
+ return Array.isArray(value) && separator !== void 0 ? value.join(separator) : typeof value === "object" ? JSON.stringify(value) : String(value);
48
+ }
49
+ const hydrationNode = getCurrentInstance()?.vnode.el;
50
+ if (typeof window !== "undefined" && hydrationNode != null && (!(hydrationNode instanceof Element) || hydrationNode.localName !== "div")) throw Object.assign(/* @__PURE__ */ new Error("HR005: Server markup for <ui-editor-surface> has an incompatible root."), {
51
+ name: "HtmlDiagnosticError",
52
+ diagnostic: Object.freeze({
53
+ code: "HR005",
54
+ message: "Server markup for <ui-editor-surface> has an incompatible root."
55
+ })
56
+ });
57
+ /** The values the styles' :host-state() rules test. */
58
+ const hostState = computed(() => [checkedProps.value.density && "density", checkedProps.value.density != null && `density=${encodeURIComponent(checkedProps.value.density)}`].filter(Boolean).join(" "));
59
+ return (_ctx, _cache) => {
60
+ return withDirectives((openBlock(), createElementBlock("div", mergeProps({ "data-component": "ui-editor-surface" }, nativeAttrs(_ctx.$attrs), {
61
+ "data-density": reflectedProp("density", "density", checkedProps.value.density, void 0, false),
62
+ "data-ui-editor-surface-state": hostState.value || void 0
63
+ }), [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_1)), [[unref(vPropValidity), {
64
+ contract: propValidityContract,
65
+ values: { ...props }
66
+ }]]);
67
+ };
68
+ }
69
+ }), [["__scopeId", "data-v-7e72ed22"]]);
70
+ //#endregion
71
+ export { UiEditorSurface_default as t };
@@ -6,6 +6,7 @@ var _hoisted_1 = [
6
6
  "aria-current",
7
7
  "data-current",
8
8
  "data-highlighted",
9
+ "data-leading-interactive",
9
10
  "data-variant",
10
11
  "data-wrap",
11
12
  "data-ui-list-item-state"
@@ -29,6 +30,10 @@ var UiListItem_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
29
30
  type: null,
30
31
  default: false
31
32
  },
33
+ leadingInteractive: {
34
+ type: null,
35
+ default: false
36
+ },
32
37
  variant: {
33
38
  type: null,
34
39
  default: "row"
@@ -60,6 +65,16 @@ var UiListItem_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
60
65
  description: "Gives an item a quiet accent wash without changing its text or announcing selection. Several items may be highlighted, such as new messages. Describe the\n reason in the item's text; use current only for the current destination.",
61
66
  default: false
62
67
  },
68
+ leadingInteractive: {
69
+ type: {
70
+ kind: "terminal",
71
+ name: "boolean"
72
+ },
73
+ required: false,
74
+ target: { attribute: "leadinginteractive" },
75
+ description: "Makes the leading region an independent control above the row link. Use it for a checkbox or button; keep noninteractive row icons in the title link when\n combining them with a leading control.",
76
+ default: false
77
+ },
63
78
  variant: {
64
79
  type: {
65
80
  kind: "terminal",
@@ -86,6 +101,7 @@ var UiListItem_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
86
101
  const acceptedProps = {
87
102
  current: false,
88
103
  highlighted: false,
104
+ leadingInteractive: false,
89
105
  variant: "row",
90
106
  wrap: false
91
107
  };
@@ -98,6 +114,10 @@ var UiListItem_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
98
114
  kind: "terminal",
99
115
  name: "boolean"
100
116
  }, false, "highlighted", acceptedProps),
117
+ leadingInteractive: checkedProp(props["leadingInteractive"], {
118
+ kind: "terminal",
119
+ name: "boolean"
120
+ }, false, "leadingInteractive", acceptedProps),
101
121
  variant: checkedProp(props["variant"], {
102
122
  kind: "terminal",
103
123
  name: "keyword"
@@ -137,6 +157,7 @@ var UiListItem_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
137
157
  checkedProps.value.variant != null && `variant=${encodeURIComponent(checkedProps.value.variant)}`,
138
158
  checkedProps.value.highlighted && "highlighted",
139
159
  checkedProps.value.current && "current",
160
+ checkedProps.value.leadingInteractive && "leadingInteractive",
140
161
  checkedProps.value.wrap && "wrap"
141
162
  ].filter(Boolean).join(" "));
142
163
  return (_ctx, _cache) => {
@@ -144,6 +165,7 @@ var UiListItem_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
144
165
  "aria-current": checkedProps.value.current ?? void 0,
145
166
  "data-current": reflectedProp("current", "current", checkedProps.value.current, void 0, false),
146
167
  "data-highlighted": reflectedProp("highlighted", "highlighted", checkedProps.value.highlighted, void 0, false),
168
+ "data-leading-interactive": reflectedProp("leadingInteractive", "leading-interactive", checkedProps.value.leadingInteractive, void 0, false),
147
169
  "data-variant": reflectedProp("variant", "variant", checkedProps.value.variant, void 0, false),
148
170
  "data-wrap": reflectedProp("wrap", "wrap", checkedProps.value.wrap, void 0, false),
149
171
  "data-ui-list-item-state": hostState.value || void 0
@@ -157,6 +179,6 @@ var UiListItem_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
157
179
  }]]);
158
180
  };
159
181
  }
160
- }), [["__scopeId", "data-v-9f16562f"]]);
182
+ }), [["__scopeId", "data-v-8b9a3e2b"]]);
161
183
  //#endregion
162
184
  export { UiListItem_default as t };
@@ -4,6 +4,7 @@ import { a as vPropValidity, n as checkedProp, r as propValidityState } from "./
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
6
  var _hoisted_1 = [
7
+ "data-fill",
7
8
  "data-orientation",
8
9
  "data-size",
9
10
  "data-ui-scroll-area-state"
@@ -14,6 +15,10 @@ var UiScrollArea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
14
15
  inheritAttrs: false,
15
16
  __name: "UiScrollArea",
16
17
  props: {
18
+ fill: {
19
+ type: null,
20
+ default: false
21
+ },
17
22
  orientation: {
18
23
  type: null,
19
24
  default: "vertical"
@@ -25,6 +30,16 @@ var UiScrollArea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
25
30
  },
26
31
  setup(__props) {
27
32
  const propValidityContract = { props: {
33
+ fill: {
34
+ type: {
35
+ kind: "terminal",
36
+ name: "boolean"
37
+ },
38
+ required: false,
39
+ target: { attribute: "fill" },
40
+ description: "Grows into remaining space within a flex layout while keeping content independently scrollable.",
41
+ default: false
42
+ },
28
43
  orientation: {
29
44
  type: {
30
45
  kind: "terminal",
@@ -55,10 +70,15 @@ var UiScrollArea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
55
70
  } };
56
71
  const props = __props;
57
72
  const acceptedProps = {
73
+ fill: false,
58
74
  orientation: "vertical",
59
75
  size: "content"
60
76
  };
61
77
  const checkedProps = computed(() => ({
78
+ fill: checkedProp(props["fill"], {
79
+ kind: "terminal",
80
+ name: "boolean"
81
+ }, false, "fill", acceptedProps),
62
82
  orientation: checkedProp(props["orientation"], {
63
83
  kind: "terminal",
64
84
  name: "keyword"
@@ -97,6 +117,7 @@ var UiScrollArea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
97
117
  });
98
118
  /** The values the styles' :host-state() rules test. */
99
119
  const hostState = computed(() => [
120
+ checkedProps.value.fill && "fill",
100
121
  checkedProps.value.orientation && "orientation",
101
122
  checkedProps.value.orientation != null && `orientation=${encodeURIComponent(checkedProps.value.orientation)}`,
102
123
  checkedProps.value.size && "size",
@@ -116,7 +137,11 @@ var UiScrollArea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
116
137
  const kebab = name.replace(/[A-Z]/g, (letter) => "-" + letter.toLowerCase());
117
138
  return incoming !== null && incoming !== void 0 ? incoming[name] ?? incoming[kebab] ?? null : null;
118
139
  },
119
- propNames: ["orientation", "size"],
140
+ propNames: [
141
+ "fill",
142
+ "orientation",
143
+ "size"
144
+ ],
120
145
  propValidity: (name) => propValidityState({
121
146
  contract: propValidityContract,
122
147
  values: { ...props }
@@ -125,6 +150,7 @@ var UiScrollArea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
125
150
  });
126
151
  return (_ctx, _cache) => {
127
152
  return withDirectives((openBlock(), createElementBlock("div", mergeProps({ "data-component": "ui-scroll-area" }, nativeAttrs(_ctx.$attrs), {
153
+ "data-fill": reflectedProp("fill", "fill", checkedProps.value.fill, void 0, false),
128
154
  "data-orientation": reflectedProp("orientation", "orientation", checkedProps.value.orientation, void 0, false),
129
155
  "data-size": reflectedProp("size", "size", checkedProps.value.size, void 0, false),
130
156
  "data-ui-scroll-area-state": hostState.value || void 0,
@@ -140,6 +166,6 @@ var UiScrollArea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
140
166
  }]]);
141
167
  };
142
168
  }
143
- }), [["__scopeId", "data-v-7357ecdb"]]);
169
+ }), [["__scopeId", "data-v-1f6366dd"]]);
144
170
  //#endregion
145
171
  export { UiScrollArea_default as t };