beez-ui 0.4.2 → 0.5.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 (53) hide show
  1. package/CHANGELOG.md +35 -27
  2. package/README.md +28 -5
  3. package/dist/adapters/unpic-image.js +92 -14
  4. package/dist/components/alert-dialog.js +444 -26
  5. package/dist/components/alert.js +153 -18
  6. package/dist/components/animated-theme-toggler.js +215 -76
  7. package/dist/components/avatar.js +247 -15
  8. package/dist/components/badge.js +18 -16
  9. package/dist/components/button.js +85 -28
  10. package/dist/components/calendar.js +327 -68
  11. package/dist/components/card.js +39 -9
  12. package/dist/components/carousel.js +454 -84
  13. package/dist/components/checkbox.js +50 -3
  14. package/dist/components/data-table.js +827 -583
  15. package/dist/components/dialog.js +363 -22
  16. package/dist/components/dropdown-menu.d.ts +1 -0
  17. package/dist/components/dropdown-menu.js +544 -32
  18. package/dist/components/filter-query-bar.js +809 -468
  19. package/dist/components/filter-query-grammar.js +781 -736
  20. package/dist/components/form.js +305 -43
  21. package/dist/components/highlighter.js +142 -87
  22. package/dist/components/hover-card.js +97 -7
  23. package/dist/components/input-group.js +261 -41
  24. package/dist/components/input.js +8 -2
  25. package/dist/components/label.js +38 -3
  26. package/dist/components/link.js +45 -7
  27. package/dist/components/pagination.js +332 -16
  28. package/dist/components/popover.js +222 -16
  29. package/dist/components/radio-group.js +85 -5
  30. package/dist/components/select.js +451 -22
  31. package/dist/components/separator.js +43 -3
  32. package/dist/components/sheet.js +345 -22
  33. package/dist/components/sidebar.js +1385 -193
  34. package/dist/components/skeleton.js +6 -2
  35. package/dist/components/svgs/whatsappIcon.js +11 -1
  36. package/dist/components/switch.js +55 -3
  37. package/dist/components/table.js +288 -18
  38. package/dist/components/tabs.js +161 -18
  39. package/dist/components/textarea.js +7 -2
  40. package/dist/components/themed-toaster.js +63 -20
  41. package/dist/components/tooltip.js +128 -9
  42. package/dist/components/typing-animation.js +335 -150
  43. package/dist/constants/sidebar.js +1 -4
  44. package/dist/hooks/use-mobile.js +8 -8
  45. package/dist/hooks/use-sidebar-persistence.js +27 -27
  46. package/dist/lib/image-dimensions.js +2 -2
  47. package/dist/lib/year-month-filter.js +38 -40
  48. package/dist/next.js +69 -17
  49. package/dist/providers/beez-ui-provider.js +48 -7
  50. package/dist/providers/native-provider.js +40 -6
  51. package/dist/styles.css +1 -1
  52. package/dist/tanstack.js +35 -23
  53. package/package.json +4 -1
@@ -1,48 +1,46 @@
1
1
  const YEAR_MONTH_INPUT_PATTERN = /^(0[1-9]|1[0-2])\/(\d{4})$/;
2
2
  /**
3
- * Parsea un texto `MM/AAAA` a su valor numérico comparable `AAAAMM`
4
- * (por ejemplo `06/2026` → `202606`). Devuelve `null` cuando el texto no es
5
- * un mes-año válido.
6
- */
3
+ * Parsea un texto `MM/AAAA` a su valor numérico comparable `AAAAMM`
4
+ * (por ejemplo `06/2026` → `202606`). Devuelve `null` cuando el texto no es
5
+ * un mes-año válido.
6
+ */
7
7
  export function parseYearMonthFilterInput(value) {
8
- const match = YEAR_MONTH_INPUT_PATTERN.exec(value.trim());
9
- if (!match) {
10
- return null;
11
- }
12
- const [, month, year] = match;
13
- return Number(`${year}${month}`);
8
+ const match = YEAR_MONTH_INPUT_PATTERN.exec(value.trim());
9
+ if (!match) {
10
+ return null;
11
+ }
12
+ const [, month, year] = match;
13
+ return Number(`${year}${month}`);
14
14
  }
