@infonomic/uikit 5.44.0 → 6.0.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 (180) hide show
  1. package/README.md +1 -1
  2. package/dist/components/accordion/accordion.d.ts +9 -9
  3. package/dist/components/accordion/accordion.d.ts.map +1 -1
  4. package/dist/components/accordion/accordion.js +4 -4
  5. package/dist/components/accordion/accordion.module.css +6 -5
  6. package/dist/components/accordion/accordion_module.css +4 -4
  7. package/dist/components/avatar/avatar.js +2 -2
  8. package/dist/components/badge/badge.d.ts +5 -13
  9. package/dist/components/badge/badge.d.ts.map +1 -1
  10. package/dist/components/badge/badge.js +12 -9
  11. package/dist/components/button/button-group.d.ts +9 -7
  12. package/dist/components/button/button-group.d.ts.map +1 -1
  13. package/dist/components/button/button-group.js +26 -36
  14. package/dist/components/button/button.d.ts +6 -13
  15. package/dist/components/button/button.d.ts.map +1 -1
  16. package/dist/components/button/button.js +19 -18
  17. package/dist/components/button/button.module.css +32 -54
  18. package/dist/components/button/button_module.css +7 -10
  19. package/dist/components/button/combo-button.d.ts +1 -1
  20. package/dist/components/button/combo-button.d.ts.map +1 -1
  21. package/dist/components/button/combo-button.js +13 -9
  22. package/dist/components/button/combo-button.module.css +16 -7
  23. package/dist/components/button/combo-button_module.css +22 -4
  24. package/dist/components/button/icon-button.d.ts +2 -3
  25. package/dist/components/button/icon-button.d.ts.map +1 -1
  26. package/dist/components/card/card.d.ts +5 -12
  27. package/dist/components/card/card.d.ts.map +1 -1
  28. package/dist/components/card/card.js +13 -9
  29. package/dist/components/chips/chip.d.ts +5 -11
  30. package/dist/components/chips/chip.d.ts.map +1 -1
  31. package/dist/components/chips/chip.js +36 -28
  32. package/dist/components/chips/chip.module.css +22 -36
  33. package/dist/components/chips/chip_module.css +3 -6
  34. package/dist/components/dropdown/dropdown.d.ts +28 -14
  35. package/dist/components/dropdown/dropdown.d.ts.map +1 -1
  36. package/dist/components/dropdown/dropdown.js +34 -20
  37. package/dist/components/forms/calendar.d.ts +1 -1
  38. package/dist/components/forms/calendar.d.ts.map +1 -1
  39. package/dist/components/forms/calendar.js +38 -29
  40. package/dist/components/forms/checkbox.astro +13 -8
  41. package/dist/components/forms/checkbox.d.ts +6 -2
  42. package/dist/components/forms/checkbox.d.ts.map +1 -1
  43. package/dist/components/forms/checkbox.js +11 -7
  44. package/dist/components/forms/checkbox.module.css +20 -20
  45. package/dist/components/forms/checkbox_module.css +13 -10
  46. package/dist/components/forms/input.module.css +10 -11
  47. package/dist/components/forms/input_module.css +3 -5
  48. package/dist/components/forms/radio-group.d.ts +6 -5
  49. package/dist/components/forms/radio-group.d.ts.map +1 -1
  50. package/dist/components/forms/radio-group.js +9 -4
  51. package/dist/components/forms/radio-group.module.css +13 -22
  52. package/dist/components/forms/radio-group_module.css +6 -24
  53. package/dist/components/forms/select.d.ts +4 -5
  54. package/dist/components/forms/select.d.ts.map +1 -1
  55. package/dist/components/forms/select.js +27 -29
  56. package/dist/components/forms/select.module.css +22 -22
  57. package/dist/components/forms/select.module.js +15 -15
  58. package/dist/components/forms/select_module.css +15 -15
  59. package/dist/components/notifications/@types/toast.d.ts +9 -7
  60. package/dist/components/notifications/@types/toast.d.ts.map +1 -1
  61. package/dist/components/notifications/toast.d.ts +12 -16
  62. package/dist/components/notifications/toast.d.ts.map +1 -1
  63. package/dist/components/notifications/toast.js +73 -57
  64. package/dist/components/notifications/toast.module.css +151 -177
  65. package/dist/components/notifications/toast.module.js +8 -12
  66. package/dist/components/notifications/toast_module.css +114 -159
  67. package/dist/components/pager/first-button.d.ts +2 -2
  68. package/dist/components/pager/first-button.d.ts.map +1 -1
  69. package/dist/components/pager/first-button.js +23 -16
  70. package/dist/components/pager/last-button.d.ts +2 -2
  71. package/dist/components/pager/last-button.d.ts.map +1 -1
  72. package/dist/components/pager/last-button.js +23 -16
  73. package/dist/components/pager/next-button.d.ts +2 -2
  74. package/dist/components/pager/next-button.d.ts.map +1 -1
  75. package/dist/components/pager/next-button.js +27 -20
  76. package/dist/components/pager/number-button.d.ts +2 -2
  77. package/dist/components/pager/number-button.d.ts.map +1 -1
  78. package/dist/components/pager/number-button.js +28 -23
  79. package/dist/components/pager/pagination.d.ts +8 -13
  80. package/dist/components/pager/pagination.d.ts.map +1 -1
  81. package/dist/components/pager/previous-button.d.ts +2 -2
  82. package/dist/components/pager/previous-button.d.ts.map +1 -1
  83. package/dist/components/pager/previous-button.js +25 -18
  84. package/dist/components/scroll-area/scroll-area.d.ts +2 -2
  85. package/dist/components/scroll-area/scroll-area.d.ts.map +1 -1
  86. package/dist/components/scroll-area/scroll-area.js +4 -2
  87. package/dist/components/tabs/tabs.d.ts +13 -13
  88. package/dist/components/tabs/tabs.d.ts.map +1 -1
  89. package/dist/components/tabs/tabs.js +8 -8
  90. package/dist/components/tabs/tabs.module.css +8 -17
  91. package/dist/components/tabs/tabs_module.css +1 -1
  92. package/dist/components/tooltip/tooltip.d.ts +6 -8
  93. package/dist/components/tooltip/tooltip.d.ts.map +1 -1
  94. package/dist/components/tooltip/tooltip.js +49 -20
  95. package/dist/components/tooltip/tooltip.module.css +43 -10
  96. package/dist/components/tooltip/tooltip.module.js +7 -1
  97. package/dist/components/tooltip/tooltip_module.css +36 -4
  98. package/dist/hooks/use-focus-trap/index.d.ts +2 -0
  99. package/dist/hooks/use-focus-trap/index.d.ts.map +1 -0
  100. package/dist/hooks/use-focus-trap/index.js +1 -0
  101. package/dist/hooks/use-focus-trap/scope-tab.d.ts +11 -0
  102. package/dist/hooks/use-focus-trap/scope-tab.d.ts.map +1 -0
  103. package/dist/hooks/use-focus-trap/scope-tab.js +19 -0
  104. package/dist/hooks/use-focus-trap/tabbable.d.ts +14 -0
  105. package/dist/hooks/use-focus-trap/tabbable.d.ts.map +1 -0
  106. package/dist/hooks/use-focus-trap/tabbable.js +36 -0
  107. package/dist/hooks/use-focus-trap/use-focus-trap.d.ts +11 -0
  108. package/dist/hooks/use-focus-trap/use-focus-trap.d.ts.map +1 -0
  109. package/dist/hooks/use-focus-trap/use-focus-trap.js +45 -0
  110. package/dist/icons/chevron-up-icon.d.ts +7 -0
  111. package/dist/icons/chevron-up-icon.d.ts.map +1 -0
  112. package/dist/icons/chevron-up-icon.js +27 -0
  113. package/dist/lib/ripple.d.ts +25 -0
  114. package/dist/lib/ripple.d.ts.map +1 -0
  115. package/dist/lib/ripple.js +53 -0
  116. package/dist/styles/components-vanilla.css +1 -1
  117. package/dist/widgets/datepicker/datepicker.d.ts +1 -1
  118. package/dist/widgets/datepicker/datepicker.d.ts.map +1 -1
  119. package/dist/widgets/datepicker/datepicker.js +118 -116
  120. package/dist/widgets/datepicker/datepicker.module.css +6 -5
  121. package/dist/widgets/datepicker/datepicker_module.css +4 -4
  122. package/dist/widgets/drawer/drawer-wrapper.d.ts.map +1 -1
  123. package/dist/widgets/drawer/drawer-wrapper.js +1 -1
  124. package/dist/widgets/modal/modal-wrapper.d.ts.map +1 -1
  125. package/dist/widgets/modal/modal-wrapper.js +1 -1
  126. package/package.json +2 -6
  127. package/src/components/accordion/accordion.module.css +6 -5
  128. package/src/components/accordion/accordion.stories.tsx +10 -13
  129. package/src/components/accordion/accordion.tsx +13 -13
  130. package/src/components/avatar/avatar.tsx +2 -2
  131. package/src/components/badge/badge.tsx +20 -29
  132. package/src/components/button/button-group.tsx +60 -44
  133. package/src/components/button/button.module.css +32 -54
  134. package/src/components/button/button.tsx +35 -47
  135. package/src/components/button/combo-button.module.css +16 -7
  136. package/src/components/button/combo-button.tsx +17 -9
  137. package/src/components/button/icon-button.tsx +3 -5
  138. package/src/components/card/card.tsx +20 -32
  139. package/src/components/chips/chip.module.css +22 -36
  140. package/src/components/chips/chip.stories.tsx +2 -2
  141. package/src/components/chips/chip.tsx +59 -57
  142. package/src/components/dropdown/dropdown.stories.tsx +2 -4
  143. package/src/components/dropdown/dropdown.tsx +86 -40
  144. package/src/components/forms/calendar.tsx +43 -33
  145. package/src/components/forms/checkbox-group.tsx +1 -1
  146. package/src/components/forms/checkbox.astro +13 -8
  147. package/src/components/forms/checkbox.module.css +20 -20
  148. package/src/components/forms/checkbox.tsx +11 -6
  149. package/src/components/forms/input.module.css +10 -11
  150. package/src/components/forms/radio-group.module.css +13 -22
  151. package/src/components/forms/radio-group.tsx +13 -11
  152. package/src/components/forms/select.module.css +22 -22
  153. package/src/components/forms/select.tsx +36 -33
  154. package/src/components/notifications/@types/toast.ts +9 -7
  155. package/src/components/notifications/toast.module.css +151 -177
  156. package/src/components/notifications/toast.stories.tsx +21 -23
  157. package/src/components/notifications/toast.tsx +90 -86
  158. package/src/components/pager/first-button.tsx +24 -26
  159. package/src/components/pager/last-button.tsx +24 -25
  160. package/src/components/pager/next-button.tsx +24 -23
  161. package/src/components/pager/number-button.tsx +37 -36
  162. package/src/components/pager/pagination.tsx +4 -11
  163. package/src/components/pager/previous-button.tsx +24 -24
  164. package/src/components/scroll-area/scroll-area.tsx +3 -3
  165. package/src/components/tabs/tabs.module.css +8 -17
  166. package/src/components/tabs/tabs.stories.tsx +5 -5
  167. package/src/components/tabs/tabs.tsx +17 -16
  168. package/src/components/tooltip/tooltip.module.css +43 -10
  169. package/src/components/tooltip/tooltip.stories.tsx +4 -4
  170. package/src/components/tooltip/tooltip.tsx +56 -28
  171. package/src/hooks/use-focus-trap/index.ts +1 -0
  172. package/src/hooks/use-focus-trap/scope-tab.ts +48 -0
  173. package/src/hooks/use-focus-trap/tabbable.ts +72 -0
  174. package/src/hooks/use-focus-trap/use-focus-trap.ts +83 -0
  175. package/src/icons/chevron-up-icon.tsx +37 -0
  176. package/src/lib/ripple.ts +95 -0
  177. package/src/widgets/datepicker/datepicker.module.css +6 -5
  178. package/src/widgets/datepicker/datepicker.tsx +137 -135
  179. package/src/widgets/drawer/drawer-wrapper.tsx +1 -1
  180. package/src/widgets/modal/modal-wrapper.tsx +1 -1
