@bacon-pos/ui 0.3.0 → 0.4.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 (58) hide show
  1. package/lib/commonjs/components/Dialog/Dialog.js +23 -4
  2. package/lib/commonjs/components/Dialog/Dialog.js.map +1 -1
  3. package/lib/commonjs/components/Dialog/Dialog.stories.js +49 -1
  4. package/lib/commonjs/components/Dialog/Dialog.stories.js.map +1 -1
  5. package/lib/commonjs/components/Toast/Toast.js +184 -0
  6. package/lib/commonjs/components/Toast/Toast.js.map +1 -0
  7. package/lib/commonjs/components/Toast/Toast.stories.js +109 -0
  8. package/lib/commonjs/components/Toast/Toast.stories.js.map +1 -0
  9. package/lib/commonjs/components/Toast/Toast.test.js +70 -0
  10. package/lib/commonjs/components/Toast/Toast.test.js.map +1 -0
  11. package/lib/commonjs/components/Toast/ToastProvider.js +95 -0
  12. package/lib/commonjs/components/Toast/ToastProvider.js.map +1 -0
  13. package/lib/commonjs/components/Toast/index.js +26 -0
  14. package/lib/commonjs/components/Toast/index.js.map +1 -0
  15. package/lib/commonjs/components/index.js +11 -0
  16. package/lib/commonjs/components/index.js.map +1 -1
  17. package/lib/module/components/Dialog/Dialog.js +23 -4
  18. package/lib/module/components/Dialog/Dialog.js.map +1 -1
  19. package/lib/module/components/Dialog/Dialog.stories.js +48 -0
  20. package/lib/module/components/Dialog/Dialog.stories.js.map +1 -1
  21. package/lib/module/components/Toast/Toast.js +180 -0
  22. package/lib/module/components/Toast/Toast.js.map +1 -0
  23. package/lib/module/components/Toast/Toast.stories.js +105 -0
  24. package/lib/module/components/Toast/Toast.stories.js.map +1 -0
  25. package/lib/module/components/Toast/Toast.test.js +69 -0
  26. package/lib/module/components/Toast/Toast.test.js.map +1 -0
  27. package/lib/module/components/Toast/ToastProvider.js +90 -0
  28. package/lib/module/components/Toast/ToastProvider.js.map +1 -0
  29. package/lib/module/components/Toast/index.js +5 -0
  30. package/lib/module/components/Toast/index.js.map +1 -0
  31. package/lib/module/components/index.js +1 -0
  32. package/lib/module/components/index.js.map +1 -1
  33. package/lib/typescript/commonjs/components/Dialog/Dialog.d.ts +5 -1
  34. package/lib/typescript/commonjs/components/Dialog/Dialog.d.ts.map +1 -1
  35. package/lib/typescript/commonjs/components/Toast/Toast.d.ts +40 -0
  36. package/lib/typescript/commonjs/components/Toast/Toast.d.ts.map +1 -0
  37. package/lib/typescript/commonjs/components/Toast/ToastProvider.d.ts +34 -0
  38. package/lib/typescript/commonjs/components/Toast/ToastProvider.d.ts.map +1 -0
  39. package/lib/typescript/commonjs/components/Toast/index.d.ts +3 -0
  40. package/lib/typescript/commonjs/components/Toast/index.d.ts.map +1 -0
  41. package/lib/typescript/commonjs/components/index.d.ts +1 -0
  42. package/lib/typescript/commonjs/components/index.d.ts.map +1 -1
  43. package/lib/typescript/module/components/Dialog/Dialog.d.ts +5 -1
  44. package/lib/typescript/module/components/Dialog/Dialog.d.ts.map +1 -1
  45. package/lib/typescript/module/components/Toast/Toast.d.ts +40 -0
  46. package/lib/typescript/module/components/Toast/Toast.d.ts.map +1 -0
  47. package/lib/typescript/module/components/Toast/ToastProvider.d.ts +34 -0
  48. package/lib/typescript/module/components/Toast/ToastProvider.d.ts.map +1 -0
  49. package/lib/typescript/module/components/Toast/index.d.ts +3 -0
  50. package/lib/typescript/module/components/Toast/index.d.ts.map +1 -0
  51. package/lib/typescript/module/components/index.d.ts +1 -0
  52. package/lib/typescript/module/components/index.d.ts.map +1 -1
  53. package/package.json +1 -1
  54. package/src/components/Dialog/Dialog.tsx +40 -10
  55. package/src/components/Toast/Toast.tsx +173 -0
  56. package/src/components/Toast/ToastProvider.tsx +126 -0
  57. package/src/components/Toast/index.ts +7 -0
  58. package/src/components/index.ts +1 -0
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+
3
+ import { View } from 'react-native';
4
+ import { ToastProvider, useToast } from "./ToastProvider.js";
5
+ import { Button } from "../Button/Button.js";
6
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
+ const meta = {
8
+ title: 'Components/Toast',
9
+ component: ToastProvider
10
+ };
11
+ export default meta;
12
+ function Triggers() {
13
+ const {
14
+ show,
15
+ hideAll
16
+ } = useToast();
17
+ return /*#__PURE__*/_jsxs(View, {
18
+ style: {
19
+ gap: 12,
20
+ padding: 24
21
+ },
22
+ children: [/*#__PURE__*/_jsx(Button, {
23
+ label: "Success",
24
+ variant: "success",
25
+ onPress: () => show({
26
+ message: 'Clocked out successfully. 11:58 AM',
27
+ status: 'success',
28
+ icon: 'check'
29
+ })
30
+ }), /*#__PURE__*/_jsx(Button, {
31
+ label: "Error",
32
+ variant: "destructive",
33
+ onPress: () => show({
34
+ message: 'Something went wrong, please try again',
35
+ status: 'error',
36
+ icon: 'close'
37
+ })
38
+ }), /*#__PURE__*/_jsx(Button, {
39
+ label: "Warning",
40
+ variant: "secondary",
41
+ onPress: () => show({
42
+ message: 'Your session is about to expire',
43
+ status: 'warning',
44
+ icon: 'info'
45
+ })
46
+ }), /*#__PURE__*/_jsx(Button, {
47
+ label: "Info (no icon)",
48
+ variant: "secondary",
49
+ onPress: () => show({
50
+ message: 'A new update is available',
51
+ status: 'info'
52
+ })
53
+ }), /*#__PURE__*/_jsx(Button, {
54
+ label: "Long text (ellipsis)",
55
+ variant: "secondary",
56
+ onPress: () => show({
57
+ message: 'This is a very long toast message that should be truncated with an ellipsis when it exceeds the available width of the toast',
58
+ status: 'info'
59
+ })
60
+ }), /*#__PURE__*/_jsx(Button, {
61
+ label: "With countdown bar",
62
+ variant: "secondary",
63
+ onPress: () => show({
64
+ message: 'Saving… this will dismiss soon',
65
+ status: 'success',
66
+ icon: 'check',
67
+ showProgress: true,
68
+ duration: 4000
69
+ })
70
+ }), /*#__PURE__*/_jsx(Button, {
71
+ label: "Custom width (280)",
72
+ variant: "secondary",
73
+ onPress: () => show({
74
+ message: 'Compact toast',
75
+ status: 'info',
76
+ width: 280
77
+ })
78
+ }), /*#__PURE__*/_jsx(Button, {
79
+ label: "Sticky (duration 0)",
80
+ variant: "secondary",
81
+ onPress: () => show({
82
+ message: 'I stay until dismissed — tap me',
83
+ status: 'warning',
84
+ duration: 0
85
+ })
86
+ }), /*#__PURE__*/_jsx(Button, {
87
+ label: "Hide all",
88
+ variant: "inverse",
89
+ onPress: hideAll
90
+ })]
91
+ });
92
+ }
93
+ export const Bottom = {
94
+ render: () => /*#__PURE__*/_jsx(ToastProvider, {
95
+ position: "bottom",
96
+ children: /*#__PURE__*/_jsx(Triggers, {})
97
+ })
98
+ };
99
+ export const Top = {
100
+ render: () => /*#__PURE__*/_jsx(ToastProvider, {
101
+ position: "top",
102
+ children: /*#__PURE__*/_jsx(Triggers, {})
103
+ })
104
+ };
105
+ //# sourceMappingURL=Toast.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["View","ToastProvider","useToast","Button","jsx","_jsx","jsxs","_jsxs","meta","title","component","Triggers","show","hideAll","style","gap","padding","children","label","variant","onPress","message","status","icon","showProgress","duration","width","Bottom","render","position","Top"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Toast/Toast.stories.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ import React from 'react';
4
+ import { render, screen, fireEvent } from '@testing-library/react-native';
5
+ import { ToastProvider, useToast } from "./ToastProvider.js";
6
+ import { Button } from "../Button/Button.js";
7
+ import { ThemeProvider } from "../../theme/index.js";
8
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
9
+ function Harness() {
10
+ const {
11
+ show,
12
+ hideAll
13
+ } = useToast();
14
+ return /*#__PURE__*/_jsxs(_Fragment, {
15
+ children: [/*#__PURE__*/_jsx(Button, {
16
+ label: "add",
17
+ onPress: () => show({
18
+ message: `Toast ${Date.now()}`,
19
+ duration: 0
20
+ })
21
+ }), /*#__PURE__*/_jsx(Button, {
22
+ label: "named",
23
+ onPress: () => show({
24
+ message: 'Saved!',
25
+ status: 'success',
26
+ duration: 0
27
+ })
28
+ }), /*#__PURE__*/_jsx(Button, {
29
+ label: "clear",
30
+ onPress: hideAll
31
+ })]
32
+ });
33
+ }
34
+ function renderProvider(maxVisible = 2) {
35
+ return render(/*#__PURE__*/_jsx(ThemeProvider, {
36
+ children: /*#__PURE__*/_jsx(ToastProvider, {
37
+ maxVisible: maxVisible,
38
+ duration: 0,
39
+ children: /*#__PURE__*/_jsx(Harness, {})
40
+ })
41
+ }));
42
+ }
43
+ describe('Toast', () => {
44
+ it('shows a toast when triggered', () => {
45
+ renderProvider();
46
+ fireEvent.press(screen.getByText('named'));
47
+ expect(screen.getByText('Saved!')).toBeTruthy();
48
+ });
49
+ it('keeps at most maxVisible toasts', () => {
50
+ renderProvider(2);
51
+ const add = screen.getByText('add');
52
+ fireEvent.press(add);
53
+ fireEvent.press(add);
54
+ fireEvent.press(add);
55
+ // 3 shown, but only 2 remain (plus the two trigger buttons' labels aren't "Toast ...")
56
+ const toasts = screen.queryAllByText(/^Toast /);
57
+ expect(toasts.length).toBe(2);
58
+ });
59
+ it('useToast throws outside a provider', () => {
60
+ const Boom = () => {
61
+ useToast();
62
+ return null;
63
+ };
64
+ const spy = jest.spyOn(console, 'error').mockImplementation(() => {});
65
+ expect(() => render(/*#__PURE__*/_jsx(Boom, {}))).toThrow(/ToastProvider/);
66
+ spy.mockRestore();
67
+ });
68
+ });
69
+ //# sourceMappingURL=Toast.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","render","screen","fireEvent","ToastProvider","useToast","Button","ThemeProvider","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","Harness","show","hideAll","children","label","onPress","message","Date","now","duration","status","renderProvider","maxVisible","describe","it","press","getByText","expect","toBeTruthy","add","toasts","queryAllByText","length","toBe","Boom","spy","jest","spyOn","console","mockImplementation","toThrow","mockRestore"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Toast/Toast.test.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+
3
+ import { createContext, useCallback, useContext, useMemo, useRef, useState } from 'react';
4
+ import { View } from 'react-native';
5
+ import { ToastView } from "./Toast.js";
6
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
+ const ToastContext = /*#__PURE__*/createContext(null);
8
+ /**
9
+ * Provides the imperative toast API and renders the toast stack. Wrap your app
10
+ * (inside ThemeProvider). Trigger toasts with `useToast().show(...)`. Newest
11
+ * toasts appear nearest the edge; at most `maxVisible` show at once.
12
+ */
13
+ export function ToastProvider({
14
+ children,
15
+ position = 'bottom',
16
+ maxVisible = 2,
17
+ duration = 3000,
18
+ offset = 24,
19
+ gap = 8,
20
+ maxWidth
21
+ }) {
22
+ const [toasts, setToasts] = useState([]);
23
+ const idRef = useRef(0);
24
+ const show = useCallback(options => {
25
+ const id = idRef.current += 1;
26
+ setToasts(prev => {
27
+ const next = [...prev, {
28
+ leaving: false,
29
+ duration,
30
+ ...options,
31
+ id
32
+ }];
33
+ return next.length > maxVisible ? next.slice(next.length - maxVisible) : next;
34
+ });
35
+ return id;
36
+ }, [duration, maxVisible]);
37
+ const hide = useCallback(id => {
38
+ setToasts(prev => prev.map(t => t.id === id ? {
39
+ ...t,
40
+ leaving: true
41
+ } : t));
42
+ }, []);
43
+ const remove = useCallback(id => {
44
+ setToasts(prev => prev.filter(t => t.id !== id));
45
+ }, []);
46
+ const hideAll = useCallback(() => {
47
+ setToasts(prev => prev.map(t => ({
48
+ ...t,
49
+ leaving: true
50
+ })));
51
+ }, []);
52
+ const api = useMemo(() => ({
53
+ show,
54
+ hide,
55
+ hideAll
56
+ }), [show, hide, hideAll]);
57
+
58
+ // Newest nearest the edge.
59
+ const display = position === 'top' ? [...toasts].reverse() : toasts;
60
+ return /*#__PURE__*/_jsxs(ToastContext.Provider, {
61
+ value: api,
62
+ children: [children, /*#__PURE__*/_jsx(View, {
63
+ pointerEvents: "box-none",
64
+ style: {
65
+ position: 'absolute',
66
+ left: 0,
67
+ right: 0,
68
+ [position]: offset,
69
+ alignItems: 'center',
70
+ paddingHorizontal: 16,
71
+ gap
72
+ },
73
+ children: display.map(t => /*#__PURE__*/_jsx(ToastView, {
74
+ ...t,
75
+ position: position,
76
+ maxWidth: maxWidth,
77
+ onRequestClose: hide,
78
+ onRemove: remove
79
+ }, t.id))
80
+ })]
81
+ });
82
+ }
83
+
84
+ /** Access the toast API. Must be used within a `ToastProvider`. */
85
+ export function useToast() {
86
+ const ctx = useContext(ToastContext);
87
+ if (!ctx) throw new Error('useToast must be used within a ToastProvider');
88
+ return ctx;
89
+ }
90
+ //# sourceMappingURL=ToastProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createContext","useCallback","useContext","useMemo","useRef","useState","View","ToastView","jsx","_jsx","jsxs","_jsxs","ToastContext","ToastProvider","children","position","maxVisible","duration","offset","gap","maxWidth","toasts","setToasts","idRef","show","options","id","current","prev","next","leaving","length","slice","hide","map","t","remove","filter","hideAll","api","display","reverse","Provider","value","pointerEvents","style","left","right","alignItems","paddingHorizontal","onRequestClose","onRemove","useToast","ctx","Error"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Toast/ToastProvider.tsx"],"mappings":";;AAAA,SACEA,aAAa,EACbC,WAAW,EACXC,UAAU,EACVC,OAAO,EACPC,MAAM,EACNC,QAAQ,QAEH,OAAO;AACd,SAASC,IAAI,QAAQ,cAAc;AACnC,SAASC,SAAS,QAA2B,YAAS;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAWvD,MAAMC,YAAY,gBAAGZ,aAAa,CAAkB,IAAI,CAAC;AAuBzD;AACA;AACA;AACA;AACA;AACA,OAAO,SAASa,aAAaA,CAAC;EAC5BC,QAAQ;EACRC,QAAQ,GAAG,QAAQ;EACnBC,UAAU,GAAG,CAAC;EACdC,QAAQ,GAAG,IAAI;EACfC,MAAM,GAAG,EAAE;EACXC,GAAG,GAAG,CAAC;EACPC;AACkB,CAAC,EAAE;EACrB,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAGjB,QAAQ,CAAc,EAAE,CAAC;EACrD,MAAMkB,KAAK,GAAGnB,MAAM,CAAC,CAAC,CAAC;EAEvB,MAAMoB,IAAI,GAAGvB,WAAW,CACrBwB,OAAqB,IAAK;IACzB,MAAMC,EAAE,GAAIH,KAAK,CAACI,OAAO,IAAI,CAAE;IAC/BL,SAAS,CAAEM,IAAI,IAAK;MAClB,MAAMC,IAAiB,GAAG,CAAC,GAAGD,IAAI,EAAE;QAAEE,OAAO,EAAE,KAAK;QAAEb,QAAQ;QAAE,GAAGQ,OAAO;QAAEC;MAAG,CAAC,CAAC;MACjF,OAAOG,IAAI,CAACE,MAAM,GAAGf,UAAU,GAAGa,IAAI,CAACG,KAAK,CAACH,IAAI,CAACE,MAAM,GAAGf,UAAU,CAAC,GAAGa,IAAI;IAC/E,CAAC,CAAC;IACF,OAAOH,EAAE;EACX,CAAC,EACD,CAACT,QAAQ,EAAED,UAAU,CACvB,CAAC;EAED,MAAMiB,IAAI,GAAGhC,WAAW,CAAEyB,EAAU,IAAK;IACvCJ,SAAS,CAAEM,IAAI,IAAKA,IAAI,CAACM,GAAG,CAAEC,CAAC,IAAMA,CAAC,CAACT,EAAE,KAAKA,EAAE,GAAG;MAAE,GAAGS,CAAC;MAAEL,OAAO,EAAE;IAAK,CAAC,GAAGK,CAAE,CAAC,CAAC;EACnF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,MAAM,GAAGnC,WAAW,CAAEyB,EAAU,IAAK;IACzCJ,SAAS,CAAEM,IAAI,IAAKA,IAAI,CAACS,MAAM,CAAEF,CAAC,IAAKA,CAAC,CAACT,EAAE,KAAKA,EAAE,CAAC,CAAC;EACtD,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMY,OAAO,GAAGrC,WAAW,CAAC,MAAM;IAChCqB,SAAS,CAAEM,IAAI,IAAKA,IAAI,CAACM,GAAG,CAAEC,CAAC,KAAM;MAAE,GAAGA,CAAC;MAAEL,OAAO,EAAE;IAAK,CAAC,CAAC,CAAC,CAAC;EACjE,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMS,GAAG,GAAGpC,OAAO,CAAW,OAAO;IAAEqB,IAAI;IAAES,IAAI;IAAEK;EAAQ,CAAC,CAAC,EAAE,CAACd,IAAI,EAAES,IAAI,EAAEK,OAAO,CAAC,CAAC;;EAErF;EACA,MAAME,OAAO,GAAGzB,QAAQ,KAAK,KAAK,GAAG,CAAC,GAAGM,MAAM,CAAC,CAACoB,OAAO,CAAC,CAAC,GAAGpB,MAAM;EAEnE,oBACEV,KAAA,CAACC,YAAY,CAAC8B,QAAQ;IAACC,KAAK,EAAEJ,GAAI;IAAAzB,QAAA,GAC/BA,QAAQ,eACTL,IAAA,CAACH,IAAI;MACHsC,aAAa,EAAC,UAAU;MACxBC,KAAK,EAAE;QACL9B,QAAQ,EAAE,UAAU;QACpB+B,IAAI,EAAE,CAAC;QACPC,KAAK,EAAE,CAAC;QACR,CAAChC,QAAQ,GAAGG,MAAM;QAClB8B,UAAU,EAAE,QAAQ;QACpBC,iBAAiB,EAAE,EAAE;QACrB9B;MACF,CAAE;MAAAL,QAAA,EAED0B,OAAO,CAACN,GAAG,CAAEC,CAAC,iBACb1B,IAAA,CAACF,SAAS;QAAA,GAEJ4B,CAAC;QACLpB,QAAQ,EAAEA,QAAS;QACnBK,QAAQ,EAAEA,QAAS;QACnB8B,cAAc,EAAEjB,IAAK;QACrBkB,QAAQ,EAAEf;MAAO,GALZD,CAAC,CAACT,EAMR,CACF;IAAC,CACE,CAAC;EAAA,CACc,CAAC;AAE5B;;AAEA;AACA,OAAO,SAAS0B,QAAQA,CAAA,EAAa;EACnC,MAAMC,GAAG,GAAGnD,UAAU,CAACU,YAAY,CAAC;EACpC,IAAI,CAACyC,GAAG,EAAE,MAAM,IAAIC,KAAK,CAAC,8CAA8C,CAAC;EACzE,OAAOD,GAAG;AACZ","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ export { ToastView } from "./Toast.js";
4
+ export { ToastProvider, useToast } from "./ToastProvider.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ToastView","ToastProvider","useToast"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Toast/index.ts"],"mappings":";;AAAA,SAASA,SAAS,QAAkE,YAAS;AAC7F,SACEC,aAAa,EACbC,QAAQ,QAGH,oBAAiB","ignoreList":[]}
@@ -20,4 +20,5 @@ export * from "./Spinner/index.js";
20
20
  export * from "./Surface/index.js";
