@vkzstudio/muza-ui 1.0.7 → 1.0.8

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 (47) hide show
  1. package/dist/components/Chip/Chip.d.ts +43 -0
  2. package/dist/components/Chip/Chip.d.ts.map +1 -0
  3. package/dist/components/Chip/Chip.js +98 -0
  4. package/dist/components/Chip/Chip.stories.d.ts +9 -0
  5. package/dist/components/Chip/Chip.stories.d.ts.map +1 -0
  6. package/dist/components/Chip/index.d.ts +2 -0
  7. package/dist/components/Chip/index.d.ts.map +1 -0
  8. package/dist/components/DataTable/DataTable.d.ts +10 -4
  9. package/dist/components/DataTable/DataTable.d.ts.map +1 -1
  10. package/dist/components/DataTable/DataTable.js +77 -49
  11. package/dist/components/DataTable/DataTable.stories.d.ts +4 -0
  12. package/dist/components/DataTable/DataTable.stories.d.ts.map +1 -1
  13. package/dist/components/DataTable/index.d.ts +1 -1
  14. package/dist/components/DataTable/index.d.ts.map +1 -1
  15. package/dist/components/Reorderable/Reorderable.d.ts +100 -0
  16. package/dist/components/Reorderable/Reorderable.d.ts.map +1 -0
  17. package/dist/components/Reorderable/Reorderable.js +197 -0
  18. package/dist/components/Reorderable/Reorderable.stories.d.ts +14 -0
  19. package/dist/components/Reorderable/Reorderable.stories.d.ts.map +1 -0
  20. package/dist/components/Reorderable/index.d.ts +2 -0
  21. package/dist/components/Reorderable/index.d.ts.map +1 -0
  22. package/dist/components/ReorderableTable/ReorderableTable.d.ts +40 -0
  23. package/dist/components/ReorderableTable/ReorderableTable.d.ts.map +1 -0
  24. package/dist/components/ReorderableTable/ReorderableTable.js +175 -0
  25. package/dist/components/ReorderableTable/ReorderableTable.stories.d.ts +18 -0
  26. package/dist/components/ReorderableTable/ReorderableTable.stories.d.ts.map +1 -0
  27. package/dist/components/ReorderableTable/index.d.ts +2 -0
  28. package/dist/components/ReorderableTable/index.d.ts.map +1 -0
  29. package/dist/components/SwipeButton/SwipeButton.js +8 -8
  30. package/dist/components/index.d.ts +3 -0
  31. package/dist/components/index.d.ts.map +1 -1
  32. package/dist/index.js +196 -183
  33. package/dist/muza-ui.css +1 -1
  34. package/dist/node_modules/framer-motion/dist/es/components/Reorder/Group.js +38 -0
  35. package/dist/node_modules/framer-motion/dist/es/components/Reorder/Item.js +29 -0
  36. package/dist/node_modules/framer-motion/dist/es/components/Reorder/utils/check-reorder.js +17 -0
  37. package/dist/node_modules/framer-motion/dist/es/context/ReorderContext.js +5 -0
  38. package/dist/node_modules/motion-utils/dist/es/array.js +15 -6
  39. package/dist/translations/locales/cs.d.ts.map +1 -1
  40. package/dist/translations/locales/cs.js +4 -0
  41. package/dist/translations/locales/en.d.ts.map +1 -1
  42. package/dist/translations/locales/en.js +4 -0
  43. package/dist/translations/locales/sk.d.ts.map +1 -1
  44. package/dist/translations/locales/sk.js +4 -0
  45. package/dist/translations/types.d.ts +8 -0
  46. package/dist/translations/types.d.ts.map +1 -1
  47. package/package.json +2 -2