@@ -19,14 +19,14 @@ import type { Icons as i, Position as p, Intent as t } from '../../@types/shared
19
19
  */
20
20
  export type Intent = 'primary' | t;
21
21
  /**
22
- * Screen corner position for the toast container.
22
+ * Screen corner position for the toast viewport.
23
23
  *
24
24
  * - `top-left` — top-left corner of the viewport
25
25
  * - `top-right` — top-right corner of the viewport (default)
26
26
  * - `bottom-left` — bottom-left corner of the viewport
27
27
  * - `bottom-right` — bottom-right corner of the viewport
28
28
  *
29
- * @default 'top-right'
29
+ * @default 'bottom-right'
30
30
  */
31
31
  export type Position = 'top-right' | p;
32
32
  /**
@@ -35,10 +35,12 @@ export type Position = 'top-right' | p;
35
35
  */
36
36
  export type IconType = 'success' | i;
37
37
  /**
38
- * Callback fired when the toast's open/visible state changes.
39
- * Use this to sync dismissal with external state.
40
- *
41
- * @param open - `true` when the toast becomes visible, `false` when dismissed
38
+ * Custom data passed to each toast via the toast manager's `add()` method.
42
39
  */
43
- export type OnOpenChange = (open: boolean) => void;
40
+ export interface ToastData {
41
+ intent?: Intent;
42
+ iconType?: IconType;
43
+ icon?: boolean;
44
+ close?: boolean;
45
+ }
44
46
  //# sourceMappingURL=toast.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../../../../src/components/notifications/@types/toast.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE,QAAQ,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,wBAAwB,CAAA;AAEpF;;GAEG;AAIH;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG,CAAC,CAAA;AAElC;;;;;;;;;GASG;AACH,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,CAAC,CAAA;AAEtC;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,CAAC,CAAA;AAEpC;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA"}
