@dimasbaguspm/versaur 0.0.17 → 0.0.18

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 (48) hide show
  1. package/dist/{js → assets}/styles.css +37 -0
  2. package/dist/js/{bottom-sheet-CHRSxXRE.js → bottom-sheet-BRv-oJL-.js} +285 -140
  3. package/dist/js/{tile-B9bt2AY6.js → description-list-DZQF212Z.js} +639 -629
  4. package/dist/js/email-input-BIbrfs5q.js +1731 -0
  5. package/dist/js/feedbacks/index.js +1 -1
  6. package/dist/js/{form-layout-Dhlv-FZL.js → form-layout-4ASWdXn8.js} +1 -1
  7. package/dist/js/forms/index.js +14 -17
  8. package/dist/js/{index-C1uJQB34.js → index-DOdDlCoL.js} +2 -2
  9. package/dist/js/index.js +46 -45
  10. package/dist/js/layouts/index.js +1 -1
  11. package/dist/js/navigation/index.js +1 -1
  12. package/dist/js/overlays/index.js +4 -5
  13. package/dist/js/primitive/index.js +14 -12
  14. package/dist/js/providers/index.js +5 -0
  15. package/dist/js/{skeleton-QEyPZAuF.js → skeleton-BNZyaRjo.js} +1 -1
  16. package/dist/js/snackbar-DH8jCh2V.js +50 -0
  17. package/dist/js/{tabs-DYcTvVao.js → tabs-BbOkYchB.js} +1 -1
  18. package/dist/js/use-snackbars-oPoF7J5t.js +94 -0
  19. package/dist/types/feedbacks/loading-indicator/index.d.ts +2 -1
  20. package/dist/types/forms/chip-single-input/index.d.ts +2 -1
  21. package/dist/types/forms/index.d.ts +0 -1
  22. package/dist/types/forms/price-input/index.d.ts +1 -1
  23. package/dist/types/forms/switch-input/index.d.ts +2 -3
  24. package/dist/types/forms/time-picker-input/time-picker-input.d.ts +4 -4
  25. package/dist/types/forms/time-picker-input/types.d.ts +2 -38
  26. package/dist/types/index.d.ts +1 -0
  27. package/dist/types/layouts/page-layout/index.d.ts +2 -1
  28. package/dist/types/overlays/menu/index.d.ts +2 -2
  29. package/dist/types/primitive/description-list/description-list.atoms.d.ts +13 -0
  30. package/dist/types/primitive/description-list/description-list.d.ts +6 -0
  31. package/dist/types/primitive/description-list/index.d.ts +2 -0
  32. package/dist/types/primitive/description-list/types.d.ts +46 -0
  33. package/dist/types/primitive/index.d.ts +1 -0
  34. package/dist/types/providers/index.d.ts +1 -0
  35. package/dist/types/providers/snackbars-provider/index.d.ts +3 -0
  36. package/dist/types/providers/snackbars-provider/provider.d.ts +7 -0
  37. package/dist/types/providers/snackbars-provider/types.d.ts +28 -0
  38. package/dist/types/providers/snackbars-provider/use-snackbars-queue.d.ts +9 -0
  39. package/dist/types/providers/snackbars-provider/use-snackbars.d.ts +4 -0
  40. package/dist/{js → utils}/enforce-subpath-import.js +61 -54
  41. package/package.json +8 -4
  42. package/dist/js/email-input-CVyrFzqL.js +0 -1820
  43. package/dist/js/modal-FqewbVts.js +0 -150
  44. package/dist/types/forms/calculator-input/calculator-input.atoms.d.ts +0 -11
  45. package/dist/types/forms/calculator-input/calculator-input.d.ts +0 -8
  46. package/dist/types/forms/calculator-input/index.d.ts +0 -1
  47. package/dist/types/forms/calculator-input/types.d.ts +0 -51
  48. package/dist/types/forms/time-picker-input/time-picker-input.atoms.d.ts +0 -15
