blessing-ui 0.2.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 (133) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +137 -125
  3. package/dist/blessing-ui.css +38 -2
  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.vue.d.ts +10 -0
  19. package/dist/components/BlessCodeBlock.vue_vue_type_script_setup_true_lang.js +39 -33
  20. package/dist/components/BlessCombobox.vue.d.ts +2 -0
  21. package/dist/components/BlessCombobox.vue_vue_type_script_setup_true_lang.js +3 -2
  22. package/dist/components/BlessCommand.css +1 -1
  23. package/dist/components/BlessCommand.vue.d.ts +26 -0
  24. package/dist/components/BlessCommand.vue_vue_type_script_setup_true_lang.js +137 -70
  25. package/dist/components/BlessConfetti.css +1 -0
  26. package/dist/components/BlessConfetti.js +6 -0
  27. package/dist/components/BlessConfetti.vue.d.ts +40 -0
  28. package/dist/components/BlessConfetti.vue_vue_type_script_setup_true_lang.js +77 -0
  29. package/dist/components/BlessCropper.vue.d.ts +16 -0
  30. package/dist/components/BlessCropper.vue_vue_type_script_setup_true_lang.js +47 -39
  31. package/dist/components/BlessDataTable.vue.d.ts +6 -0
  32. package/dist/components/BlessDataTable.vue_vue_type_script_setup_true_lang.js +56 -42
  33. package/dist/components/BlessDataView.vue.d.ts +7 -0
  34. package/dist/components/BlessDataView.vue_vue_type_script_setup_true_lang.js +38 -31
  35. package/dist/components/BlessDatePicker.vue.d.ts +3 -0
  36. package/dist/components/BlessDatePicker.vue_vue_type_script_setup_true_lang.js +46 -45
  37. package/dist/components/BlessDock.css +1 -0
  38. package/dist/components/BlessDock.js +6 -0
  39. package/dist/components/BlessDock.vue.d.ts +55 -0
  40. package/dist/components/BlessDock.vue_vue_type_script_setup_true_lang.js +100 -0
  41. package/dist/components/BlessEditor.vue.d.ts +2 -0
  42. package/dist/components/BlessEditor.vue_vue_type_script_setup_true_lang.js +23 -22
  43. package/dist/components/BlessFileInput.vue.d.ts +2 -0
  44. package/dist/components/BlessFileInput.vue_vue_type_script_setup_true_lang.js +3 -2
  45. package/dist/components/BlessFormula.css +1 -0
  46. package/dist/components/BlessFormula.js +6 -0
  47. package/dist/components/BlessFormula.vue.d.ts +53 -0
  48. package/dist/components/BlessFormula.vue_vue_type_script_setup_true_lang.js +111 -0
  49. package/dist/components/BlessGantt.vue.d.ts +12 -0
  50. package/dist/components/BlessGantt.vue_vue_type_script_setup_true_lang.js +74 -68
  51. package/dist/components/BlessInfiniteCanvas.css +1 -0
  52. package/dist/components/BlessInfiniteCanvas.js +6 -0
  53. package/dist/components/BlessInfiniteCanvas.vue.d.ts +91 -0
  54. package/dist/components/BlessInfiniteCanvas.vue_vue_type_script_setup_true_lang.js +232 -0
  55. package/dist/components/BlessInputNumber.vue.d.ts +5 -0
  56. package/dist/components/BlessInputNumber.vue_vue_type_script_setup_true_lang.js +39 -34
  57. package/dist/components/BlessKanban.vue.d.ts +12 -0
  58. package/dist/components/BlessKanban.vue_vue_type_script_setup_true_lang.js +127 -97
  59. package/dist/components/BlessLoadingBar.vue.d.ts +2 -0
  60. package/dist/components/BlessLoadingBar.vue_vue_type_script_setup_true_lang.js +8 -3
  61. package/dist/components/BlessMarquee.vue.d.ts +4 -0
  62. package/dist/components/BlessMarquee.vue_vue_type_script_setup_true_lang.js +32 -27
  63. package/dist/components/BlessNodeGraph.css +1 -0
  64. package/dist/components/BlessNodeGraph.js +6 -0
  65. package/dist/components/BlessNodeGraph.vue.d.ts +110 -0
  66. package/dist/components/BlessNodeGraph.vue_vue_type_script_setup_true_lang.js +321 -0
  67. package/dist/components/BlessOnboardingChecklist.css +1 -0
  68. package/dist/components/BlessOnboardingChecklist.js +6 -0
  69. package/dist/components/BlessOnboardingChecklist.vue.d.ts +72 -0
  70. package/dist/components/BlessOnboardingChecklist.vue_vue_type_script_setup_true_lang.js +157 -0
  71. package/dist/components/BlessOrderList.vue.d.ts +5 -0
  72. package/dist/components/BlessOrderList.vue_vue_type_script_setup_true_lang.js +62 -56
  73. package/dist/components/BlessPagination.vue.d.ts +2 -0
  74. package/dist/components/BlessPagination.vue_vue_type_script_setup_true_lang.js +2 -1
  75. package/dist/components/BlessPickList.vue.d.ts +5 -0
  76. package/dist/components/BlessPickList.vue_vue_type_script_setup_true_lang.js +55 -49
  77. package/dist/components/BlessRangeCalendar.css +1 -0
  78. package/dist/components/BlessRangeCalendar.js +6 -0
  79. package/dist/components/BlessRangeCalendar.vue.d.ts +51 -0
  80. package/dist/components/BlessRangeCalendar.vue_vue_type_script_setup_true_lang.js +217 -0
  81. package/dist/components/BlessScheduler.css +1 -0
  82. package/dist/components/BlessScheduler.js +6 -0
  83. package/dist/components/BlessScheduler.vue.d.ts +95 -0
  84. package/dist/components/BlessScheduler.vue_vue_type_script_setup_true_lang.js +347 -0
  85. package/dist/components/BlessShortcutRecorder.vue.d.ts +10 -0
  86. package/dist/components/BlessShortcutRecorder.vue_vue_type_script_setup_true_lang.js +50 -40
  87. package/dist/components/BlessSignaturePad.vue.d.ts +1 -1
  88. package/dist/components/BlessSliderCaptcha.vue.d.ts +5 -0
  89. package/dist/components/BlessSliderCaptcha.vue_vue_type_script_setup_true_lang.js +89 -84
  90. package/dist/components/BlessSortable.css +1 -1
  91. package/dist/components/BlessSortable.vue.d.ts +19 -1
  92. package/dist/components/BlessSortable.vue_vue_type_script_setup_true_lang.js +103 -55
  93. package/dist/components/BlessSparkline.css +1 -0
  94. package/dist/components/BlessSparkline.js +6 -0
  95. package/dist/components/BlessSparkline.vue.d.ts +28 -0
  96. package/dist/components/BlessSparkline.vue_vue_type_script_setup_true_lang.js +107 -0
  97. package/dist/components/BlessSteps.vue.d.ts +2 -0
  98. package/dist/components/BlessSteps.vue_vue_type_script_setup_true_lang.js +3 -2
  99. package/dist/components/BlessSwipeDeck.vue.d.ts +1 -1
  100. package/dist/components/BlessSwipeDeck.vue_vue_type_script_setup_true_lang.js +2 -1
  101. package/dist/components/BlessTimer.vue.d.ts +18 -0
  102. package/dist/components/BlessTimer.vue_vue_type_script_setup_true_lang.js +52 -43
  103. package/dist/components/BlessTour.vue.d.ts +1 -0
  104. package/dist/components/BlessTour.vue_vue_type_script_setup_true_lang.js +48 -42
  105. package/dist/components/BlessTreemap.css +1 -0
  106. package/dist/components/BlessTreemap.js +6 -0
  107. package/dist/components/BlessTreemap.vue.d.ts +46 -0
  108. package/dist/components/BlessTreemap.vue_vue_type_script_setup_true_lang.js +137 -0
  109. package/dist/components/BlessUploader.vue.d.ts +11 -0
  110. package/dist/components/BlessUploader.vue_vue_type_script_setup_true_lang.js +80 -69
  111. package/dist/composables/annotate.d.ts +35 -0
  112. package/dist/composables/annotate.js +33 -0
  113. package/dist/composables/canvasView.d.ts +21 -0
  114. package/dist/composables/canvasView.js +23 -0
  115. package/dist/composables/confetti.d.ts +32 -0
  116. package/dist/composables/confetti.js +23 -0
  117. package/dist/composables/dayBlocks.d.ts +11 -0
  118. package/dist/composables/dayBlocks.js +26 -0
  119. package/dist/composables/formula.d.ts +28 -0
  120. package/dist/composables/formula.js +161 -0
  121. package/dist/composables/graph.d.ts +19 -0
  122. package/dist/composables/graph.js +16 -0
  123. package/dist/composables/schedule.d.ts +27 -0
  124. package/dist/composables/schedule.js +54 -0
  125. package/dist/composables/treemap.d.ts +23 -0
  126. package/dist/composables/treemap.js +77 -0
  127. package/dist/composables/useAutoScroll.d.ts +15 -0
  128. package/dist/composables/useAutoScroll.js +32 -0
  129. package/dist/composables/useSortable.d.ts +42 -2
  130. package/dist/composables/useSortable.js +87 -14
  131. package/dist/index.d.ts +25 -1
  132. package/dist/index.js +78 -63
  133. package/package.json +4 -2
