@dynamic-framework/ui-react 2.0.0-dev.22 → 2.0.0-dev.23

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.
package/dist/index.js CHANGED
@@ -20,6 +20,7 @@ var reactHotToast = require('react-hot-toast');
20
20
  var reactInternationalPhone = require('react-international-phone');
21
21
  var googleLibphonenumber = require('google-libphonenumber');
22
22
  var html2canvas = require('html2canvas');
23
+ var reactErrorBoundary = require('react-error-boundary');
23
24
  var i18n = require('i18next');
24
25
  var reactI18next = require('react-i18next');
25
26
 
@@ -2495,8 +2496,12 @@ ForwardedDInputPhone.displayName = 'DInputPhone';
2495
2496
 
2496
2497
  const DEFAULT_IMAGE = 'https://cdn.modyo.cloud/uploads/06b434f7-b943-4f54-9543-84a904e189aa/original/Visa_Logo_1_.png';
2497
2498
  const CHIP_IMAGE = 'https://cdn.modyo.cloud/uploads/4660ad00-e5d8-477e-8919-52b53d0a26fb/original/chip-debit-svgrepo-com_1_.png';
2499
+ const BRAND_LOGOS = {
2500
+ visa: DEFAULT_IMAGE,
2501
+ mastercard: 'https://cdn.modyo.cloud/uploads/f686b9aa-65ab-4369-9db3-89ceece84f29/original/mastercard.png',
2502
+ };
2498
2503
  function DCreditCard({ brand = 'visa', name, number, holderText = 'Card Holder', logoImage, isChipVisible = true, className, isVertical = false, }) {
2499
- return (jsxRuntime.jsxs("div", { className: classNames('d-credit-card overflow-hidden text-white', 'position-relative rounded-3', 'd-flex', isVertical && 'is-vertical', className), children: [jsxRuntime.jsxs("div", { className: "d-credit-card-header", children: [jsxRuntime.jsx("img", { src: logoImage || DEFAULT_IMAGE, alt: brand, className: "d-credit-card-logo", width: 100 }), isChipVisible && (jsxRuntime.jsx("div", { className: "d-credit-card-chip p-2 rounded-2", children: jsxRuntime.jsx("img", { src: CHIP_IMAGE, alt: "chip", width: 30, className: "d-credit-card-chip-image" }) }))] }), jsxRuntime.jsxs("div", { className: "d-credit-card-details mt-auto d-none d-sm-block", children: [jsxRuntime.jsx("div", { className: "d-credit-card-number d-none d-sm-block mb-4", children: number }), jsxRuntime.jsx("small", { className: "d-block opacity-50", children: holderText }), jsxRuntime.jsx("span", { className: "name", children: name })] })] }));
2504
+ return (jsxRuntime.jsxs("div", { className: classNames('d-credit-card overflow-hidden text-white', 'position-relative rounded-3', 'd-flex', isVertical && 'is-vertical', className), children: [jsxRuntime.jsxs("div", { className: "d-credit-card-header", children: [jsxRuntime.jsx("img", { src: logoImage || BRAND_LOGOS[brand] || DEFAULT_IMAGE, alt: brand, className: "d-credit-card-logo", width: 100 }), isChipVisible && (jsxRuntime.jsx("div", { className: "d-credit-card-chip p-2 rounded-2", children: jsxRuntime.jsx("img", { src: CHIP_IMAGE, alt: "chip", width: 30, className: "d-credit-card-chip-image" }) }))] }), jsxRuntime.jsxs("div", { className: "d-credit-card-details mt-auto d-none d-sm-block", children: [jsxRuntime.jsx("div", { className: "d-credit-card-number d-none d-sm-block mb-4", children: number }), jsxRuntime.jsx("small", { className: "d-block opacity-50", children: holderText }), jsxRuntime.jsx("span", { className: "name", children: name })] })] }));
2500
2505
  }
2501
2506
 
2502
2507
  const getItemClass = (action) => {
@@ -2753,6 +2758,72 @@ function DOtp({ className, action, isLoading, otpSize = 6, texts = TEXT_PROPS, s
2753
2758
  }, loading: isLoading }), jsxRuntime.jsx("p", { className: "small ms-lg-auto mb-0", children: texts.contact })] })] })] }));
2754
2759
  }
2755
2760
 