@@ -0,0 +1,38 @@
1
+ import { jsx as d } from "react/jsx-runtime";
2
+ import { forwardRef as x, useRef as g, useEffect as h } from "react";
3
+ import { ReorderContext as y } from "../../context/ReorderContext.js";
4
+ import { motion as C } from "../../render/components/motion/proxy.js";
5
+ import { useConstant as G } from "../../utils/use-constant.js";
6
+ import { checkReorder as O } from "./utils/check-reorder.js";
7
+ import { invariant as w } from "../../../../../motion-utils/dist/es/errors.js";
8
+ function I({ children: e, as: u = "ul", axis: f = "y", onReorder: p, values: c, ...s }, a) {
9
+ const l = G(() => C[u]), r = [], m = g(!1);
10
+ w(!!c, "Reorder.Group must be provided a values prop", "reorder-values");
11
+ const R = {
12
+ axis: f,
13
+ registerItem: (o, t) => {
14
+ const n = r.findIndex((i) => o === i.value);
15
+ n !== -1 ? r[n].layout = t[f] : r.push({ value: o, layout: t[f] }), r.sort(j);
16
+ },
17
+ updateOrder: (o, t, n) => {
18
+ if (m.current)
19
+ return;
20
+ const i = O(r, o, t, n);
21
+ r !== i && (m.current = !0, p(i.map(b).filter((v) => c.indexOf(v) !== -1)));
22
+ }
23
+ };
24
+ return h(() => {
25
+ m.current = !1;
26
+ }), d(l, { ...s, ref: a, ignoreStrict: !0, children: d(y.Provider, { value: R, children: e }) });
27
+ }
28
+ const q = /* @__PURE__ */ x(I);
29
+ function b(e) {
30
+ return e.value;
31
+ }
32
+ function j(e, u) {
33
+ return e.layout.min - u.layout.min;
34
+ }
35
+ export {
36
+ q as ReorderGroup,
37
+ I as ReorderGroupComponent
38
+ };
@@ -0,0 +1,29 @@
1
+ import { jsx as C } from "react/jsx-runtime";
2
+ import { forwardRef as I, useContext as M } from "react";
3
+ import { ReorderContext as h } from "../../context/ReorderContext.js";
4
+ import { motion as V } from "../../render/components/motion/proxy.js";
5
+ import { useConstant as O } from "../../utils/use-constant.js";
6
+ import { useMotionValue as S } from "../../value/use-motion-value.js";
7
+ import { useTransform as T } from "../../value/use-transform.js";
8
+ import { isMotionValue as b } from "../../../../../motion-dom/dist/es/value/utils/is-motion-value.js";
9
+ import { invariant as j } from "../../../../../motion-utils/dist/es/errors.js";
10
+ function f(e, o = 0) {
11
+ return b(e) ? e : S(o);
12
+ }
13
+ function w({ children: e, style: o = {}, value: m, as: p = "li", onDrag: u, layout: c = !0, ...d }, x) {
14
+ const l = O(() => V[p]), s = M(h), r = {
15
+ x: f(o.x),
16
+ y: f(o.y)
17
+ }, y = T([r.x, r.y], ([t, i]) => t || i ? 1 : "unset");
18
+ j(!!s, "Reorder.Item must be a child of Reorder.Group", "reorder-item-child");
19
+ const { axis: n, registerItem: R, updateOrder: g } = s;
20
+ return C(l, { drag: n, ...d, dragSnapToOrigin: !0, style: { ...o, x: r.x, y: r.y, zIndex: y }, layout: c, onDrag: (t, i) => {
21
+ const { velocity: a } = i;
22
+ a[n] && g(m, r[n].get(), a[n]), u && u(t, i);
23
+ }, onLayoutMeasure: (t) => R(m, t), ref: x, ignoreStrict: !0, children: e });
24
+ }
25
+ const E = /* @__PURE__ */ I(w);
26
+ export {
27
+ E as ReorderItem,
28
+ w as ReorderItemComponent
29
+ };
@@ -0,0 +1,17 @@
1
+ import { mixNumber as s } from "../../../../../../motion-dom/dist/es/utils/mix/number.js";
2
+ import { moveItem as r } from "../../../../../../motion-utils/dist/es/array.js";
3
+ function p(t, f, m, i) {
4
+ if (!i)
5
+ return t;
6
+ const n = t.findIndex((a) => a.value === f);
7
+ if (n === -1)
8
+ return t;
9
+ const e = i > 0 ? 1 : -1, u = t[n + e];
10
+ if (!u)
11
+ return t;
12
+ const x = t[n], o = u.layout, c = s(o.min, o.max, 0.5);
13
+ return e === 1 && x.layout.max + m > c || e === -1 && x.layout.min + m < c ? r(t, n, n + e) : t;
14
+ }
15
+ export {
16
+ p as checkReorder
17
+ };
@@ -0,0 +1,5 @@
1
+ import { createContext as t } from "react";
2
+ const o = t(null);
3
+ export {
4
+ o as ReorderContext
5
+ };
@@ -1,11 +1,20 @@
1
- function f(e, n) {
1
+ function l(e, n) {
2
2
  e.indexOf(n) === -1 && e.push(n);
3
3
  }
4
- function d(e, n) {
5
- const i = e.indexOf(n);
6
- i > -1 && e.splice(i, 1);
4
+ function u(e, n) {
5
+ const t = e.indexOf(n);
6
+ t > -1 && e.splice(t, 1);
7
+ }
8
+ function f([...e], n, t) {
9
+ const i = n < 0 ? e.length + n : n;
10
+ if (i >= 0 && i < e.length) {
11
+ const c = t < 0 ? e.length + t : t, [s] = e.splice(n, 1);
12
+ e.splice(c, 0, s);
13
+ }
14
+ return e;
7
15
  }
8
16
  export {
9
- f as addUniqueItem,
10
- d as removeItem
17
+ l as addUniqueItem,
18
+ f as moveItem,
19
+ u as removeItem
11
20
  };
@@ -1 +1 @@
1
- {"version":3,"file":"cs.d.ts","sourceRoot":"","sources":["../../../src/translations/locales/cs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEhD,eAAO,MAAM,cAAc,EAAE,gBAgD5B,CAAA"}
1
+ {"version":3,"file":"cs.d.ts","sourceRoot":"","sources":["../../../src/translations/locales/cs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEhD,eAAO,MAAM,cAAc,EAAE,gBAoD5B,CAAA"}
@@ -45,6 +45,10 @@ const e = {
45
45
  searchbar: {
46
46
  clearButtonAriaLabel: "Vymazat hledání",
47
47
  searchButtonAriaLabel: "Hledat"
48
+ },
49
+ reorderableTable: {
50
+ dragHandleAriaLabel: "Přetáhněte pro změnu pořadí",
51
+ listAriaLabel: "Seznam s možností změny pořadí"
48
52
  }
49
53
  };
50
54
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../../src/translations/locales/en.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEhD,eAAO,MAAM,cAAc,EAAE,gBAgD5B,CAAA"}
1
+ {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../../src/translations/locales/en.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEhD,eAAO,MAAM,cAAc,EAAE,gBAoD5B,CAAA"}
@@ -45,6 +45,10 @@ const e = {
45
45
  searchbar: {
46
46
  clearButtonAriaLabel: "Clear search",
47
47
  searchButtonAriaLabel: "Search"
48
+ },
49
+ reorderableTable: {
50
+ dragHandleAriaLabel: "Drag to reorder",
51
+ listAriaLabel: "Reorderable list"
48
52
  }
49
53
  };
50
54
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"sk.d.ts","sourceRoot":"","sources":["../../../src/translations/locales/sk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEhD,eAAO,MAAM,cAAc,EAAE,gBAgD5B,CAAA"}
1
+ {"version":3,"file":"sk.d.ts","sourceRoot":"","sources":["../../../src/translations/locales/sk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEhD,eAAO,MAAM,cAAc,EAAE,gBAoD5B,CAAA"}
@@ -45,6 +45,10 @@ const e = {
45
45
  searchbar: {
46
46
  clearButtonAriaLabel: "Vymazať hľadanie",
47
47
  searchButtonAriaLabel: "Hľadať"
48
+ },
49
+ reorderableTable: {
50
+ dragHandleAriaLabel: "Potiahnite pre zmenu poradia",
51
+ listAriaLabel: "Zoznam s možnosťou zmeny poradia"
48
52
  }
49
53
  };
50
54
  export {
@@ -76,6 +76,13 @@ export interface SearchbarTranslations {
76
76
  clearButtonAriaLabel: string;
77
77
  searchButtonAriaLabel: string;
78
78
  }
79
+ /**
80
+ * ReorderableTable component translations
81
+ */
82
+ export interface ReorderableTableTranslations {
83
+ dragHandleAriaLabel: string;
84
+ listAriaLabel: string;
85
+ }
79
86
  /**
80
87
  * Complete translations object for all muza-ui components
81
88
  */
@@ -88,6 +95,7 @@ export interface MuzaTranslations {
88
95
  swipeButton: SwipeButtonTranslations;
89
96
  select: SelectTranslations;
90
97
  searchbar: SearchbarTranslations;
98
+ reorderableTable: ReorderableTableTranslations;
91
99
  }
92
100
  /**
93
101
  * Utility type for partial/deep overrides of translations
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/translations/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/translations/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vkzstudio/muza-ui",
3
- "version": "1.0.7",
3
+ "version": "1.0.8",
4
4
  "description": "React component library built with Vite, shadcn/ui, and Tailwind CSS",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -76,7 +76,7 @@
76
76
  "color": "^5.0.2",
77
77
  "date-fns": "^4.1.0",
78
78
  "embla-carousel-react": "^8.6.0",
79
- "motion": "^12.23.12",
79
+ "motion": "^12.29.0",
80
80
  "next-themes": "^0.4.6",
81
81
  "photoswipe": "^5.4.4",
82
82
  "react": "^18.3.1",