@rinzai/zen 0.9.0 → 0.10.1

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 (112) hide show
  1. package/dist/animated-number/index.d.ts +6 -2
  2. package/dist/animated-number/index.d.ts.map +1 -1
  3. package/dist/animated-number/index.js +68 -17
  4. package/dist/calendar-heatmap/index.d.ts +25 -0
  5. package/dist/calendar-heatmap/index.d.ts.map +1 -0
  6. package/dist/calendar-heatmap/index.js +48 -0
  7. package/dist/chart/allocation.d.ts +30 -0
  8. package/dist/chart/allocation.d.ts.map +1 -0
  9. package/dist/chart/allocation.js +69 -0
  10. package/dist/chart/index.d.ts +1 -0
  11. package/dist/chart/index.d.ts.map +1 -1
  12. package/dist/chart/index.js +85 -83
  13. package/dist/code-block/index.d.ts +1 -1
  14. package/dist/code-block/index.d.ts.map +1 -1
  15. package/dist/code-block/index.js +31 -22
  16. package/dist/collapse/index.d.ts +3 -2
  17. package/dist/collapse/index.d.ts.map +1 -1
  18. package/dist/collapse/index.js +1 -1
  19. package/dist/date-picker/index.d.ts +10 -2
  20. package/dist/date-picker/index.d.ts.map +1 -1
  21. package/dist/date-picker/index.js +43 -21
  22. package/dist/dialog/index.d.ts +4 -2
  23. package/dist/dialog/index.d.ts.map +1 -1
  24. package/dist/dialog/index.js +69 -113
  25. package/dist/editable-cell/index.d.ts +2 -1
  26. package/dist/editable-cell/index.d.ts.map +1 -1
  27. package/dist/editable-cell/index.js +24 -17
  28. package/dist/filter-bar/index.d.ts +21 -0
  29. package/dist/filter-bar/index.d.ts.map +1 -0
  30. package/dist/filter-bar/index.js +90 -0
  31. package/dist/icon-picker/index.d.ts +38 -0
  32. package/dist/icon-picker/index.d.ts.map +1 -0
  33. package/dist/icon-picker/index.js +112 -0
  34. package/dist/icons/arrow-left.js +23 -0
  35. package/dist/icons/micro/arrow-trending-down.d.ts +3 -0
  36. package/dist/icons/micro/arrow-trending-down.d.ts.map +1 -0
  37. package/dist/icons/micro/arrow-trending-down.js +21 -0
  38. package/dist/icons/micro/arrow-trending-up.d.ts +3 -0
  39. package/dist/icons/micro/arrow-trending-up.d.ts.map +1 -0
  40. package/dist/icons/micro/arrow-trending-up.js +21 -0
  41. package/dist/index.d.ts +17 -5
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/kbd/index.d.ts +4 -0
  44. package/dist/kbd/index.d.ts.map +1 -0
  45. package/dist/kbd/index.js +12 -0
  46. package/dist/keypad/index.d.ts +20 -0
  47. package/dist/keypad/index.d.ts.map +1 -0
  48. package/dist/keypad/index.js +42 -0
  49. package/dist/lib.js +92 -77
  50. package/dist/load-more/index.d.ts +19 -0
  51. package/dist/load-more/index.d.ts.map +1 -0
  52. package/dist/load-more/index.js +37 -0
  53. package/dist/menu/index.d.ts +22 -3
  54. package/dist/menu/index.d.ts.map +1 -1
  55. package/dist/menu/index.js +139 -48
  56. package/dist/meter/index.d.ts +3 -1
  57. package/dist/meter/index.d.ts.map +1 -1
  58. package/dist/meter/index.js +19 -14
  59. package/dist/money-input/index.d.ts +3 -3
  60. package/dist/page-transition/index.d.ts +10 -0
  61. package/dist/page-transition/index.d.ts.map +1 -0
  62. package/dist/page-transition/index.js +16 -0
  63. package/dist/progress-ring/index.d.ts +4 -1
  64. package/dist/progress-ring/index.d.ts.map +1 -1
  65. package/dist/progress-ring/index.js +47 -38
  66. package/dist/range-slider/index.d.ts +26 -0
  67. package/dist/range-slider/index.d.ts.map +1 -0
  68. package/dist/range-slider/index.js +44 -0
  69. package/dist/repeat-picker/index.d.ts +22 -0
  70. package/dist/repeat-picker/index.d.ts.map +1 -0
  71. package/dist/repeat-picker/index.js +115 -0
  72. package/dist/slider/index.d.ts +2 -0
  73. package/dist/slider/index.d.ts.map +1 -1
  74. package/dist/slider/index.js +19 -18
  75. package/dist/sortable/index.d.ts +33 -0
  76. package/dist/sortable/index.d.ts.map +1 -0
  77. package/dist/sortable/index.js +147 -0
  78. package/dist/table/index.d.ts +5 -1
  79. package/dist/table/index.d.ts.map +1 -1
  80. package/dist/table/index.js +90 -58
  81. package/dist/table/selection.d.ts +55 -0
  82. package/dist/table/selection.d.ts.map +1 -0
  83. package/dist/table/selection.js +83 -0
  84. package/dist/table/swipe.d.ts +18 -0
  85. package/dist/table/swipe.d.ts.map +1 -0
  86. package/dist/table/swipe.js +53 -0
  87. package/dist/tabs/index.d.ts.map +1 -1
  88. package/dist/tabs/index.js +101 -51
  89. package/dist/theme-toggle/index.js +6 -6
  90. package/dist/theme.css +184 -11
  91. package/dist/toast/index.js +25 -25
  92. package/dist/toggle/index.d.ts.map +1 -1
  93. package/dist/toggle/index.js +1 -1
  94. package/dist/trend/index.d.ts +19 -0
  95. package/dist/trend/index.d.ts.map +1 -0
  96. package/dist/trend/index.js +27 -0
  97. package/dist/utils/date.d.ts +34 -0
  98. package/dist/utils/date.d.ts.map +1 -1
  99. package/dist/utils/date.js +45 -12
  100. package/dist/utils/money.d.ts +3 -1
  101. package/dist/utils/money.d.ts.map +1 -1
  102. package/dist/utils/money.js +24 -1
  103. package/dist/utils/repeat.d.ts +17 -0
  104. package/dist/utils/repeat.d.ts.map +1 -0
  105. package/dist/utils/repeat.js +38 -0
  106. package/dist/utils/swipe.d.ts +29 -0
  107. package/dist/utils/swipe.d.ts.map +1 -0
  108. package/dist/utils/swipe.js +85 -0
  109. package/dist/utils/useAnchoredPopup.d.ts.map +1 -1
  110. package/dist/utils/useAnchoredPopup.js +3 -9
  111. package/dist/zen.css +1 -1
  112. package/package.json +3 -1