21
21
  export * from "./Switch/index.js";
22
22
  export * from "./Text/index.js";
23
+ export * from "./Toast/index.js";
23
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"..\\..\\..\\src","sources":["components/index.ts"],"mappings":";;AAAA,cAAc,mBAAU;AACxB,cAAc,kBAAS;AACvB,cAAc,mBAAU;AACxB,cAAc,iBAAQ;AACtB,cAAc,qBAAY;AAC1B,cAAc,iBAAQ;AACtB,cAAc,sBAAa;AAC3B,cAAc,sBAAa;AAC3B,cAAc,mBAAU;AACxB,cAAc,iBAAQ;AACtB,cAAc,uBAAc;AAC5B,cAAc,kBAAS;AACvB,cAAc,uBAAc;AAC5B,cAAc,wBAAe;AAC7B,cAAc,4BAAmB;AACjC,cAAc,kBAAS;AACvB,cAAc,oBAAW;AACzB,cAAc,oBAAW;AACzB,cAAc,mBAAU;AACxB,cAAc,iBAAQ","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"..\\..\\..\\src","sources":["components/index.ts"],"mappings":";;AAAA,cAAc,mBAAU;AACxB,cAAc,kBAAS;AACvB,cAAc,mBAAU;AACxB,cAAc,iBAAQ;AACtB,cAAc,qBAAY;AAC1B,cAAc,iBAAQ;AACtB,cAAc,sBAAa;AAC3B,cAAc,sBAAa;AAC3B,cAAc,mBAAU;AACxB,cAAc,iBAAQ;AACtB,cAAc,uBAAc;AAC5B,cAAc,kBAAS;AACvB,cAAc,uBAAc;AAC5B,cAAc,wBAAe;AAC7B,cAAc,4BAAmB;AACjC,cAAc,kBAAS;AACvB,cAAc,oBAAW;AACzB,cAAc,oBAAW;AACzB,cAAc,mBAAU;AACxB,cAAc,iBAAQ;AACtB,cAAc,kBAAS","ignoreList":[]}
@@ -56,6 +56,10 @@ export interface DialogProps {
56
56
  radius?: number;
57
57
  /** Max width of the dialog card. Defaults to 560. */
58
58
  maxWidth?: number;
59
+ /** Fixed card width (overrides `maxWidth`). */
60
+ width?: number;
61
+ /** Fill the whole screen — for small devices. Overrides width/maxWidth/scrollMode. */
62
+ fullscreen?: boolean;
59
63
  /** Fraction of screen height the card may occupy (inner mode). Defaults to 0.9. */
60
64
  maxHeightRatio?: number;
61
65
  /** Scroll indicator color (a design-system color). Defaults to a subtle neutral. */
@@ -71,5 +75,5 @@ export interface DialogProps {
71
75
  * screens instead of scrolling inside the card. Footer composes the
72
76
  * design-system `Button`.
73
77
  */
74
- export declare function Dialog({ visible, onClose, title, subtitle, children, actions, cancel, showClose, closeDestructive, dismissOnBackdrop, scrollMode, stickyHeader, stickyFooter, padding, contentSpacing, radius, maxWidth, maxHeightRatio, scrollbarColor, style, }: DialogProps): import("react/jsx-runtime").JSX.Element;
78
+ export declare function Dialog({ visible, onClose, title, subtitle, children, actions, cancel, showClose, closeDestructive, dismissOnBackdrop, scrollMode, stickyHeader, stickyFooter, padding, contentSpacing, radius, maxWidth, width, fullscreen, maxHeightRatio, scrollbarColor, style, }: DialogProps): import("react/jsx-runtime").JSX.Element;
75
79
  //# sourceMappingURL=Dialog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../../../src/components/Dialog/Dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EASL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAU,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAK9D,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,mFAAmF;IACnF,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,sDAAsD;IACtD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,yEAAyE;IACzE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC9B,mFAAmF;IACnF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mFAAmF;IACnF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mFAAmF;IACnF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oFAAoF;IACpF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,EACrB,OAAO,EACP,OAAO,EACP,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,OAAY,EACZ,MAAM,EACN,SAAgB,EAChB,gBAAwB,EACxB,iBAAyB,EACzB,UAAoB,EACpB,YAAmB,EACnB,YAAmB,EACnB,OAAY,EACZ,cAAmB,EACnB,MAAW,EACX,QAAc,EACd,cAAoB,EACpB,cAAc,EACd,KAAK,GACN,EAAE,WAAW,2CA2Jb"}
1
+ {"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../../../src/components/Dialog/Dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EASL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAU,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAK9D,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,mFAAmF;IACnF,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,sDAAsD;IACtD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,yEAAyE;IACzE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC9B,mFAAmF;IACnF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mFAAmF;IACnF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mFAAmF;IACnF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oFAAoF;IACpF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,EACrB,OAAO,EACP,OAAO,EACP,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,OAAY,EACZ,MAAM,EACN,SAAgB,EAChB,gBAAwB,EACxB,iBAAyB,EACzB,UAAoB,EACpB,YAAmB,EACnB,YAAmB,EACnB,OAAY,EACZ,cAAmB,EACnB,MAAW,EACX,QAAc,EACd,KAAK,EACL,UAAkB,EAClB,cAAoB,EACpB,cAAc,EACd,KAAK,GACN,EAAE,WAAW,2CAmLb"}
@@ -0,0 +1,40 @@
1
+ import type { IconName } from '../Icon/icons.generated';
2
+ /** Built-in statuses. More can be added later, or use custom colors. */
3
+ export type ToastStatus = 'success' | 'error' | 'warning' | 'info';
4
+ export interface ToastOptions {
5
+ /** Message text. Ellipsized on a single line if it overflows. */
6
+ message: string;
7
+ /** Visual status. Defaults to `info`. */
8
+ status?: ToastStatus;
9
+ /** Optional leading icon. */
10
+ icon?: IconName;
11
+ /** Time on screen in ms. `0` keeps it until dismissed. */
12
+ duration?: number;
13
+ /** Custom fixed height. */
14
+ height?: number;
15
+ /** Custom fixed width. Defaults to full width. */
16
+ width?: number;
17
+ /** Show a countdown progress bar for the remaining time (needs duration > 0). */
18
+ showProgress?: boolean;
19
+ /** Custom background (overrides status). */
20
+ backgroundColor?: string;
21
+ /** Custom text/icon color (overrides status). */
22
+ color?: string;
23
+ /** Countdown bar color. Defaults to the status foreground. */
24
+ progressColor?: string;
25
+ }
26
+ export interface ToastViewProps extends ToastOptions {
27
+ id: number;
28
+ position: 'top' | 'bottom';
29
+ /** When true, the toast animates out and then calls `onRemove`. */
30
+ leaving: boolean;
31
+ onRequestClose: (id: number) => void;
32
+ onRemove: (id: number) => void;
33
+ maxWidth?: number;
34
+ }
35
+ /**
36
+ * A single toast with an elegant slide + fade in/out. Self-contained: it runs
37
+ * its own duration timer and exit animation. Managed by `ToastProvider`.
38
+ */
39
+ export declare function ToastView({ id, message, status, icon, duration, height, width, showProgress, backgroundColor, color, progressColor, position, leaving, onRequestClose, onRemove, maxWidth, }: ToastViewProps): import("react/jsx-runtime").JSX.Element;
40
+ //# sourceMappingURL=Toast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../../../../src/components/Toast/Toast.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGxD,wEAAwE;AACxE,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEnE,MAAM,WAAW,YAAY;IAC3B,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4CAA4C;IAC5C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAgBD,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC3B,mEAAmE;IACnE,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,EACxB,EAAE,EACF,OAAO,EACP,MAAe,EACf,IAAI,EACJ,QAAe,EACf,MAAM,EACN,KAAK,EACL,YAAoB,EACpB,eAAe,EACf,KAAK,EACL,aAAa,EACb,QAAQ,EACR,OAAO,EACP,cAAc,EACd,QAAQ,EACR,QAAQ,GACT,EAAE,cAAc,2CAuFhB"}
@@ -0,0 +1,34 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type ToastOptions } from './Toast';
3
+ export interface ToastApi {
4
+ /** Show a toast; returns its id. */
5
+ show: (options: ToastOptions) => number;
6
+ /** Dismiss a toast by id (animates out). */
7
+ hide: (id: number) => void;
8
+ /** Dismiss all toasts. */
9
+ hideAll: () => void;
10
+ }
11
+ export interface ToastProviderProps {
12
+ children: ReactNode;
13
+ /** Where toasts appear. Defaults to `bottom`. */
14
+ position?: 'top' | 'bottom';
15
+ /** Max toasts on screen at once. Defaults to 2. */
16
+ maxVisible?: number;
17
+ /** Default time on screen in ms. Defaults to 3000. */
18
+ duration?: number;
19
+ /** Distance from the screen edge. Defaults to 24. */
20
+ offset?: number;
21
+ /** Gap between stacked toasts. Defaults to 8. */
22
+ gap?: number;
23
+ /** Max toast width. Defaults to full width (no cap). */
24
+ maxWidth?: number;
25
+ }
26
+ /**
27
+ * Provides the imperative toast API and renders the toast stack. Wrap your app
28
+ * (inside ThemeProvider). Trigger toasts with `useToast().show(...)`. Newest
29
+ * toasts appear nearest the edge; at most `maxVisible` show at once.
30
+ */
31
+ export declare function ToastProvider({ children, position, maxVisible, duration, offset, gap, maxWidth, }: ToastProviderProps): import("react/jsx-runtime").JSX.Element;
32
+ /** Access the toast API. Must be used within a `ToastProvider`. */
33
+ export declare function useToast(): ToastApi;
34
+ //# sourceMappingURL=ToastProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToastProvider.d.ts","sourceRoot":"","sources":["../../../../../src/components/Toast/ToastProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvD,MAAM,WAAW,QAAQ;IACvB,oCAAoC;IACpC,IAAI,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,MAAM,CAAC;IACxC,4CAA4C;IAC5C,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3B,0BAA0B;IAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AASD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC5B,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,QAAmB,EACnB,UAAc,EACd,QAAe,EACf,MAAW,EACX,GAAO,EACP,QAAQ,GACT,EAAE,kBAAkB,2CA6DpB;AAED,mEAAmE;AACnE,wBAAgB,QAAQ,IAAI,QAAQ,CAInC"}
@@ -0,0 +1,3 @@
1
+ export { ToastView, type ToastOptions, type ToastStatus, type ToastViewProps } from './Toast';
2
+ export { ToastProvider, useToast, type ToastApi, type ToastProviderProps, } from './ToastProvider';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/Toast/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9F,OAAO,EACL,aAAa,EACb,QAAQ,EACR,KAAK,QAAQ,EACb,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC"}
@@ -18,5 +18,6 @@ export * from './Spinner';
18
18
  export * from './Surface';
19
19
  export * from './Switch';
20
20
  export * from './Text';
21
+ export * from './Toast';
21
22
  export type { LabelPosition } from './_internal/Labeled';
22
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AAEvB,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AAExB,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -56,6 +56,10 @@ export interface DialogProps {
56
56
  radius?: number;
57
57
  /** Max width of the dialog card. Defaults to 560. */
58
58
  maxWidth?: number;
59
+ /** Fixed card width (overrides `maxWidth`). */
60
+ width?: number;
61
+ /** Fill the whole screen — for small devices. Overrides width/maxWidth/scrollMode. */
62
+ fullscreen?: boolean;
59
63
  /** Fraction of screen height the card may occupy (inner mode). Defaults to 0.9. */
60
64
  maxHeightRatio?: number;
61
65
  /** Scroll indicator color (a design-system color). Defaults to a subtle neutral. */
@@ -71,5 +75,5 @@ export interface DialogProps {
71
75
  * screens instead of scrolling inside the card. Footer composes the
72
76
  * design-system `Button`.
73
77
  */
74
- export declare function Dialog({ visible, onClose, title, subtitle, children, actions, cancel, showClose, closeDestructive, dismissOnBackdrop, scrollMode, stickyHeader, stickyFooter, padding, contentSpacing, radius, maxWidth, maxHeightRatio, scrollbarColor, style, }: DialogProps): import("react/jsx-runtime").JSX.Element;
78
+ export declare function Dialog({ visible, onClose, title, subtitle, children, actions, cancel, showClose, closeDestructive, dismissOnBackdrop, scrollMode, stickyHeader, stickyFooter, padding, contentSpacing, radius, maxWidth, width, fullscreen, maxHeightRatio, scrollbarColor, style, }: DialogProps): import("react/jsx-runtime").JSX.Element;
75
79
  //# sourceMappingURL=Dialog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../../../src/components/Dialog/Dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EASL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAU,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAK9D,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,mFAAmF;IACnF,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,sDAAsD;IACtD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,yEAAyE;IACzE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC9B,mFAAmF;IACnF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mFAAmF;IACnF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mFAAmF;IACnF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oFAAoF;IACpF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,EACrB,OAAO,EACP,OAAO,EACP,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,OAAY,EACZ,MAAM,EACN,SAAgB,EAChB,gBAAwB,EACxB,iBAAyB,EACzB,UAAoB,EACpB,YAAmB,EACnB,YAAmB,EACnB,OAAY,EACZ,cAAmB,EACnB,MAAW,EACX,QAAc,EACd,cAAoB,EACpB,cAAc,EACd,KAAK,GACN,EAAE,WAAW,2CA2Jb"}
1
+ {"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../../../src/components/Dialog/Dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EASL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAU,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAK9D,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,mFAAmF;IACnF,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,sDAAsD;IACtD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,yEAAyE;IACzE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC9B,mFAAmF;IACnF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mFAAmF;IACnF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mFAAmF;IACnF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oFAAoF;IACpF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,EACrB,OAAO,EACP,OAAO,EACP,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,OAAY,EACZ,MAAM,EACN,SAAgB,EAChB,gBAAwB,EACxB,iBAAyB,EACzB,UAAoB,EACpB,YAAmB,EACnB,YAAmB,EACnB,OAAY,EACZ,cAAmB,EACnB,MAAW,EACX,QAAc,EACd,KAAK,EACL,UAAkB,EAClB,cAAoB,EACpB,cAAc,EACd,KAAK,GACN,EAAE,WAAW,2CAmLb"}
@@ -0,0 +1,40 @@
1
+ import type { IconName } from '../Icon/icons.generated';
2
+ /** Built-in statuses. More can be added later, or use custom colors. */
3
+ export type ToastStatus = 'success' | 'error' | 'warning' | 'info';
4
+ export interface ToastOptions {
5
+ /** Message text. Ellipsized on a single line if it overflows. */
6
+ message: string;
7
+ /** Visual status. Defaults to `info`. */
8
+ status?: ToastStatus;
9
+ /** Optional leading icon. */
10
+ icon?: IconName;
11
+ /** Time on screen in ms. `0` keeps it until dismissed. */
12
+ duration?: number;
13
+ /** Custom fixed height. */
14
+ height?: number;
15
+ /** Custom fixed width. Defaults to full width. */
16
+ width?: number;
17
+ /** Show a countdown progress bar for the remaining time (needs duration > 0). */
18
+ showProgress?: boolean;
19
+ /** Custom background (overrides status). */
20
+ backgroundColor?: string;
21
+ /** Custom text/icon color (overrides status). */
22
+ color?: string;
23
+ /** Countdown bar color. Defaults to the status foreground. */
24
+ progressColor?: string;
25
+ }
26
+ export interface ToastViewProps extends ToastOptions {
27
+ id: number;
28
+ position: 'top' | 'bottom';
29
+ /** When true, the toast animates out and then calls `onRemove`. */
30
+ leaving: boolean;
31
+ onRequestClose: (id: number) => void;
32
+ onRemove: (id: number) => void;
33
+ maxWidth?: number;
34
+ }
35
+ /**
36
+ * A single toast with an elegant slide + fade in/out. Self-contained: it runs
37
+ * its own duration timer and exit animation. Managed by `ToastProvider`.
38
+ */
39
+ export declare function ToastView({ id, message, status, icon, duration, height, width, showProgress, backgroundColor, color, progressColor, position, leaving, onRequestClose, onRemove, maxWidth, }: ToastViewProps): import("react/jsx-runtime").JSX.Element;
40
+ //# sourceMappingURL=Toast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../../../../src/components/Toast/Toast.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGxD,wEAAwE;AACxE,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEnE,MAAM,WAAW,YAAY;IAC3B,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4CAA4C;IAC5C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAgBD,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC3B,mEAAmE;IACnE,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,EACxB,EAAE,EACF,OAAO,EACP,MAAe,EACf,IAAI,EACJ,QAAe,EACf,MAAM,EACN,KAAK,EACL,YAAoB,EACpB,eAAe,EACf,KAAK,EACL,aAAa,EACb,QAAQ,EACR,OAAO,EACP,cAAc,EACd,QAAQ,EACR,QAAQ,GACT,EAAE,cAAc,2CAuFhB"}
@@ -0,0 +1,34 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type ToastOptions } from './Toast';
3
+ export interface ToastApi {
4
+ /** Show a toast; returns its id. */
5
+ show: (options: ToastOptions) => number;
6
+ /** Dismiss a toast by id (animates out). */
7
+ hide: (id: number) => void;
8
+ /** Dismiss all toasts. */
9
+ hideAll: () => void;
10
+ }
11
+ export interface ToastProviderProps {
12
+ children: ReactNode;
13
+ /** Where toasts appear. Defaults to `bottom`. */
14
+ position?: 'top' | 'bottom';
15
+ /** Max toasts on screen at once. Defaults to 2. */
16
+ maxVisible?: number;
17
+ /** Default time on screen in ms. Defaults to 3000. */
18
+ duration?: number;
19
+ /** Distance from the screen edge. Defaults to 24. */
20
+ offset?: number;
21
+ /** Gap between stacked toasts. Defaults to 8. */
22
+ gap?: number;
23
+ /** Max toast width. Defaults to full width (no cap). */
24
+ maxWidth?: number;
25
+ }
26
+ /**
27
+ * Provides the imperative toast API and renders the toast stack. Wrap your app
28
+ * (inside ThemeProvider). Trigger toasts with `useToast().show(...)`. Newest
29
+ * toasts appear nearest the edge; at most `maxVisible` show at once.
30
+ */
31
+ export declare function ToastProvider({ children, position, maxVisible, duration, offset, gap, maxWidth, }: ToastProviderProps): import("react/jsx-runtime").JSX.Element;
32
+ /** Access the toast API. Must be used within a `ToastProvider`. */
33
+ export declare function useToast(): ToastApi;
34
+ //# sourceMappingURL=ToastProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToastProvider.d.ts","sourceRoot":"","sources":["../../../../../src/components/Toast/ToastProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvD,MAAM,WAAW,QAAQ;IACvB,oCAAoC;IACpC,IAAI,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,MAAM,CAAC;IACxC,4CAA4C;IAC5C,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3B,0BAA0B;IAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AASD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC5B,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,QAAmB,EACnB,UAAc,EACd,QAAe,EACf,MAAW,EACX,GAAO,EACP,QAAQ,GACT,EAAE,kBAAkB,2CA6DpB;AAED,mEAAmE;AACnE,wBAAgB,QAAQ,IAAI,QAAQ,CAInC"}
@@ -0,0 +1,3 @@
1
+ export { ToastView, type ToastOptions, type ToastStatus, type ToastViewProps } from './Toast';
2
+ export { ToastProvider, useToast, type ToastApi, type ToastProviderProps, } from './ToastProvider';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/Toast/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9F,OAAO,EACL,aAAa,EACb,QAAQ,EACR,KAAK,QAAQ,EACb,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC"}
@@ -18,5 +18,6 @@ export * from './Spinner';
18
18
  export * from './Surface';
19
19
  export * from './Switch';
20
20
  export * from './Text';
21
+ export * from './Toast';
21
22
  export type { LabelPosition } from './_internal/Labeled';
22
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AAEvB,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AAExB,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bacon-pos/ui",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Bacon POS design system — React Native component library",
5
5
  "main": "./lib/commonjs/index.js",
6
6
  "module": "./lib/module/index.js",