1
+ {"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../../../../src/components/notifications/@types/toast.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE,QAAQ,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,wBAAwB,CAAA;AAEpF;;GAEG;AAIH;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG,CAAC,CAAA;AAElC;;;;;;;;;GASG;AACH,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,CAAC,CAAA;AAEtC;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,CAAC,CAAA;AAEpC;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB"}
@@ -1,21 +1,17 @@
1
1
  import React from 'react';
2
- import { Toast as ToastPrimitive } from 'radix-ui';
3
- import type { IconType, Intent, OnOpenChange, Position } from './@types/toast.js';
4
- export interface ToastProps extends React.InputHTMLAttributes<HTMLLIElement> {
5
- intent?: Intent;
2
+ import type { Position, ToastData } from './@types/toast.js';
3
+ export declare const useToastManager: () => import("@base-ui/react").UseToastManagerReturnValue<ToastData>;
4
+ export declare const createToastManager: () => import("@base-ui/react").ToastManager<ToastData>;
5
+ export interface ToastProviderProps {
6
+ children: React.ReactNode;
7
+ timeout?: number;
8
+ limit?: number;
9
+ toastManager?: ReturnType<typeof createToastManager>;
10
+ }
11
+ export declare function ToastProvider({ children, timeout, limit, toastManager, }: ToastProviderProps): React.JSX.Element;
12
+ export interface ToastViewportProps {
6
13
  position?: Position;
7
- title: string;
8
- message: string;
9
- icon?: boolean;
10
- iconType?: IconType;
11
- close?: boolean;
12
- open: boolean;
13
- onOpenChange: OnOpenChange;
14
14
  className?: string;
15
15
  }
16
- export declare const ToastProvider: React.FC<ToastPrimitive.ToastProviderProps>;
17
- export declare const ToastViewport: React.ForwardRefExoticComponent<ToastPrimitive.ToastViewportProps & React.RefAttributes<HTMLOListElement>>;
18
- export declare const Toast: ({ ref, intent, position, title, message, icon, iconType, close, open, onOpenChange, className, }: ToastProps & {
19
- ref?: React.RefObject<HTMLLIElement>;
20
- }) => React.JSX.Element;
16
+ export declare function ToastViewport({ position, className }: ToastViewportProps): React.JSX.Element;
21
17
  //# sourceMappingURL=toast.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../../../src/components/notifications/toast.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,UAAU,CAAA;AASlD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AASjF,MAAM,WAAW,UAAW,SAAQ,KAAK,CAAC,mBAAmB,CAAC,aAAa,CAAC;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,YAAY,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,eAAO,MAAM,aAAa,6CAA0B,CAAA;AACpD,eAAO,MAAM,aAAa,4GAA0B,CAAA;AAIpD,eAAO,MAAM,KAAK,GAAkB,kGAYjC,UAAU,GAAG;IACd,GAAG,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;CACrC,sBAqEA,CAAA"}
1
+ {"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../../../src/components/notifications/toast.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAYzB,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAU5D,eAAO,MAAM,eAAe,sEAA4C,CAAA;AACxE,eAAO,MAAM,kBAAkB,wDAA+C,CAAA;AAE9E,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAA;CACrD;AAED,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,OAAc,EACd,KAAS,EACT,YAAY,GACb,EAAE,kBAAkB,qBAMpB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAyB,EAAE,SAAS,EAAE,EAAE,kBAAkB,qBAazF"}
@@ -1,9 +1,8 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import react from "react";
4
- import { useFocusTrap, useMergedRef } from "@mantine/hooks";
4
+ import { Toast } from "@base-ui/react/toast";
5
5
  import classnames from "classnames";
6
- import { Toast as external_radix_ui_Toast } from "radix-ui";
7
6
  import { CloseIcon } from "../../icons/close-icon.js";
8
7
  import { DangerIcon } from "../../icons/danger-icon.js";
9
8
  import { InfoIcon } from "../../icons/info-icon.js";
@@ -17,66 +16,83 @@ const toastIcons = {
17
16
  warning: WarningIcon,
18
17
  danger: DangerIcon
19
18
  };
20
- const ToastProvider = external_radix_ui_Toast.Provider;
21
- const ToastViewport = external_radix_ui_Toast.Viewport;
22
- const toast_Toast = function({ ref, intent = 'success', position = 'bottom-right', title, message, icon = true, iconType = 'success', close = true, open, onOpenChange, className }) {
19
+ const useToastManager = Toast.useToastManager;
20
+ const createToastManager = Toast.createToastManager;
21
+ function ToastProvider({ children, timeout = 5000, limit = 3, toastManager }) {
22
+ return /*#__PURE__*/ jsx(Toast.Provider, {
23
+ timeout: timeout,
24
+ limit: limit,
25
+ toastManager: toastManager,
26
+ children: children
27
+ });
28
+ }
29
+ function ToastViewport({ position = 'bottom-right', className }) {
30
+ const { toasts } = Toast.useToastManager();
31
+ return /*#__PURE__*/ jsx(Toast.Portal, {
32
+ children: /*#__PURE__*/ jsx(Toast.Viewport, {
33
+ className: classnames('infonomic-toast-viewport', toast_module.viewport, toast_module[position], className),
34
+ children: toasts.map((toast)=>/*#__PURE__*/ jsx(ToastItem, {
35
+ toast: toast
36
+ }, toast.id))
37
+ })
38
+ });
39
+ }
40
+ function ToastItem({ toast }) {
41
+ const { intent = 'success', iconType = 'success', icon = true, close = true } = toast.data ?? {};
23
42
  const eventDateRef = react.useRef(new Date());
24
- react.useRef(0);
25
- const focusTrapRef = useFocusTrap();
26
- const mergedRef = useMergedRef(ref, focusTrapRef);
27
43
  const Icon = toastIcons[iconType];
28
- const handleOnClose = ()=>{
29
- if (null != onOpenChange) onOpenChange(false);
30
- };
31
- return /*#__PURE__*/ jsxs(external_radix_ui_Toast.Root, {
32
- ref: mergedRef,
33
- className: classnames('infonomic-toast', toast_module.root, toast_module[position]),
34
- open: open,
35
- onOpenChange: onOpenChange,
36
- children: [
37
- /*#__PURE__*/ jsxs("div", {
38
- className: classnames('infonomic-toast-header', toast_module.header),
39
- children: [
40
- /*#__PURE__*/ jsx("time", {
41
- dateTime: eventDateRef.current.toISOString(),
42
- className: "text-sm",
43
- children: new Intl.DateTimeFormat('default', {
44
- hour12: true,
45
- hour: 'numeric',
46
- minute: 'numeric'
47
- }).format(eventDateRef.current)
48
- }),
49
- true === close && /*#__PURE__*/ jsx(external_radix_ui_Toast.Close, {
50
- "aria-label": "Close",
51
- asChild: true,
52
- children: /*#__PURE__*/ jsx(Button, {
53
- intent: intent,
54
- tabIndex: 0,
55
- variant: "filled",
56
- "aria-label": "Close",
57
- className: classnames('infonomic-toast-close', toast_module.close),
58
- type: "button",
59
- onClick: handleOnClose,
44
+ const swipeDirection = react.useMemo(()=>[
45
+ 'down',
46
+ 'right'
47
+ ], []);
48
+ return /*#__PURE__*/ jsx(Toast.Root, {
49
+ toast: toast,
50
+ swipeDirection: swipeDirection,
51
+ className: classnames('infonomic-toast', toast_module.root),
52
+ children: /*#__PURE__*/ jsxs(Toast.Content, {
53
+ className: classnames('infonomic-toast-content', toast_module.content),
54
+ children: [
55
+ /*#__PURE__*/ jsxs("div", {
56
+ className: classnames('infonomic-toast-header', toast_module.header),
57
+ children: [
58
+ /*#__PURE__*/ jsx("time", {
59
+ dateTime: eventDateRef.current.toISOString(),
60
+ className: "text-sm",
61
+ children: new Intl.DateTimeFormat('default', {
62
+ hour12: true,
63
+ hour: 'numeric',
64
+ minute: 'numeric'
65
+ }).format(eventDateRef.current)
66
+ }),
67
+ close && /*#__PURE__*/ jsx(Toast.Close, {
68
+ render: /*#__PURE__*/ jsx(Button, {
69
+ intent: intent,
70
+ tabIndex: 0,
71
+ variant: "filled",
72
+ "aria-label": "Close",
73
+ className: classnames('infonomic-toast-close', toast_module.close),
74
+ type: "button"
75
+ }),
60
76
  children: /*#__PURE__*/ jsx(CloseIcon, {
61
77
  height: "12px",
62
78
  width: "12px"
63
79
  })
64
80
  })
65
- })
66
- ]
67
- }),
68
- /*#__PURE__*/ jsxs(external_radix_ui_Toast.Title, {
69
- className: classnames('infonomic-toast-title', toast_module.title),
70
- children: [
71
- null != icon && /*#__PURE__*/ jsx(Icon, {}),
72
- title
73
- ]
74
- }),
75
- /*#__PURE__*/ jsx(external_radix_ui_Toast.Description, {
76
- className: classnames("infonomic-toast-description", toast_module.description),
77
- children: message
78
- })
79
- ]
81
+ ]
82
+ }),
83
+ /*#__PURE__*/ jsxs(Toast.Title, {
84
+ className: classnames('infonomic-toast-title', toast_module.title),
85
+ children: [
86
+ icon && Icon && /*#__PURE__*/ jsx(Icon, {}),
87
+ toast.title
88
+ ]
89
+ }),
90
+ /*#__PURE__*/ jsx(Toast.Description, {
91
+ className: classnames("infonomic-toast-description", toast_module.description),
92
+ children: toast.description
93
+ })
94
+ ]
95
+ })
80
96
  });
81
- };
82
- export { ToastProvider, ToastViewport, toast_Toast as Toast };
97
+ }
98
+ export { ToastProvider, ToastViewport, createToastManager, useToastManager };
@@ -1,17 +1,104 @@
1
1
  @layer infonomic-base,
2
- infonomic-functional,
3
- infonomic-utilities,
4
- infonomic-theme,
5
- infonomic-typography,
6
- infonomic-components;
2
+ infonomic-functional,
3
+ infonomic-utilities,
4
+ infonomic-theme,
5
+ infonomic-typography,
6
+ infonomic-components;
7
7
 
8
8
  @layer infonomic-components {
9
- /* Positions are relative to the toast viewport which is set
10
- globally in components/toast.css */
9
+ /* ============================================
10
+ Viewport fixed-position container for toasts.
11
+ Position classes are applied here.
12
+ ============================================ */
13
+
14
+ .viewport,
15
+ :global(.infonomic-toast-viewport) {
16
+ --viewport-padding: 16px;
17
+ position: fixed;
18
+ display: flex;
19
+ flex-direction: column;
20
+ gap: 8px;
21
+ z-index: var(--z-index-toast);
22
+ outline: none;
23
+ }
24
+
25
+ /* Mobile: full-width at all positions */
26
+
27
+ .top-left,
28
+ :global(.infonomic-toast-top-left) {
29
+ top: 88px;
30
+ right: var(--viewport-padding);
31
+ left: var(--viewport-padding);
32
+ }
33
+
34
+ .top-right,
35
+ :global(.infonomic-toast-top-right) {
36
+ top: 88px;
37
+ right: var(--viewport-padding);
38
+ left: var(--viewport-padding);
39
+ }
40
+
41
+ .bottom-left,
42
+ :global(.infonomic-toast-bottom-left) {
43
+ bottom: var(--viewport-padding);
44
+ right: var(--viewport-padding);
45
+ left: var(--viewport-padding);
46
+ }
47
+
48
+ .bottom-right,
49
+ :global(.infonomic-toast-bottom-right) {
50
+ bottom: var(--viewport-padding);
51
+ right: var(--viewport-padding);
52
+ left: var(--viewport-padding);
53
+ }
54
+
55
+ @media (min-width: 48rem) {
56
+
57
+ .bottom-right,
58
+ :global(.infonomic-toast-bottom-right) {
59
+ bottom: var(--viewport-padding);
60
+ right: var(--viewport-padding);
61
+ left: auto;
62
+ width: 100%;
63
+ max-width: 390px;
64
+ }
65
+
66
+ .bottom-left,
67
+ :global(.infonomic-toast-bottom-left) {
68
+ bottom: var(--viewport-padding);
69
+ left: var(--viewport-padding);
70
+ right: auto;
71
+ width: 100%;
72
+ max-width: 390px;
73
+ }
74
+
75
+ .top-left,
76
+ :global(.infonomic-toast-top-left) {
77
+ top: 88px;
78
+ left: var(--viewport-padding);
79
+ right: auto;
80
+ bottom: auto;
81
+ width: 100%;
82
+ max-width: 390px;
83
+ }
84
+
85
+ .top-right,
86
+ :global(.infonomic-toast-top-right) {
87
+ top: 88px;
88
+ right: var(--viewport-padding);
89
+ bottom: auto;
90
+ left: auto;
91
+ width: 100%;
92
+ max-width: 390px;
93
+ }
94
+ }
95
+
96
+ /* ============================================
97
+ Root — individual toast wrapper
98
+ ============================================ */
11
99
 
12
100
  .root,
13
101
  :global(.infonomic-toast-root) {
14
- position: fixed;
15
102
  display: flex;
16
103
  flex-direction: column;
17
104
  gap: var(--gap-1);
@@ -23,51 +110,83 @@
23
110
  border-style: var(--border-style-solid);
24
111
  border-radius: var(--border-radius-md);
25
112
  box-shadow: var(--shadow-sm);
113
+ transform: translateX(var(--toast-swipe-movement-x, 0)) translateY(var(--toast-swipe-movement-y, 0));
114
+ transition:
115
+ transform 200ms ease-out,
116
+ opacity 150ms ease-in;
26
117
  }
27
118
 
28
119
  :global(.dark),
29
120
  :global([data-theme="dark"]) {
121
+
30
122
  .root,
31
123
  :global(.infonomic-toast-root) {
32
124
  background: var(--canvas-800);
33
125
  }
34
126
  }
35
127
 
36
- .root[data-state="open"],
37
- :global(.infonomic-toast-root[data-state="open"]) {
38
- animation: slideInFromBottom 150ms cubic-bezier(0.16, 1, 0.3, 1);
128
+ /* Entry animation */
129
+ .root[data-starting-style],
130
+ :global(.infonomic-toast-root[data-starting-style]) {
131
+ opacity: 0;
132
+ transform: translateY(calc(100% + var(--viewport-padding)));
133
+ }
134
+
135
+ @media (min-width: 48rem) {
136
+
137
+ .viewport.top-right .root[data-starting-style],
138
+ .viewport.bottom-right .root[data-starting-style],
139
+ :global(.infonomic-toast-viewport.top-right .infonomic-toast-root[data-starting-style]),
140
+ :global(.infonomic-toast-viewport.bottom-right .infonomic-toast-root[data-starting-style]) {
141
+ opacity: 0;
142
+ transform: translateX(calc(100% + var(--viewport-padding)));
143
+ }
144
+
145
+ .viewport.top-left .root[data-starting-style],
146
+ .viewport.bottom-left .root[data-starting-style],
147
+ :global(.infonomic-toast-viewport.top-left .infonomic-toast-root[data-starting-style]),
148
+ :global(.infonomic-toast-viewport.bottom-left .infonomic-toast-root[data-starting-style]) {
149
+ opacity: 0;
150
+ transform: translateX(calc(-100% - var(--viewport-padding)));
151
+ }
39
152
  }
40
153
 
41
- .root[data-state="closed"],
42
- :global(.infonomic-toast-root[data-state="closed"]) {
43
- animation: hide 100ms ease-in;
154
+ /* Exit animation */
155
+ .root[data-ending-style],
156
+ :global(.infonomic-toast-root[data-ending-style]) {
157
+ opacity: 0;
44
158
  }
45
159
 
46
- .root[data-swipe="move"],
47
- :global(.infonomic-toast-root[data-swipe="move"]) {
48
- transform: translateX(var(--radix-toast-swipe-move-x));
160
+ .root[data-ending-style][data-swipe-direction="right"],
161
+ :global(.infonomic-toast-root[data-ending-style][data-swipe-direction="right"]) {
162
+ transform: translateX(calc(var(--toast-swipe-movement-x, 0) + 100% + var(--viewport-padding)));
49
163
  }
50
164
 
51
- .root[data-swipe="cancel"],
52
- :global(.infonomic-toast-root[data-swipe="cancel"]) {
53
- transform: translateX(0);
54
- transition: transform 200ms ease-out;
165
+ .root[data-ending-style][data-swipe-direction="left"],
166
+ :global(.infonomic-toast-root[data-ending-style][data-swipe-direction="left"]) {
167
+ transform: translateX(calc(var(--toast-swipe-movement-x, 0) - 100% - var(--viewport-padding)));
55
168
  }
56
169
 
57
- .root.top-right[data-swipe="end"],
58
- .root.bottom-right[data-swipe="end"],
59
- :global(.infonomic-toast-root.top-right[data-swipe="end"]),
60
- :global(.infonomic-toast-root.bottom-right[data-swipe="end"]) {
61
- animation: swipeOutToRight 100ms ease-out;
170
+ .root[data-ending-style][data-swipe-direction="down"],
171
+ :global(.infonomic-toast-root[data-ending-style][data-swipe-direction="down"]) {
172
+ transform: translateY(calc(var(--toast-swipe-movement-y, 0) + 150%));
62
173
  }
63
174
 
64
- .root.top-left[data-swipe="end"],
65
- .root.bottom-left[data-swipe="end"],
66
- :global(.infonomic-toast-root.top-left[data-swipe="end"]),
67
- :global(.infonomic-toast-root.bottom-left[data-swipe="end"]) {
68
- animation: swipeOutToLeft 100ms ease-out;
175
+ /* ============================================
176
+ Content — overflow container for stacking
177
+ ============================================ */
178
+
179
+ .content,
180
+ :global(.infonomic-toast-content) {
181
+ display: flex;
182
+ flex-direction: column;
183
+ gap: var(--gap-1);
69
184
  }
70
185
 
186
+ /* ============================================
187
+ Header / Close / Title / Description / Action
188
+ ============================================ */
189
+
71
190
  .header,
72
191
  :global(.infonomic-toast-header) {
73
192
  display: flex;
@@ -122,149 +241,4 @@
122
241
  justify-content: end;
123
242
  padding: 0 12px 0 12px;
124
243
  }
125
-
126
- /* Positions are relative to the toast viewport which is set
127
- globally in components/toast.css */
128
-
129
- .top-left,
130
- :global(.infonomic-toast-top-left) {
131
- top: 88px;
132
- right: 16px;
133
- left: 16px;
134
- }
135
-
136
- .top-right,
137
- :global(.infonomic-toast-top-right) {
138
- top: 88px;
139
- right: 16px;
140
- left: 16px;
141
- }
142
-
143
- .bottom-left,
144
- :global(.infonomic-toast-bottom-left) {
145
- bottom: 16px;
146
- right: 16px;
147
- left: 16px;
148
- }
149
-
150
- .bottom-right,
151
- :global(.infonomic-toast-bottom-right) {
152
- bottom: 16px;
153
- right: 16px;
154
- left: 16px;
155
- }
156
-
157
- @media (min-width: 48rem) {
158
- .root.top-right[data-state="open"],
159
- .root.bottom-right[data-state="open"],
160
- :global(.infonomic-toast-root.top-right[data-state="open"]),
161
- :global(.infonomic-toast-root.bottom-right[data-state="open"]) {
162
- animation: slideInFromRight 150ms cubic-bezier(0.16, 1, 0.3, 1);
163
- }
164
-
165
- .root.top-left[data-state="open"],
166
- .root.bottom-left[data-state="open"],
167
- :global(.infonomic-toast-root.top-left[data-state="open"]),
168
- :global(.infonomic-toast-root.bottom-left[data-state="open"]) {
169
- animation: slideInFromLeft 150ms cubic-bezier(0.16, 1, 0.3, 1);
170
- }
171
-
172
- .bottom-right,
173
- :global(.infonomic-toast-bottom-right) {
174
- bottom: 16px;
175
- right: 16px;
176
- left: auto;
177
- width: 100%;
178
- max-width: 390px;
179
- }
180
-
181
- .bottom-left,
182
- :global(.infonomic-toast-bottom-left) {
183
- bottom: 16px;
184
- left: 16px;
185
- right: auto;
186
- width: 100%;
187
- max-width: 390px;
188
- }
189
-
190
- .top-left,
191
- :global(.infonomic-toast-top-left) {
192
- top: 88px;
193
- left: 16px;
194
- right: auto;
195
- bottom: auto;
196
- width: 100%;
197
- max-width: 390px;
198
- }
199
-
200
- .top-right,
201
- :global(.infonomic-toast-top-right) {
202
- top: 88px;
203
- right: 16px;
204
- bottom: auto;
205
- left: auto;
206
- width: 100%;
207
- max-width: 390px;
208
- }
209
- }
210
-
211
- @keyframes slideInFromRight {
212
- from {
213
- transform: translateX(calc(100% + var(--viewport-padding)));
214
- }
215
-
216
- to {
217
- transform: translateX(0);
218
- }
219
- }
220
-
221
- @keyframes slideInFromLeft {
222
- from {
223
- transform: translateX(calc(-100% - var(--viewport-padding)));
224
- }
225
-
226
- to {
227
- transform: translateX(0);
228
- }
229
- }
230
-
231
- @keyframes slideInFromBottom {
232
- from {
233
- transform: translateY(calc(100% + var(--viewport-padding)));
234
- }
235
-
236
- to {
237
- transform: translateY(0);
238
- }
239
- }
240
-
241
- @keyframes swipeOutToRight {
242
- from {
243
- transform: translateX(var(--radix-toast-swipe-end-x));
244
- }
245
-
246
- to {
247
- transform: translateX(calc(100% + var(--viewport-padding)));
248
- }
249
- }
250
-
251
- @keyframes swipeOutToLeft {
252
- from {
253
- transform: translateX(var(--radix-toast-swipe-end-x));
254
- }
255
-
256
- to {
257
- transform: translateX(calc(-100% - var(--viewport-padding)));
258
- }
259
- }
260
-
261
- @keyframes hide {
262
- from {
263
- opacity: 1;
264
- }
265
-
266
- to {
267
- opacity: 0;
268
- }
269
- }
270
- }
244
+ }
@@ -1,24 +1,20 @@
1
1
  import "./toast_module.css";
2
2
  const toast_module = {
3
- root: "root-dWN7jD",
4
- slideInFromBottom: "slideInFromBottom-O94u9U",
5
- hide: "hide-vlOoW0",
6
- "top-right": "top-right-OsKbVb",
7
- topRight: "top-right-OsKbVb",
8
- "bottom-right": "bottom-right-Nzuhur",
9
- bottomRight: "bottom-right-Nzuhur",
10
- swipeOutToRight: "swipeOutToRight-FWaeVx",
3
+ viewport: "viewport-x4CvHl",
11
4
  "top-left": "top-left-dy_IMc",
12
5
  topLeft: "top-left-dy_IMc",
6
+ "top-right": "top-right-OsKbVb",
7
+ topRight: "top-right-OsKbVb",
13
8
  "bottom-left": "bottom-left-_RdEZn",
14
9
  bottomLeft: "bottom-left-_RdEZn",
15
- swipeOutToLeft: "swipeOutToLeft-OI9y6O",
10
+ "bottom-right": "bottom-right-Nzuhur",
11
+ bottomRight: "bottom-right-Nzuhur",
12
+ root: "root-dWN7jD",
13
+ content: "content-o83ZAp",
16
14
  header: "header-ItoxDs",
17
15
  close: "close-HwTMjn",
18
16
  title: "title-qfQE8M",
19
17
  description: "description-nQWtgX",
20
- action: "action-PunqB2",
21
- slideInFromRight: "slideInFromRight-G4Hu_M",
22
- slideInFromLeft: "slideInFromLeft-m703fy"
18
+ action: "action-PunqB2"
23
19
  };
24
20
  export default toast_module;