@rinzai/zen 0.8.6 → 0.10.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 (168) 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 +69 -17
  4. package/dist/breadcrumbs/index.d.ts +15 -0
  5. package/dist/breadcrumbs/index.d.ts.map +1 -0
  6. package/dist/breadcrumbs/index.js +39 -0
  7. package/dist/calendar-heatmap/index.d.ts +25 -0
  8. package/dist/calendar-heatmap/index.d.ts.map +1 -0
  9. package/dist/calendar-heatmap/index.js +48 -0
  10. package/dist/card/index.d.ts +3 -1
  11. package/dist/card/index.d.ts.map +1 -1
  12. package/dist/card/index.js +3 -2
  13. package/dist/chart/allocation.d.ts +30 -0
  14. package/dist/chart/allocation.d.ts.map +1 -0
  15. package/dist/chart/allocation.js +69 -0
  16. package/dist/chart/donut.d.ts.map +1 -1
  17. package/dist/chart/donut.js +72 -70
  18. package/dist/chart/index.d.ts +1 -0
  19. package/dist/chart/index.d.ts.map +1 -1
  20. package/dist/chart/index.js +182 -178
  21. package/dist/code-block/index.d.ts +1 -1
  22. package/dist/code-block/index.d.ts.map +1 -1
  23. package/dist/code-block/index.js +31 -22
  24. package/dist/code-input/index.d.ts +20 -0
  25. package/dist/code-input/index.d.ts.map +1 -0
  26. package/dist/code-input/index.js +44 -0
  27. package/dist/collapse/index.d.ts +3 -2
  28. package/dist/collapse/index.d.ts.map +1 -1
  29. package/dist/collapse/index.js +1 -1
  30. package/dist/command-palette/index.d.ts +37 -0
  31. package/dist/command-palette/index.d.ts.map +1 -0
  32. package/dist/command-palette/index.js +120 -0
  33. package/dist/date-picker/index.d.ts +10 -2
  34. package/dist/date-picker/index.d.ts.map +1 -1
  35. package/dist/date-picker/index.js +43 -21
  36. package/dist/dialog/index.d.ts +13 -3
  37. package/dist/dialog/index.d.ts.map +1 -1
  38. package/dist/dialog/index.js +84 -44
  39. package/dist/editable-cell/index.d.ts +2 -1
  40. package/dist/editable-cell/index.d.ts.map +1 -1
  41. package/dist/editable-cell/index.js +24 -17
  42. package/dist/empty-state/index.d.ts +14 -0
  43. package/dist/empty-state/index.d.ts.map +1 -0
  44. package/dist/empty-state/index.js +31 -0
  45. package/dist/file-drop/index.d.ts +18 -0
  46. package/dist/file-drop/index.d.ts.map +1 -0
  47. package/dist/file-drop/index.js +49 -0
  48. package/dist/filter-bar/index.d.ts +21 -0
  49. package/dist/filter-bar/index.d.ts.map +1 -0
  50. package/dist/filter-bar/index.js +90 -0
  51. package/dist/icon-picker/index.d.ts +38 -0
  52. package/dist/icon-picker/index.d.ts.map +1 -0
  53. package/dist/icon-picker/index.js +112 -0
  54. package/dist/icons/arrow-left.js +23 -0
  55. package/dist/icons/micro/arrow-trending-down.d.ts +3 -0
  56. package/dist/icons/micro/arrow-trending-down.d.ts.map +1 -0
  57. package/dist/icons/micro/arrow-trending-down.js +21 -0
  58. package/dist/icons/micro/arrow-trending-up.d.ts +3 -0
  59. package/dist/icons/micro/arrow-trending-up.d.ts.map +1 -0
  60. package/dist/icons/micro/arrow-trending-up.js +21 -0
  61. package/dist/index.d.ts +30 -6
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/kbd/index.d.ts +4 -0
  64. package/dist/kbd/index.d.ts.map +1 -0
  65. package/dist/kbd/index.js +12 -0
  66. package/dist/keypad/index.d.ts +20 -0
  67. package/dist/keypad/index.d.ts.map +1 -0
  68. package/dist/keypad/index.js +42 -0
  69. package/dist/lib.js +92 -65
  70. package/dist/load-more/index.d.ts +19 -0
  71. package/dist/load-more/index.d.ts.map +1 -0
  72. package/dist/load-more/index.js +37 -0
  73. package/dist/menu/index.d.ts +22 -3
  74. package/dist/menu/index.d.ts.map +1 -1
  75. package/dist/menu/index.js +132 -45
  76. package/dist/meter/index.d.ts +3 -1
  77. package/dist/meter/index.d.ts.map +1 -1
  78. package/dist/meter/index.js +19 -14
  79. package/dist/money-input/index.d.ts +3 -3
  80. package/dist/page-transition/index.d.ts +10 -0
  81. package/dist/page-transition/index.d.ts.map +1 -0
  82. package/dist/page-transition/index.js +16 -0
  83. package/dist/pagination/index.d.ts +26 -0
  84. package/dist/pagination/index.d.ts.map +1 -0
  85. package/dist/pagination/index.js +62 -0
  86. package/dist/progress-ring/index.d.ts +4 -1
  87. package/dist/progress-ring/index.d.ts.map +1 -1
  88. package/dist/progress-ring/index.js +47 -38
  89. package/dist/range-slider/index.d.ts +26 -0
  90. package/dist/range-slider/index.d.ts.map +1 -0
  91. package/dist/range-slider/index.js +44 -0
  92. package/dist/repeat-picker/index.d.ts +22 -0
  93. package/dist/repeat-picker/index.d.ts.map +1 -0
  94. package/dist/repeat-picker/index.js +115 -0
  95. package/dist/skeleton/index.d.ts +12 -2
  96. package/dist/skeleton/index.d.ts.map +1 -1
  97. package/dist/skeleton/index.js +11 -5
  98. package/dist/slider/index.d.ts +2 -0
  99. package/dist/slider/index.d.ts.map +1 -1
  100. package/dist/slider/index.js +19 -18
  101. package/dist/sortable/index.d.ts +33 -0
  102. package/dist/sortable/index.d.ts.map +1 -0
  103. package/dist/sortable/index.js +147 -0
  104. package/dist/sparkline/index.d.ts +15 -0
  105. package/dist/sparkline/index.d.ts.map +1 -0
  106. package/dist/sparkline/index.js +56 -0
  107. package/dist/stepper/index.d.ts +19 -0
  108. package/dist/stepper/index.d.ts.map +1 -0
  109. package/dist/stepper/index.js +53 -0
  110. package/dist/table/index.d.ts +11 -2
  111. package/dist/table/index.d.ts.map +1 -1
  112. package/dist/table/index.js +117 -53
  113. package/dist/table/selection.d.ts +55 -0
  114. package/dist/table/selection.d.ts.map +1 -0
  115. package/dist/table/selection.js +83 -0
  116. package/dist/table/swipe.d.ts +18 -0
  117. package/dist/table/swipe.d.ts.map +1 -0
  118. package/dist/table/swipe.js +53 -0
  119. package/dist/table-of-contents/index.d.ts +1 -0
  120. package/dist/table-of-contents/index.d.ts.map +1 -1
  121. package/dist/table-of-contents/index.js +25 -23
  122. package/dist/tabs/index.d.ts.map +1 -1
  123. package/dist/tabs/index.js +101 -51
  124. package/dist/tag-input/index.d.ts +19 -0
  125. package/dist/tag-input/index.d.ts.map +1 -0
  126. package/dist/tag-input/index.js +61 -0
  127. package/dist/theme-toggle/index.js +6 -6
  128. package/dist/theme.css +340 -8
  129. package/dist/timeline/index.d.ts +18 -0
  130. package/dist/timeline/index.d.ts.map +1 -0
  131. package/dist/timeline/index.js +45 -0
  132. package/dist/toast/index.js +25 -25
  133. package/dist/toggle/index.d.ts.map +1 -1
  134. package/dist/toggle/index.js +1 -1
  135. package/dist/tree/index.d.ts.map +1 -1
  136. package/dist/tree/index.js +68 -67
  137. package/dist/trend/index.d.ts +19 -0
  138. package/dist/trend/index.d.ts.map +1 -0
  139. package/dist/trend/index.js +27 -0
  140. package/dist/utils/date.d.ts +34 -0
  141. package/dist/utils/date.d.ts.map +1 -1
  142. package/dist/utils/date.js +45 -12
  143. package/dist/utils/indicator.d.ts.map +1 -1
  144. package/dist/utils/indicator.js +1 -1
  145. package/dist/utils/money.d.ts +3 -1
  146. package/dist/utils/money.d.ts.map +1 -1
  147. package/dist/utils/money.js +24 -1
  148. package/dist/utils/motion.d.ts +3 -0
  149. package/dist/utils/motion.d.ts.map +1 -0
  150. package/dist/utils/motion.js +7 -0
  151. package/dist/utils/repeat.d.ts +17 -0
  152. package/dist/utils/repeat.d.ts.map +1 -0
  153. package/dist/utils/repeat.js +38 -0
  154. package/dist/utils/section-link.d.ts +9 -0
  155. package/dist/utils/section-link.d.ts.map +1 -0
  156. package/dist/utils/section-link.js +10 -0
  157. package/dist/utils/swipe.d.ts +29 -0
  158. package/dist/utils/swipe.d.ts.map +1 -0
  159. package/dist/utils/swipe.js +85 -0
  160. package/dist/utils/theme-wave.d.ts.map +1 -1
  161. package/dist/utils/theme-wave.js +72 -71
  162. package/dist/utils/useAnchoredPopup.d.ts.map +1 -1
  163. package/dist/utils/useAnchoredPopup.js +3 -4
  164. package/dist/utils/useSeen.d.ts +4 -0
  165. package/dist/utils/useSeen.d.ts.map +1 -0
  166. package/dist/utils/useSeen.js +17 -0
  167. package/dist/zen.css +1 -1
  168. package/package.json +3 -1