@@ -1,4 +1,4 @@
1
- import { L as r, P as s, S as e } from "../skeleton-QEyPZAuF.js";
1
+ import { L as r, P as s, S as e } from "../skeleton-BNZyaRjo.js";
2
2
  export {
3
3
  r as LoadingIndicator,
4
4
  s as ProgressIndicator,
@@ -1,4 +1,4 @@
1
- import { a as i, j as o, c as l } from "./index-C1uJQB34.js";
1
+ import { c as i, j as o, a as l } from "./index-DOdDlCoL.js";
2
2
  import * as p from "react";
3
3
  import { forwardRef as n } from "react";
4
4
  const u = i(
@@ -1,21 +1,18 @@
1
- import { C as e, a as n, b as p, D as u, E as s, P as i, R as I, d as c, c as l, S, e as h, h as r, k as m, j as T, i as g, f as k, T as o, g as b } from "../email-input-CVyrFzqL.js";
1
+ import { C as a, b as n, a as p, D as u, E as s, P as I, R as i, d as l, c as S, S as c, e as r, h as g, f as h, T as m, g as o } from "../email-input-BIbrfs5q.js";
2
2
  export {
3
- e as CalculatorInput,
4
- n as CheckboxInput,
5
- p as ChipMultipleInput,
3
+ a as CheckboxInput,
4
+ n as ChipMultipleInput,
5
+ p as ChipSingleInput,
6
6
  u as DateSinglePickerInput,
7
7
  s as EmailInput,
8
- i as PriceInput,
9
- I as RadioInput,
10
- c as SearchInput,
11
- l as SegmentMultipleInput,
12
- S as SegmentSingleInput,
13
- h as SelectInput,
14
- r as SwitchInput,
15
- m as SwitchLabel,
16
- T as SwitchThumb,
17
- g as SwitchTrack,
18
- k as TextAreaInput,
19
- o as TextInput,
20
- b as TimePickerInput
8
+ I as PriceInput,
9
+ i as RadioInput,
10
+ l as SearchInput,
11
+ S as SegmentMultipleInput,
12
+ c as SegmentSingleInput,
13
+ r as SelectInput,
14
+ g as SwitchInput,
15
+ h as TextAreaInput,
16
+ m as TextInput,
17
+ o as TimePickerInput
21
18
  };
@@ -3049,7 +3049,7 @@ const Ee = (e) => typeof e == "boolean" ? `${e}` : e === 0 ? "0" : e, Ae = Te, A
3049
3049
  return Ae(e, c, f, o?.class, o?.className);
3050
3050
  };
3051
3051
  export {
3052
- Ar as a,
3053
- Er as c,
3052
+ Er as a,
3053
+ Ar as c,
3054
3054
  Rr as j
3055
3055
  };
package/dist/js/index.js CHANGED
@@ -1,56 +1,57 @@
1
- import { L as s, P as e, S as r } from "./skeleton-QEyPZAuF.js";
2
- import { A as n, B as p, F as u, P as c, T as i } from "./form-layout-Dhlv-FZL.js";
3
- import { C as I, a as m, b as S, D as B, E as T, P as h, R as d, d as x, c as g, S as b, e as f, h as P, k, j as A, i as C, f as M, T as w, g as L } from "./email-input-CVyrFzqL.js";
4
- import { B as F, D as y, M as E } from "./bottom-sheet-CHRSxXRE.js";
5
- import { M as j } from "./modal-FqewbVts.js";
6
- import { A as q, a as z, b as G, B as H, c as J, d as K, e as N, f as O, C as Q, g as U, I as V, S as W, T as X, h as Y, i as Z } from "./tile-B9bt2AY6.js";
7
- import { B as $, T as aa } from "./tabs-DYcTvVao.js";
1
+ import { L as t, P as e, S as r } from "./skeleton-BNZyaRjo.js";
2
+ import { A as n, B as p, F as u, P as i, T as c } from "./form-layout-4ASWdXn8.js";
3
+ import { C as l, b as S, a as m, D as B, E as d, P as x, R as T, d as g, c as f, S as b, e as h, h as P, f as k, T as A, g as C } from "./email-input-BIbrfs5q.js";
4
+ import { B as L, D as M, M as F, a as v } from "./bottom-sheet-BRv-oJL-.js";
5
+ import { A as y, a as E, b as R, B as j, c as q, d as z, e as G, f as H, C as J, g as K, D as N, I as O, T as Q, h as U, i as V } from "./description-list-DZQF212Z.js";
6
+ import { S as X } from "./snackbar-DH8jCh2V.js";
7
+ import { B as Z, T as _ } from "./tabs-BbOkYchB.js";
8
+ import { S as aa, u as sa } from "./use-snackbars-oPoF7J5t.js";
8
9
  export {
9
- q as Alert,
10
- z as Anchor,
10
+ y as Alert,
11
+ E as Anchor,
11
12
  n as AppBar,
12
- G as Avatar,
13
- H as Badge,
13
+ R as Avatar,
14
+ j as Badge,
14
15
  p as BottomBar,
15
- F as BottomSheet,
16
- J as Brand,
17
- $ as Breadcrumbs,
18
- K as Button,
19
- N as ButtonFloat,
20
- O as ButtonIcon,
21
- Q as Calculator,
22
- I as CalculatorInput,
23
- U as Calendar,
24
- m as CheckboxInput,
16
+ L as BottomSheet,
17
+ q as Brand,
18
+ Z as Breadcrumbs,
19
+ z as Button,
20
+ G as ButtonFloat,
21
+ H as ButtonIcon,
22
+ J as Calculator,
23
+ K as Calendar,
24
+ l as CheckboxInput,
25
25
  S as ChipMultipleInput,
26
+ m as ChipSingleInput,
26
27
  B as DateSinglePickerInput,
27
- y as Drawer,
28
- T as EmailInput,
28
+ N as DescriptionList,
29
+ M as Drawer,
30
+ d as EmailInput,
29
31
  u as FormLayout,
30
- V as Icon,
31
- s as LoadingIndicator,
32
- E as Menu,
33
- j as Modal,
34
- c as PageLayout,
35
- h as PriceInput,
32
+ O as Icon,
33
+ t as LoadingIndicator,
34
+ F as Menu,
35
+ v as Modal,
36
+ i as PageLayout,
37
+ x as PriceInput,
36
38
  e as ProgressIndicator,
37
- d as RadioInput,
38
- x as SearchInput,
39
- g as SegmentMultipleInput,
39
+ T as RadioInput,
40
+ g as SearchInput,
41
+ f as SegmentMultipleInput,
40
42
  b as SegmentSingleInput,
41
- f as SelectInput,
43
+ h as SelectInput,
42
44
  r as Skeleton,
43
- W as Snackbar,
45
+ X as Snackbar,
46
+ aa as SnackbarsProvider,
44
47
  P as SwitchInput,
45
- k as SwitchLabel,
46
- A as SwitchThumb,
47
- C as SwitchTrack,
48
- X as Table,
49
- aa as Tabs,
50
- Y as Text,
51
- M as TextAreaInput,
52
- w as TextInput,
53
- Z as Tile,
54
- L as TimePickerInput,
55
- i as TopBar
48
+ Q as Table,
49
+ _ as Tabs,
50
+ U as Text,
51
+ k as TextAreaInput,
52
+ A as TextInput,
53
+ V as Tile,
54
+ C as TimePickerInput,
55
+ c as TopBar,
56
+ sa as useSnackbars
56
57
  };
@@ -1,4 +1,4 @@
1
- import { A as r, B as s, F as t, P as B, T as p } from "../form-layout-Dhlv-FZL.js";
1
+ import { A as r, B as s, F as t, P as B, T as p } from "../form-layout-4ASWdXn8.js";
2
2
  export {
3
3
  r as AppBar,
4
4
  s as BottomBar,
@@ -1,4 +1,4 @@
1
- import { B as s, T as b } from "../tabs-DYcTvVao.js";
1
+ import { B as s, T as b } from "../tabs-BbOkYchB.js";
2
2
  export {
3
3
  s as Breadcrumbs,
4
4
  b as Tabs
@@ -1,8 +1,7 @@
1
- import { B as e, D as r, M as t } from "../bottom-sheet-CHRSxXRE.js";
2
- import { M } from "../modal-FqewbVts.js";
1
+ import { B as o, D as r, M as s, a as t } from "../bottom-sheet-BRv-oJL-.js";
3
2
  export {
4
- e as BottomSheet,
3
+ o as BottomSheet,
5
4
  r as Drawer,
6
- t as Menu,
7
- M as Modal
5
+ s as Menu,
6
+ t as Modal
8
7
  };
@@ -1,18 +1,20 @@
1
- import { A as t, a as o, b as n, B as r, c as e, d as l, e as c, f as B, C as d, g as u, I as A, S as T, T as b, h as C, i as I } from "../tile-B9bt2AY6.js";
1
+ import { A as t, a as o, b as r, B as e, c as n, d as c, e as l, f as B, C as i, g as d, D as u, I as A, T, h as b, i as f } from "../description-list-DZQF212Z.js";
2
+ import { S as x } from "../snackbar-DH8jCh2V.js";
2
3
  export {
3
4
  t as Alert,
4
5
  o as Anchor,
5
- n as Avatar,
6
- r as Badge,
7
- e as Brand,
8
- l as Button,
9
- c as ButtonFloat,
6
+ r as Avatar,
7
+ e as Badge,
8
+ n as Brand,
9
+ c as Button,
10
+ l as ButtonFloat,
10
11
  B as ButtonIcon,
11
- d as Calculator,
12
- u as Calendar,
12
+ i as Calculator,
13
+ d as Calendar,
14
+ u as DescriptionList,
13
15
  A as Icon,
14
- T as Snackbar,
15
- b as Table,
16
- C as Text,
17
- I as Tile
16
+ x as Snackbar,
17
+ T as Table,
18
+ b as Text,
19
+ f as Tile
18
20
  };
@@ -0,0 +1,5 @@
1
+ import { S as s, u as e } from "../use-snackbars-oPoF7J5t.js";
2
+ export {
3
+ s as SnackbarsProvider,
4
+ e as useSnackbars
5
+ };
@@ -1,4 +1,4 @@
1
- import { a as l, j as o, c as d } from "./index-C1uJQB34.js";
1
+ import { c as l, j as o, a as d } from "./index-DOdDlCoL.js";
2
2
  import * as m from "react";
3
3
  import u, { forwardRef as f } from "react";
4
4
  const p = l(
@@ -0,0 +1,50 @@
1
+ import { c, j as r, a as d } from "./index-DOdDlCoL.js";
2
+ import { forwardRef as i } from "react";
3
+ const l = c(
4
+ "flex items-center gap-2 px-4 py-2 rounded-sm w-auto mx-4 sm:mx-0 sm:w-fit relative shadow-sm",
5
+ {
6
+ variants: {
7
+ color: {
8
+ success: "text-success-bold bg-success-soft border-l-4 border-success",
9
+ info: "text-info-bold bg-info-soft border-l-4 border-info",
10
+ warning: "text-warning-bold bg-warning-soft border-l-4 border-warning",
11
+ danger: "text-danger-bold bg-danger-soft border-l-4 border-danger"
12
+ }
13
+ },
14
+ defaultVariants: {
15
+ color: "success"
16
+ }
17
+ }
18
+ ), b = ({
19
+ children: a,
20
+ ...s
21
+ }) => /* @__PURE__ */ r.jsx(
22
+ "span",
23
+ {
24
+ className: "flex-1 truncate text-sm",
25
+ "data-testid": "snackbar-text",
26
+ ...s,
27
+ children: a
28
+ }
29
+ ), x = ({
30
+ children: a,
31
+ ...s
32
+ }) => /* @__PURE__ */ r.jsx("span", { className: "ml-2", "data-testid": "snackbar-action", ...s, children: a }), g = i(
33
+ ({ children: a, action: s, color: e, className: t, ...o }, n) => /* @__PURE__ */ r.jsxs(
34
+ "div",
35
+ {
36
+ ref: n,
37
+ role: "status",
38
+ "aria-live": "polite",
39
+ className: d(l({ color: e }), t),
40
+ ...o,
41
+ children: [
42
+ /* @__PURE__ */ r.jsx(b, { children: a }),
43
+ s && /* @__PURE__ */ r.jsx(x, { children: s })
44
+ ]
45
+ }
46
+ )
47
+ );
48
+ export {
49
+ g as S
50
+ };
@@ -1,4 +1,4 @@
1
- import { a as d, j as o, c as u } from "./index-C1uJQB34.js";
1
+ import { c as d, j as o, a as u } from "./index-DOdDlCoL.js";
2
2
  import { forwardRef as f, createContext as x, useContext as g, useState as p, useLayoutEffect as y, useRef as h } from "react";
3
3
  const w = d(
4
4
  "flex items-center gap-2 text-sm text-tertiary",
@@ -0,0 +1,94 @@
1
+ import { c as d, j as c } from "./index-DOdDlCoL.js";
2
+ import { createContext as x, useState as k, useRef as p, useCallback as m, useEffect as S, useMemo as v, useContext as h } from "react";
3
+ import { S as w } from "./snackbar-DH8jCh2V.js";
4
+ const f = x(
5
+ null
6
+ ), j = d(
7
+ [
8
+ "fixed z-50 flex flex-col gap-2 px-0 pb-2",
9
+ "w-screen left-0 bottom-0",
10
+ // mobile: full width
11
+ "sm:w-auto sm:left-4 sm:bottom-4 sm:max-w-sm"
12
+ // desktop/tablet
13
+ ].join(" ")
14
+ ), T = d("", {
15
+ variants: {
16
+ placement: {
17
+ mobile: "snackbar-animate-fade-in-out",
18
+ desktop: "snackbar-animate-slide-in-left"
19
+ }
20
+ },
21
+ defaultVariants: {
22
+ placement: "mobile"
23
+ }
24
+ }), C = 4e3;
25
+ function E() {
26
+ const [a, s] = k([]), t = p({}), n = m((e) => {
27
+ s((r) => r.filter((o) => o.id !== e)), t.current[e] && (clearTimeout(t.current[e]), delete t.current[e]);
28
+ }, []), i = m(
29
+ (e, r, o) => {
30
+ const u = `${Date.now()}-${Math.random()}`, l = o?.duration ?? C;
31
+ s((b) => [
32
+ ...b,
33
+ {
34
+ id: u,
35
+ color: e,
36
+ message: r,
37
+ ...o,
38
+ duration: l
39
+ }
40
+ ]), t.current[u] = setTimeout(() => {
41
+ n(u);
42
+ }, l);
43
+ },
44
+ [n]
45
+ );
46
+ return S(() => () => {
47
+ Object.values(t.current).forEach(clearTimeout), t.current = {};
48
+ }, []), { queue: a, showSnack: i, removeSnack: n };
49
+ }
50
+ const V = ({ children: a }) => {
51
+ const { queue: s, showSnack: t, removeSnack: n } = E(), i = v(() => ({ showSnack: t }), [t]);
52
+ return /* @__PURE__ */ c.jsxs(f.Provider, { value: i, children: [
53
+ a,
54
+ /* @__PURE__ */ c.jsx(
55
+ "div",
56
+ {
57
+ className: j(),
58
+ "aria-live": "polite",
59
+ "aria-atomic": "true",
60
+ children: s.map((e, r) => /* @__PURE__ */ c.jsx(
61
+ "div",
62
+ {
63
+ className: T({
64
+ placement: window.innerWidth >= 640 ? "desktop" : "mobile"
65
+ }),
66
+ style: { transitionDelay: `${r * 60}ms` },
67
+ children: /* @__PURE__ */ c.jsx(
68
+ w,
69
+ {
70
+ color: e.color,
71
+ action: e.action,
72
+ onClose: () => {
73
+ n(e.id);
74
+ },
75
+ children: e.message
76
+ }
77
+ )
78
+ },
79
+ e.id
80
+ ))
81
+ }
82
+ )
83
+ ] });
84
+ };
85
+ function N() {
86
+ const a = h(f);
87
+ if (!a)
88
+ throw new Error("useSnackbars must be used within a SnackbarsProvider");
89
+ return a;
90
+ }
91
+ export {
92
+ V as S,
93
+ N as u
94
+ };
@@ -1 +1,2 @@
1
- export * from './loading-indicator';
1
+ export { LoadingIndicator } from './loading-indicator';
2
+ export type * from './types';
@@ -1 +1,2 @@
1
- export {};
1
+ export { ChipSingleInput } from './chip-single-input';
2
+ export type * from './types';
@@ -1,4 +1,3 @@
1
- export * from './calculator-input';
2
1
  export * from './checkbox-input';
3
2
  export * from './chip-single-input';
4
3
  export * from './chip-multiple-input';
@@ -1,2 +1,2 @@
1
- export * from './price-input';
1
+ export { PriceInput } from './price-input';
2
2
  export type { PriceInputProps } from './types';
@@ -1,3 +1,2 @@
1
- export * from './switch-input';
2
- export * from './switch-input.atoms';
3
- export * from './types';
1
+ export { SwitchInput } from './switch-input';
2
+ export type * from './types';
@@ -1,9 +1,9 @@
1
- import { default as React } from 'react';
2
1
  import { TimePickerInputProps } from './types';
3
2
  /**
4
3
  * TimePickerInput component for Versaur UI
5
4
  *
6
- * Provides a modal-based time picker with hour, minute, and AM/PM selection
7
- * Follows Material 3 guidelines (no clock UI)
5
+ * Renders a visually accessible text input
6
+ *
7
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/time
8
8
  */
9
- export declare const TimePickerInput: React.FC<TimePickerInputProps>;
9
+ export declare const TimePickerInput: import('react').ForwardRefExoticComponent<TimePickerInputProps & import('react').RefAttributes<HTMLInputElement>>;
@@ -1,47 +1,11 @@
1
- import { ReactNode } from 'react';
2
- import { ModalRootProps } from '../../overlays/modal';
1
+ import { TextInputProps } from '../text-input';
3
2
  /**
4
3
  * Props for the TimePickerInput component
5
4
  */
6
- export interface TimePickerInputProps {
7
- /**
8
- * The selected time value in 12-hour format (e.g., '02:30 PM')
9
- */
5
+ export interface TimePickerInputProps extends Omit<TextInputProps, 'type' | 'value' | 'onChange'> {
10
6
  value: string;
11
7
  /**
12
8
  * Called when the time value changes
13
9
  */
14
10
  onChange: (value: string) => void;
15
- /**
16
- * Optional label for the input
17
- */
18
- label?: ReactNode;
19
- /**
20
- * Optional helper text below the input
21
- */
22
- helperText?: ReactNode;
23
- /**
24
- * Whether the input is disabled
25
- */
26
- disabled?: boolean;
27
- /**
28
- * Optional error message
29
- */
30
- error?: ReactNode;
31
- /**
32
- * Whether to decide the modal placement'
33
- */
34
- placement?: ModalRootProps['placement'];
35
- /**
36
- * Optional: ARIA label for dialog
37
- */
38
- 'aria-label'?: string;
39
- /**
40
- * Optional: ARIA labelledby for dialog
41
- */
42
- 'aria-labelledby'?: string;
43
- /**
44
- * Optional: ARIA describedby for dialog
45
- */
46
- 'aria-describedby'?: string;
47
11
  }
@@ -4,3 +4,4 @@ export * from './forms';
4
4
  export * from './overlays';
5
5
  export * from './primitive';
6
6
  export * from './navigation';
7
+ export * from './providers';
@@ -1 +1,2 @@
1
- export * from './page-layout';
1
+ export { PageLayout } from './page-layout';
2
+ export type * from './types';
@@ -1,2 +1,2 @@
1
- export * from './menu';
2
- export * from './types';
1
+ export { Menu } from './menu';
2
+ export type * from './types';
@@ -0,0 +1,13 @@
1
+ import { DescriptionListItemProps, DescriptionListTermProps, DescriptionListDetailsProps } from './types';
2
+ /**
3
+ * DescriptionList.Item atom
4
+ */
5
+ export declare const DescriptionListItem: import('react').ForwardRefExoticComponent<DescriptionListItemProps & import('react').RefAttributes<HTMLDivElement>>;
6
+ /**
7
+ * DescriptionList.Term atom
8
+ */
9
+ export declare const DescriptionListTerm: import('react').ForwardRefExoticComponent<DescriptionListTermProps & import('react').RefAttributes<HTMLElement>>;
10
+ /**
11
+ * DescriptionList.Details atom
12
+ */
13
+ export declare const DescriptionListDetails: import('react').ForwardRefExoticComponent<DescriptionListDetailsProps & import('react').RefAttributes<HTMLElement>>;
@@ -0,0 +1,6 @@
1
+ import { DescriptionListProps } from './types';
2
+ export declare const DescriptionList: import('react').ForwardRefExoticComponent<DescriptionListProps & import('react').RefAttributes<HTMLDListElement>> & {
3
+ Item: import('react').ForwardRefExoticComponent<import('./types').DescriptionListItemProps & import('react').RefAttributes<HTMLDivElement>>;
4
+ Term: import('react').ForwardRefExoticComponent<import('./types').DescriptionListTermProps & import('react').RefAttributes<HTMLElement>>;
5
+ Details: import('react').ForwardRefExoticComponent<import('./types').DescriptionListDetailsProps & import('react').RefAttributes<HTMLElement>>;
6
+ };
@@ -0,0 +1,2 @@
1
+ export { DescriptionList } from './description-list';
2
+ export * from './types';
@@ -0,0 +1,46 @@
1
+ import { ReactNode, HTMLAttributes } from 'react';
2
+ import { TextProps } from '../text';
3
+ /**
4
+ * Props for the DescriptionList root component
5
+ */
6
+ export interface DescriptionListProps extends HTMLAttributes<HTMLDListElement> {
7
+ /**
8
+ * Children should be DescriptionList.Item elements
9
+ */
10
+ children: ReactNode;
11
+ }
12
+ /**
13
+ * Props for DescriptionList.Item
14
+ */
15
+ export interface DescriptionListItemProps extends HTMLAttributes<HTMLDivElement> {
16
+ /**
17
+ * Children should be DescriptionList.Term and DescriptionList.Details
18
+ */
19
+ children: ReactNode;
20
+ /**
21
+ * Number of grid columns to span (default: 4)
22
+ */
23
+ span?: number;
24
+ }
25
+ /**
26
+ * Props for DescriptionList.Term
27
+ */
28
+ export interface DescriptionListTermProps extends Omit<HTMLAttributes<HTMLElement>, 'children'> {
29
+ /**
30
+ * Term label (required, string only)
31
+ */
32
+ children: string;
33
+ }
34
+ /**
35
+ * Props for DescriptionList.Details
36
+ */
37
+ export interface DescriptionListDetailsProps extends Omit<HTMLAttributes<HTMLElement>, 'children'> {
38
+ /**
39
+ * Details value (required, string only)
40
+ */
41
+ children: string;
42
+ /**
43
+ * Text Color (default: 'black')
44
+ */
45
+ color?: TextProps['color'];
46
+ }
@@ -13,3 +13,4 @@ export * from './snackbar';
13
13
  export * from './table';
14
14
  export * from './text';
15
15
  export * from './tile';
16
+ export * from './description-list';
@@ -0,0 +1 @@
1
+ export * from './snackbars-provider';
@@ -0,0 +1,3 @@
1
+ export { SnackbarsProvider } from './provider';
2
+ export { useSnackbars } from './use-snackbars';
3
+ export type * from './types';
@@ -0,0 +1,7 @@
1
+ import { FC } from 'react';
2
+ import { SnackbarsProviderProps } from './types';
3
+ /**
4
+ * SnackbarsProvider manages a queue of snackbars and provides showSnack
5
+ * Placement: full width bottom for mobile, bottom left for desktop/tablet
6
+ */
7
+ export declare const SnackbarsProvider: FC<SnackbarsProviderProps>;
@@ -0,0 +1,28 @@
1
+ import { ReactNode } from 'react';
2
+ /**
3
+ * SnackbarQueueItem: Represents a snackbar in the queue
4
+ */
5
+ export interface SnackbarQueueItem {
6
+ /** Unique id for the snackbar */
7
+ id: string;
8
+ /** Message content */
9
+ message: ReactNode;
10
+ /** Color variant */
11
+ color?: 'success' | 'info' | 'warning' | 'danger';
12
+ /** Optional action element */
13
+ action?: ReactNode;
14
+ /** Optional duration in milliseconds */
15
+ duration?: number | null;
16
+ }
17
+ export type ShowSnackFunction = (color: SnackbarQueueItem['color'], message: ReactNode, options?: Partial<Omit<SnackbarQueueItem, 'id' | 'color' | 'message'>>) => void;
18
+ /**
19
+ * SnackbarsContextValue: Context value for snackbars
20
+ */
21
+ export interface SnackbarsContextValue {
22
+ /** Show a snackbar */
23
+ showSnack: ShowSnackFunction;
24
+ }
25
+ export interface SnackbarsProviderProps {
26
+ /** Children to render inside the provider */
27
+ children: ReactNode;
28
+ }
@@ -0,0 +1,9 @@
1
+ import { ShowSnackFunction, SnackbarQueueItem } from './types';
2
+ /**
3
+ * Custom hook to manage snackbar queue and auto-close logic
4
+ */
5
+ export declare function useSnackbarsQueue(): {
6
+ queue: SnackbarQueueItem[];
7
+ showSnack: ShowSnackFunction;
8
+ removeSnack: (id: string) => void;
9
+ };
@@ -0,0 +1,4 @@
1
+ /**
2
+ * useSnackbars: Access the snackbars context and showSnack function
3
+ */
4
+ export declare function useSnackbars(): import('./types').SnackbarsContextValue;