@@ -0,0 +1,115 @@
1
+ "use client";
2
+ import { cx as e } from "../utils/cx.js";
3
+ import t from "../chip/index.js";
4
+ import n from "../input/index.js";
5
+ import { dayOfWeek as r, formatDate as i, weekStart as a, weekdayNames as o } from "../utils/date.js";
6
+ import s, { SelectItem as c } from "../select/index.js";
7
+ import { describeRepeat as l, nextOccurrences as u } from "../utils/repeat.js";
8
+ import { useState as d } from "react";
9
+ import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
10
+ //#region packages/repeat-picker/index.tsx
11
+ var h = [
12
+ "day",
13
+ "week",
14
+ "month",
15
+ "year"
16
+ ];
17
+ function g({ value: g, onChange: _, locale: v, start: y, weekStartsOn: b = a(v), label: x = "Repeats", className: S }) {
18
+ let [C, w] = d(String(g.every));
19
+ Number(C) !== g.every && C !== "" && w(String(g.every));
20
+ let T = o(v), E = Array.from({ length: 7 }, (e, t) => (b + t) % 7), D = g.weekdays ?? (y ? [r(y)] : []), O = g.every !== 1;
21
+ return /* @__PURE__ */ m("fieldset", {
22
+ className: e("zen__repeat-picker flex flex-col gap-3", S),
23
+ children: [
24
+ /* @__PURE__ */ p("legend", {
25
+ className: "sr-only",
26
+ children: x
27
+ }),
28
+ /* @__PURE__ */ m("div", {
29
+ className: "flex items-center gap-2 text-sm",
30
+ children: [
31
+ /* @__PURE__ */ p("span", {
32
+ className: "text-muted-foreground",
33
+ children: "Every"
34
+ }),
35
+ /* @__PURE__ */ p(n, {
36
+ "aria-label": "How many",
37
+ inputMode: "numeric",
38
+ value: C,
39
+ onChange: (e) => {
40
+ let t = e.target.value.replace(/\D/g, "").slice(0, 3);
41
+ w(t), Number(t) >= 1 && _({
42
+ ...g,
43
+ every: Number(t)
44
+ });
45
+ },
46
+ onBlur: () => w(String(g.every)),
47
+ className: "w-16 text-center tabular-nums"
48
+ }),
49
+ /* @__PURE__ */ p(s, {
50
+ "aria-label": "Unit",
51
+ value: g.unit,
52
+ onChange: (e) => {
53
+ let t = {
54
+ every: g.every,
55
+ unit: e
56
+ };
57
+ e === "week" && y && (t.weekdays = [r(y)]), e === "month" && (t.day = y ? Number(y.slice(8)) : 1), _(t);
58
+ },
59
+ className: "w-32",
60
+ children: h.map((e) => /* @__PURE__ */ p(c, {
61
+ value: e,
62
+ children: O ? `${e}s` : e
63
+ }, e))
64
+ })
65
+ ]
66
+ }),
67
+ g.unit === "week" && /* @__PURE__ */ p("div", {
68
+ role: "group",
69
+ "aria-label": "On",
70
+ className: "flex flex-wrap gap-1.5",
71
+ children: E.map((e) => {
72
+ let n = D.includes(e);
73
+ return /* @__PURE__ */ p(t, {
74
+ pressed: n,
75
+ onClick: () => {
76
+ n && D.length === 1 || _({
77
+ ...g,
78
+ weekdays: n ? D.filter((t) => t !== e) : [...D, e]
79
+ });
80
+ },
81
+ children: T[e]
82
+ }, e);
83
+ })
84
+ }),
85
+ g.unit === "month" && /* @__PURE__ */ m(s, {
86
+ "aria-label": "On",
87
+ value: String(g.day ?? (y ? Number(y.slice(8)) : 1)),
88
+ onChange: (e) => _({
89
+ ...g,
90
+ day: Number(e)
91
+ }),
92
+ className: "w-40",
93
+ children: [Array.from({ length: 31 }, (e, t) => /* @__PURE__ */ m(c, {
94
+ value: String(t + 1),
95
+ children: ["Day ", t + 1]
96
+ }, t + 1)), /* @__PURE__ */ p(c, {
97
+ value: "-1",
98
+ children: "Last day"
99
+ })]
100
+ }),
101
+ /* @__PURE__ */ m("p", {
102
+ "aria-live": "polite",
103
+ className: "text-muted-foreground text-sm",
104
+ children: [l(g, v, y), y && /* @__PURE__ */ m(f, { children: [
105
+ /* @__PURE__ */ p("br", {}),
106
+ "Next:",
107
+ " ",
108
+ u(g, y, 3).map((e) => i(e, v)).join(", ")
109
+ ] })]
110
+ })
111
+ ]
112
+ });
113
+ }
114
+ //#endregion
115
+ export { g as default };
@@ -6,6 +6,8 @@ import { ComponentProps } from 'react';
6
6
  * gradient), and a glowing thumb.
