blessing-ui 0.1.0 → 0.3.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 (200) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/README.md +139 -105
  3. package/dist/blessing-ui.css +97 -1
  4. package/dist/components/BlessAnnotator.css +1 -0
  5. package/dist/components/BlessAnnotator.js +6 -0
  6. package/dist/components/BlessAnnotator.vue.d.ts +71 -0
  7. package/dist/components/BlessAnnotator.vue_vue_type_script_setup_true_lang.js +264 -0
  8. package/dist/components/BlessAttachment.vue.d.ts +4 -1
  9. package/dist/components/BlessAttachment.vue_vue_type_script_setup_true_lang.js +3 -2
  10. package/dist/components/BlessCalendar.vue.d.ts +4 -0
  11. package/dist/components/BlessCalendar.vue_vue_type_script_setup_true_lang.js +65 -60
  12. package/dist/components/BlessCarousel.vue.d.ts +3 -0
  13. package/dist/components/BlessCarousel.vue_vue_type_script_setup_true_lang.js +10 -9
  14. package/dist/components/BlessCoachmark.css +1 -0
  15. package/dist/components/BlessCoachmark.js +6 -0
  16. package/dist/components/BlessCoachmark.vue.d.ts +40 -0
  17. package/dist/components/BlessCoachmark.vue_vue_type_script_setup_true_lang.js +74 -0
  18. package/dist/components/BlessCodeBlock.css +1 -0
  19. package/dist/components/BlessCodeBlock.js +6 -0
  20. package/dist/components/BlessCodeBlock.vue.d.ts +72 -0
  21. package/dist/components/BlessCodeBlock.vue_vue_type_script_setup_true_lang.js +140 -0
  22. package/dist/components/BlessCombobox.vue.d.ts +2 -0
  23. package/dist/components/BlessCombobox.vue_vue_type_script_setup_true_lang.js +3 -2
  24. package/dist/components/BlessCommand.css +1 -1
  25. package/dist/components/BlessCommand.vue.d.ts +26 -0
  26. package/dist/components/BlessCommand.vue_vue_type_script_setup_true_lang.js +137 -70
  27. package/dist/components/BlessConfetti.css +1 -0
  28. package/dist/components/BlessConfetti.js +6 -0
  29. package/dist/components/BlessConfetti.vue.d.ts +40 -0
  30. package/dist/components/BlessConfetti.vue_vue_type_script_setup_true_lang.js +77 -0
  31. package/dist/components/BlessCountUp.css +1 -0
  32. package/dist/components/BlessCountUp.js +6 -0
  33. package/dist/components/BlessCountUp.vue.d.ts +18 -0
  34. package/dist/components/BlessCountUp.vue_vue_type_script_setup_true_lang.js +49 -0
  35. package/dist/components/BlessCropper.css +1 -0
  36. package/dist/components/BlessCropper.js +6 -0
  37. package/dist/components/BlessCropper.vue.d.ts +70 -0
  38. package/dist/components/BlessCropper.vue_vue_type_script_setup_true_lang.js +220 -0
  39. package/dist/components/BlessDataTable.vue.d.ts +6 -0
  40. package/dist/components/BlessDataTable.vue_vue_type_script_setup_true_lang.js +56 -42
  41. package/dist/components/BlessDataView.vue.d.ts +7 -0
  42. package/dist/components/BlessDataView.vue_vue_type_script_setup_true_lang.js +38 -31
  43. package/dist/components/BlessDatePicker.vue.d.ts +3 -0
  44. package/dist/components/BlessDatePicker.vue_vue_type_script_setup_true_lang.js +46 -45
  45. package/dist/components/BlessDiff.css +1 -0
  46. package/dist/components/BlessDiff.js +6 -0
  47. package/dist/components/BlessDiff.vue.d.ts +22 -0
  48. package/dist/components/BlessDiff.vue_vue_type_script_setup_true_lang.js +148 -0
  49. package/dist/components/BlessDock.css +1 -0
  50. package/dist/components/BlessDock.js +6 -0
  51. package/dist/components/BlessDock.vue.d.ts +55 -0
  52. package/dist/components/BlessDock.vue_vue_type_script_setup_true_lang.js +100 -0
  53. package/dist/components/BlessEditor.vue.d.ts +2 -0
  54. package/dist/components/BlessEditor.vue_vue_type_script_setup_true_lang.js +23 -22
  55. package/dist/components/BlessFileInput.vue.d.ts +2 -0
  56. package/dist/components/BlessFileInput.vue_vue_type_script_setup_true_lang.js +3 -2
  57. package/dist/components/BlessFormula.css +1 -0
  58. package/dist/components/BlessFormula.js +6 -0
  59. package/dist/components/BlessFormula.vue.d.ts +53 -0
  60. package/dist/components/BlessFormula.vue_vue_type_script_setup_true_lang.js +111 -0
  61. package/dist/components/BlessGantt.css +1 -0
  62. package/dist/components/BlessGantt.js +6 -0
  63. package/dist/components/BlessGantt.vue.d.ts +81 -0
  64. package/dist/components/BlessGantt.vue_vue_type_script_setup_true_lang.js +276 -0
  65. package/dist/components/BlessGauge.css +1 -0
  66. package/dist/components/BlessGauge.js +6 -0
  67. package/dist/components/BlessGauge.vue.d.ts +36 -0
  68. package/dist/components/BlessGauge.vue_vue_type_script_setup_true_lang.js +100 -0
  69. package/dist/components/BlessHeatmapCalendar.css +1 -0
  70. package/dist/components/BlessHeatmapCalendar.js +6 -0
  71. package/dist/components/BlessHeatmapCalendar.vue.d.ts +38 -0
  72. package/dist/components/BlessHeatmapCalendar.vue_vue_type_script_setup_true_lang.js +146 -0
  73. package/dist/components/BlessHotspots.css +1 -0
  74. package/dist/components/BlessHotspots.js +6 -0
  75. package/dist/components/BlessHotspots.vue.d.ts +49 -0
  76. package/dist/components/BlessHotspots.vue_vue_type_script_setup_true_lang.js +127 -0
  77. package/dist/components/BlessInfiniteCanvas.css +1 -0
  78. package/dist/components/BlessInfiniteCanvas.js +6 -0
  79. package/dist/components/BlessInfiniteCanvas.vue.d.ts +91 -0
  80. package/dist/components/BlessInfiniteCanvas.vue_vue_type_script_setup_true_lang.js +232 -0
  81. package/dist/components/BlessInputNumber.vue.d.ts +5 -0
  82. package/dist/components/BlessInputNumber.vue_vue_type_script_setup_true_lang.js +39 -34
  83. package/dist/components/BlessKanban.css +1 -0
  84. package/dist/components/BlessKanban.js +6 -0
  85. package/dist/components/BlessKanban.vue.d.ts +67 -0
  86. package/dist/components/BlessKanban.vue_vue_type_script_setup_true_lang.js +195 -0
  87. package/dist/components/BlessLoadingBar.vue.d.ts +2 -0
  88. package/dist/components/BlessLoadingBar.vue_vue_type_script_setup_true_lang.js +8 -3
  89. package/dist/components/BlessLoupe.css +1 -0
  90. package/dist/components/BlessLoupe.js +6 -0
  91. package/dist/components/BlessLoupe.vue.d.ts +16 -0
  92. package/dist/components/BlessLoupe.vue_vue_type_script_setup_true_lang.js +93 -0
  93. package/dist/components/BlessMarquee.css +1 -0
  94. package/dist/components/BlessMarquee.js +6 -0
  95. package/dist/components/BlessMarquee.vue.d.ts +44 -0
  96. package/dist/components/BlessMarquee.vue_vue_type_script_setup_true_lang.js +69 -0
  97. package/dist/components/BlessMasonry.css +1 -0
  98. package/dist/components/BlessMasonry.js +6 -0
  99. package/dist/components/BlessMasonry.vue.d.ts +33 -0
  100. package/dist/components/BlessMasonry.vue_vue_type_script_setup_true_lang.js +79 -0
  101. package/dist/components/BlessMention.css +1 -0
  102. package/dist/components/BlessMention.js +6 -0
  103. package/dist/components/BlessMention.vue.d.ts +32 -0
  104. package/dist/components/BlessMention.vue_vue_type_script_setup_true_lang.js +116 -0
  105. package/dist/components/BlessNodeGraph.css +1 -0
  106. package/dist/components/BlessNodeGraph.js +6 -0
  107. package/dist/components/BlessNodeGraph.vue.d.ts +110 -0
  108. package/dist/components/BlessNodeGraph.vue_vue_type_script_setup_true_lang.js +321 -0
  109. package/dist/components/BlessOnboardingChecklist.css +1 -0
  110. package/dist/components/BlessOnboardingChecklist.js +6 -0
  111. package/dist/components/BlessOnboardingChecklist.vue.d.ts +72 -0
  112. package/dist/components/BlessOnboardingChecklist.vue_vue_type_script_setup_true_lang.js +157 -0
  113. package/dist/components/BlessOrderList.vue.d.ts +5 -0
  114. package/dist/components/BlessOrderList.vue_vue_type_script_setup_true_lang.js +62 -56
  115. package/dist/components/BlessPagination.vue.d.ts +2 -0
  116. package/dist/components/BlessPagination.vue_vue_type_script_setup_true_lang.js +2 -1
  117. package/dist/components/BlessPickList.vue.d.ts +5 -0
  118. package/dist/components/BlessPickList.vue_vue_type_script_setup_true_lang.js +55 -49
  119. package/dist/components/BlessRadialMenu.css +1 -0
  120. package/dist/components/BlessRadialMenu.js +6 -0
  121. package/dist/components/BlessRadialMenu.vue.d.ts +45 -0
  122. package/dist/components/BlessRadialMenu.vue_vue_type_script_setup_true_lang.js +146 -0
  123. package/dist/components/BlessRangeCalendar.css +1 -0
  124. package/dist/components/BlessRangeCalendar.js +6 -0
  125. package/dist/components/BlessRangeCalendar.vue.d.ts +51 -0
  126. package/dist/components/BlessRangeCalendar.vue_vue_type_script_setup_true_lang.js +217 -0
  127. package/dist/components/BlessScheduler.css +1 -0
  128. package/dist/components/BlessScheduler.js +6 -0
  129. package/dist/components/BlessScheduler.vue.d.ts +95 -0
  130. package/dist/components/BlessScheduler.vue_vue_type_script_setup_true_lang.js +347 -0
  131. package/dist/components/BlessShortcutRecorder.css +1 -0
  132. package/dist/components/BlessShortcutRecorder.js +6 -0
  133. package/dist/components/BlessShortcutRecorder.vue.d.ts +39 -0
  134. package/dist/components/BlessShortcutRecorder.vue_vue_type_script_setup_true_lang.js +126 -0
  135. package/dist/components/BlessSignaturePad.vue.d.ts +1 -1
  136. package/dist/components/BlessSliderCaptcha.css +1 -0
  137. package/dist/components/BlessSliderCaptcha.js +6 -0
  138. package/dist/components/BlessSliderCaptcha.vue.d.ts +38 -0
  139. package/dist/components/BlessSliderCaptcha.vue_vue_type_script_setup_true_lang.js +146 -0
  140. package/dist/components/BlessSortable.css +1 -0
  141. package/dist/components/BlessSortable.js +6 -0
  142. package/dist/components/BlessSortable.vue.d.ts +51 -0
  143. package/dist/components/BlessSortable.vue_vue_type_script_setup_true_lang.js +135 -0
  144. package/dist/components/BlessSparkline.css +1 -0
  145. package/dist/components/BlessSparkline.js +6 -0
  146. package/dist/components/BlessSparkline.vue.d.ts +28 -0
  147. package/dist/components/BlessSparkline.vue_vue_type_script_setup_true_lang.js +107 -0
  148. package/dist/components/BlessSplitView.css +1 -0
  149. package/dist/components/BlessSplitView.js +6 -0
  150. package/dist/components/BlessSplitView.vue.d.ts +61 -0
  151. package/dist/components/BlessSplitView.vue_vue_type_script_setup_true_lang.js +92 -0
  152. package/dist/components/BlessSteps.vue.d.ts +2 -0
  153. package/dist/components/BlessSteps.vue_vue_type_script_setup_true_lang.js +3 -2
  154. package/dist/components/BlessSwipeDeck.css +1 -0
  155. package/dist/components/BlessSwipeDeck.js +6 -0
  156. package/dist/components/BlessSwipeDeck.vue.d.ts +46 -0
  157. package/dist/components/BlessSwipeDeck.vue_vue_type_script_setup_true_lang.js +200 -0
  158. package/dist/components/BlessTimer.css +1 -0
  159. package/dist/components/BlessTimer.js +6 -0
  160. package/dist/components/BlessTimer.vue.d.ts +74 -0
  161. package/dist/components/BlessTimer.vue_vue_type_script_setup_true_lang.js +139 -0
  162. package/dist/components/BlessTour.vue.d.ts +1 -0
  163. package/dist/components/BlessTour.vue_vue_type_script_setup_true_lang.js +48 -42
  164. package/dist/components/BlessTreemap.css +1 -0
  165. package/dist/components/BlessTreemap.js +6 -0
  166. package/dist/components/BlessTreemap.vue.d.ts +46 -0
  167. package/dist/components/BlessTreemap.vue_vue_type_script_setup_true_lang.js +137 -0
  168. package/dist/components/BlessUploader.vue.d.ts +11 -0
  169. package/dist/components/BlessUploader.vue_vue_type_script_setup_true_lang.js +80 -69
  170. package/dist/composables/annotate.d.ts +35 -0
  171. package/dist/composables/annotate.js +33 -0
  172. package/dist/composables/canvasView.d.ts +21 -0
  173. package/dist/composables/canvasView.js +23 -0
  174. package/dist/composables/confetti.d.ts +32 -0
  175. package/dist/composables/confetti.js +23 -0
  176. package/dist/composables/cropBox.d.ts +22 -0
  177. package/dist/composables/cropBox.js +39 -0
  178. package/dist/composables/dayBlocks.d.ts +11 -0
  179. package/dist/composables/dayBlocks.js +26 -0
  180. package/dist/composables/diffLines.d.ts +10 -0
  181. package/dist/composables/diffLines.js +55 -0
  182. package/dist/composables/formula.d.ts +28 -0
  183. package/dist/composables/formula.js +161 -0
  184. package/dist/composables/graph.d.ts +19 -0
  185. package/dist/composables/graph.js +16 -0
  186. package/dist/composables/radial.d.ts +15 -0
  187. package/dist/composables/radial.js +22 -0
  188. package/dist/composables/schedule.d.ts +27 -0
  189. package/dist/composables/schedule.js +54 -0
  190. package/dist/composables/shortcut.d.ts +12 -0
  191. package/dist/composables/shortcut.js +35 -0
  192. package/dist/composables/treemap.d.ts +23 -0
  193. package/dist/composables/treemap.js +77 -0
  194. package/dist/composables/useAutoScroll.d.ts +15 -0
  195. package/dist/composables/useAutoScroll.js +32 -0
  196. package/dist/composables/useSortable.d.ts +58 -0
  197. package/dist/composables/useSortable.js +107 -0
  198. package/dist/index.d.ts +62 -1
  199. package/dist/index.js +93 -53
  200. package/package.json +22 -18