2761
+ function DefaultErrorBoundary({ resetErrorBoundary }) {
2762
+ return (jsxRuntime.jsx(DAlert, { color: "danger", showClose: false, children: jsxRuntime.jsxs("div", { className: "d-flex align-items-center gap-2", children: [jsxRuntime.jsx("span", { children: "An unexpected error occurred." }), jsxRuntime.jsx(DButton, { color: "secondary", variant: "outline", size: "sm", onClick: resetErrorBoundary, children: "Retry" })] }) }));
2763
+ }
2764
+
2765
+ function DErrorBoundary({ name, fallback, resetKeys, onReset, onError, children, }) {
2766
+ const handleError = React.useCallback((error, info) => {
2767
+ // eslint-disable-next-line no-console
2768
+ console.error(`[DErrorBoundary${name ? `:${name}` : ''}]`, reactErrorBoundary.getErrorMessage(error), info);
2769
+ onError === null || onError === void 0 ? void 0 : onError(error, info);
2770
+ }, [name, onError]);
2771
+ const FallbackRender = React.useCallback((props) => {
2772
+ if (fallback)
2773
+ return fallback(props);
2774
+ return (jsxRuntime.jsx(DefaultErrorBoundary, { resetErrorBoundary: props.resetErrorBoundary }));
2775
+ }, [fallback]);
2776
+ return (jsxRuntime.jsx(reactErrorBoundary.ErrorBoundary, { resetKeys: resetKeys, onReset: onReset, onError: handleError, fallbackRender: FallbackRender, children: children }));
2777
+ }
2778
+
2779
+ function ErrorState({ message, onRetry, retryMessage = 'Retry', color = 'danger', }) {
2780
+ return (jsxRuntime.jsxs(DAlert, { color: color, className: "d-flex align-items-center gap-3", children: [jsxRuntime.jsx("div", { className: "flex-grow-1", children: jsxRuntime.jsx("p", { className: "mb-0", children: message !== null && message !== void 0 ? message : 'An unexpected error occurred.' }) }), onRetry && (jsxRuntime.jsx(DButton, { onClick: onRetry, text: retryMessage, variant: "outline", iconStart: "RefreshCw" }))] }));
2781
+ }
2782
+
2783
+ function EmptyState({ message, icon = 'FileText', actionText, onAction, }) {
2784
+ return (jsxRuntime.jsxs("div", { className: "d-flex flex-column align-items-center justify-content-center p-5 text-center", children: [jsxRuntime.jsx(DIcon, { icon: icon, size: "3rem", className: "text-secondary mb-3" }), jsxRuntime.jsx("p", { className: "text-secondary mb-3", children: message !== null && message !== void 0 ? message : 'No data available.' }), actionText && onAction && (jsxRuntime.jsx(DButton, { onClick: onAction, text: actionText, variant: "outline" }))] }));
2785
+ }
2786
+
2787
+ function LoadingState({ ariaLabel = 'Loading...', className }) {
2788
+ return (jsxRuntime.jsx("div", { className: `d-flex align-items-center justify-content-center p-4 ${className || ''}`.trim(), "aria-busy": "true", "aria-live": "polite", children: jsxRuntime.jsx("span", { className: "spinner-border", role: "status", "aria-label": ariaLabel }) }));
2789
+ }
2790
+
2791
+ function render(renderable) {
2792
+ if (renderable === undefined)
2793
+ return null;
2794
+ return typeof renderable === 'function' ? renderable() : renderable;
2795
+ }
2796
+ function DDataStateWrapper({ isLoading, isError, data, onRetry, renderLoading, renderEmpty, renderError, children, }) {
2797
+ // 1. Loading
2798
+ if (isLoading) {
2799
+ if (renderLoading)
2800
+ return render(renderLoading);
2801
+ return jsxRuntime.jsx(LoadingState, {});
2802
+ }
2803
+ // 2. Error
2804
+ if (isError) {
2805
+ if (renderError)
2806
+ return render(renderError);
2807
+ return (jsxRuntime.jsx(ErrorState, { onRetry: onRetry }));
2808
+ }
2809
+ // 3. Empty
2810
+ if (!(data === null || data === void 0 ? void 0 : data.length)) {
2811
+ if (renderEmpty)
2812
+ return render(renderEmpty);
2813
+ return (jsxRuntime.jsx(EmptyState, {}));
2814
+ }
2815
+ // 4. Success
2816
+ return jsxRuntime.jsx(jsxRuntime.Fragment, { children: children(data) });
2817
+ }
2818
+
2819
+ Object.defineProperty(exports, "getErrorMessage", {
2820
+ enumerable: true,
2821
+ get: function () { return reactErrorBoundary.getErrorMessage; }
2822
+ });
2823
+ Object.defineProperty(exports, "useErrorBoundary", {
2824
+ enumerable: true,
2825
+ get: function () { return reactErrorBoundary.useErrorBoundary; }
2826
+ });
2756
2827
  exports.DAlert = DAlert;
2757
2828
  exports.DAvatar = DAvatar;
2758
2829
  exports.DBadge = DBadge;
@@ -2772,8 +2843,10 @@ exports.DContext = DContext;
2772
2843
  exports.DContextProvider = DContextProvider;
2773
2844
  exports.DCreditCard = DCreditCard;
2774
2845
  exports.DCurrencyText = DCurrencyText;
2846
+ exports.DDataStateWrapper = DDataStateWrapper;
2775
2847
  exports.DDatePicker = DDatePicker;
2776
2848
  exports.DDropdown = DDropdown;
2849
+ exports.DErrorBoundary = DErrorBoundary;
2777
2850
  exports.DIcon = DIcon;
2778
2851
  exports.DIconBase = DIconBase;
2779
2852
  exports.DInput = ForwardedDInput;