15
15
  /**
16
- * Formatea un valor numérico `AAAAMM` de vuelta a `MM/AAAA` para rehidratar
17
- * los inputs del filtro al reabrir el diálogo.
18
- */
16
+ * Formatea un valor numérico `AAAAMM` de vuelta a `MM/AAAA` para rehidratar
17
+ * los inputs del filtro al reabrir el diálogo.
18
+ */
19
19
  /**
20
- * Evalúa un filtro de rango de año-mes contra el valor numérico `AAAAMM` de una
21
- * fila (`null` cuando la fila no tiene fecha). Devuelve `true` cuando el filtro
22
- * no aplica, replicando el contrato de los demás matchers de la tabla.
23
- */
20
+ * Evalúa un filtro de rango de año-mes contra el valor numérico `AAAAMM` de una
21
+ * fila (`null` cuando la fila no tiene fecha). Devuelve `true` cuando el filtro
22
+ * no aplica, replicando el contrato de los demás matchers de la tabla.
23
+ */
24
24
  export function matchesAdvancedYearMonthRangeFilter(columnFilterValue, value) {
25
- if (!columnFilterValue ||
26
- typeof columnFilterValue !== "object" ||
27
- columnFilterValue.kind !== "yearMonthRange") {
28
- return true;
29
- }
30
- const filterValue = columnFilterValue;
31
- const hasValue = value != null && Number.isFinite(value);
32
- if (filterValue.mode === "hasValue") {
33
- return hasValue;
34
- }
35
- if (filterValue.mode === "noValue") {
36
- return !hasValue;
37
- }
38
- if (!hasValue) {
39
- return false;
40
- }
41
- if (filterValue.min != null && value < filterValue.min) {
42
- return false;
43
- }
44
- if (filterValue.max != null && value > filterValue.max) {
45
- return false;
46
- }
47
- return true;
25
+ if (!columnFilterValue || typeof columnFilterValue !== "object" || columnFilterValue.kind !== "yearMonthRange") {
26
+ return true;
27
+ }
28
+ const filterValue = columnFilterValue;
29
+ const hasValue = value != null && Number.isFinite(value);
30
+ if (filterValue.mode === "hasValue") {
31
+ return hasValue;
32
+ }
33
+ if (filterValue.mode === "noValue") {
34
+ return !hasValue;
35
+ }
36
+ if (!hasValue) {
37
+ return false;
38
+ }
39
+ if (filterValue.min != null && value < filterValue.min) {
40
+ return false;
41
+ }
42
+ if (filterValue.max != null && value > filterValue.max) {
43
+ return false;
44
+ }
45
+ return true;
48
46
  }
package/dist/next.js CHANGED
@@ -1,27 +1,79 @@
1
1
  "use client";
2
- import { jsx as _jsx } from "react/jsx-runtime";
3
- /** Isolates optional Next.js imports from the framework-neutral package entrypoint. */
4
- import { useMemo } from "react";
2
+ import { c as _c } from "react/compiler-runtime";
5
3
  import NextImageModule from "next/image.js";
6
4
  import NextLinkModule from "next/link.js";
7
5
  import { BeezUIProvider as BaseBeezUIProvider } from "./providers/beez-ui-provider.js";
8
6
  import { imageDimension } from "./lib/image-dimensions.js";
7
+ import { jsx as _jsx } from "react/jsx-runtime";
9
8
  /** Supports both native ESM loading of Next's CommonJS modules and bundler interop. */
10
9
  const NextImage = NextImageModule.default ?? NextImageModule;
11
10
  const NextLink = NextLinkModule.default ?? NextLinkModule;
12
11
  /** Activates Next.js navigation and images for every descendant using shared primitives. */