@@ -0,0 +1,232 @@
1
+ import e from "./BlessButton.js";
2
+ import { clampZoom as t, fitRect as n, toWorld as r, zoomAt as i } from "../composables/canvasView.js";
3
+ import { computed as a, createCommentVNode as o, createElementBlock as s, createElementVNode as c, createTextVNode as l, createVNode as u, defineComponent as d, mergeModels as f, normalizeClass as p, normalizeStyle as m, openBlock as h, provide as g, ref as _, renderSlot as v, toDisplayString as y, useId as b, useModel as x, withCtx as S, withModifiers as C } from "vue";
4
+ //#region src/components/BlessInfiniteCanvas.vue?vue&type=script&setup=true&lang.ts
5
+ var w = ["aria-label"], T = {
6
+ class: "bless-canvas__live",
7
+ "aria-live": "polite"
8
+ }, E = Symbol("blessCanvas"), D = /*@__PURE__*/ d({
9
+ name: "BlessInfiniteCanvas",
10
+ __name: "BlessInfiniteCanvas",
11
+ props: /*@__PURE__*/ f({
12
+ minZoom: { default: .25 },
13
+ maxZoom: { default: 4 },
14
+ grid: {
15
+ type: Boolean,
16
+ default: !0
17
+ },
18
+ controls: {
19
+ type: Boolean,
20
+ default: !0
21
+ },
22
+ wheelZoom: { type: Boolean },
23
+ label: { default: "Canvas" },
24
+ labels: {}
25
+ }, {
26
+ view: { default: () => ({
27
+ x: 0,
28
+ y: 0,
29
+ zoom: 1
30
+ }) },
31
+ viewModifiers: {}
32
+ }),
33
+ emits: ["update:view"],
34
+ setup(d, { expose: f }) {
35
+ let D = d, O = x(d, "view"), k = a(() => ({
36
+ zoomIn: "Zoom in",
37
+ zoomOut: "Zoom out",
38
+ reset: "Reset view",
39
+ zoom: (e) => `Zoom ${e}%`,
40
+ hint: "Arrow keys pan, plus and minus zoom, 0 resets.",
41
+ ...D.labels
42
+ })), A = _(), j = _(""), M = `${b()}-hint`, N = a(() => Math.round(O.value.zoom * 100)), P = (e, t) => {
43
+ let n = A.value?.getBoundingClientRect();
44
+ return {
45
+ x: e - (n?.left ?? 0),
46
+ y: t - (n?.top ?? 0)
47
+ };
48
+ }, F = (e, t) => {
49
+ let n = P(e, t);
50
+ return r(O.value, n.x, n.y);
51
+ };
52
+ g(E, {
53
+ view: O,
54
+ toWorld: F
55
+ });
56
+ function I(e, t = !1) {
57
+ O.value = e, t && (j.value = k.value.zoom(Math.round(e.zoom * 100)));
58
+ }
59
+ function L(e, t) {
60
+ let n = A.value?.getBoundingClientRect(), r = t ?? {
61
+ x: (n?.width ?? 0) / 2,
62
+ y: (n?.height ?? 0) / 2
63
+ };
64
+ I(i(O.value, e, r.x, r.y, D.minZoom, D.maxZoom), !0);
65
+ }
66
+ let R = () => I({
67
+ x: 0,
68
+ y: 0,
69
+ zoom: 1
70
+ }, !0);
71
+ function z(e, t = 32) {
72
+ let r = A.value?.getBoundingClientRect();
73
+ r && I(n(e, r.width, r.height, D.minZoom, D.maxZoom, t), !0);
74
+ }
75
+ function B(e, t) {
76
+ let n = A.value?.getBoundingClientRect();
77
+ n && I({
78
+ zoom: O.value.zoom,
79
+ x: n.width / 2 - e * O.value.zoom,
80
+ y: n.height / 2 - t * O.value.zoom
81
+ });
82
+ }
83
+ f({
84
+ zoomBy: L,
85
+ reset: R,
86
+ fit: z,
87
+ centerOn: B,
88
+ toWorld: F
89
+ });
90
+ let V = /* @__PURE__ */ new Map(), H = 0, U = _(!1);
91
+ function W(e) {
92
+ (e.target === A.value || e.target.closest?.("[data-canvas-bg]") || e.button === 1) && (e.button > 1 || (A.value?.setPointerCapture?.(e.pointerId), V.set(e.pointerId, {
93
+ x: e.clientX,
94
+ y: e.clientY
95
+ }), H = V.size === 2 ? G() : 0, U.value = !0, e.button === 1 && e.preventDefault()));
96
+ }
97
+ let G = () => {
98
+ let [e, t] = [...V.values()];
99
+ return Math.hypot(e.x - t.x, e.y - t.y);
100
+ };
101
+ function K(e) {
102
+ let t = V.get(e.pointerId);
103
+ if (!t) return;
104
+ let n = {
105
+ x: e.clientX,
106
+ y: e.clientY
107
+ };
108
+ if (V.set(e.pointerId, n), V.size === 2) {
109
+ let e = G(), [r, a] = [...V.values()], o = P((r.x + a.x) / 2, (r.y + a.y) / 2), s = H ? i(O.value, e / H, o.x, o.y, D.minZoom, D.maxZoom) : O.value;
110
+ H = e, I({
111
+ ...s,
112
+ x: s.x + (n.x - t.x) / 2,
113
+ y: s.y + (n.y - t.y) / 2
114
+ });
115
+ } else I({
116
+ ...O.value,
117
+ x: O.value.x + n.x - t.x,
118
+ y: O.value.y + n.y - t.y
119
+ });
120
+ }
121
+ function q(e) {
122
+ V.delete(e.pointerId), H = 0, V.size || (U.value = !1);
123
+ }
124
+ function J(e) {
125
+ e.preventDefault(), e.ctrlKey || e.metaKey || D.wheelZoom ? L(Math.exp(-e.deltaY * (e.ctrlKey ? .01 : .0015)), P(e.clientX, e.clientY)) : I({
126
+ ...O.value,
127
+ x: O.value.x - e.deltaX,
128
+ y: O.value.y - e.deltaY
129
+ });
130
+ }
131
+ function Y(e) {
132
+ if (e.target !== A.value) return;
133
+ let t = e.shiftKey ? 160 : 40, n = e.key;
134
+ if (n === "ArrowLeft") I({
135
+ ...O.value,
136
+ x: O.value.x + t
137
+ });
138
+ else if (n === "ArrowRight") I({
139
+ ...O.value,
140
+ x: O.value.x - t
141
+ });
142
+ else if (n === "ArrowUp") I({
143
+ ...O.value,
144
+ y: O.value.y + t
145
+ });
146
+ else if (n === "ArrowDown") I({
147
+ ...O.value,
148
+ y: O.value.y - t
149
+ });
150
+ else if (n === "+" || n === "=") L(1.25);
151
+ else if (n === "-" || n === "_") L(.8);
152
+ else if (n === "0" || n === "Home") R();
153
+ else return;
154
+ e.preventDefault();
155
+ }
156
+ let X = a(() => ({ transform: `translate(${O.value.x}px, ${O.value.y}px) scale(${t(O.value.zoom, D.minZoom, D.maxZoom)})` })), Z = a(() => {
157
+ let e = 24 * O.value.zoom;
158
+ return {
159
+ backgroundSize: `${e}px ${e}px`,
160
+ backgroundPosition: `${O.value.x}px ${O.value.y}px`
161
+ };
162
+ });
163
+ return (t, n) => (h(), s("div", {
164
+ ref_key: "root",
165
+ ref: A,
166
+ class: p(["bless-canvas", {
167
+ "bless-canvas--grid": d.grid,
168
+ "bless-canvas--pan": U.value
169
+ }]),
170
+ style: m(d.grid ? Z.value : void 0),
171
+ role: "group",
172
+ "aria-roledescription": "canvas",
173
+ "aria-label": d.label,
174
+ "aria-describedby": M,
175
+ tabindex: "0",
176
+ onPointerdown: W,
177
+ onPointermove: K,
178
+ onPointerup: q,
179
+ onPointercancel: q,
180
+ onWheel: J,
181
+ onKeydown: Y
182
+ }, [
183
+ c("div", {
184
+ class: "bless-canvas__layer",
185
+ style: m(X.value)
186
+ }, [v(t.$slots, "default", {
187
+ view: O.value,
188
+ zoom: O.value.zoom
189
+ })], 4),
190
+ d.controls ? (h(), s("div", {
191
+ key: 0,
192
+ class: "bless-canvas__controls",
193
+ onPointerdown: n[2] ||= C(() => {}, ["stop"])
194
+ }, [
195
+ u(e, {
196
+ size: "sm",
197
+ variant: "outline",
198
+ "aria-label": k.value.zoomOut,
199
+ onClick: n[0] ||= (e) => L(.8)
200
+ }, {
201
+ default: S(() => [...n[3] ||= [l("−", -1)]]),
202
+ _: 1
203
+ }, 8, ["aria-label"]),
204
+ u(e, {
205
+ size: "sm",
206
+ variant: "outline",
207
+ "aria-label": k.value.reset,
208
+ onClick: R
209
+ }, {
210
+ default: S(() => [l(y(N.value) + "%", 1)]),
211
+ _: 1
212
+ }, 8, ["aria-label"]),
213
+ u(e, {
214
+ size: "sm",
215
+ variant: "outline",
216
+ "aria-label": k.value.zoomIn,
217
+ onClick: n[1] ||= (e) => L(1.25)
218
+ }, {
219
+ default: S(() => [...n[4] ||= [l("+", -1)]]),
220
+ _: 1
221
+ }, 8, ["aria-label"])
222
+ ], 32)) : o("", !0),
223
+ c("span", {
224
+ id: M,
225
+ hidden: ""
226
+ }, y(k.value.hint), 1),
227
+ c("span", T, y(j.value), 1)
228
+ ], 46, w));
229
+ }
230
+ });
231
+ //#endregion
232
+ export { E as blessCanvasKey, D as default };
@@ -16,6 +16,11 @@ type __VLS_Props = {
16
16
  disabled?: boolean;
17
17
  invalid?: boolean;
18
18
  label?: string;
19
+ /** names of the − and + buttons */
20
+ labels?: Partial<{
21
+ decrease: string;
22
+ increase: string;
23
+ }>;
19
24
  };