@@ -3,16 +3,56 @@ import { Ref } from 'vue';
3
3
  export declare function moveItem<T>(arr: readonly T[], from: number, to: number): T[];
4
4
  /** Index of the rect whose centre is closest to the point; works for lists and grids alike. */
5
5
  export declare function nearestIndex(rects: readonly DOMRect[], x: number, y: number): number;
6
+ /** one list of a group: lists sharing a `group` name accept each other's items */
7
+ export interface SortableMember {
8
+ root: Ref<HTMLElement | null | undefined>;
9
+ list: () => unknown[];
10
+ set: (v: unknown[]) => void;
11
+ /** where an item coming from another list would land: the nearest item and which side of it */
12
+ drop: Ref<{
13
+ index: number;
14
+ after: boolean;
15
+ } | null>;
16
+ /** items run top to bottom (a list) rather than left to right (a grid) */
17
+ vertical: () => boolean;
18
+ label: () => string;
19
+ /** take over a keyboard-held item at `index`, with focus */
20
+ adopt: (index: number) => void;
21
+ /** put focus on the grip at `index` */
22
+ focus: (index: number) => void;
23
+ /** say something in this list's live region (where focus is, after a hand-over) */
24
+ say: (message: string) => void;
25
+ }
26
+ /** Register a list in a group; returns the function that leaves it. */
27
+ export declare function joinGroup(name: string, m: SortableMember): () => void;
28
+ /** The lists of a group in document order, so "next" means the one after in the page. */
29
+ export declare function membersOf(name: string): SortableMember[];
30
+ /** Where a point would drop into a list: next to the nearest item, or slot 0 when it is empty. */
31
+ export declare function slotAt(m: SortableMember, x: number, y: number, selector?: string): {
32
+ index: number;
33
+ after: boolean;
34
+ };
35
+ /** Move the item at `index` of `from` into `to` at `at`; both lists are replaced, not mutated. */
36
+ export declare function transfer(from: SortableMember, index: number, to: SortableMember, at: number): unknown;
37
+ /** Remember every list of the group; the returned `restore` puts them all back (Esc). */
38
+ export declare function snapshotGroup(name: string): () => void;
39
+ export declare const restoreGroup: () => void;
40
+ export interface SortableGroup {
41
+ name: () => string | undefined;
42
+ self: SortableMember;
43
+ /** the item at `from` was dropped on another list, to land at `at` there */
44
+ onTransfer: (from: number, to: SortableMember, at: number) => void;
45
+ }
6
46
  /**
7
47
  * Pointer-drag reorder over the children of `root` that match `selector`. Bind `grab` /
8
48
  * `track` / `drop` / `cancel` to the drag handle's pointer events and set `touch-action: none`
9
49
  * on it; `onMove(from, to)` fires once, on release.
10
50
  */