13
- export function BeezUIProvider({ children, optimizeImages = false, prefetch = false, themeOptions }) {
14
- const components = useMemo(() => ({
15
- /** Delegates routing while retaining the consumer's native link props. */
16
- Link: function NextRoutingAdapter({ prefetch: linkPrefetch, ...props }) {
17
- return _jsx(NextLink, { ...props, prefetch: linkPrefetch ?? prefetch });
18
- },
19
- /** Delegates loading to Next while the avatar primitive owns error/fallback state. */
20
- Image: function NextImageAdapter(props) {
21
- if (!props.src)
22
- return _jsx("img", { ...props });
23
- return _jsx(NextImage, { ...props, alt: props.alt ?? "", src: props.src, width: imageDimension(props.width), height: imageDimension(props.height), unoptimized: !optimizeImages });
24
- },
25
- }), [optimizeImages, prefetch]);
26
- return _jsx(BaseBeezUIProvider, { components: components, themeOptions: themeOptions, children: children });
12
+ export function BeezUIProvider(t0) {
13
+ const $ = _c(11);
14
+ const { children, optimizeImages: t1, prefetch: t2, themeOptions } = t0;
15
+ const optimizeImages = t1 === undefined ? false : t1;
16
+ const prefetch = t2 === undefined ? false : t2;
17
+ let t3;
18
+ if ($[0] !== prefetch) {
19
+ t3 = function NextRoutingAdapter(t4) {
20
+ const { prefetch: linkPrefetch, ...props } = t4;
21
+ return /* @__PURE__ */ _jsx(NextLink, {
22
+ ...props,
23
+ prefetch: linkPrefetch ?? prefetch
24
+ });
25
+ };
26
+ $[0] = prefetch;
27
+ $[1] = t3;
28
+ } else {
29
+ t3 = $[1];
30
+ }
31
+ let t4;
32
+ if ($[2] !== optimizeImages) {
33
+ t4 = function NextImageAdapter(props_0) {
34
+ if (!props_0.src) {
35
+ return /* @__PURE__ */ _jsx("img", { ...props_0 });
36
+ }
37
+ return /* @__PURE__ */ _jsx(NextImage, {
38
+ ...props_0,
39
+ alt: props_0.alt ?? "",
40
+ src: props_0.src,
41
+ width: imageDimension(props_0.width),
42
+ height: imageDimension(props_0.height),
43
+ unoptimized: !optimizeImages
44
+ });
45
+ };
46
+ $[2] = optimizeImages;
47
+ $[3] = t4;
48
+ } else {
49
+ t4 = $[3];
50
+ }
51
+ let t5;
52
+ if ($[4] !== t3 || $[5] !== t4) {
53
+ t5 = {
54
+ Link: t3,
55
+ Image: t4
56
+ };
57
+ $[4] = t3;
58
+ $[5] = t4;
59
+ $[6] = t5;
60
+ } else {
61
+ t5 = $[6];
62
+ }
63
+ const components = t5;
64
+ let t6;
65
+ if ($[7] !== children || $[8] !== components || $[9] !== themeOptions) {
66
+ t6 = /* @__PURE__ */ _jsx(BaseBeezUIProvider, {
67
+ components,
68
+ themeOptions,
69
+ children
70
+ });
71
+ $[7] = children;
72
+ $[8] = components;
73
+ $[9] = themeOptions;
74
+ $[10] = t6;
75
+ } else {
76
+ t6 = $[10];
77
+ }
78
+ return t6;
27
79
  }
@@ -1,18 +1,59 @@
1
1
  "use client";
2
- import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { c as _c } from "react/compiler-runtime";
3
3
  /** Shares optional rendering adapters without importing a framework into the core. */
4
- import { createContext, useContext, useMemo } from "react";
4
+ import { createContext, useContext } from "react";
5
5
  import { ThemeProvider } from "next-themes";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
6
7
  /** Native elements remain the implicit fallback for unconfigured adapters. */
7
8
  const EMPTY_COMPONENTS = {};
8
9
  const AdapterContext = createContext(EMPTY_COMPONENTS);
9
10
  /** Merges nested overrides while preserving stable adapter identities. */
10
- export function BeezUIProvider({ children, components = EMPTY_COMPONENTS, themeOptions }) {
11
- const parent = useContext(AdapterContext);
12
- const value = useMemo(() => ({ ...parent, ...components }), [parent, components]);
13
- return _jsx(ThemeProvider, { attribute: "class", ...themeOptions, children: _jsx(AdapterContext.Provider, { value: value, children: children }) });
11
+ export function BeezUIProvider(t0) {
12
+ const $ = _c(9);
13
+ const { children, components: t1, themeOptions } = t0;
14
+ const components = t1 === undefined ? EMPTY_COMPONENTS : t1;
15
+ const parent = useContext(AdapterContext);
16
+ let t2;
17
+ if ($[0] !== components || $[1] !== parent) {
18
+ t2 = {
19
+ ...parent,
20
+ ...components
21
+ };
22
+ $[0] = components;
23
+ $[1] = parent;
24
+ $[2] = t2;
25
+ } else {
26
+ t2 = $[2];
27
+ }
28
+ const value = t2;
29
+ let t3;
30
+ if ($[3] !== children || $[4] !== value) {
31
+ t3 = /* @__PURE__ */ _jsx(AdapterContext.Provider, {
32
+ value,
33
+ children
34
+ });
35
+ $[3] = children;
36
+ $[4] = value;
37
+ $[5] = t3;
38
+ } else {
39
+ t3 = $[5];
40
+ }
41
+ let t4;
42
+ if ($[6] !== t3 || $[7] !== themeOptions) {
43
+ t4 = /* @__PURE__ */ _jsx(ThemeProvider, {
44
+ attribute: "class",
45
+ ...themeOptions,
46
+ children: t3
47
+ });
48
+ $[6] = t3;
49
+ $[7] = themeOptions;
50
+ $[8] = t4;
51
+ } else {
52
+ t4 = $[8];
53
+ }
54
+ return t4;
14
55
  }
15
56
  /** Reads adapters internally; native components work without a provider. */
16
57
  export function useBeezUIComponents() {
17
- return useContext(AdapterContext);
58
+ return useContext(AdapterContext);
18
59
  }
@@ -1,11 +1,45 @@
1
1
  "use client";
2
- import { jsx as _jsx } from "react/jsx-runtime";
3
- /** Keeps the default image integration separate from optional framework entrypoints. */
4
- import { useMemo } from "react";
2
+ import { c as _c } from "react/compiler-runtime";
5
3
  import { BeezUIProvider as BaseBeezUIProvider } from "./beez-ui-provider.js";
6
4
  import { UnpicImageAdapter } from "../adapters/unpic-image.js";
5
+ import { jsx as _jsx } from "react/jsx-runtime";
7
6
  /** Combines native navigation, responsive Unpic images and the shared theme provider. */
8
- export function BeezUIProvider({ components, ...props }) {
9
- const nativeComponents = useMemo(() => ({ Image: UnpicImageAdapter, ...components }), [components]);
10
- return _jsx(BaseBeezUIProvider, { ...props, components: nativeComponents });
7
+ export function BeezUIProvider(t0) {
8
+ const $ = _c(8);
9
+ let components;
10
+ let props;
11
+ if ($[0] !== t0) {
12
+ ({components, ...props} = t0);
13
+ $[0] = t0;
14
+ $[1] = components;
15
+ $[2] = props;
16
+ } else {
17
+ components = $[1];
18
+ props = $[2];
19
+ }
20
+ let t1;
21
+ if ($[3] !== components) {
22
+ t1 = {
23
+ Image: UnpicImageAdapter,
24
+ ...components
25
+ };
26
+ $[3] = components;
27
+ $[4] = t1;
28
+ } else {
29
+ t1 = $[4];
30
+ }
31
+ const nativeComponents = t1;
32
+ let t2;
33
+ if ($[5] !== nativeComponents || $[6] !== props) {
34
+ t2 = /* @__PURE__ */ _jsx(BaseBeezUIProvider, {
35
+ ...props,
36
+ components: nativeComponents
37
+ });
38
+ $[5] = nativeComponents;
39
+ $[6] = props;
40
+ $[7] = t2;
41
+ } else {
42
+ t2 = $[7];
43
+ }
44
+ return t2;
11
45
  }