20
25
  type __VLS_ModelProps = {
21
26
  modelValue?: number | null;
@@ -1,7 +1,7 @@
1
1
  import { joinIds as e, useFieldId as t, useFieldState as n } from "../composables/useFieldId.js";
2
2
  import { computed as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, defineComponent as s, mergeModels as c, mergeProps as l, normalizeClass as u, openBlock as d, ref as f, toDisplayString as p, unref as m, useModel as h } from "vue";
3
3
  //#region src/components/BlessInputNumber.vue?vue&type=script&setup=true&lang.ts
4
- var g = ["disabled"], _ = {
4
+ var g = ["aria-label", "disabled"], _ = {
5
5
  key: 1,
6
6
  class: "bless-number__affix"
7
7
  }, v = [
@@ -18,7 +18,7 @@ var g = ["disabled"], _ = {
18
18
  ], y = ["name", "value"], b = {
19
19
  key: 3,
20
20
  class: "bless-number__affix"
21
- }, x = ["disabled"], S = /*@__PURE__*/ s({
21
+ }, x = ["aria-label", "disabled"], S = /*@__PURE__*/ s({
22
22
  name: "BlessInputNumber",
23
23
  inheritAttrs: !1,
24
24
  __name: "BlessInputNumber",
@@ -39,91 +39,96 @@ var g = ["disabled"], _ = {
39
39
  size: { default: "md" },
40
40
  disabled: { type: Boolean },
41
41
  invalid: { type: Boolean },
42
- label: {}
42
+ label: {},
43
+ labels: {}
43
44
  }, {
44
45
  modelValue: { default: null },
45
46
  modelModifiers: {}
46
47
  }),
47
48
  emits: ["update:modelValue"],
48
49
  setup(s) {
49
- let c = s, S = h(s, "modelValue"), C = t(c), w = n(), T = f(!1), E = r(() => new Intl.NumberFormat(c.locale, c.format)), D = r(() => new Intl.NumberFormat(c.locale).formatToParts(1.1).find((e) => e.type === "decimal")?.value ?? "."), O = r(() => S.value == null ? "" : T.value || !c.format ? String(S.value).replace(".", D.value) : E.value.format(S.value)), k = r(() => S.value == null ? void 0 : [
50
+ let c = s, S = r(() => ({
51
+ decrease: "Decrease",
52
+ increase: "Increase",
53
+ ...c.labels
54
+ })), C = h(s, "modelValue"), w = t(c), T = n(), E = f(!1), D = r(() => new Intl.NumberFormat(c.locale, c.format)), O = r(() => new Intl.NumberFormat(c.locale).formatToParts(1.1).find((e) => e.type === "decimal")?.value ?? "."), k = r(() => C.value == null ? "" : E.value || !c.format ? String(C.value).replace(".", O.value) : D.value.format(C.value)), A = r(() => C.value == null ? void 0 : [
50
55
  c.prefix,
51
- c.format ? E.value.format(S.value) : S.value,
56
+ c.format ? D.value.format(C.value) : C.value,
52
57
  c.suffix
53
- ].filter((e) => e != null && e !== "").join(" ")), A = r(() => (String(c.step).split(".")[1] ?? "").length);
54
- function j(e) {
55
- let t = c.min ?? 0, n = Number((t + Math.round((e - t) / c.step) * c.step).toFixed(A.value));
58
+ ].filter((e) => e != null && e !== "").join(" ")), j = r(() => (String(c.step).split(".")[1] ?? "").length);
59
+ function M(e) {
60
+ let t = c.min ?? 0, n = Number((t + Math.round((e - t) / c.step) * c.step).toFixed(j.value));
56
61
  return Math.min(c.max ?? Infinity, Math.max(c.min ?? -Infinity, n));
57
62
  }
58
- function M(e) {
63
+ function N(e) {
59
64
  let t = e.target.value;
60
- D.value !== "." && (t = t.replaceAll(".", "").replace(D.value, ".")), t = t.replace(/[^\d.-]/g, ""), S.value = t === "" || t === "-" ? null : Number(t);
65
+ O.value !== "." && (t = t.replaceAll(".", "").replace(O.value, ".")), t = t.replace(/[^\d.-]/g, ""), C.value = t === "" || t === "-" ? null : Number(t);
61
66
  }
62
- function N() {
63
- T.value = !1, S.value != null && (S.value = j(S.value));
67
+ function P() {
68
+ E.value = !1, C.value != null && (C.value = M(C.value));
64
69
  }
65
- let P = (e) => S.value = j((S.value ?? c.min ?? 0) + e * c.step);
66
- function F(e) {
70
+ let F = (e) => C.value = M((C.value ?? c.min ?? 0) + e * c.step);
71
+ function I(e) {
67
72
  let t = {
68
73
  ArrowUp: 1,
69
74
  ArrowDown: -1,
70
75
  PageUp: 10,
71
76
  PageDown: -10
72
77
  }[e.key], n = e.key === "Home" ? c.min : e.key === "End" ? c.max : void 0;
73
- if (t) P(t);
74
- else if (n != null) S.value = n;
78
+ if (t) F(t);
79
+ else if (n != null) C.value = n;
75
80
  else return;
76
81
  e.preventDefault();
77
82
  }
78
83
  return (t, n) => (d(), a("div", { class: u(["bless-number bless-lean--field", [`bless-number--${s.size}`, {
79
84
  "bless-number--disabled": s.disabled,
80
- "bless-number--invalid": s.invalid || m(w).invalid.value
85
+ "bless-number--invalid": s.invalid || m(T).invalid.value
81
86
  }]]) }, [
82
87
  s.buttons ? (d(), a("button", {
83
88
  key: 0,
84
89
  type: "button",
85
90
  class: "bless-number__btn",
86
- "aria-label": "Decrease",
87
- disabled: s.disabled || s.min != null && (S.value ?? 0) <= s.min,
91
+ "aria-label": S.value.decrease,
92
+ disabled: s.disabled || s.min != null && (C.value ?? 0) <= s.min,
88
93
  tabindex: "-1",
89
- onClick: n[0] ||= (e) => P(-1)
94
+ onClick: n[0] ||= (e) => F(-1)
90
95
  }, " − ", 8, g)) : i("", !0),
91
96
  s.prefix ? (d(), a("span", _, p(s.prefix), 1)) : i("", !0),
92
97
  o("input", l(t.$attrs, {
93
- id: m(C)(),
98
+ id: m(w)(),
94
99
  type: "text",
95
100
  inputmode: "decimal",
96
101
  class: "bless-number__control",
97
- value: O.value,
102
+ value: k.value,
98
103
  disabled: s.disabled,
99
104
  "aria-label": s.label,
100
- "aria-invalid": s.invalid || m(w).invalid.value || void 0,
101
- "aria-describedby": m(e)(m(w).describedby.value, t.$attrs["aria-describedby"]),
105
+ "aria-invalid": s.invalid || m(T).invalid.value || void 0,
106
+ "aria-describedby": m(e)(m(T).describedby.value, t.$attrs["aria-describedby"]),
102
107
  role: "spinbutton",
103
- "aria-valuenow": S.value ?? void 0,
104
- "aria-valuetext": k.value,
108
+ "aria-valuenow": C.value ?? void 0,
109
+ "aria-valuetext": A.value,
105
110
  "aria-valuemin": s.min,
106
111
  "aria-valuemax": s.max,
107
- onFocus: n[1] ||= (e) => T.value = !0,
108
- onBlur: N,
109
- onInput: M,
110
- onKeydown: F
112
+ onFocus: n[1] ||= (e) => E.value = !0,
113
+ onBlur: P,
114
+ onInput: N,
115
+ onKeydown: I
111
116
  }), null, 16, v),
112
117
  s.name ? (d(), a("input", {
113
118
  key: 2,
114
119
  type: "hidden",
115
120
  name: s.name,
116
- value: S.value ?? ""
121
+ value: C.value ?? ""
117
122
  }, null, 8, y)) : i("", !0),
118
123
  s.suffix ? (d(), a("span", b, p(s.suffix), 1)) : i("", !0),
119
124
  s.buttons ? (d(), a("button", {
120
125
  key: 4,
121
126
  type: "button",
122
127
  class: "bless-number__btn",
123
- "aria-label": "Increase",
124
- disabled: s.disabled || s.max != null && (S.value ?? 0) >= s.max,
128
+ "aria-label": S.value.increase,
129
+ disabled: s.disabled || s.max != null && (C.value ?? 0) >= s.max,
125
130
  tabindex: "-1",
126
- onClick: n[2] ||= (e) => P(1)
131
+ onClick: n[2] ||= (e) => F(1)
127
132
  }, " + ", 8, x)) : i("", !0)
128
133
  ], 2));
129
134
  }
@@ -0,0 +1 @@
1
+ .bless-kanban{gap:var(--bless-space-3);font-family:var(--bless-font-sans);font-size:var(--bless-text-sm);color:var(--bless-color-text);grid-auto-columns:minmax(220px,1fr);grid-auto-flow:column;align-items:start;display:grid;position:relative;overflow-x:auto}.bless-kanban__col{min-width:0;padding:var(--bless-space-2);background:var(--bless-color-surface);border:var(--bless-border-width) solid var(--bless-color-border)}.bless-kanban__head{justify-content:space-between;align-items:baseline;gap:var(--bless-space-2);padding:var(--bless-space-1) var(--bless-space-1) var(--bless-space-2);display:flex}.bless-kanban__title{font-size:var(--bless-text-sm);margin:0;font-weight:600}.bless-kanban__count{color:var(--bless-color-text-muted);font-size:var(--bless-text-xs)}.bless-kanban__col--full .bless-kanban__count{color:var(--bless-color-danger-text)}.bless-kanban__list{gap:var(--bless-space-2);padding:0 0 var(--bless-space-3);min-height:2rem;margin:0;list-style:none;display:grid}.bless-kanban__list--end{box-shadow:inset 0 -2px 0 var(--bless-color-accent)}.bless-kanban__card{align-items:flex-start;gap:var(--bless-space-2);padding:var(--bless-space-2);background:var(--bless-color-bg);border:var(--bless-border-width) solid var(--bless-color-border);display:flex}.bless-kanban__card--drag{opacity:.4}.bless-kanban__card--held{border-color:var(--bless-color-accent)}.bless-kanban__card--before{box-shadow:0 -5px 0 -3px var(--bless-color-accent);border-top-color:var(--bless-color-accent)}.bless-kanban__grip{padding:0 var(--bless-space-1);color:var(--bless-color-text-muted);font:inherit;letter-spacing:-3px;cursor:grab;touch-action:none;background:0 0;border:0;flex:none}.bless-kanban__grip:active{cursor:grabbing}.bless-kanban__grip:focus-visible{outline:2px solid var(--bless-color-accent)}.bless-kanban__body{flex:1;min-width:0}.bless-kanban__live{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}
@@ -0,0 +1,6 @@
1
+ import "./BlessKanban.css";
2
+ import e from "./BlessKanban.vue_vue_type_script_setup_true_lang.js";
3
+ //#region src/components/BlessKanban.vue
4
+ var t = e;
5
+ //#endregion
6
+ export { t as default };
@@ -0,0 +1,67 @@
1
+ export interface BlessKanbanColumn<T = unknown> {
2
+ id: string;
3
+ title: string;
4
+ items: T[];
5
+ /** most cards the column takes; a full column refuses drops */
6
+ limit?: number;
7
+ }
8
+ declare const _default: typeof __VLS_export;
9
+ export default _default;
10
+ declare const __VLS_export: <T>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
11
+ props: import('vue').PublicProps & __VLS_PrettifyLocal<({
12
+ rowKey?: (item: T) => string | number;
13
+ label?: string;
14
+ /** screen-reader wording; each message that carries names or numbers is a function of them */
15
+ labels?: Partial<{
16
+ card: (index: number, column: string) => string;
17
+ moved: (column: string, position: number, total: number) => string;
18
+ position: (column: string, position: number, total: number) => string;
19
+ dropped: (column: string, position: number) => string;
20
+ full: (column: string) => string;
21
+ grabbed: string;
22
+ cancelled: string;
23
+ hint: string;
24
+ roleDescription: string;
25
+ }>;
26
+ } & {
27
+ modelValue?: BlessKanbanColumn<T>[];
28
+ }) & {
29
+ "onUpdate:modelValue"?: ((value: BlessKanbanColumn<T>[]) => any) | undefined;
30
+ onMove?: ((item: T, from: {
31
+ column: string;
32
+ index: number;
33
+ }, to: {
34
+ column: string;
35
+ index: number;
36
+ }) => any) | undefined;
37
+ }> & (typeof globalThis extends {
38
+ __VLS_PROPS_FALLBACK: infer P;
39
+ } ? P : {});
40
+ expose: (exposed: {}) => void;
41
+ attrs: any;
42
+ slots: {
43
+ header?: (props: {
44
+ column: BlessKanbanColumn<T>;
45
+ }) => any;
46
+ } & {
47
+ card?: (props: {
48
+ item: T;
49
+ column: BlessKanbanColumn<T>;
50
+ index: number;
51
+ }) => any;
52
+ };
53
+ emit: ((evt: "move", item: T, from: {
54
+ column: string;
55
+ index: number;
56
+ }, to: {
57
+ column: string;
58
+ index: number;
59
+ }) => void) & ((event: "update:modelValue", value: BlessKanbanColumn<T>[]) => void);
60
+ }>) => import('vue').VNode & {
61
+ __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
62
+ };
63
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
64
+ [K in keyof T]: T[K];
65
+ } : {
66
+ [K in keyof T as K]: T[K];
67
+ }) & {};
@@ -0,0 +1,195 @@
1
+ import { logicalKey as e } from "../composables/rtl.js";
2
+ import { useAutoScroll as t } from "../composables/useAutoScroll.js";
3
+ import { Fragment as n, computed as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, createTextVNode as s, defineComponent as c, mergeModels as l, nextTick as u, normalizeClass as d, onBeforeUnmount as f, openBlock as p, ref as m, renderList as h, renderSlot as g, toDisplayString as _, useId as v, useModel as y } from "vue";
4
+ //#region src/components/BlessKanban.vue?vue&type=script&setup=true&lang.ts
5
+ var b = ["aria-label"], x = ["data-kanban-col", "aria-label"], S = { class: "bless-kanban__head" }, C = { class: "bless-kanban__title" }, w = { class: "bless-kanban__count" }, T = [
6
+ "data-grip",
7
+ "aria-label",
8
+ "aria-roledescription",
9
+ "aria-pressed",
10
+ "onPointerdown",
11
+ "onKeydown"
12
+ ], E = { class: "bless-kanban__body" }, D = {
13
+ class: "bless-kanban__live",
14
+ "aria-live": "polite"
15
+ }, O = /*@__PURE__*/ c({
16
+ name: "BlessKanban",
17
+ __name: "BlessKanban",
18
+ props: /*@__PURE__*/ l({
19
+ rowKey: { type: Function },
20
+ label: {},
21
+ labels: {}
22
+ }, {
23
+ modelValue: { default: () => [] },
24
+ modelModifiers: {}
25
+ }),
26
+ emits: /*@__PURE__*/ l(["move"], ["update:modelValue"]),
27
+ setup(c, { emit: l }) {
28
+ let O = c, k = r(() => ({
29
+ card: (e, t) => `Move card ${e} of ${t}`,
30
+ moved: (e, t, n) => `Moved to ${e}, position ${t} of ${n}`,
31
+ position: (e, t, n) => `${e}, position ${t} of ${n}`,
32
+ dropped: (e, t) => `Dropped in ${e}, position ${t}`,
33
+ full: (e) => `${e} is full`,
34
+ grabbed: "Grabbed. Up and down move it in the column, left and right to another column, Space drops it, Escape cancels.",
35
+ cancelled: "Cancelled, order restored",
36
+ hint: "Press Space to grab a card. Up and down move it in its column, left and right to another column. Space drops it, Escape cancels.",
37
+ roleDescription: "sortable card",
38
+ ...O.labels
39
+ })), A = y(c, "modelValue"), j = l, M = m(), N = m(""), P = `${v()}-hint`, F = m(null), I = m(null), L = m(null), R = [], z = {
40
+ col: 0,
41
+ index: 0
42
+ }, B = (e, t) => {
43
+ let n = A.value[e];
44
+ return e !== t && n.limit != null && n.items.length >= n.limit;
45
+ };
46
+ function V(e, t, n, r) {
47
+ let i = A.value.map((e) => ({
48
+ ...e,
49
+ items: e.items.slice()
50
+ })), [a] = i[e].items.splice(t, 1);
51
+ i[n].items.splice(r, 0, a), A.value = i, j("move", a, {
52
+ column: A.value[e].id,
53
+ index: t
54
+ }, {
55
+ column: A.value[n].id,
56
+ index: r
57
+ });
58
+ }
59
+ function H(e, t) {
60
+ for (let n of document.elementsFromPoint(e, t)) {
61
+ let e = n.closest?.("[data-kanban-col]");
62
+ if (e && M.value?.contains(e)) return e;
63
+ }
64
+ return null;
65
+ }
66
+ let U = {
67
+ x: 0,
68
+ y: 0
69
+ }, W = t(() => M.value, () => K(U.x, U.y));
70
+ f(W.stop);
71
+ function G(e) {
72
+ U = {
73
+ x: e.clientX,
74
+ y: e.clientY
75
+ }, W.point(e.clientX, e.clientY), K(e.clientX, e.clientY);
76
+ }
77
+ function K(e, t) {
78
+ if (!F.value) return;
79
+ let n = H(e, t);
80
+ if (!n) return void (I.value = null);
81
+ let r = Number(n.dataset.kanbanCol);
82
+ if (B(r, F.value.col)) return void (I.value = null);
83
+ let i = Array.from(n.querySelectorAll("[data-kanban-card]")).filter((e) => {
84
+ let n = e.getBoundingClientRect();
85
+ return n.top + n.height / 2 < t;
86
+ }).length;
87
+ I.value = {
88
+ col: r,
89
+ index: i
90
+ };
91
+ }
92
+ function q(e, t, n) {
93
+ n.button || (n.currentTarget.setPointerCapture?.(n.pointerId), F.value = {
94
+ col: e,
95
+ index: t
96
+ }, I.value = {
97
+ col: e,
98
+ index: t
99
+ }, U = {
100
+ x: n.clientX,
101
+ y: n.clientY
102
+ }, W.point(n.clientX, n.clientY), W.start());
103
+ }
104
+ function J() {
105
+ let e = F.value, t = I.value;
106
+ if (W.stop(), F.value = I.value = null, !e || !t) return;
107
+ let n = t.col === e.col && t.index > e.index ? t.index - 1 : t.index;
108
+ (t.col !== e.col || n !== e.index) && (V(e.col, e.index, t.col, n), N.value = k.value.moved(A.value[t.col].title, n + 1, A.value[t.col].items.length));
109
+ }
110
+ let Y = () => {
111
+ W.stop(), F.value = I.value = null;
112
+ }, X = (e, t) => u(() => M.value?.querySelector(`[data-grip="${e}:${t}"]`)?.focus());
113
+ function Z(e, t, n, r) {
114
+ let i = A.value.length;
115
+ if (n < 0 || n >= i) return;
116
+ if (B(n, e)) {
117
+ N.value = k.value.full(A.value[n].title);
118
+ return;
119
+ }
120
+ let a = A.value[n].items.length - +(n === e);
121
+ r = Math.min(Math.max(r, 0), a), (n !== e || r !== t) && (V(e, t, n, r), L.value = {
122
+ col: n,
123
+ index: r
124
+ }, N.value = k.value.position(A.value[n].title, r + 1, A.value[n].items.length), X(n, r));
125
+ }
126
+ function Q(t, n, r) {
127
+ let i = e(r), a = L.value;
128
+ r.key === " " || r.key === "Enter" ? (r.preventDefault(), a ? (L.value = null, N.value = k.value.dropped(A.value[t].title, n + 1)) : (L.value = {
129
+ col: t,
130
+ index: n
131
+ }, z = {
132
+ col: t,
133
+ index: n
134
+ }, R = A.value.map((e) => ({
135
+ ...e,
136
+ items: e.items.slice()
137
+ })), N.value = k.value.grabbed)) : r.key === "Escape" && a ? (r.preventDefault(), A.value = R, L.value = null, N.value = k.value.cancelled, X(z.col, z.index)) : a && (i === "ArrowUp" ? (r.preventDefault(), Z(t, n, t, n - 1)) : i === "ArrowDown" ? (r.preventDefault(), Z(t, n, t, n + 1)) : i === "ArrowLeft" ? (r.preventDefault(), Z(t, n, t - 1, n)) : i === "ArrowRight" && (r.preventDefault(), Z(t, n, t + 1, n)));
138
+ }
139
+ let ee = () => requestAnimationFrame(() => {
140
+ L.value && !M.value?.contains(document.activeElement) && (L.value = null);
141
+ }), $ = (e, t) => {
142
+ let n = I.value;
143
+ return !n || n.col !== e || !F.value ? null : n.index === t ? "before" : null;
144
+ }, te = (e) => I.value?.col === e && F.value && I.value.index >= A.value[e].items.length;
145
+ return (e, t) => (p(), a("div", {
146
+ ref_key: "root",
147
+ ref: M,
148
+ class: "bless-kanban",
149
+ role: "group",
150
+ "aria-label": c.label ?? "Board"
151
+ }, [
152
+ (p(!0), a(n, null, h(A.value, (r, l) => (p(), a("section", {
153
+ key: r.id,
154
+ class: d(["bless-kanban__col", { "bless-kanban__col--full": r.limit != null && r.items.length >= r.limit }]),
155
+ "data-kanban-col": l,
156
+ "aria-label": r.title
157
+ }, [o("header", S, [g(e.$slots, "header", { column: r }, () => [o("h3", C, _(r.title), 1)]), o("span", w, [s(_(r.items.length), 1), r.limit == null ? i("", !0) : (p(), a(n, { key: 0 }, [s(" / " + _(r.limit), 1)], 64))])]), o("ul", {
158
+ class: d(["bless-kanban__list", { "bless-kanban__list--end": te(l) }]),
159
+ role: "list"
160
+ }, [(p(!0), a(n, null, h(r.items, (n, i) => (p(), a("li", {
161
+ key: c.rowKey ? c.rowKey(n) : i,
162
+ "data-kanban-card": "",
163
+ class: d(["bless-kanban__card", [{
164
+ "bless-kanban__card--drag": F.value?.col === l && F.value.index === i,
165
+ "bless-kanban__card--held": L.value?.col === l && L.value.index === i
166
+ }, $(l, i) && `bless-kanban__card--${$(l, i)}`]])
167
+ }, [o("button", {
168
+ type: "button",
169
+ class: "bless-kanban__grip",
170
+ "data-grip": `${l}:${i}`,
171
+ "aria-label": k.value.card(i + 1, r.title),
172
+ "aria-roledescription": k.value.roleDescription,
173
+ "aria-pressed": L.value?.col === l && L.value.index === i,
174
+ "aria-describedby": P,
175
+ onPointerdown: (e) => q(l, i, e),
176
+ onPointermove: G,
177
+ onPointerup: J,
178
+ onPointercancel: Y,
179
+ onKeydown: (e) => Q(l, i, e),
180
+ onBlur: ee
181
+ }, [...t[0] ||= [o("span", { "aria-hidden": "true" }, "⋮⋮", -1)]], 40, T), o("div", E, [g(e.$slots, "card", {
182
+ item: n,
183
+ column: r,
184
+ index: i
185
+ }, () => [s(_(n), 1)])])], 2))), 128))], 2)], 10, x))), 128)),
186
+ o("span", {
187
+ id: P,
188
+ hidden: ""
189
+ }, _(k.value.hint), 1),
190
+ o("span", D, _(N.value), 1)
191
+ ], 8, b));
192
+ }
193
+ });
194
+ //#endregion
195
+ export { O as default };
@@ -2,9 +2,11 @@ type __VLS_Props = {
2
2
  height?: string;
3
3
  position?: "top" | "bottom";
4
4
  color?: "accent" | "text";
5
+ label?: string;
5
6
  };
6
7
  declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
7
8
  color: "accent" | "text";
9
+ label: string;
8
10
  position: "top" | "bottom";
9
11
  height: string;
10
12
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;