7
7
  */
8
8
  export default function Slider({ value, min, max, step, onValueChange, onValueCommit, trackBackground, thumbColor, valueText, className, style, ...rest }: SliderProps): import('react').JSX.Element;
9
+ /** The glowing thumb, with its focus ring: Slider's and RangeSlider's. */
10
+ export declare const THUMB: string;
9
11
  export interface SliderProps extends Omit<ComponentProps<'input'>, 'type' | 'value' | 'min' | 'max' | 'step' | 'onChange' | 'defaultValue'> {
10
12
  value: number;
11
13
  min?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/slider/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAoC,MAAM,OAAO,CAAC;AAEzE;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC3B,KAAK,EACL,GAAO,EACP,GAAS,EACT,IAAQ,EACR,aAAa,EACb,aAAa,EACb,eAAe,EACf,UAAU,EACV,SAAS,EACT,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACV,EAAE,WAAW,+BAkDb;AAED,MAAM,WAAW,WAAY,SAAQ,IAAI,CACrC,cAAc,CAAC,OAAO,CAAC,EACvB,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,UAAU,GAAG,cAAc,CAC1E;IACG,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,iDAAiD;IACjD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,6DAA6D;IAC7D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACzC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/slider/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAoC,MAAM,OAAO,CAAC;AAEzE;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC3B,KAAK,EACL,GAAO,EACP,GAAS,EACT,IAAQ,EACR,aAAa,EACb,aAAa,EACb,eAAe,EACf,UAAU,EACV,SAAS,EACT,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACV,EAAE,WAAW,+BA6Cb;AAED,0EAA0E;AAC1E,eAAO,MAAM,KAAK,QAI+E,CAAC;AAElG,MAAM,WAAW,WAAY,SAAQ,IAAI,CACrC,cAAc,CAAC,OAAO,CAAC,EACvB,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,UAAU,GAAG,cAAc,CAC1E;IACG,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,iDAAiD;IACjD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,6DAA6D;IAC7D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACzC"}
@@ -3,32 +3,33 @@ import { cx as e } from "../utils/cx.js";
3
3
  import { useEffect as t, useRef as n } from "react";
4
4
  import { jsx as r } from "react/jsx-runtime";
5
5
  //#region packages/slider/index.tsx
6
- function i({ value: i, min: a = 0, max: o = 100, step: s = 1, onValueChange: c, onValueCommit: l, trackBackground: u, thumbColor: d, valueText: f, className: p, style: m, ...h }) {
7
- let g = n(null), _ = n(l);
8
- _.current = l, t(() => {
9
- let e = g.current;
6
+ function i({ value: i, min: o = 0, max: s = 100, step: c = 1, onValueChange: l, onValueCommit: u, trackBackground: d, thumbColor: f, valueText: p, className: m, style: h, ...g }) {
7
+ let _ = n(null), v = n(u);
8
+ v.current = u, t(() => {
9
+ let e = _.current;
10
10
  if (!e) return;
11
- let t = () => _.current?.(Number(e.value));
11
+ let t = () => v.current?.(Number(e.value));
12
12
  return e.addEventListener("change", t), () => e.removeEventListener("change", t);
13
13
  }, []);
14
- let v = o > a ? (i - a) / (o - a) * 100 : 0, y = u ?? `linear-gradient(to right, oklch(var(--primary)) ${v}%, oklch(var(--muted)) ${v}%)`;
14
+ let y = s > o ? (i - o) / (s - o) * 100 : 0, b = d ?? `linear-gradient(to right, oklch(var(--primary)) ${y}%, oklch(var(--muted)) ${y}%)`;
15
15
  return /* @__PURE__ */ r("input", {
16
- ref: g,
16
+ ref: _,
17
17
  type: "range",
18
- min: a,
19
- max: o,
20
- step: s,
18
+ min: o,
19
+ max: s,
20
+ step: c,
21
21
  value: i,
22
- "aria-valuetext": f?.(i),
23
- onChange: (e) => c?.(Number(e.target.value)),
22
+ "aria-valuetext": p?.(i),
23
+ onChange: (e) => l?.(Number(e.target.value)),
24
24
  style: {
25
- ...m,
26
- "--zen-track": y,
27
- "--zen-thumb": d ?? "oklch(var(--primary))"
25
+ ...h,
26
+ "--zen-track": b,
27
+ "--zen-thumb": f ?? "oklch(var(--primary))"
28
28
  },
29
- className: e("zen__slider h-5 w-full cursor-pointer appearance-none bg-transparent outline-hidden disabled:cursor-not-allowed disabled:opacity-50", "[&::-webkit-slider-runnable-track]:h-2.5 [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:[background:var(--zen-track)]", "[&::-moz-range-track]:h-2.5 [&::-moz-range-track]:rounded-full [&::-moz-range-track]:[background:var(--zen-track)]", "[&::-webkit-slider-thumb]:-mt-[5px] [&::-webkit-slider-thumb]:size-5 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:border-2 [&::-webkit-slider-thumb]:border-white [&::-webkit-slider-thumb]:shadow-[0_0_0_1px_oklch(0_0_0/0.3),0_0_16px_oklch(var(--glow)/calc(0.8*var(--glow-k)))] [&::-webkit-slider-thumb]:[background:var(--zen-thumb)]", "[&::-moz-range-thumb]:size-5 [&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:border-2 [&::-moz-range-thumb]:border-white [&::-moz-range-thumb]:shadow-[0_0_0_1px_oklch(0_0_0/0.3),0_0_16px_oklch(var(--glow)/calc(0.8*var(--glow-k)))] [&::-moz-range-thumb]:[background:var(--zen-thumb)]", "focus-visible:[&::-webkit-slider-thumb]:ring-ring/40 focus-visible:[&::-webkit-slider-thumb]:ring-4", "focus-visible:[&::-moz-range-thumb]:ring-ring/40 focus-visible:[&::-moz-range-thumb]:ring-4", p),
30
- ...h
29
+ className: e("zen__slider h-5 w-full cursor-pointer appearance-none bg-transparent outline-hidden disabled:cursor-not-allowed disabled:opacity-50", "[&::-webkit-slider-runnable-track]:h-2.5 [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:[background:var(--zen-track)]", "[&::-moz-range-track]:h-2.5 [&::-moz-range-track]:rounded-full [&::-moz-range-track]:[background:var(--zen-track)]", a, m),
30
+ ...g
31
31
  });
32
32
  }
33
+ var a = "[&::-webkit-slider-thumb]:-mt-[5px] [&::-webkit-slider-thumb]:size-5 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:border-2 [&::-webkit-slider-thumb]:border-white [&::-webkit-slider-thumb]:shadow-[0_0_0_1px_oklch(0_0_0/0.3),0_0_16px_oklch(var(--glow)/calc(0.8*var(--glow-k)))] [&::-webkit-slider-thumb]:[background:var(--zen-thumb)] [&::-moz-range-thumb]:size-5 [&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:border-2 [&::-moz-range-thumb]:border-white [&::-moz-range-thumb]:shadow-[0_0_0_1px_oklch(0_0_0/0.3),0_0_16px_oklch(var(--glow)/calc(0.8*var(--glow-k)))] [&::-moz-range-thumb]:[background:var(--zen-thumb)] focus-visible:[&::-webkit-slider-thumb]:ring-ring/40 focus-visible:[&::-webkit-slider-thumb]:ring-4 focus-visible:[&::-moz-range-thumb]:ring-ring/40 focus-visible:[&::-moz-range-thumb]:ring-4";
33
34
  //#endregion
34
- export { i as default };
35
+ export { a as THUMB, i as default };
@@ -0,0 +1,33 @@
1
+ import { ComponentProps } from 'react';
2
+ /**
3
+ * A list put in order by dragging, e.g. budget categories: drag an item by its
4
+ * SortableHandle and the others make way (a phone taps lightly at each new
5
+ * place); it settles into place when let go.
6
+ * From the keyboard, Space or Enter on a handle picks the item up, the arrow
7
+ * keys move it, Space or Enter drops it and Escape puts it back; each step is
8
+ * announced. `value` is the ids in order; render a SortableItem for each.
9
+ */
10
+ export declare function SortableList({ value, onChange, className, children, ...rest }: SortableListProps): import('react').JSX.Element;
11
+ /** One item in a SortableList; give it the `id` it has in the list's value. */
12
+ export declare function SortableItem({ id, className, ...rest }: SortableItemProps): import('react').JSX.Element;
13
+ /**
14
+ * What an item is dragged by: a grip button. `label` names the item ("Rent");
15
+ * the button reads "Reorder Rent". It takes no scroll gestures, so dragging it
16
+ * never scrolls the page.
17
+ */
18
+ export declare function SortableHandle({ id, label, className, children, ...rest }: SortableHandleProps): import('react').JSX.Element;
19
+ export interface SortableListProps extends Omit<ComponentProps<'ul'>, 'onChange'> {
20
+ /** The items' ids, in order. */
21
+ value: readonly string[];
22
+ onChange: (value: string[]) => void;
23
+ }
24
+ export interface SortableItemProps extends ComponentProps<'li'> {
25
+ id: string;
26
+ }
27
+ export interface SortableHandleProps extends Omit<ComponentProps<'button'>, 'id'> {
28
+ /** The item's id, as in the list's value. */
29
+ id: string;
30
+ /** The item's name, e.g. "Rent". */
31
+ label: string;
32
+ }
33
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/sortable/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EACH,cAAc,EASjB,MAAM,OAAO,CAAC;AA2Bf;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,iBAAiB,+BAuJhG;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,iBAAiB,+BAazE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,mBAAmB,+BAwB9F;AAUD,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAC7E,gCAAgC;IAChC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,iBAAkB,SAAQ,cAAc,CAAC,IAAI,CAAC;IAC3D,EAAE,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;IAC7E,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,147 @@
1
+ "use client";
2
+ import { cx as e } from "../utils/cx.js";
3
+ import { reducedMotion as t } from "../utils/motion.js";
4
+ import { createContext as n, useContext as r, useEffect as i, useLayoutEffect as a, useRef as o, useState as s } from "react";
5
+ import { jsx as c, jsxs as l } from "react/jsx-runtime";
6
+ //#region packages/sortable/index.tsx
7
+ var u = typeof window > "u" ? i : a, d = {
8
+ duration: 220,
9
+ easing: "cubic-bezier(0.2, 0.8, 0.2, 1)"
10
+ }, f = 48, p = n(null);
11
+ function m(e) {
12
+ let t = r(p);
13
+ if (!t) throw Error(`<${e}> must be inside <SortableList>`);
14
+ return t;
15
+ }
16
+ var h = (e, t, n) => {
17
+ let r = [...e];
18
+ return r.splice(n, 0, ...r.splice(t, 1)), r;
19
+ };
20
+ function g({ value: n, onChange: r, className: i, children: a, ...m }) {
21
+ let g = o(null), [_, v] = s(null), [b, x] = s(""), S = o(null), C = o(null), w = () => [...g.current?.querySelectorAll(":scope > [data-sortable-id]") ?? []], T = () => new Map(w().map((e) => [e.dataset.sortableId, e.getBoundingClientRect().top])), E = (e) => {
22
+ S.current = T(), r(e);
23
+ };
24
+ return u(() => {
25
+ let e = S.current;
26
+ if (S.current = null, e) for (let n of w()) {
27
+ n.style.removeProperty("translate");
28
+ let r = e.get(n.dataset.sortableId), i = r === void 0 ? 0 : r - n.getBoundingClientRect().top;
29
+ i && !t() && n.animate?.({ translate: [`0 ${i}px`, "0 0"] }, d);
30
+ }
31
+ }, [n]), /* @__PURE__ */ l(p.Provider, {
32
+ value: {
33
+ grab: (e, r) => {
34
+ if (e.button !== 0 || _) return;
35
+ let i = w(), a = i.findIndex((e) => e.dataset.sortableId === r), o = i[a];
36
+ if (!o) return;
37
+ e.preventDefault();
38
+ let s = e.currentTarget;
39
+ s.setPointerCapture?.(e.pointerId);
40
+ let c = y(g.current), l = c.scrollTop, u = e.clientY, p = i.map((e) => e.getBoundingClientRect()), m = p.length > 1 ? p[1].top - p[0].bottom : 0, v = p[a].height + m, b = p.map((e) => e.top + e.height / 2), x = a, C = e.clientY, D = 0;
41
+ o.dataset.dragging = "", g.current.dataset.sorting = "";
42
+ let O = () => {
43
+ let e = C - u + c.scrollTop - l;
44
+ o.style.translate = `0 ${e}px`;
45
+ let t = b[a] + e, n = x;
46
+ for (x = a; x < i.length - 1 && t > b[x + 1];) x++;
47
+ for (; x > 0 && t < b[x - 1];) x--;
48
+ x !== n && navigator.vibrate?.(5), i.forEach((e, t) => {
49
+ if (t === a) return;
50
+ let n = a < t && t <= x ? -v : x <= t && t < a ? v : 0;
51
+ e.style.translate = n ? `0 ${n}px` : "";
52
+ });
53
+ }, k = () => {
54
+ D = 0;
55
+ let e = c === document.scrollingElement ? {
56
+ top: 0,
57
+ bottom: innerHeight
58
+ } : c.getBoundingClientRect(), t = C < e.top + f ? -(e.top + f - C) : C > e.bottom - f ? C - (e.bottom - f) : 0;
59
+ t && (c.scrollTop += t / 3, O(), D = requestAnimationFrame(k));
60
+ }, A = (t) => {
61
+ t.pointerId === e.pointerId && (C = t.clientY, O(), D ||= requestAnimationFrame(k));
62
+ }, j = (r) => {
63
+ if (r.pointerId === e.pointerId) {
64
+ if (s.removeEventListener("pointermove", A), s.removeEventListener("pointerup", j), s.removeEventListener("pointercancel", j), cancelAnimationFrame(D), delete o.dataset.dragging, delete g.current?.dataset.sorting, r.type === "pointerup" && x !== a) E(h(n, a, x));
65
+ else {
66
+ S.current = T();
67
+ for (let e of i) e.style.removeProperty("translate");
68
+ for (let e of i) {
69
+ let n = S.current.get(e.dataset.sortableId) - e.getBoundingClientRect().top;
70
+ n && !t() && e.animate?.({ translate: [`0 ${n}px`, "0 0"] }, d);
71
+ }
72
+ S.current = null;
73
+ }
74
+ }
75
+ };
76
+ s.addEventListener("pointermove", A), s.addEventListener("pointerup", j), s.addEventListener("pointercancel", j);
77
+ },
78
+ key: (e, t, r) => {
79
+ let i = n.indexOf(t), a = `${i + 1} of ${n.length}`;
80
+ if (e.key === " " || e.key === "Enter") e.preventDefault(), _ === t ? (v(null), C.current = null, x(`${r} dropped, ${a}.`)) : _ || (v(t), C.current = n, x(`${r} picked up, ${a}. Arrow keys move it, Space drops it, Escape puts it back.`));
81
+ else if (_ === t && (e.key === "ArrowUp" || e.key === "ArrowDown")) {
82
+ e.preventDefault();
83
+ let t = i + (e.key === "ArrowUp" ? -1 : 1);
84
+ if (t < 0 || t >= n.length) return;
85
+ E(h(n, i, t)), x(`${r}, ${t + 1} of ${n.length}.`);
86
+ } else if (_ === t && e.key === "Escape") {
87
+ e.preventDefault();
88
+ let i = C.current ?? n;
89
+ v(null), C.current = null, i !== n && E([...i]), x(`${r} put back, ${i.indexOf(t) + 1} of ${i.length}.`);
90
+ }
91
+ },
92
+ lifted: _
93
+ },
94
+ children: [/* @__PURE__ */ c("ul", {
95
+ ref: g,
96
+ className: e("zen__sortable relative flex flex-col", i),
97
+ ...m,
98
+ children: a
99
+ }), /* @__PURE__ */ c("span", {
100
+ "aria-live": "assertive",
101
+ className: "sr-only",
102
+ children: b
103
+ })]
104
+ });
105
+ }
106
+ function _({ id: t, className: n, ...r }) {
107
+ let { lifted: i } = m("SortableItem");
108
+ return /* @__PURE__ */ c("li", {
109
+ "data-sortable-id": t,
110
+ "data-lifted": i === t || void 0,
111
+ className: e("zen__sortable-item relative transition-[box-shadow,scale] duration-200 data-dragging:z-10 data-dragging:scale-[1.02] data-dragging:shadow-[0_12px_32px_-12px_oklch(0_0_0/0.6)] data-lifted:z-10 data-lifted:shadow-[0_0_0_2px_oklch(var(--primary)/0.6)]", n),
112
+ ...r
113
+ });
114
+ }
115
+ function v({ id: t, label: n, className: r, children: i, ...a }) {
116
+ let { grab: o, key: s, lifted: l } = m("SortableHandle");
117
+ return /* @__PURE__ */ c("button", {
118
+ type: "button",
119
+ "aria-label": `Reorder ${n}`,
120
+ "aria-pressed": l === t,
121
+ onPointerDown: (e) => o(e, t),
122
+ onKeyDown: (e) => s(e, t, n),
123
+ className: e("text-muted-foreground hover:text-foreground focus-visible:ring-ring/50 grid size-8 shrink-0 cursor-grab touch-none place-items-center rounded-md outline-hidden select-none focus-visible:ring-2 active:cursor-grabbing", r),
124
+ ...a,
125
+ children: i ?? /* @__PURE__ */ c("svg", {
126
+ "aria-hidden": !0,
127
+ viewBox: "0 0 16 16",
128
+ fill: "currentColor",
129
+ className: "size-4",
130
+ children: [
131
+ 4,
132
+ 8,
133
+ 12
134
+ ].flatMap((e) => [5.5, 10.5].map((t) => /* @__PURE__ */ c("circle", {
135
+ cx: t,
136
+ cy: e,
137
+ r: "1.25"
138
+ }, `${t}${e}`)))
139
+ })
140
+ });
141
+ }
142
+ function y(e) {
143
+ for (let t = e.parentElement; t; t = t.parentElement) if (/auto|scroll/.test(getComputedStyle(t).overflowY) && t.scrollHeight > t.clientHeight) return t;
144
+ return document.scrollingElement ?? document.documentElement;
145
+ }
146
+ //#endregion
147
+ export { v as SortableHandle, _ as SortableItem, g as SortableList };
@@ -20,7 +20,9 @@ export declare function TableBody({ ref, ...rest }: ComponentProps<'tbody'>): im
20
20
  /** Rows that stay at the bottom while the body scrolls (totals, balances). */
21
21
  export declare function TableFooter({ className, ...rest }: ComponentProps<'tfoot'>): import('react').JSX.Element;
22
22
  /** A row; its cells light up together on hover. */
23
- export declare function TableRow({ className, ...rest }: ComponentProps<'tr'>): import('react').JSX.Element;
23
+ export declare function TableRow({ selected, className, ...rest }: ComponentProps<'tr'> & {
24
+ selected?: boolean;
25
+ }): import('react').JSX.Element;
24
26
  /**
25
27
  * Column heading: small spaced caps (TableHeader keeps the row at the top). With `onSort`, it's a
26
28
  * button that shows the direction and announces it (aria-sort).
@@ -82,4 +84,6 @@ export interface TableCellProps extends ComponentProps<'td'> {
82
84
  /** Stay in view when the table scrolls sideways. */
83
85
  sticky?: 'left';
84
86
  }
87
+ export { SelectionBar, type SelectionBarProps, TableSelectCell, type TableSelectCellProps, TableSelectHead, type TableSelectHeadProps, useSelection, } from './selection';
88
+ export { TableSwipeAction, type TableSwipeActionProps, TableSwipeRow, type TableSwipeRowProps } from './swipe';
85
89
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/table/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/table/index.tsx"],"names":[],"mappings":"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"}