@@ -1,24 +1,31 @@
1
1
  "use client";
2
2
  import { cx as e } from "../utils/cx.js";
3
- import { useState as t } from "react";
4
- import { Fragment as n, jsx as r } from "react/jsx-runtime";
3
+ import { useEffect as t, useLayoutEffect as n, useRef as r, useState as i } from "react";
4
+ import { Fragment as a, jsx as o } from "react/jsx-runtime";
5
5
  //#region packages/editable-cell/index.tsx
6
- function i({ children: i, editor: a, label: o, readOnly: s = !1, editing: c, onEditingChange: l, title: u, className: d }) {
7
- let [f, p] = t(!1), m = c ?? f, h = (e) => {
8
- c === void 0 && p(e), l?.(e);
9
- };
10
- return s ? /* @__PURE__ */ r("span", {
11
- title: u,
12
- className: e("zen__editable-cell block px-1 text-right tabular-nums", d),
13
- children: i
14
- }) : m ? /* @__PURE__ */ r(n, { children: a(() => h(!1)) }) : /* @__PURE__ */ r("button", {
6
+ var s = typeof window > "u" ? t : n;
7
+ function c({ children: t, editor: n, label: c, readOnly: l = !1, editing: u, onEditingChange: d, title: f, className: p }) {
8
+ let [m, h] = i(!1), g = u ?? m, _ = (e) => {
9
+ u === void 0 && h(e), d?.(e);
10
+ }, v = r(null), [y, b] = i(null);
11
+ return s(() => {
12
+ let e = v.current;
13
+ !g && e && y !== null && e.textContent !== y && (e.dataset.changed = "");
14
+ }, [g, y]), l ? /* @__PURE__ */ o("span", {
15
+ title: f,
16
+ className: e("zen__editable-cell block px-1 text-right tabular-nums", p),
17
+ children: t
18
+ }) : g ? /* @__PURE__ */ o(a, { children: n(() => _(!1)) }) : /* @__PURE__ */ o("button", {
19
+ ref: v,
15
20
  type: "button",
16
- title: u,
17
- "aria-label": o ? `${o}. Edit` : void 0,
18
- onClick: () => h(!0),
19
- className: e("zen__editable-cell hover:bg-primary/10 focus-visible:ring-ring/50 w-full cursor-pointer rounded-md px-1.5 py-0.5 text-right tabular-nums transition-colors focus-visible:ring-2 focus-visible:outline-hidden", d),
20
- children: i
21
+ title: f,
22
+ "aria-label": c ? `${c}. Edit` : void 0,
23
+ onClick: (e) => {
24
+ b(e.currentTarget.textContent), _(!0);
25
+ },
26
+ className: e("zen__editable-cell hover:bg-primary/10 focus-visible:ring-ring/50 w-full cursor-pointer rounded-md px-1.5 py-0.5 text-right tabular-nums transition-colors focus-visible:ring-2 focus-visible:outline-hidden", p),
27
+ children: t
21
28
  });
22
29
  }
23
30
  //#endregion
24
- export { i as default };
31
+ export { c as default };
@@ -0,0 +1,14 @@
1
+ import { ComponentProps, ReactNode } from 'react';
2
+ /**
3
+ * What a list, table or page shows when there's nothing in it yet: an icon on
4
+ * a soft glow, a title, a line on what to do, and the action that does it
5
+ * (children, e.g. a Button).
6
+ */
7
+ export default function EmptyState({ icon, title, description, className, children, ...rest }: EmptyStateProps): import('react').JSX.Element;
8
+ export interface EmptyStateProps extends Omit<ComponentProps<'div'>, 'title'> {
9
+ /** An icon, shown on the accent's glow. */
10
+ icon?: ReactNode;
11
+ title: ReactNode;
12
+ description?: ReactNode;
13
+ }
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/empty-state/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElD;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,eAAe,+BAqB7G;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzE,2CAA2C;IAC3C,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;CAC3B"}
@@ -0,0 +1,31 @@
1
+ "use client";
2
+ import { cx as e } from "../utils/cx.js";
3
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
4
+ //#region packages/empty-state/index.tsx
5
+ function r({ icon: r, title: i, description: a, className: o, children: s, ...c }) {
6
+ return /* @__PURE__ */ n("div", {
7
+ className: e("zen__empty-state flex flex-col items-center gap-3 px-6 py-10 text-center", o),
8
+ ...c,
9
+ children: [
10
+ r && /* @__PURE__ */ t("div", {
11
+ "aria-hidden": !0,
12
+ className: "text-primary bg-primary/10 mb-1 grid size-12 place-items-center rounded-2xl shadow-[inset_0_0_0_1px_oklch(var(--primary)/0.25),0_0_32px_-6px_oklch(var(--glow)/calc(0.6*var(--glow-k)))] [&_svg]:size-6",
13
+ children: r
14
+ }),
15
+ /* @__PURE__ */ t("p", {
16
+ className: "text-foreground mt-0! text-base font-semibold tracking-tight text-balance",
17
+ children: i
18
+ }),
19
+ a && /* @__PURE__ */ t("p", {
20
+ className: "text-muted-foreground mt-0! max-w-sm text-sm leading-6 text-balance",
21
+ children: a
22
+ }),
23
+ s && /* @__PURE__ */ t("div", {
24
+ className: "mt-2 flex flex-wrap justify-center gap-2",
25
+ children: s
26
+ })
27
+ ]
28
+ });
29
+ }
30
+ //#endregion
31
+ export { r as default };
@@ -0,0 +1,18 @@
1
+ import { ComponentProps, ReactNode } from 'react';
2
+ /**
3
+ * Somewhere to drop files, or click (or press Enter) to choose them: it lights
4
+ * up while files are dragged over it. `onFiles` gets those that `accept` allows
5
+ * (one, unless `multiple`). Children are what it says, e.g. "Drop a CSV here".
6
+ */
7
+ export default function FileDrop({ onFiles, accept, multiple, disabled, className, children, ...rest }: FileDropProps): import('react').JSX.Element;
8
+ /** Whether `file` is one an <input accept> value allows: extensions (.csv), types (text/csv) and wildcards (image/*). */
9
+ export declare function accepts(file: File, accept?: string): boolean;
10
+ export interface FileDropProps extends Omit<ComponentProps<'label'>, 'onDrop'> {
11
+ onFiles: (files: File[]) => void;
12
+ /** As an <input type="file">'s accept: ".csv,.xlsx", "image/*". Dropped files are held to it too. */
13
+ accept?: string;
14
+ multiple?: boolean;
15
+ disabled?: boolean;
16
+ children?: ReactNode;
17
+ }
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/file-drop/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAa,SAAS,EAAoB,MAAM,OAAO,CAAC;AAE/E;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAC7B,OAAO,EACP,MAAM,EACN,QAAgB,EAChB,QAAgB,EAChB,SAAS,EACT,QAAQ,EACR,GAAG,IAAI,EACV,EAAE,aAAa,+BAiEf;AAED,yHAAyH;AACzH,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAU5D;AAED,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC;IAC1E,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IACjC,qGAAqG;IACrG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACxB"}
@@ -0,0 +1,49 @@
1
+ "use client";
2
+ import { cx as e } from "../utils/cx.js";
3
+ import { useRef as t, useState as n } from "react";
4
+ import { jsx as r, jsxs as i } from "react/jsx-runtime";
5
+ //#region packages/file-drop/index.tsx
6
+ function a({ onFiles: a, accept: s, multiple: c = !1, disabled: l = !1, className: u, children: d, ...f }) {
7
+ let p = t(null), [m, h] = n(!1), g = t(0), _ = (e) => {
8
+ let t = e.filter((e) => o(e, s)).slice(0, c ? void 0 : 1);
9
+ t.length && a(t);
10
+ }, v = (e) => !l && e.dataTransfer.types.includes("Files");
11
+ return /* @__PURE__ */ i("label", {
12
+ ...f,
13
+ "data-over": m || void 0,
14
+ onDragEnter: (e) => {
15
+ v(e) && (e.preventDefault(), g.current++, h(!0));
16
+ },
17
+ onDragOver: (e) => {
18
+ v(e) && (e.preventDefault(), e.dataTransfer.dropEffect = "copy");
19
+ },
20
+ onDragLeave: () => {
21
+ --g.current <= 0 && (g.current = 0, h(!1));
22
+ },
23
+ onDrop: (e) => {
24
+ v(e) && (e.preventDefault(), g.current = 0, h(!1), _([...e.dataTransfer.files]));
25
+ },
26
+ className: e("zen__file-drop glow-edge text-muted-foreground relative flex cursor-pointer flex-col items-center justify-center gap-2 rounded-xl border border-dashed p-8 text-center text-sm", "border-tint/15 bg-tint/[0.02] transition-[border-color,background-color,box-shadow,color] duration-200", "hover:border-tint/25 hover:text-foreground has-[input:focus-visible]:border-glow/60 has-[input:focus-visible]:shadow-glow-focus", "data-over:border-primary/60 data-over:bg-primary/10 data-over:text-foreground data-over:shadow-[0_0_32px_-8px_oklch(var(--glow)/calc(0.8*var(--glow-k)))]", l && "pointer-events-none opacity-50", u),
27
+ children: [/* @__PURE__ */ r("input", {
28
+ ref: p,
29
+ type: "file",
30
+ accept: s,
31
+ multiple: c,
32
+ disabled: l,
33
+ className: "sr-only",
34
+ onChange: (e) => {
35
+ _([...e.target.files ?? []]), e.target.value = "";
36
+ }
37
+ }), d]
38
+ });
39
+ }
40
+ function o(e, t) {
41
+ if (!t) return !0;
42
+ let n = e.name.toLowerCase(), r = e.type.toLowerCase();
43
+ return t.split(",").some((e) => {
44
+ let t = e.trim().toLowerCase();
45
+ return t.startsWith(".") ? n.endsWith(t) : t.endsWith("/*") ? r.startsWith(t.slice(0, -1)) : r === t;
46
+ });
47
+ }
48
+ //#endregion
49
+ export { o as accepts, a as default };
@@ -0,0 +1,21 @@
1
+ import { ComponentProps, ReactNode } from 'react';
2
+ /**
3
+ * The filters in effect, as chips each removed with its ×, and "Clear all"
4
+ * once there are two or more. Renders nothing when no filter is set.
5
+ */
6
+ export default function FilterBar({ onClear, clearLabel, 'aria-label': label, className, children, ref, ...rest }: FilterBarProps): import('react').JSX.Element | null;
7
+ /** One filter in a FilterBar: what it is (e.g. "Amount: $50–$500"), and its × to remove it. */
8
+ export declare function FilterChip({ onRemove, removeLabel, className, children }: FilterChipProps): import('react').JSX.Element;
9
+ export interface FilterBarProps extends ComponentProps<'div'> {
10
+ /** Removes every filter; shown as "Clear all" once there are two or more. */
11
+ onClear?: () => void;
12
+ clearLabel?: ReactNode;
13
+ }
14
+ export interface FilterChipProps {
15
+ onRemove: () => void;
16
+ /** The × button's name for screen readers, e.g. "Remove amount filter". */
17
+ removeLabel?: string;
18
+ className?: string;
19
+ children: ReactNode;
20
+ }
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/filter-bar/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAY,cAAc,EAAE,SAAS,EAAiD,MAAM,OAAO,CAAC;AAM3G;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAC9B,OAAO,EACP,UAAwB,EACxB,YAAY,EAAE,KAAwB,EACtC,SAAS,EACT,QAAQ,EACR,GAAG,EACH,GAAG,IAAI,EACV,EAAE,cAAc,sCA6BhB;AAiDD,+FAA+F;AAC/F,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,WAA6B,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,eAAe,+BAmB3G;AAED,MAAM,WAAW,cAAe,SAAQ,cAAc,CAAC,KAAK,CAAC;IACzD,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,SAAS,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC5B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACvB"}
@@ -0,0 +1,90 @@
1
+ "use client";
2
+ import { cx as e } from "../utils/cx.js";
3
+ import { reducedMotion as t } from "../utils/motion.js";
4
+ import n from "../icons/micro/x-mark.js";
5
+ import { Children as r, useEffect as i, useLayoutEffect as a, useRef as o } from "react";
6
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
7
+ //#region packages/filter-bar/index.tsx
8
+ var l = typeof window > "u" ? i : a, u = {
9
+ duration: 260,
10
+ easing: "cubic-bezier(0.2, 0.8, 0.2, 1)"
11
+ }, d = {
12
+ duration: 120,
13
+ easing: "ease-in"
14
+ };
15
+ function f({ onClear: t, clearLabel: n = "Clear all", "aria-label": i = "Active filters", className: a, children: l, ref: u, ...d }) {
16
+ let f = r.toArray(l).length, m = o(null);
17
+ return p(m), f === 0 ? null : /* @__PURE__ */ c("div", {
18
+ ref: (e) => {
19
+ if (m.current = e, typeof u == "function") return u(e);
20
+ u && (u.current = e);
21
+ },
22
+ role: "group",
23
+ "aria-label": i,
24
+ className: e("zen__filter-bar relative flex flex-wrap items-center gap-1.5", a),
25
+ ...d,
26
+ children: [l, f > 1 && t && /* @__PURE__ */ s("button", {
27
+ type: "button",
28
+ onClick: t,
29
+ className: "zen__filter-clear text-muted-foreground hover:text-foreground focus-visible:ring-ring/50 touch-target ml-1 cursor-pointer rounded-md px-1.5 py-1 text-xs outline-hidden focus-visible:ring-2",
30
+ children: n
31
+ })]
32
+ });
33
+ }
34
+ function p(e) {
35
+ let n = o(/* @__PURE__ */ new Map());
36
+ l(() => {
37
+ let r = e.current, i = n.current, a = /* @__PURE__ */ new Map();
38
+ for (let e of r ? [...r.children] : []) e instanceof HTMLElement && !e.dataset.zenLeaving && a.set(e, {
39
+ left: e.offsetLeft,
40
+ top: e.offsetTop
41
+ });
42
+ if (n.current = a, !r || t()) return;
43
+ let o = !1;
44
+ for (let [e, t] of i) {
45
+ if (e.isConnected || !(e instanceof HTMLElement)) continue;
46
+ o = !0, e.dataset.zenLeaving = "", e.setAttribute("aria-hidden", "true"), e.inert = !0, Object.assign(e.style, {
47
+ position: "absolute",
48
+ left: `${t.left}px`,
49
+ top: `${t.top}px`,
50
+ margin: "0",
51
+ animation: "none"
52
+ }), r.append(e);
53
+ let n = e.animate?.({
54
+ opacity: [1, 0],
55
+ scale: [1, .9]
56
+ }, d);
57
+ n ? n.onfinish = n.oncancel = () => e.remove() : e.remove();
58
+ }
59
+ let s = {
60
+ ...u,
61
+ delay: o ? d.duration : 0,
62
+ fill: "backwards"
63
+ };
64
+ for (let [e, t] of a) {
65
+ let n = i.get(e);
66
+ !n || n.left === t.left && n.top === t.top || (n.top === t.top ? e.animate?.({ translate: [`${n.left - t.left}px 0`, "0 0"] }, s) : e.animate?.({
67
+ opacity: [0, 1],
68
+ translate: ["0 3px", "0 0"]
69
+ }, {
70
+ ...s,
71
+ duration: 200,
72
+ delay: s.delay + u.duration * .6
73
+ }));
74
+ }
75
+ });
76
+ }
77
+ function m({ onRemove: t, removeLabel: r = "Remove filter", className: i, children: a }) {
78
+ return /* @__PURE__ */ c("span", {
79
+ className: e("zen__filter-chip bg-primary/12 text-foreground inline-flex items-center gap-1 rounded-full py-1 pr-1 pl-3 text-xs shadow-[inset_0_0_0_1px_oklch(var(--primary)/0.25)]", i),
80
+ children: [a, /* @__PURE__ */ s("button", {
81
+ type: "button",
82
+ "aria-label": r,
83
+ onClick: t,
84
+ className: "text-muted-foreground hover:text-foreground hover:bg-tint/10 focus-visible:ring-ring/50 touch-target grid size-5 cursor-pointer place-items-center rounded-full outline-hidden focus-visible:ring-2",
85
+ children: /* @__PURE__ */ s(n, { className: "size-3" })
86
+ })]
87
+ });
88
+ }
89
+ //#endregion
90
+ export { m as FilterChip, f as default };
@@ -0,0 +1,38 @@
1
+ import { ReactNode } from 'react';
2
+ /** The chart palette, so a category's colour matches it in charts. */
3
+ export declare const ICON_COLORS: IconColor[];
4
+ /**
5
+ * Pick an icon and a colour for something, e.g. a spending category: a button
6
+ * showing the choice opens a grid of icons and a row of colours. Icons are
7
+ * yours (emoji work); colours default to the chart palette. Both are radio
8
+ * groups, so arrow keys move through them.
9
+ */
10
+ export default function IconPicker({ icons, colors, value, onChange, label, className, }: IconPickerProps): import('react').JSX.Element;
11
+ export interface IconColor {
12
+ /** What's stored, e.g. "blue". */
13
+ value: string;
14
+ label: string;
15
+ /** Any CSS colour. */
16
+ color: string;
17
+ }
18
+ export interface IconPickerProps {
19
+ icons: {
20
+ value: string;
21
+ label: string;
22
+ icon: ReactNode;
23
+ }[];
24
+ /** Default: ICON_COLORS, the chart palette. */
25
+ colors?: IconColor[];
26
+ value: {
27
+ icon: string;
28
+ color?: string;
29
+ };
30
+ onChange: (value: {
31
+ icon: string;
32
+ color?: string;
33
+ }) => void;
34
+ /** What it's the icon of, e.g. "Category icon"; the button also says the current choice. */
35
+ label: string;
36
+ className?: string;
37
+ }
38
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/icon-picker/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAiB,SAAS,EAAS,MAAM,OAAO,CAAC;AAExD,sEAAsE;AACtE,eAAO,MAAM,WAAW,EAAE,SAAS,EASlC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAC/B,KAAK,EACL,MAAoB,EACpB,KAAK,EACL,QAAQ,EACR,KAAK,EACL,SAAS,GACZ,EAAE,eAAe,+BA8DjB;AAED,MAAM,WAAW,SAAS;IACtB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE,EAAE,CAAC;IAC3D,+CAA+C;IAC/C,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC5D,4FAA4F;IAC5F,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,112 @@
1
+ "use client";
2
+ import { cx as e } from "../utils/cx.js";
3
+ import t, { PopoverContent as n, PopoverTrigger as r } from "../popover/index.js";
4
+ import { useId as i } from "react";
5
+ import { jsx as a, jsxs as o } from "react/jsx-runtime";
6
+ //#region packages/icon-picker/index.tsx
7
+ var s = [
8
+ {
9
+ value: "blue",
10
+ label: "Blue",
11
+ color: "var(--chart-1)"
12
+ },
13
+ {
14
+ value: "orange",
15
+ label: "Orange",
16
+ color: "var(--chart-2)"
17
+ },
18
+ {
19
+ value: "teal",
20
+ label: "Teal",
21
+ color: "var(--chart-3)"
22
+ },
23
+ {
24
+ value: "amber",
25
+ label: "Amber",
26
+ color: "var(--chart-4)"
27
+ },
28
+ {
29
+ value: "pink",
30
+ label: "Pink",
31
+ color: "var(--chart-5)"
32
+ },
33
+ {
34
+ value: "green",
35
+ label: "Green",
36
+ color: "var(--chart-6)"
37
+ },
38
+ {
39
+ value: "violet",
40
+ label: "Violet",
41
+ color: "var(--chart-7)"
42
+ },
43
+ {
44
+ value: "red",
45
+ label: "Red",
46
+ color: "var(--chart-8)"
47
+ }
48
+ ];
49
+ function c({ icons: c, colors: l = s, value: u, onChange: d, label: f, className: p }) {
50
+ let m = i(), h = c.find((e) => e.value === u.icon), g = l.find((e) => e.value === u.color), _ = (e) => ({ "--icon-color": e ?? "var(--color-muted-foreground)" });
51
+ return /* @__PURE__ */ o(t, { children: [/* @__PURE__ */ a(r, {
52
+ "aria-label": `${f}: ${[h?.label, g?.label].filter(Boolean).join(", ") || "none"}`,
53
+ style: _(g?.color),
54
+ className: e("zen__icon-picker focus-visible:ring-ring/50 grid size-10 shrink-0 place-items-center rounded-xl bg-[color-mix(in_oklch,var(--icon-color)_18%,transparent)] text-lg text-(--icon-color) outline-hidden transition-colors focus-visible:ring-2", p),
55
+ children: h?.icon
56
+ }), /* @__PURE__ */ o(n, {
57
+ "aria-label": f,
58
+ className: "flex w-72 flex-col gap-3 p-3",
59
+ children: [/* @__PURE__ */ o("fieldset", {
60
+ className: "flex flex-wrap gap-1.5",
61
+ children: [/* @__PURE__ */ a("legend", {
62
+ className: "text-muted-foreground mb-1.5 text-xs",
63
+ children: "Colour"
64
+ }), l.map((e) => /* @__PURE__ */ o("label", {
65
+ title: e.label,
66
+ className: "relative cursor-pointer",
67
+ children: [/* @__PURE__ */ a("input", {
68
+ type: "radio",
69
+ name: `${m}-color`,
70
+ "aria-label": e.label,
71
+ checked: u.color === e.value,
72
+ onChange: () => d({
73
+ ...u,
74
+ color: e.value
75
+ }),
76
+ className: "peer sr-only"
77
+ }), /* @__PURE__ */ a("span", {
78
+ "aria-hidden": !0,
79
+ style: { background: e.color },
80
+ className: "ring-offset-background peer-focus-visible:ring-ring/60 peer-checked:ring-foreground/70 block size-6 rounded-full ring-offset-2 transition-shadow peer-checked:ring-2 peer-focus-visible:ring-2"
81
+ })]
82
+ }, e.value))]
83
+ }), /* @__PURE__ */ o("fieldset", {
84
+ className: "grid grid-cols-6 gap-1",
85
+ style: _(g?.color),
86
+ children: [/* @__PURE__ */ a("legend", {
87
+ className: "text-muted-foreground mb-1.5 text-xs",
88
+ children: "Icon"
89
+ }), c.map((e) => /* @__PURE__ */ o("label", {
90
+ title: e.label,
91
+ className: "cursor-pointer",
92
+ children: [/* @__PURE__ */ a("input", {
93
+ type: "radio",
94
+ name: `${m}-icon`,
95
+ "aria-label": e.label,
96
+ checked: u.icon === e.value,
97
+ onChange: () => d({
98
+ ...u,
99
+ icon: e.value
100
+ }),
101
+ className: "peer sr-only"
102
+ }), /* @__PURE__ */ a("span", {
103
+ "aria-hidden": !0,
104
+ className: "hover:bg-tint/[0.07] peer-focus-visible:ring-ring/50 grid size-10 place-items-center rounded-lg text-lg transition-colors peer-checked:bg-[color-mix(in_oklch,var(--icon-color)_22%,transparent)] peer-checked:text-(--icon-color) peer-focus-visible:ring-2",
105
+ children: e.icon
106
+ })]
107
+ }, e.value))]
108
+ })]
109
+ })] });
110
+ }
111
+ //#endregion
112
+ export { s as ICON_COLORS, c as default };
@@ -0,0 +1,23 @@
1
+ "use client";
2
+ import { jsx as e } from "react/jsx-runtime";
3
+ //#region packages/icons/arrow-left.tsx
4
+ function t(t) {
5
+ return /* @__PURE__ */ e("svg", {
6
+ className: "size-6",
7
+ xmlns: "http://www.w3.org/2000/svg",
8
+ fill: "none",
9
+ viewBox: "0 0 24 24",
10
+ strokeWidth: "1.5",
11
+ stroke: "currentColor",
12
+ "aria-hidden": "true",
13
+ "data-slot": "icon",
14
+ ...t,
15
+ children: /* @__PURE__ */ e("path", {
16
+ strokeLinecap: "round",
17
+ strokeLinejoin: "round",
18
+ d: "M10.5 19.5 3 12m0 0 7.5-7.5M3 12h18"
19
+ })
20
+ });
21
+ }
22
+ //#endregion
23
+ export { t as default };
@@ -0,0 +1,3 @@
1
+ import { default as IconProps } from '../icon.types';
2
+ export default function ArrowTrendingDownMicro(props: IconProps): import('react').JSX.Element;
3
+ //# sourceMappingURL=arrow-trending-down.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrow-trending-down.d.ts","sourceRoot":"","sources":["../../../packages/icons/micro/arrow-trending-down.tsx"],"names":[],"mappings":"AAEA,OAAO,SAAS,MAAM,eAAe,CAAC;AAEtC,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,KAAK,EAAE,SAAS,+BAkB9D"}
@@ -0,0 +1,21 @@
1
+ "use client";
2
+ import { jsx as e } from "react/jsx-runtime";
3
+ //#region packages/icons/micro/arrow-trending-down.tsx
4
+ function t(t) {
5
+ return /* @__PURE__ */ e("svg", {
6
+ className: "size-4",
7
+ xmlns: "http://www.w3.org/2000/svg",
8
+ viewBox: "0 0 16 16",
9
+ fill: "currentColor",
10
+ "aria-hidden": "true",
11
+ "data-slot": "icon",
12
+ ...t,
13
+ children: /* @__PURE__ */ e("path", {
14
+ fillRule: "evenodd",
15
+ d: "M1.22 4.22a.75.75 0 0 1 1.06 0L6 7.94l2.761-2.762a.75.75 0 0 1 1.158.12 24.9 24.9 0 0 1 2.718 5.556l.729-1.261a.75.75 0 0 1 1.299.75l-1.591 2.755a.75.75 0 0 1-1.025.275l-2.756-1.591a.75.75 0 1 1 .75-1.3l1.097.634a23.417 23.417 0 0 0-1.984-4.211L6.53 9.53a.75.75 0 0 1-1.06 0L1.22 5.28a.75.75 0 0 1 0-1.06Z",
16
+ clipRule: "evenodd"
17
+ })
18
+ });
19
+ }
20
+ //#endregion
21
+ export { t as default };
@@ -0,0 +1,3 @@
1
+ import { default as IconProps } from '../icon.types';
2
+ export default function ArrowTrendingUpMicro(props: IconProps): import('react').JSX.Element;
3
+ //# sourceMappingURL=arrow-trending-up.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrow-trending-up.d.ts","sourceRoot":"","sources":["../../../packages/icons/micro/arrow-trending-up.tsx"],"names":[],"mappings":"AAEA,OAAO,SAAS,MAAM,eAAe,CAAC;AAEtC,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,KAAK,EAAE,SAAS,+BAkB5D"}
@@ -0,0 +1,21 @@
1
+ "use client";
2
+ import { jsx as e } from "react/jsx-runtime";
3
+ //#region packages/icons/micro/arrow-trending-up.tsx
4
+ function t(t) {
5
+ return /* @__PURE__ */ e("svg", {
6
+ className: "size-4",
7
+ xmlns: "http://www.w3.org/2000/svg",
8
+ viewBox: "0 0 16 16",
9
+ fill: "currentColor",
10
+ "aria-hidden": "true",
11
+ "data-slot": "icon",
12
+ ...t,
13
+ children: /* @__PURE__ */ e("path", {
14
+ fillRule: "evenodd",
15
+ d: "M9.808 4.057a.75.75 0 0 1 .92-.527l3.116.849a.75.75 0 0 1 .528.915l-.823 3.121a.75.75 0 0 1-1.45-.382l.337-1.281a23.484 23.484 0 0 0-3.609 3.056.75.75 0 0 1-1.07.01L6 8.06l-3.72 3.72a.75.75 0 1 1-1.06-1.061l4.25-4.25a.75.75 0 0 1 1.06 0l1.756 1.755a25.015 25.015 0 0 1 3.508-2.85l-1.46-.398a.75.75 0 0 1-.526-.92Z",
16
+ clipRule: "evenodd"
17
+ })
18
+ });
19
+ }
20
+ //#endregion
21
+ export { t as default };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { default as Menu, MenuContent, type MenuContentProps, MenuHeader, MenuItem, type MenuItemProps, type MenuProps, MenuSeparator, MenuTrigger, type MenuTriggerProps, } from './menu';
1
+ export { default as Menu, MenuContent, type MenuContentProps, MenuContextTrigger, type MenuContextTriggerProps, MenuHeader, MenuItem, type MenuItemProps, type MenuProps, MenuSeparator, MenuTrigger, type MenuTriggerProps, } from './menu';
2
2
  export { default as AnimatedNumber, AnimatedMoney, type AnimatedNumberProps } from './animated-number';
3
3
  export { default as Avatar, type AvatarProps, cropImageToSquare, ImageCropError } from './avatar';
4
4
  export { default as Backdrop } from './backdrop';
@@ -11,7 +11,7 @@ export { default as Chip, type ChipProps } from './chip';
11
11
  export { default as Collapse } from './collapse';
12
12
  export { default as Combobox, ComboboxCreate, ComboboxEmpty, ComboboxItem, ComboboxList, ComboboxPopup, type ComboboxProps, ComboboxSearch, ComboboxTrigger, } from './combobox';
13
13
  export { default as ConfirmDialog } from './confirm-dialog';
14
- export { default as Dialog, DialogClose, DialogFooter, type DialogProps } from './dialog';
14
+ export { default as Dialog, DialogClose, DialogFooter, type DialogProps, useModal } from './dialog';
15
15
  export { default as EditableCell, type EditableCellProps } from './editable-cell';
16
16
  export { default as Disclosure, DisclosureContent, type DisclosureProps, DisclosureTrigger } from './disclosure';
17
17
  export { default as Field, type FieldControl, type FieldProps, FormMessage, type FormMessageProps, useField, useFieldProps, } from './field';
@@ -23,10 +23,10 @@ export { default as InputGroup, InputGroupAddon, InputGroupInput } from './input
23
23
  export { default as Meter, type MeterProps } from './meter';
24
24
  export { default as MonthPicker, type MonthPickerProps } from './month-picker';
25
25
  export { default as Checkbox, type CheckboxProps } from './checkbox';
26
- export { default as Chart, ChartArea, type ChartAreaProps, ChartBar, type ChartBarProps, ChartLine, type ChartLineProps, type ChartProps, ChartReference, type ChartPalette, type ChartReferenceProps, type ChartSeriesProps, ChartTooltipCard, type ChartTooltipCardProps, DonutChart, type DonutChartProps, paletteColor, niceTicks, } from './chart';
26
+ export { default as Chart, ChartArea, type ChartAreaProps, ChartBar, type ChartBarProps, ChartLine, type ChartLineProps, type ChartProps, ChartReference, type ChartPalette, type ChartReferenceProps, type ChartSeriesProps, ChartTooltipCard, type ChartTooltipCardProps, AllocationBar, type AllocationBarProps, type AllocationItem, DonutChart, type DonutChartProps, paletteColor, niceTicks, } from './chart';
27
27
  export { Radio, default as RadioGroup, type RadioGroupProps, type RadioProps } from './radio-group';
28
28
  export { default as Calendar, type CalendarProps, type CalendarRangeProps, type CalendarSingleProps } from './calendar';
29
- export { default as DatePicker, type DatePickerProps, DateRangePicker, type DateRangePickerProps } from './date-picker';
29
+ export { default as DatePicker, type DatePickerProps, type DateRangePreset, DateRangePicker, type DateRangePickerProps, } from './date-picker';
30
30
  export { type CurrencyConversion, default as MoneyInput, MoneyConversionHint, MoneyCurrencyMenu, type MoneyInputOptions, type MoneyInputProps, type MoneyInputState, useMoneyInput, } from './money-input';
31
31
  export { RadioCard, type RadioCardProps, default as RadioCards, type RadioCardsProps } from './radio-cards';
32
32
  export { default as Pills, Pill, PillIndicator } from './pills';
@@ -40,7 +40,7 @@ export { default as Skeleton } from './skeleton';
40
40
  export { default as Slider, type SliderProps } from './slider';
41
41
  export { default as Spinner } from './spinner';
42
42
  export { default as TabBar, TabBarItem, type TabBarItemProps, type TabBarProps } from './tab-bar';
43
- export { default as Table, type SortDirection, TableBody, TableCell, type TableCellProps, TableContainer, type TableContainerProps, TableEmpty, TableFooter, TableFooterCell, TableHead, TableHeader, type TableHeadProps, TableRow, TableSpacerRow, useSort, } from './table';
43
+ export { default as Table, type SortDirection, TableBody, TableCell, type TableCellProps, TableContainer, type TableContainerProps, TableEmpty, TableFooter, TableFooterCell, TableHead, TableHeader, type TableHeadProps, TableRow, SelectionBar, type SelectionBarProps, TableSelectCell, type TableSelectCellProps, TableSelectHead, type TableSelectHeadProps, TableSpacerRow, TableSwipeAction, type TableSwipeActionProps, TableSwipeRow, type TableSwipeRowProps, useSelection, useSort, } from './table';
44
44
  export { default as TableOfContents, type TableOfContentsItem } from './table-of-contents';
45
45
  export { default as Tabs, Tab, TabList, TabPanel } from './tabs';
46
46
  export { type Tree, TreeCell, TreeLabel, TreeRow, type TreeRowData, TreeToggle, useTree } from './tree';
@@ -54,9 +54,11 @@ export { cva, type VariantProps } from './utils/cva';
54
54
  export { cx } from './utils/cx';
55
55
  export { type Appearance, applyPreset, applyTheme, contrastRatio, customize, DEFAULT_THEME, type Intensity, INTENSITIES, normalizeTheme, oklchToLinearRgb, type PresetId, PRESETS, resetTheme, type ThemeSettings, themeVars, } from './utils/theme';
56
56
  export { prepareThemeWave, themeWave } from './utils/theme-wave';
57
+ export { followSectionLink } from './utils/section-link';
58
+ export { reducedMotion } from './utils/motion';
57
59
  export { useHydrated } from './utils/useHydrated';
58
60
  export { addMonths, currentMonth, formatMonth, fromMonthIndex, isMonth, type Month, monthIndex, monthNames, monthRange, monthsBetween, } from './utils/month';
59
- export { addDays, addMonthsToDate, type DateRange, type DateString, type DateStyle, dayIndex, dayOfWeek, daysBetween, daysInMonth, formatDate, formatDateRange, fromDayIndex, isDate, today, weekdayNames, weekStart, } from './utils/date';
61
+ export { addDays, addMonthsToDate, type DateRange, commonRanges, type DateString, type DateStyle, dayIndex, dayOfWeek, daysBetween, daysInMonth, formatDate, formatDateRange, fromDayIndex, isDate, today, weekdayNames, weekStart, } from './utils/date';
60
62
  export { type AnchoredPopupOptions, useAnchoredPopup } from './utils/useAnchoredPopup';
61
63
  export { useVirtualList, type VirtualItem, type VirtualListOptions } from './utils/useVirtualList';
62
64
  export { applyGraphicsMode, detectGraphicsMode, type GraphicsMode } from './utils/graphics';
@@ -67,4 +69,26 @@ declare module 'react' {
67
69
  [key: `--${string}`]: string | number;
68
70
  }
69
71
  }
72
+ export { Breadcrumb, type BreadcrumbProps, default as Breadcrumbs } from './breadcrumbs';
73
+ export { default as CodeInput, type CodeInputProps } from './code-input';
74
+ export { type CommandItem, default as CommandPalette, type CommandPaletteProps, useCommandPaletteShortcut, } from './command-palette';
75
+ export { default as EmptyState, type EmptyStateProps } from './empty-state';
76
+ export { accepts, default as FileDrop, type FileDropProps } from './file-drop';
77
+ export { pageRange, default as Pagination, type PaginationProps } from './pagination';
78
+ export { default as Sparkline, type SparklineProps } from './sparkline';
79
+ export { Step, type StepProps, default as Stepper, type StepperProps } from './stepper';
80
+ export { default as TagInput, type TagInputProps } from './tag-input';
81
+ export { default as Timeline, TimelineItem, type TimelineItemProps } from './timeline';
82
+ export { default as Kbd } from './kbd';
83
+ export { default as RangeSlider, type RangeSliderProps } from './range-slider';
84
+ export { default as FilterBar, FilterChip, type FilterBarProps, type FilterChipProps } from './filter-bar';
85
+ export { default as Keypad, type KeypadProps } from './keypad';
86
+ export { default as CalendarHeatmap, type CalendarHeatmapProps } from './calendar-heatmap';
87
+ export { default as Trend, type TrendProps } from './trend';
88
+ export { default as IconPicker, ICON_COLORS, type IconColor, type IconPickerProps } from './icon-picker';
89
+ export { default as RepeatPicker, type RepeatPickerProps } from './repeat-picker';
90
+ export { describeRepeat, nextOccurrences, type Repeat } from './utils/repeat';
91
+ export { default as LoadMore, type LoadMoreProps } from './load-more';
92
+ export { SortableHandle, type SortableHandleProps, SortableItem, type SortableItemProps, SortableList, type SortableListProps, } from './sortable';
93
+ export { default as PageTransition } from './page-transition';
70
94
  //# sourceMappingURL=index.d.ts.map