11
- export declare function useSortable(root: Ref<HTMLElement | null | undefined>, onMove: (from: number, to: number) => void, selector?: string): {
51
+ export declare function useSortable(root: Ref<HTMLElement | null | undefined>, onMove: (from: number, to: number) => void, selector?: string, group?: SortableGroup): {
12
52
  drag: Ref<number | null, number | null>;
13
53
  over: Ref<number | null, number | null>;
14
54
  grab(i: number, e: PointerEvent): void;
15
55
  track(e: PointerEvent): void;
16
56
  drop(): void;
17
- cancel: () => null;
57
+ cancel(): void;
18
58
  };
@@ -1,34 +1,107 @@
1
- import { ref as e } from "vue";
1
+ import { useAutoScroll as e } from "./useAutoScroll.js";
2
+ import { onBeforeUnmount as t, ref as n } from "vue";
2
3
  //#region src/composables/useSortable.ts
3
- function t(e, t, n) {
4
+ function r(e, t, n) {
4
5
  let r = e.slice();
5
6
  return r.splice(n, 0, ...r.splice(t, 1)), r;
6
7
  }
7
- function n(e, t, n) {
8
+ function i(e, t, n) {
8
9
  let r = 0, i = Infinity;
9
10
  return e.forEach((e, a) => {
10
11
  let o = (e.left + e.width / 2 - t) ** 2 + (e.top + e.height / 2 - n) ** 2;
11
12
  o < i && (i = o, r = a);
12
13
  }), r;
13
14
  }
14
- function r(t, r, i = "[data-sortable-item]") {
15
- let a = e(null), o = e(null), s = () => a.value = o.value = null;
15
+ var a = /* @__PURE__ */ new Map(), o = null;
16
+ function s(e, t) {
17
+ return a.has(e) || a.set(e, /* @__PURE__ */ new Set()), a.get(e).add(t), () => {
18
+ a.get(e)?.delete(t), a.get(e)?.size || a.delete(e);
19
+ };
20
+ }
21
+ function c(e) {
22
+ return [...a.get(e) ?? []].sort((e, t) => {
23
+ let n = e.root.value, r = t.root.value;
24
+ return !n || !r ? 0 : n.compareDocumentPosition(r) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;
25
+ });
26
+ }
27
+ function l(e, t, n, r = "[data-sortable-item]") {
28
+ let a = Array.from(e.root.value?.querySelectorAll(r) ?? []);
29
+ if (!a.length) return {
30
+ index: 0,
31
+ after: !1
32
+ };
33
+ let o = a.map((e) => e.getBoundingClientRect()), s = i(o, t, n), c = o[s];
34
+ return {
35
+ index: s,
36
+ after: e.vertical() ? n > c.top + c.height / 2 : t > c.left + c.width / 2
37
+ };
38
+ }
39
+ function u(e, t, n, r) {
40
+ let i = e.list().slice(), [a] = i.splice(t, 1), o = n.list().slice();
41
+ return o.splice(r, 0, a), e.set(i), n.set(o), a;
42
+ }
43
+ function d(e) {
44
+ let t = c(e).map((e) => [e, e.list().slice()]);
45
+ return o = () => t.forEach(([e, t]) => e.set(t)), o;
46
+ }
47
+ var f = () => {
48
+ o?.(), o = null;
49
+ };
50
+ function p(r, a, o = "[data-sortable-item]", s) {
51
+ let u = n(null), d = n(null), f = {
52
+ x: 0,
53
+ y: 0
54
+ }, p = e(() => null, () => h(f.x, f.y));
55
+ t(p.stop);
56
+ let m = () => {
57
+ p.stop(), u.value = d.value = null;
58
+ };
59
+ function h(e, t) {
60
+ if (u.value == null) return;
61
+ let n = s?.name();
62
+ if (n) {
63
+ let r = c(n).filter((e) => e !== s.self);
64
+ r.forEach((e) => e.drop.value = null);
65
+ let i = r.find((n) => {
66
+ let r = n.root.value?.getBoundingClientRect();
67
+ return r && e >= r.left && e <= r.right && t >= r.top && t <= r.bottom;
68
+ });
69
+ if (i) {
70
+ i.drop.value = l(i, e, t, o), d.value = null;
71
+ return;
72
+ }
73
+ }
74
+ let a = r.value?.querySelectorAll(o) ?? [];
75
+ d.value = i(Array.from(a, (e) => e.getBoundingClientRect()), e, t);
76
+ }
16
77
  return {
17
- drag: a,
18
- over: o,
78
+ drag: u,
79
+ over: d,
19
80
  grab(e, t) {
20
- t.button || (t.currentTarget.setPointerCapture?.(t.pointerId), a.value = o.value = e);
81
+ t.button || (t.currentTarget.setPointerCapture?.(t.pointerId), u.value = d.value = e, f = {
82
+ x: t.clientX,
83
+ y: t.clientY
84
+ }, p.point(t.clientX, t.clientY), p.start());
21
85
  },
22
86
  track(e) {
23
- if (a.value == null) return;
24
- let r = t.value?.querySelectorAll(i) ?? [];
25
- o.value = n(Array.from(r, (e) => e.getBoundingClientRect()), e.clientX, e.clientY);
87
+ f = {
88
+ x: e.clientX,
89
+ y: e.clientY
90
+ }, p.point(e.clientX, e.clientY), h(e.clientX, e.clientY);
26
91
  },
27
92
  drop() {
28
- a.value != null && o.value != null && o.value !== a.value && r(a.value, o.value), s();
93
+ let e = s?.name(), t = e ? c(e).filter((e) => e !== s.self) : [], n = t.find((e) => e.drop.value);
94
+ if (u.value != null && n?.drop.value) {
95
+ let { index: e, after: t } = n.drop.value;
96
+ s.onTransfer(u.value, n, e + +!!t);
97
+ } else u.value != null && d.value != null && d.value !== u.value && a(u.value, d.value);
98
+ t.forEach((e) => e.drop.value = null), m();
29
99
  },
30
- cancel: s
100
+ cancel() {
101
+ let e = s?.name();
102
+ e && c(e).forEach((e) => e.drop.value = null), m();
103
+ }
31
104
  };
32
105
  }
33
106
  //#endregion
34
- export { t as moveItem, n as nearestIndex, r as useSortable };
107
+ export { s as joinGroup, c as membersOf, r as moveItem, i as nearestIndex, f as restoreGroup, l as slotAt, d as snapshotGroup, u as transfer, p as useSortable };
package/dist/index.d.ts CHANGED
@@ -75,7 +75,7 @@ export { default as BlessToaster } from './components/BlessToaster.vue';
75
75
  export { useToast } from './composables/useToast';
76
76
  export type { BlessToastOptions, BlessToastItem } from './composables/useToast';
77
77
  export { default as BlessCommand } from './components/BlessCommand.vue';
78
- export type { BlessCommandItem } from './components/BlessCommand.vue';
78
+ export type { BlessCommandItem, BlessCommandScope } from './components/BlessCommand.vue';
79
79
  export { default as BlessCombobox } from './components/BlessCombobox.vue';
80
80
  export { default as BlessCalendar } from './components/BlessCalendar.vue';
81
81
  export { default as BlessDatePicker } from './components/BlessDatePicker.vue';
@@ -151,6 +151,29 @@ export { default as BlessRadialMenu } from './components/BlessRadialMenu.vue';
151
151
  export { polar, sectorAt, keepInside } from './composables/radial';
152
152
  export type { BlessRadialItem } from './components/BlessRadialMenu.vue';
153
153
  export { default as BlessLoupe } from './components/BlessLoupe.vue';
154
+ export { default as BlessSparkline } from './components/BlessSparkline.vue';
155
+ export { default as BlessConfetti } from './components/BlessConfetti.vue';
156
+ export { default as BlessInfiniteCanvas } from './components/BlessInfiniteCanvas.vue';
157
+ export { blessCanvasKey } from './components/BlessInfiniteCanvas.vue';
158
+ export type { CanvasView, BlessCanvasContext } from './components/BlessInfiniteCanvas.vue';
159
+ export { default as BlessNodeGraph } from './components/BlessNodeGraph.vue';
160
+ export type { BlessGraphNode, BlessGraphEdge } from './components/BlessNodeGraph.vue';
161
+ export { default as BlessTreemap } from './components/BlessTreemap.vue';
162
+ export type { BlessTreemapNode } from './components/BlessTreemap.vue';
163
+ export { default as BlessCoachmark } from './components/BlessCoachmark.vue';
164
+ export { default as BlessOnboardingChecklist } from './components/BlessOnboardingChecklist.vue';
165
+ export type { BlessChecklistItem } from './components/BlessOnboardingChecklist.vue';
166
+ export { default as BlessDock } from './components/BlessDock.vue';
167
+ export type { BlessDockItem } from './components/BlessDock.vue';
168
+ export { default as BlessFormula } from './components/BlessFormula.vue';
169
+ export { evaluate as evaluateFormula } from './composables/formula';
170
+ export type { BlessFormulaVariable, BlessFormulaError } from './components/BlessFormula.vue';
171
+ export { default as BlessRangeCalendar } from './components/BlessRangeCalendar.vue';
172
+ export type { DayBlock as BlessDayBlock } from './composables/dayBlocks';
173
+ export { default as BlessAnnotator } from './components/BlessAnnotator.vue';
174
+ export type { BlessRegion } from './components/BlessAnnotator.vue';
175
+ export { default as BlessScheduler } from './components/BlessScheduler.vue';
176
+ export type { BlessScheduleEvent } from './components/BlessScheduler.vue';
154
177
  export { default as BlessSliderCaptcha } from './components/BlessSliderCaptcha.vue';
155
178
  export { default as BlessSwipeDeck } from './components/BlessSwipeDeck.vue';
156
179
  export type { BlessSwipeDecision } from './components/BlessSwipeDeck.vue';
@@ -167,6 +190,7 @@ export type { BlessMentionOption } from './components/BlessMention.vue';
167
190
  export { default as BlessHeatmapCalendar } from './components/BlessHeatmapCalendar.vue';
168
191
  export { default as BlessSortable } from './components/BlessSortable.vue';
169
192
  export { useSortable, moveItem, nearestIndex } from './composables/useSortable';
193
+ export { useAutoScroll, edgeSpeed } from './composables/useAutoScroll';
170
194
  export { default as BlessPickList } from './components/BlessPickList.vue';
171
195
  export { default as BlessMockup } from './components/BlessMockup.vue';
172
196
  export { default as BlessTour } from './components/BlessTour.vue';
package/dist/index.js CHANGED
@@ -122,66 +122,81 @@ import wt from "./components/BlessSplitView.js";
122
122
  import { keepInside as Tt, polar as Et, sectorAt as Dt } from "./composables/radial.js";
123
123
  import Ot from "./components/BlessRadialMenu.js";
124
124
  import kt from "./components/BlessLoupe.js";
125
- import At from "./components/BlessSliderCaptcha.js";
126
- import jt from "./components/BlessSwipeDeck.js";
127
- import Mt from "./components/BlessHotspots.js";
128
- import { initialBox as Nt, moveBox as Pt, resizeBox as Ft, scaleBox as It } from "./composables/cropBox.js";
129
- import Lt from "./components/BlessCropper.js";
130
- import Rt from "./components/BlessKanban.js";
131
- import zt from "./components/BlessMention.js";
132
- import Bt from "./components/BlessHeatmapCalendar.js";
133
- import { moveItem as Vt, nearestIndex as Ht, useSortable as Ut } from "./composables/useSortable.js";
134
- import Wt from "./components/BlessSortable.js";
135
- import Gt from "./components/BlessPickList.js";
136
- import Kt from "./components/BlessMockup.js";
137
- import qt from "./components/BlessTour.js";
138
- import Jt from "./components/BlessKnob.js";
139
- import Yt from "./components/BlessWatermarkOverlay.js";
140
- import Xt from "./components/BlessSignaturePad.js";
141
- import Zt from "./components/BlessQrCode.js";
142
- import Qt from "./components/BlessEditor.js";
143
- import $t from "./components/BlessChip.js";
144
- import en from "./components/BlessInputNumber.js";
145
- import tn from "./components/BlessPasswordInput.js";
146
- import nn from "./components/BlessStepper.js";
147
- import rn from "./components/BlessInputTags.js";
148
- import an from "./components/BlessToolbar.js";
149
- import on from "./components/BlessFloatLabel.js";
150
- import sn from "./components/BlessFieldset.js";
151
- import cn from "./components/BlessPanel.js";
152
- import ln from "./components/BlessMeterGroup.js";
153
- import un from "./components/BlessSplitButton.js";
154
- import dn from "./components/BlessBlockUI.js";
155
- import fn from "./components/BlessInplace.js";
156
- import pn from "./components/BlessDeferredContent.js";
157
- import mn from "./components/BlessConfirmPopup.js";
158
- import hn from "./components/BlessCompare.js";
159
- import gn from "./components/BlessDataView.js";
160
- import { useAnimateOnScroll as _n } from "./composables/useAnimateOnScroll.js";
161
- import vn from "./components/BlessPaletteToggle.js";
162
- import yn from "./components/BlessCascadeSelect.js";
163
- import bn from "./components/BlessTreeSelect.js";
164
- import xn from "./components/BlessTreeTable.js";
165
- import Sn from "./components/BlessOrgChart.js";
166
- import { useDialog as Cn } from "./composables/useDialog.js";
167
- import wn from "./components/BlessDialogHost.js";
168
- import { useLongPress as Tn, usePan as En, useSwipe as Dn, useTouchRepeat as On } from "./composables/useGesture.js";
169
- import kn from "./components/BlessPullToRefresh.js";
170
- import An from "./components/BlessSlideItem.js";
171
- import jn from "./components/BlessActionSheet.js";
172
- import Mn from "./components/BlessTabPanels.js";
173
- import Nn from "./components/BlessInfiniteScroll.js";
174
- import Pn from "./components/BlessLayout.js";
175
- import Fn from "./components/BlessCircularProgress.js";
176
- import In from "./components/BlessRange.js";
177
- import Ln from "./components/BlessTimePicker.js";
178
- import Rn from "./components/BlessImg.js";
179
- import zn from "./components/BlessVideo.js";
180
- import { useLoadingBar as Bn } from "./composables/useLoadingBar.js";
181
- import Vn from "./components/BlessLoadingBar.js";
182
- import Hn from "./components/BlessUploader.js";
183
- import Un from "./components/BlessParallax.js";
184
- import Wn from "./components/BlessSlideTransition.js";
185
- import Gn from "./components/BlessClientOnly.js";
186
- import { useFullscreen as Kn, useResizeObserver as qn, useScroll as Jn, useVisibility as Yn } from "./composables/useBrowser.js";
187
- export { Y as BlessAccordion, X as BlessAccordionItem, jn as BlessActionSheet, H as BlessAlert, me as BlessAlertDialog, V as BlessAspectRatio, Re as BlessAttachment, E as BlessAudioPlayer, B as BlessAvatar, _ as BlessBackground, o as BlessBadge, dn as BlessBlockUI, ot as BlessBottomTabs, $ as BlessBreadcrumb, Ie as BlessBubble, a as BlessButton, G as BlessButtonGroup, we as BlessCalendar, v as BlessCard, ke as BlessCarousel, yn as BlessCascadeSelect, Ve as BlessChart, M as BlessCheckbox, $t as BlessChip, Fn as BlessCircularProgress, Gn as BlessClientOnly, xt as BlessCodeBlock, J as BlessCollapsible, We as BlessColorPicker, ve as BlessCombobox, _e as BlessCommand, hn as BlessCompare, mn as BlessConfirmPopup, Ye as BlessContainer, ue as BlessContextMenu, ut as BlessCountUp, Lt as BlessCropper, s as BlessDash, Oe as BlessDataTable, gn as BlessDataView, Te as BlessDatePicker, pn as BlessDeferredContent, wn as BlessDialogHost, bt as BlessDiff, pe as BlessDrawer, le as BlessDropdownMenu, Qt as BlessEditor, W as BlessEmpty, re as BlessField, sn as BlessFieldset, Ue as BlessFileInput, on as BlessFloatLabel, ne as BlessForm, w as BlessGallery, pt as BlessGantt, ft as BlessGauge, Bt as BlessHeatmapCalendar, Mt as BlessHotspots, se as BlessHoverCard, c as BlessIcon, Rn as BlessImg, Je as BlessIndicator, Nn as BlessInfiniteScroll, fn as BlessInplace, A as BlessInput, K as BlessInputGroup, rt as BlessInputMask, en as BlessInputNumber, Ee as BlessInputOTP, rn as BlessInputTags, q as BlessItem, Rt as BlessKanban, U as BlessKbd, Jt as BlessKnob, k as BlessLabel, Pn as BlessLayout, y as BlessList, b as BlessListItem, Qe as BlessListbox, Vn as BlessLoadingBar, kt as BlessLoupe, Le as BlessMarker, St as BlessMarquee, Ct as BlessMasonry, zt as BlessMention, ce as BlessMenuList, de as BlessMenubar, Fe as BlessMessage, ze as BlessMessageScroller, ln as BlessMeterGroup, Kt as BlessMockup, C as BlessModal, je as BlessNavigationMenu, lt as BlessOrderList, Sn as BlessOrgChart, ee as BlessPagination, vn as BlessPaletteToggle, cn as BlessPanel, Un as BlessParallax, tn as BlessPasswordInput, Ge as BlessPasswordMeter, Gt as BlessPickList, ae as BlessPopover, R as BlessProgress, kn as BlessPullToRefresh, Zt as BlessQrCode, Be as BlessQuestionnaire, Ot as BlessRadialMenu, P as BlessRadio, N as BlessRadioGroup, In as BlessRange, He as BlessRating, Ae as BlessResizable, te as BlessScrollArea, Ze as BlessScrollTop, d as BlessSection, I as BlessSelect, O as BlessSeparator, fe as BlessSheet, vt as BlessShortcutRecorder, g as BlessSidebarNav, Xt as BlessSignaturePad, z as BlessSkeleton, e as BlessSkew, An as BlessSlideItem, Wn as BlessSlideTransition, L as BlessSlider, At as BlessSliderCaptcha, Wt as BlessSortable, st as BlessSpeedDial, i as BlessSpinner, D as BlessSplash, un as BlessSplitButton, wt as BlessSplitView, Xe as BlessStack, h as BlessStage, nn as BlessStepper, Ke as BlessSteps, et as BlessSwap, jt as BlessSwipeDeck, F as BlessSwitch, Mn as BlessTabPanels, T as BlessTable, x as BlessTabs, l as BlessText, j as BlessTextarea, Pe as BlessThemeToggle, Ln as BlessTimePicker, qe as BlessTimeline, dt as BlessTimer, ge as BlessToaster, Z as BlessToggle, Q as BlessToggleGroup, an as BlessToolbar, oe as BlessTooltip, qt as BlessTour, $e as BlessTree, bn as BlessTreeSelect, xn as BlessTreeTable, Hn as BlessUploader, zn as BlessVideo, ct as BlessVirtualScroller, u as BlessWatermark, Yt as BlessWatermarkOverlay, ye as addDays, be as addMonths, tt as applyMask, t as blessLinkKey, Me as blessPalettes, yt as diffLines, xe as fromISO, Nt as initialBox, mt as isModifierKey, n as isRouterHref, Se as isoToday, Tt as keepInside, ht as matchShortcut, Pt as moveBox, Vt as moveItem, Ht as nearestIndex, Et as polar, f as reducedMotion, Ft as resizeBox, It as scaleBox, p as scrollBehavior, Dt as sectorAt, gt as shortcutFromEvent, _t as splitShortcut, Ce as toISO, nt as unmask, _n as useAnimateOnScroll, De as useDataTable, Cn as useDialog, ie as useFloating, Kn as useFullscreen, S as useHash, r as useLink, Bn as useLoadingBar, Tn as useLongPress, m as useMedia, En as usePan, qn as useResizeObserver, at as useRovingFocus, Jn as useScroll, it as useScrollSpy, Ut as useSortable, Dn as useSwipe, Ne as useTheme, he as useToast, On as useTouchRepeat, Yn as useVisibility };
125
+ import At from "./components/BlessSparkline.js";
126
+ import jt from "./components/BlessConfetti.js";
127
+ import { blessCanvasKey as Mt } from "./components/BlessInfiniteCanvas.vue_vue_type_script_setup_true_lang.js";
128
+ import Nt from "./components/BlessInfiniteCanvas.js";
129
+ import Pt from "./components/BlessNodeGraph.js";
130
+ import Ft from "./components/BlessTreemap.js";
131
+ import It from "./components/BlessCoachmark.js";
132
+ import Lt from "./components/BlessOnboardingChecklist.js";
133
+ import Rt from "./components/BlessDock.js";
134
+ import { evaluate as zt } from "./composables/formula.js";
135
+ import Bt from "./components/BlessFormula.js";
136
+ import Vt from "./components/BlessRangeCalendar.js";
137
+ import Ht from "./components/BlessAnnotator.js";
138
+ import Ut from "./components/BlessScheduler.js";
139
+ import Wt from "./components/BlessSliderCaptcha.js";
140
+ import Gt from "./components/BlessSwipeDeck.js";
141
+ import Kt from "./components/BlessHotspots.js";
142
+ import { initialBox as qt, moveBox as Jt, resizeBox as Yt, scaleBox as Xt } from "./composables/cropBox.js";
143
+ import Zt from "./components/BlessCropper.js";
144
+ import { edgeSpeed as Qt, useAutoScroll as $t } from "./composables/useAutoScroll.js";
145
+ import en from "./components/BlessKanban.js";
146
+ import tn from "./components/BlessMention.js";
147
+ import nn from "./components/BlessHeatmapCalendar.js";
148
+ import { moveItem as rn, nearestIndex as an, useSortable as on } from "./composables/useSortable.js";
149
+ import sn from "./components/BlessSortable.js";
150
+ import cn from "./components/BlessPickList.js";
151
+ import ln from "./components/BlessMockup.js";
152
+ import un from "./components/BlessTour.js";
153
+ import dn from "./components/BlessKnob.js";
154
+ import fn from "./components/BlessWatermarkOverlay.js";
155
+ import pn from "./components/BlessSignaturePad.js";
156
+ import mn from "./components/BlessQrCode.js";
157
+ import hn from "./components/BlessEditor.js";
158
+ import gn from "./components/BlessChip.js";
159
+ import _n from "./components/BlessInputNumber.js";
160
+ import vn from "./components/BlessPasswordInput.js";
161
+ import yn from "./components/BlessStepper.js";
162
+ import bn from "./components/BlessInputTags.js";
163
+ import xn from "./components/BlessToolbar.js";
164
+ import Sn from "./components/BlessFloatLabel.js";
165
+ import Cn from "./components/BlessFieldset.js";
166
+ import wn from "./components/BlessPanel.js";
167
+ import Tn from "./components/BlessMeterGroup.js";
168
+ import En from "./components/BlessSplitButton.js";
169
+ import Dn from "./components/BlessBlockUI.js";
170
+ import On from "./components/BlessInplace.js";
171
+ import kn from "./components/BlessDeferredContent.js";
172
+ import An from "./components/BlessConfirmPopup.js";
173
+ import jn from "./components/BlessCompare.js";
174
+ import Mn from "./components/BlessDataView.js";
175
+ import { useAnimateOnScroll as Nn } from "./composables/useAnimateOnScroll.js";
176
+ import Pn from "./components/BlessPaletteToggle.js";
177
+ import Fn from "./components/BlessCascadeSelect.js";
178
+ import In from "./components/BlessTreeSelect.js";
179
+ import Ln from "./components/BlessTreeTable.js";
180
+ import Rn from "./components/BlessOrgChart.js";
181
+ import { useDialog as zn } from "./composables/useDialog.js";
182
+ import Bn from "./components/BlessDialogHost.js";
183
+ import { useLongPress as Vn, usePan as Hn, useSwipe as Un, useTouchRepeat as Wn } from "./composables/useGesture.js";
184
+ import Gn from "./components/BlessPullToRefresh.js";
185
+ import Kn from "./components/BlessSlideItem.js";
186
+ import qn from "./components/BlessActionSheet.js";
187
+ import Jn from "./components/BlessTabPanels.js";
188
+ import Yn from "./components/BlessInfiniteScroll.js";
189
+ import Xn from "./components/BlessLayout.js";
190
+ import Zn from "./components/BlessCircularProgress.js";
191
+ import Qn from "./components/BlessRange.js";
192
+ import $n from "./components/BlessTimePicker.js";
193
+ import er from "./components/BlessImg.js";
194
+ import tr from "./components/BlessVideo.js";
195
+ import { useLoadingBar as nr } from "./composables/useLoadingBar.js";
196
+ import rr from "./components/BlessLoadingBar.js";
197
+ import ir from "./components/BlessUploader.js";
198
+ import ar from "./components/BlessParallax.js";
199
+ import or from "./components/BlessSlideTransition.js";
200
+ import sr from "./components/BlessClientOnly.js";
201
+ import { useFullscreen as cr, useResizeObserver as lr, useScroll as ur, useVisibility as dr } from "./composables/useBrowser.js";
202
+ export { Y as BlessAccordion, X as BlessAccordionItem, qn as BlessActionSheet, H as BlessAlert, me as BlessAlertDialog, Ht as BlessAnnotator, V as BlessAspectRatio, Re as BlessAttachment, E as BlessAudioPlayer, B as BlessAvatar, _ as BlessBackground, o as BlessBadge, Dn as BlessBlockUI, ot as BlessBottomTabs, $ as BlessBreadcrumb, Ie as BlessBubble, a as BlessButton, G as BlessButtonGroup, we as BlessCalendar, v as BlessCard, ke as BlessCarousel, Fn as BlessCascadeSelect, Ve as BlessChart, M as BlessCheckbox, gn as BlessChip, Zn as BlessCircularProgress, sr as BlessClientOnly, It as BlessCoachmark, xt as BlessCodeBlock, J as BlessCollapsible, We as BlessColorPicker, ve as BlessCombobox, _e as BlessCommand, jn as BlessCompare, jt as BlessConfetti, An as BlessConfirmPopup, Ye as BlessContainer, ue as BlessContextMenu, ut as BlessCountUp, Zt as BlessCropper, s as BlessDash, Oe as BlessDataTable, Mn as BlessDataView, Te as BlessDatePicker, kn as BlessDeferredContent, Bn as BlessDialogHost, bt as BlessDiff, Rt as BlessDock, pe as BlessDrawer, le as BlessDropdownMenu, hn as BlessEditor, W as BlessEmpty, re as BlessField, Cn as BlessFieldset, Ue as BlessFileInput, Sn as BlessFloatLabel, ne as BlessForm, Bt as BlessFormula, w as BlessGallery, pt as BlessGantt, ft as BlessGauge, nn as BlessHeatmapCalendar, Kt as BlessHotspots, se as BlessHoverCard, c as BlessIcon, er as BlessImg, Je as BlessIndicator, Nt as BlessInfiniteCanvas, Yn as BlessInfiniteScroll, On as BlessInplace, A as BlessInput, K as BlessInputGroup, rt as BlessInputMask, _n as BlessInputNumber, Ee as BlessInputOTP, bn as BlessInputTags, q as BlessItem, en as BlessKanban, U as BlessKbd, dn as BlessKnob, k as BlessLabel, Xn as BlessLayout, y as BlessList, b as BlessListItem, Qe as BlessListbox, rr as BlessLoadingBar, kt as BlessLoupe, Le as BlessMarker, St as BlessMarquee, Ct as BlessMasonry, tn as BlessMention, ce as BlessMenuList, de as BlessMenubar, Fe as BlessMessage, ze as BlessMessageScroller, Tn as BlessMeterGroup, ln as BlessMockup, C as BlessModal, je as BlessNavigationMenu, Pt as BlessNodeGraph, Lt as BlessOnboardingChecklist, lt as BlessOrderList, Rn as BlessOrgChart, ee as BlessPagination, Pn as BlessPaletteToggle, wn as BlessPanel, ar as BlessParallax, vn as BlessPasswordInput, Ge as BlessPasswordMeter, cn as BlessPickList, ae as BlessPopover, R as BlessProgress, Gn as BlessPullToRefresh, mn as BlessQrCode, Be as BlessQuestionnaire, Ot as BlessRadialMenu, P as BlessRadio, N as BlessRadioGroup, Qn as BlessRange, Vt as BlessRangeCalendar, He as BlessRating, Ae as BlessResizable, Ut as BlessScheduler, te as BlessScrollArea, Ze as BlessScrollTop, d as BlessSection, I as BlessSelect, O as BlessSeparator, fe as BlessSheet, vt as BlessShortcutRecorder, g as BlessSidebarNav, pn as BlessSignaturePad, z as BlessSkeleton, e as BlessSkew, Kn as BlessSlideItem, or as BlessSlideTransition, L as BlessSlider, Wt as BlessSliderCaptcha, sn as BlessSortable, At as BlessSparkline, st as BlessSpeedDial, i as BlessSpinner, D as BlessSplash, En as BlessSplitButton, wt as BlessSplitView, Xe as BlessStack, h as BlessStage, yn as BlessStepper, Ke as BlessSteps, et as BlessSwap, Gt as BlessSwipeDeck, F as BlessSwitch, Jn as BlessTabPanels, T as BlessTable, x as BlessTabs, l as BlessText, j as BlessTextarea, Pe as BlessThemeToggle, $n as BlessTimePicker, qe as BlessTimeline, dt as BlessTimer, ge as BlessToaster, Z as BlessToggle, Q as BlessToggleGroup, xn as BlessToolbar, oe as BlessTooltip, un as BlessTour, $e as BlessTree, In as BlessTreeSelect, Ln as BlessTreeTable, Ft as BlessTreemap, ir as BlessUploader, tr as BlessVideo, ct as BlessVirtualScroller, u as BlessWatermark, fn as BlessWatermarkOverlay, ye as addDays, be as addMonths, tt as applyMask, Mt as blessCanvasKey, t as blessLinkKey, Me as blessPalettes, yt as diffLines, Qt as edgeSpeed, zt as evaluateFormula, xe as fromISO, qt as initialBox, mt as isModifierKey, n as isRouterHref, Se as isoToday, Tt as keepInside, ht as matchShortcut, Jt as moveBox, rn as moveItem, an as nearestIndex, Et as polar, f as reducedMotion, Yt as resizeBox, Xt as scaleBox, p as scrollBehavior, Dt as sectorAt, gt as shortcutFromEvent, _t as splitShortcut, Ce as toISO, nt as unmask, Nn as useAnimateOnScroll, $t as useAutoScroll, De as useDataTable, zn as useDialog, ie as useFloating, cr as useFullscreen, S as useHash, r as useLink, nr as useLoadingBar, Vn as useLongPress, m as useMedia, Hn as usePan, lr as useResizeObserver, at as useRovingFocus, ur as useScroll, it as useScrollSpy, on as useSortable, Un as useSwipe, Ne as useTheme, he as useToast, Wn as useTouchRepeat, dr as useVisibility };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blessing-ui",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Blessing UI — Themed Flat Interface. Flat by design, raised with Vue, blessed for everyone.",
5
5
  "keywords": [
6
6
  "components",
@@ -55,7 +55,7 @@
55
55
  "docs:preview": "vitepress preview docs",
56
56
  "docs:meta": "node docs/scripts/meta.ts",
57
57
  "docs:pages": "node docs/scripts/pages.ts",
58
- "e2e": "node e2e/sweep.mjs chromium,firefox && node e2e/axe.mjs && node e2e/interact.mjs chromium && node e2e/interact.mjs firefox",
58
+ "e2e": "node e2e/sweep.mjs chromium,firefox && node e2e/axe.mjs && node e2e/motion.mjs && node e2e/interact.mjs chromium && node e2e/interact.mjs firefox",
59
59
  "e2e:consumer": "pnpm build && node e2e/consumer/check.mjs",
60
60
  "docs:blocks": "node docs/scripts/blocks.ts",
61
61
  "docs:shots": "node docs/scripts/shots.mjs"
@@ -72,7 +72,9 @@
72
72
  "axe-core": "^4.13.0",
73
73
  "jsdom": "^30.1.0",
74
74
  "oxfmt": "^0.68.0",
75
+ "pixelmatch": "^8.0.0",
75
76
  "playwright": "^1.63.0",
77
+ "pngjs": "^7.0.0",
76
78
  "typescript": "^6.0.3",
77
79
  "uqr": "^0.1.3",
78
80
  "vite": "^8.3.0",