@dynamic-framework/ui-react 2.0.0-dev.1 → 2.0.0-dev.3

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 (126) hide show
  1. package/dist/css/dynamic-ui-non-root.css +7153 -3699
  2. package/dist/css/dynamic-ui-non-root.min.css +2 -2
  3. package/dist/css/dynamic-ui-root.css +799 -127
  4. package/dist/css/dynamic-ui-root.min.css +2 -2
  5. package/dist/css/dynamic-ui.css +7950 -3824
  6. package/dist/css/dynamic-ui.min.css +2 -2
  7. package/dist/index.esm.js +255 -301
  8. package/dist/index.esm.js.map +1 -1
  9. package/dist/index.js +280 -310
  10. package/dist/index.js.map +1 -1
  11. package/dist/types/components/DAlert/DAlert.d.ts +3 -3
  12. package/dist/types/components/DAvatar/DAvatar.d.ts +1 -3
  13. package/dist/types/components/DBadge/DBadge.d.ts +4 -3
  14. package/dist/types/components/DBarChart/DBarChart.d.ts +9 -0
  15. package/dist/types/components/DBox/DBox.d.ts +5 -0
  16. package/dist/types/components/DBox/index.d.ts +2 -0
  17. package/dist/types/components/DButton/DButton.d.ts +6 -5
  18. package/dist/types/components/DButtonIcon/DButtonIcon.d.ts +3 -3
  19. package/dist/types/components/DChip/DChip.d.ts +3 -3
  20. package/dist/types/components/DCollapse/DCollapse.d.ts +1 -1
  21. package/dist/types/components/DCreditCard/DCreditCard.d.ts +12 -0
  22. package/dist/types/components/DCreditCard/index.d.ts +2 -0
  23. package/dist/types/components/DDatePicker/DDatePicker.d.ts +3 -3
  24. package/dist/types/components/DDatePicker/components/DDatePickerHeaderSelector.d.ts +2 -4
  25. package/dist/types/components/DDropdown/DDropdown.d.ts +20 -0
  26. package/dist/types/components/DDropdown/index.d.ts +2 -0
  27. package/dist/types/components/DIconBase/DIconBase.d.ts +4 -8
  28. package/dist/types/components/DInput/DInput.d.ts +2 -2
  29. package/dist/types/components/DInputCounter/DInputCounter.d.ts +2 -2
  30. package/dist/types/components/DInputCurrency/DInputCurrency.d.ts +3 -3
  31. package/dist/types/components/DInputMask/DInputMask.d.ts +1 -1
  32. package/dist/types/components/DInputPhone/DInputPhone.d.ts +2 -2
  33. package/dist/types/components/DInputPin/DInputPin.d.ts +3 -3
  34. package/dist/types/components/DInputRange/DInputRange.d.ts +2 -2
  35. package/dist/types/components/DInputSelect/DInputSelect.d.ts +3 -3
  36. package/dist/types/components/DLayout/DLayout.d.ts +21 -0
  37. package/dist/types/components/DLayout/components/DLayoutPane.d.ts +13 -0
  38. package/dist/types/components/DLayout/index.d.ts +3 -0
  39. package/dist/types/components/DListGroup/components/DListGroupItem.d.ts +4 -4
  40. package/dist/types/components/DMinimalLineChart/DMinimalLineChart.d.ts +9 -0
  41. package/dist/types/components/DMultiLineChart/DMultiLineChart.d.ts +9 -0
  42. package/dist/types/components/DOtp/DOtp.d.ts +16 -0
  43. package/dist/types/components/DOtp/DOtpspec.d.ts +0 -0
  44. package/dist/types/components/DOtp/components/OtpCountdown.d.ts +7 -0
  45. package/dist/types/components/DOtp/hooks/useCountdown.d.ts +4 -0
  46. package/dist/types/components/DOtp/index.d.ts +2 -0
  47. package/dist/types/components/DPaginator/DPaginator.d.ts +2 -27
  48. package/dist/types/components/DPieChart/DPieChart.d.ts +9 -0
  49. package/dist/types/components/DProgress/DProgress.d.ts +2 -1
  50. package/dist/types/components/DRadialBarChart/DRadialBarChart.d.ts +6 -0
  51. package/dist/types/components/DSelect/DSelect.d.ts +3 -3
  52. package/dist/types/components/DTabs/DTabs.d.ts +2 -2
  53. package/dist/types/components/DTimeline/DTimeline.d.ts +15 -0
  54. package/dist/types/components/DTimeline/index.d.ts +2 -0
  55. package/dist/types/components/DToastContainer/useDToast.d.ts +2 -2
  56. package/dist/types/components/DTooltip/DTooltip.d.ts +1 -2
  57. package/dist/types/components/index.d.ts +5 -8
  58. package/dist/types/components/interface.d.ts +3 -8
  59. package/package.json +8 -3
  60. package/src/style/_shame.scss +42 -1
  61. package/src/style/abstracts/_mixins.scss +1 -7
  62. package/src/style/abstracts/_utilities.scss +51 -1
  63. package/src/style/abstracts/variables/_+import.scss +3 -2
  64. package/src/style/abstracts/variables/_alerts.scss +2 -0
  65. package/src/style/abstracts/variables/_body.scss +10 -3
  66. package/src/style/abstracts/variables/_border.scss +5 -5
  67. package/src/style/abstracts/variables/_buttons.scss +17 -11
  68. package/src/style/abstracts/variables/_cards.scss +6 -4
  69. package/src/style/abstracts/variables/_chips.scss +2 -2
  70. package/src/style/abstracts/variables/_colors.scss +140 -69
  71. package/src/style/abstracts/variables/_datepicker.scss +10 -9
  72. package/src/style/abstracts/variables/_dropdowns.scss +6 -4
  73. package/src/style/abstracts/variables/_forms.scss +4 -4
  74. package/src/style/abstracts/variables/_list-group.scss +2 -2
  75. package/src/style/abstracts/variables/_modals.scss +4 -3
  76. package/src/style/abstracts/variables/_offcanvas.scss +1 -0
  77. package/src/style/abstracts/variables/_pagination.scss +4 -4
  78. package/src/style/abstracts/variables/_shadow.scss +1 -0
  79. package/src/style/abstracts/variables/_tables.scss +8 -3
  80. package/src/style/abstracts/variables/_tooltip.scss +1 -1
  81. package/src/style/abstracts/variables/_typography.scss +7 -7
  82. package/src/style/base/_+import.scss +1 -0
  83. package/src/style/base/_alert.scss +1 -27
  84. package/src/style/base/_badge.scss +50 -12
  85. package/src/style/base/_buttons.scss +148 -22
  86. package/src/style/base/_dropdown.scss +18 -0
  87. package/src/style/base/_input-group.scss +5 -0
  88. package/src/style/base/_list-group.scss +6 -0
  89. package/src/style/base/_pagination.scss +2 -0
  90. package/src/style/base/_tables.scss +4 -0
  91. package/src/style/base/_tooltip.scss +1 -10
  92. package/src/style/components/_+import.scss +4 -4
  93. package/src/style/components/_d-avatar.scss +2 -20
  94. package/src/style/components/_d-box.scss +13 -0
  95. package/src/style/components/_d-carousel.scss +19 -1
  96. package/src/style/components/_d-credit-card.scss +67 -0
  97. package/src/style/components/_d-datepicker.scss +64 -26
  98. package/src/style/components/_d-icon.scss +10 -3
  99. package/src/style/components/_d-modal.scss +3 -0
  100. package/src/style/components/_d-stepper-desktop.scss +61 -65
  101. package/src/style/components/_d-stepper-mobile.scss +2 -2
  102. package/src/style/components/_d-tabs.scss +37 -0
  103. package/src/style/components/_d-timeline.scss +108 -0
  104. package/src/style/helpers/_color-bg.scss +13 -3
  105. package/src/style/root/_root.scss +35 -18
  106. package/dist/types/components/DInputCurrencyBase/DInputCurrencyBase.d.ts +0 -26
  107. package/dist/types/components/DInputCurrencyBase/index.d.ts +0 -2
  108. package/dist/types/components/DInputSearch/DInputSearch.d.ts +0 -17
  109. package/dist/types/components/DInputSearch/index.d.ts +0 -2
  110. package/dist/types/components/DList/DList.d.ts +0 -17
  111. package/dist/types/components/DList/components/DListItem.d.ts +0 -13
  112. package/dist/types/components/DList/index.d.ts +0 -3
  113. package/dist/types/components/DQuickActionButton/DQuickActionButton.d.ts +0 -20
  114. package/dist/types/components/DQuickActionButton/index.d.ts +0 -2
  115. package/dist/types/components/DQuickActionCheck/DQuickActionCheck.d.ts +0 -17
  116. package/dist/types/components/DQuickActionCheck/index.d.ts +0 -2
  117. package/dist/types/components/DQuickActionSelect/DQuickActionSelect.d.ts +0 -13
  118. package/dist/types/components/DQuickActionSelect/index.d.ts +0 -2
  119. package/dist/types/components/DQuickActionSwitch/DQuickActionSwitch.d.ts +0 -15
  120. package/dist/types/components/DQuickActionSwitch/index.d.ts +0 -2
  121. package/dist/types/components/DSkeleton/DSkeleton.d.ts +0 -11
  122. package/dist/types/components/DSkeleton/index.d.ts +0 -2
  123. package/src/style/components/_d-quick-action-button.scss +0 -121
  124. package/src/style/components/_d-quick-action-check.scss +0 -74
  125. package/src/style/components/_d-quick-action-select.scss +0 -58
  126. package/src/style/components/_d-quick-action-switch.scss +0 -64
package/dist/index.esm.js CHANGED
@@ -1,7 +1,8 @@
1
1
  import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
2
- import React, { useMemo, useEffect, useState, useCallback, useContext, createContext, Fragment, useLayoutEffect, forwardRef, useId, useRef, useSyncExternalStore } from 'react';
3
2
  import classNames from 'classnames';
3
+ import React, { useMemo, useEffect, useState, useCallback, useContext, createContext, Fragment, useLayoutEffect, forwardRef, useId, useRef, useSyncExternalStore } from 'react';
4
4
  import { __rest } from 'tslib';
5
+ import * as LucideIcons from 'lucide-react';
5
6
  import { createPortal } from 'react-dom';
6
7
  import { fromEvent } from 'file-selector';
7
8
  import { SplideSlide, Splide } from '@splidejs/react-splide';
@@ -12,7 +13,6 @@ import Select, { components } from 'react-select';
12
13
  import { InputMask } from '@react-input/mask';
13
14
  import ResponsivePagination from 'react-responsive-pagination';
14
15
  import { useFloating, autoUpdate, offset, flip, shift, useClick, useDismiss, useRole, useInteractions, useId as useId$1, FloatingFocusManager, arrow, useHover, useFocus, FloatingPortal, FloatingArrow } from '@floating-ui/react';
15
- import ContentLoader from 'react-content-loader';
16
16
  import { Toaster, toast } from 'react-hot-toast';
17
17
  import { defaultCountries, parseCountry, usePhoneInput, CountrySelector } from 'react-international-phone';
18
18
  import { PhoneNumberUtil } from 'google-libphonenumber';
@@ -21,46 +21,58 @@ import { initReactI18next } from 'react-i18next';
21
21
 
22
22
  const PREFIX_BS = 'bs-';
23
23
 
24
- function DIconBase({ icon, theme, style, className, size, loading = false, loadingDuration = 1.8, hasCircle = false, circleSize = `calc(var(--${PREFIX_BS}icon-size) * 1)`, color, backgroundColor, materialStyle = false, familyClass = 'bi', familyPrefix = 'bi-', dataAttributes, }) {
24
+ function DIconBase({ icon, color, style, className, size, hasCircle = false, materialStyle = false, familyClass = 'material-symbols-outlined', strokeWidth = 2, dataAttributes, }) {
25
+ // If materialStyle is true, use Material Design icons (legacy)
26
+ const useMaterialIcons = materialStyle;
27
+ // Get Lucide icon component
28
+ const LucideIcon = useMemo(() => {
29
+ if (useMaterialIcons)
30
+ return null;
31
+ // Try to find the icon in Lucide (expects PascalCase)
32
+ const icons = LucideIcons;
33
+ return icons[icon] || null;
34
+ }, [icon, useMaterialIcons]);
25
35
  const colorStyle = useMemo(() => {
26
36
  if (color) {
27
- return { [`--${PREFIX_BS}icon-component-color`]: color };
28
- }
29
- if (theme) {
30
- return { [`--${PREFIX_BS}icon-component-color`]: `var(--${PREFIX_BS}${theme})` };
37
+ return { [`--${PREFIX_BS}icon-component-color`]: `var(--${PREFIX_BS}${color})` };
31
38
  }
32
39
  return {};
33
- }, [color, theme]);
40
+ }, [color]);
34
41
  const backgroundStyle = useMemo(() => {
35
- if (backgroundColor) {
36
- return { [`--${PREFIX_BS}icon-component-bg-color`]: backgroundColor };
37
- }
38
42
  if (hasCircle) {
39
- if (theme) {
40
- return { [`--${PREFIX_BS}icon-component-bg-color`]: `rgba(var(--${PREFIX_BS}${theme}-rgb), 0.1)` };
43
+ if (color) {
44
+ return { [`--${PREFIX_BS}icon-component-bg-color`]: `rgba(var(--${PREFIX_BS}${color}-rgb), 0.1)` };
41
45
  }
42
46
  return { [`--${PREFIX_BS}icon-component-bg-color`]: `rgba(var(--${PREFIX_BS}body-color-rgb), 0.1)` };
43
47
  }
44
48
  return {};
45
- }, [backgroundColor, hasCircle, theme]);
46
- const circleSizeStyle = useMemo(() => {
47
- if (hasCircle) {
48
- return { [`--${PREFIX_BS}icon-component-padding`]: circleSize };
49
- }
50
- return { [`--${PREFIX_BS}icon-component-padding`]: '0' };
51
- }, [circleSize, hasCircle]);
52
- const generateStyleVariables = useMemo(() => (Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ [`--${PREFIX_BS}icon-component-loading-duration`]: `${loadingDuration}s` }, size && { [`--${PREFIX_BS}icon-component-size`]: size }), colorStyle), backgroundStyle), circleSizeStyle), style)), [size, loadingDuration, colorStyle, backgroundStyle, circleSizeStyle, style]);
53
- const generateClasses = useMemo(() => (Object.assign(Object.assign({ 'd-icon': true, [familyClass]: true, 'd-icon-loading': loading }, !materialStyle && {
54
- [`${familyPrefix}${icon}`]: true,
49
+ }, [hasCircle, color]);
50
+ const generateStyleVariables = useMemo(() => (Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, size && { [`--${PREFIX_BS}icon-component-size`]: size }), colorStyle), backgroundStyle), hasCircle && { [`--${PREFIX_BS}icon-component-padding`]: `calc(var(--${PREFIX_BS}icon-component-size, 24px) * 0.4)` }), style)), [size, colorStyle, backgroundStyle, hasCircle, style]);
51
+ const generateClasses = useMemo(() => (Object.assign(Object.assign({ 'd-icon': true }, useMaterialIcons && {
52
+ [familyClass]: true,
55
53
  }), className && { [className]: true })), [
56
- familyClass,
57
- loading,
58
54
  className,
59
- materialStyle,
60
- familyPrefix,
61
- icon,
55
+ useMaterialIcons,
56
+ familyClass,
62
57
  ]);
63
- return (jsx("i", Object.assign({ className: classNames(generateClasses), style: generateStyleVariables }, dataAttributes, { children: materialStyle && icon })));
58
+ const iconSize = useMemo(() => {
59
+ if (size) {
60
+ const numSize = parseInt(size, 10);
61
+ return !Number.isNaN(numSize) ? numSize : size;
62
+ }
63
+ return undefined;
64
+ }, [size]);
65
+ // Render Material Design icon (legacy support)
66
+ if (useMaterialIcons) {
67
+ return (jsx("i", Object.assign({ className: classNames(generateClasses), style: generateStyleVariables }, dataAttributes, { children: icon })));
68
+ }
69
+ // Render Lucide icon
70
+ if (!LucideIcon) {
71
+ // eslint-disable-next-line no-console
72
+ console.warn(`Icon "${icon}" not found in Lucide. Make sure to use PascalCase names (e.g., "Home", "User", "Settings")`);
73
+ return (jsx("span", Object.assign({ className: classNames(generateClasses), style: generateStyleVariables }, dataAttributes, { children: "?" })));
74
+ }
75
+ return (jsx("span", Object.assign({ className: classNames(generateClasses), style: generateStyleVariables }, dataAttributes, { children: jsx(LucideIcon, { size: iconSize || 24, strokeWidth: strokeWidth }) })));
64
76
  }
65
77
 
66
78
  function useDisableBodyScrollEffect(disable) {
@@ -248,31 +260,27 @@ const DEFAULT_STATE = {
248
260
  materialStyle: false,
249
261
  },
250
262
  iconMap: {
251
- x: 'x',
252
- xLg: 'x-lg',
253
- chevronUp: 'chevron-up',
254
- chevronDown: 'chevron-down',
255
- chevronLeft: 'chevron-left',
256
- chevronRight: 'chevron-right',
257
- upload: 'cloud-upload',
258
- calendar: 'calendar',
259
- check: 'check',
263
+ x: 'X',
264
+ xLg: 'X',
265
+ chevronUp: 'ChevronUp',
266
+ chevronDown: 'ChevronDown',
267
+ chevronLeft: 'ChevronLeft',
268
+ chevronRight: 'ChevronRight',
269
+ upload: 'Upload',
270
+ calendar: 'Calendar',
271
+ check: 'Check',
260
272
  alert: {
261
- warning: 'exclamation-circle',
262
- danger: 'exclamation-triangle',
263
- success: 'check-circle',
264
- info: 'info-circle',
265
- dark: 'info-circle',
266
- light: 'info-circle',
267
- primary: 'info-circle',
268
- secondary: 'info-circle',
273
+ warning: 'AlertCircle',
274
+ danger: 'AlertTriangle',
275
+ success: 'CheckCircle',
276
+ info: 'Info',
269
277
  },
270
278
  input: {
271
- search: 'search',
272
- show: 'eye',
273
- hide: 'eye-slash',
274
- increase: 'plus-square',
275
- decrease: 'dash-square',
279
+ search: 'Search',
280
+ show: 'Eye',
281
+ hide: 'EyeOff',
282
+ increase: 'Plus',
283
+ decrease: 'Minus',
276
284
  },
277
285
  },
278
286
  breakpoints: {
@@ -325,25 +333,19 @@ function DIcon(_a) {
325
333
  return (jsx(DIconBase, Object.assign({ familyClass: propFamilyClass || familyClass, familyPrefix: propFamilyPrefix || familyPrefix, materialStyle: propMaterialStyle || materialStyle }, props)));
326
334
  }
327
335
 
328
- function DAlert({ theme = 'success', icon: iconProp, iconFamilyClass, iconFamilyPrefix, iconMaterialStyle = false, iconClose: iconCloseProp, iconCloseFamilyClass, iconCloseFamilyPrefix, iconCloseMaterialStyle = false, showClose, onClose, children, id, className, style, dataAttributes, }) {
336
+ function DAlert({ color = 'success', icon: iconProp, iconFamilyClass, iconFamilyPrefix, iconMaterialStyle = false, iconClose: iconCloseProp, iconCloseFamilyClass, iconCloseFamilyPrefix, iconCloseMaterialStyle = false, showClose, onClose, children, id, className, style, dataAttributes, }) {
329
337
  const { iconMap: { alert, xLg, }, } = useDContext();
330
- const icon = useMemo(() => iconProp || alert[theme], [alert, iconProp, theme]);
338
+ const icon = useMemo(() => iconProp || alert[color], [alert, iconProp, color]);
331
339
  const iconClose = useMemo(() => (iconCloseProp || xLg), [iconCloseProp, xLg]);
332
- const generateClasses = useMemo(() => (Object.assign({ alert: true, [`alert-${theme}`]: true, 'fade show': !!showClose }, className && { [className]: true })), [theme, showClose, className]);
340
+ const generateClasses = useMemo(() => (Object.assign({ alert: true, [`alert-${color}`]: true, 'fade show': !!showClose }, className && { [className]: true })), [color, showClose, className]);
333
341
  return (jsxs("div", Object.assign({ className: classNames(generateClasses), style: style, role: "alert", id: id }, dataAttributes, { children: [icon && (jsx(DIcon, { className: "alert-icon", icon: icon, familyClass: iconFamilyClass, familyPrefix: iconFamilyPrefix, materialStyle: iconMaterialStyle })), jsx("div", { className: "alert-text", children: children }), showClose && (jsx("button", { type: "button", className: "d-close", "aria-label": "Close", onClick: onClose, children: jsx(DIcon, { icon: iconClose, familyClass: iconCloseFamilyClass, familyPrefix: iconCloseFamilyPrefix, materialStyle: iconCloseMaterialStyle }) }))] })));
334
342
  }
335
343
 
336
- function DAvatar({ id, size, image, name: nameProp, useNameAsInitials = false, theme = 'secondary', variant, className, style, dataAttributes, }) {
337
- const generateClasses = useMemo(() => {
338
- const variantClass = variant
339
- ? `d-avatar-${variant}-${theme}`
340
- : `d-avatar-${theme}`;
341
- return {
342
- 'd-avatar': true,
343
- [variantClass]: true,
344
- [`d-avatar-${size}`]: !!size,
345
- };
346
- }, [variant, theme, size]);
344
+ function DAvatar({ id, size, image, name: nameProp, useNameAsInitials = false, className, style, dataAttributes, }) {
345
+ const generateClasses = useMemo(() => ({
346
+ 'd-avatar': true,
347
+ [`d-avatar-${size}`]: !!size,
348
+ }), [size]);
347
349
  const name = useMemo(() => {
348
350
  if (!nameProp) {
349
351
  return undefined;
@@ -356,16 +358,21 @@ function DAvatar({ id, size, image, name: nameProp, useNameAsInitials = false, t
356
358
  return (jsxs("div", Object.assign({ className: classNames(generateClasses, className), style: style, id: id }, dataAttributes, { children: [image && jsx("img", { src: image, alt: nameProp, className: "d-avatar-img" }), (name && !image) && jsx("span", { className: "d-avatar-name", children: name })] })));
357
359
  }
358
360
 
359
- function DBadge({ text, soft = false, theme = 'primary', id, rounded, className, style, iconStart, iconEnd, iconMaterialStyle, iconFamilyClass, iconFamilyPrefix, dataAttributes, }) {
361
+ function DBadge({ text, soft = false, color = 'primary', id, rounded, className, size, style, iconStart, iconEnd, iconMaterialStyle, iconFamilyClass, iconFamilyPrefix, dataAttributes, }) {
360
362
  const generateClasses = useMemo(() => ({
361
363
  badge: true,
362
- [`badge-${theme}`]: !!theme && !soft,
363
- [`badge-soft-${theme}`]: !!theme && soft,
364
+ [`badge-${color}`]: !!color && !soft,
365
+ [`badge-soft-${color}`]: !!color && soft,
364
366
  'rounded-pill': !!rounded,
365
- }), [rounded, soft, theme]);
367
+ [`badge-${size}`]: !!size,
368
+ }), [rounded, soft, color, size]);
366
369
  return (jsxs("span", Object.assign({ className: classNames(generateClasses, className), style: style }, id && { id }, dataAttributes, { children: [iconStart && (jsx(DIcon, { icon: iconStart, familyClass: iconFamilyClass, familyPrefix: iconFamilyPrefix, materialStyle: iconMaterialStyle })), jsx("span", { children: text }), iconEnd && (jsx(DIcon, { icon: iconEnd, familyClass: iconFamilyClass, familyPrefix: iconFamilyPrefix, materialStyle: iconMaterialStyle }))] })));
367
370
  }
368
371
 
372
+ function DBox({ className, style, children, dataAttributes, }) {
373
+ return (jsx("div", Object.assign({ style: style, className: classNames('d-box', className) }, dataAttributes, { children: children })));
374
+ }
375
+
369
376
  /* eslint-disable */
370
377
  /**
371
378
  * This file is originally from `@primer/react`
@@ -387,7 +394,7 @@ function useProvidedRefOrCreate(providedRef) {
387
394
  }
388
395
 
389
396
  function DInput(_a, ref) {
390
- var { id: idProp, style, className, label = '', labelIcon, labelIconFamilyClass, labelIconFamilyPrefix, labelIconMaterialStyle, disabled = false, loading = false, iconFamilyClass, iconFamilyPrefix, iconMaterialStyle, iconStart, iconStartDisabled, iconStartFamilyClass, iconStartFamilyPrefix, iconStartAriaLabel, iconStartTabIndex, iconStartMaterialStyle, iconEnd, iconEndDisabled, iconEndFamilyClass, iconEndFamilyPrefix, iconEndAriaLabel, iconEndTabIndex, iconEndMaterialStyle, hint, size, invalid = false, valid = false, floatingLabel = false, inputStart, inputEnd, value, placeholder = '', dataAttributes, onChange, onIconStartClick, onIconEndClick } = _a, inputProps = __rest(_a, ["id", "style", "className", "label", "labelIcon", "labelIconFamilyClass", "labelIconFamilyPrefix", "labelIconMaterialStyle", "disabled", "loading", "iconFamilyClass", "iconFamilyPrefix", "iconMaterialStyle", "iconStart", "iconStartDisabled", "iconStartFamilyClass", "iconStartFamilyPrefix", "iconStartAriaLabel", "iconStartTabIndex", "iconStartMaterialStyle", "iconEnd", "iconEndDisabled", "iconEndFamilyClass", "iconEndFamilyPrefix", "iconEndAriaLabel", "iconEndTabIndex", "iconEndMaterialStyle", "hint", "size", "invalid", "valid", "floatingLabel", "inputStart", "inputEnd", "value", "placeholder", "dataAttributes", "onChange", "onIconStartClick", "onIconEndClick"]);
397
+ var { id: idProp, style, className, label = '', disabled = false, loading = false, iconFamilyClass, iconFamilyPrefix, iconMaterialStyle, iconStart, iconStartDisabled, iconStartFamilyClass, iconStartFamilyPrefix, iconStartAriaLabel, iconStartTabIndex, iconStartMaterialStyle, iconEnd, iconEndDisabled, iconEndFamilyClass, iconEndFamilyPrefix, iconEndAriaLabel, iconEndTabIndex, iconEndMaterialStyle, hint, size, invalid = false, valid = false, floatingLabel = false, inputStart, inputEnd, value, placeholder = '', dataAttributes, onChange, onIconStartClick, onIconEndClick } = _a, inputProps = __rest(_a, ["id", "style", "className", "label", "disabled", "loading", "iconFamilyClass", "iconFamilyPrefix", "iconMaterialStyle", "iconStart", "iconStartDisabled", "iconStartFamilyClass", "iconStartFamilyPrefix", "iconStartAriaLabel", "iconStartTabIndex", "iconStartMaterialStyle", "iconEnd", "iconEndDisabled", "iconEndFamilyClass", "iconEndFamilyPrefix", "iconEndAriaLabel", "iconEndTabIndex", "iconEndMaterialStyle", "hint", "size", "invalid", "valid", "floatingLabel", "inputStart", "inputEnd", "value", "placeholder", "dataAttributes", "onChange", "onIconStartClick", "onIconEndClick"]);
391
398
  const inputRef = useProvidedRefOrCreate(ref);
392
399
  const innerId = useId();
393
400
  const id = useMemo(() => idProp || innerId, [idProp, innerId]);
@@ -438,13 +445,9 @@ function DInput(_a, ref) {
438
445
  valid,
439
446
  value,
440
447
  ]);
441
- const labelComponent = useMemo(() => (jsxs("label", { htmlFor: id, children: [label, labelIcon && (jsx(DIcon, { icon: labelIcon, size: `var(--${PREFIX_BS}label-font-size)`, familyClass: labelIconFamilyClass, familyPrefix: labelIconFamilyPrefix, materialStyle: labelIconMaterialStyle }))] })), [
448
+ const labelComponent = useMemo(() => (jsx("label", { htmlFor: id, children: label })), [
442
449
  id,
443
450
  label,
444
- labelIcon,
445
- labelIconFamilyClass,
446
- labelIconFamilyPrefix,
447
- labelIconMaterialStyle,
448
451
  ]);
449
452
  const dynamicComponent = useMemo(() => {
450
453
  if (floatingLabel) {
@@ -573,7 +576,7 @@ async function urlToFile(url) {
573
576
  null,
574
577
  {
575
578
  code: ErrorCodes.FailedFetch,
576
- message: `Failed to fetch file from ${url}`,
579
+ message: `Failed to fetch file from ${url} (HTTP ${res.status})`,
577
580
  },
578
581
  ];
579
582
  }
@@ -583,11 +586,13 @@ async function urlToFile(url) {
583
586
  return [file, null];
584
587
  }
585
588
  catch (error) {
589
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
590
+ const isCorsError = errorMessage.includes('CORS') || errorMessage.includes('Failed to fetch');
586
591
  return [
587
592
  null,
588
593
  {
589
594
  code: ErrorCodes.FailedFetch,
590
- message: `Failed to fetch file from ${url}}`,
595
+ message: `Failed to fetch file from ${url}${isCorsError ? ' (CORS error - file may not be accessible from this domain)' : ` (${errorMessage})`}`,
591
596
  },
592
597
  ];
593
598
  }
@@ -863,13 +868,13 @@ function DBoxFile(_a) {
863
868
  : children })] })) })), !!files.length && (jsx("ul", { className: "d-box-files", children: files.map((file, index) => (jsx(ForwardedDInput, { value: file.name, iconStart: "paperclip", iconEnd: "trash", readOnly: true, onIconEndClick: () => handleRemoveFile(index) }, `${file.name} ${index}`))) }))] }));
864
869
  }
865
870
 
866
- function DButton({ theme = 'primary', size, variant, state, text = '', ariaLabel, iconStart, iconStartFamilyClass, iconStartFamilyPrefix, iconStartMaterialStyle, iconEnd, iconEndFamilyClass, iconEndFamilyPrefix, iconEndMaterialStyle, value, type = 'button', loading = false, loadingAriaLabel, disabled = false, stopPropagationEnabled = true, className, style, form, dataAttributes, onClick, }) {
871
+ function DButton({ color = 'primary', size, variant, state, text = '', children, ariaLabel, iconStart, iconStartFamilyClass, iconStartFamilyPrefix, iconStartMaterialStyle, iconEnd, iconEndFamilyClass, iconEndFamilyPrefix, iconEndMaterialStyle, loadingText, value, type = 'button', loading = false, loadingAriaLabel, disabled = false, stopPropagationEnabled = true, className, style, form, dataAttributes, onClick, }) {
867
872
  const generateClasses = useMemo(() => {
868
873
  const variantClass = variant
869
- ? `btn-${variant}-${theme}`
870
- : `btn-${theme}`;
874
+ ? `btn-${variant}-${color}`
875
+ : `btn-${color}`;
871
876
  return Object.assign(Object.assign(Object.assign({ btn: true, [variantClass]: true }, size && { [`btn-${size}`]: true }), (state && state !== 'disabled') && { [state]: true }), { loading });
872
- }, [variant, theme, size, state, loading]);
877
+ }, [variant, color, size, state, loading]);
873
878
  const clickHandler = useCallback((event) => {
874
879
  if (stopPropagationEnabled) {
875
880
  event.stopPropagation();
@@ -877,19 +882,20 @@ function DButton({ theme = 'primary', size, variant, state, text = '', ariaLabel
877
882
  onClick === null || onClick === void 0 ? void 0 : onClick(event);
878
883
  }, [stopPropagationEnabled, onClick]);
879
884
  const isDisabled = useMemo(() => (state === 'disabled' || loading || disabled), [state, loading, disabled]);
885
+ const content = children || text;
880
886
  const newAriaLabel = useMemo(() => (loading
881
887
  ? (loadingAriaLabel || ariaLabel || text)
882
888
  : (ariaLabel || text)), [loading, loadingAriaLabel, ariaLabel, text]);
883
- return (jsxs("button", Object.assign({ className: classNames(generateClasses, className), style: style, type: type, disabled: isDisabled, onClick: clickHandler, "aria-label": newAriaLabel, form: form }, dataAttributes, value && { value }, { children: [iconStart && (jsx(DIcon, { icon: iconStart, familyClass: iconStartFamilyClass, familyPrefix: iconStartFamilyPrefix, materialStyle: iconStartMaterialStyle })), (text && !loading) && (jsx("span", { children: text })), loading && (jsx("span", { className: "spinner-border spinner-border-sm", role: "status", "aria-hidden": "true", children: jsx("span", { className: "visually-hidden", children: "Loading..." }) })), iconEnd && (jsx(DIcon, { icon: iconEnd, familyClass: iconEndFamilyClass, familyPrefix: iconEndFamilyPrefix, materialStyle: iconEndMaterialStyle }))] })));
889
+ return (jsxs("button", Object.assign({ className: classNames(generateClasses, className), style: style, type: type, disabled: isDisabled, onClick: clickHandler, "aria-label": newAriaLabel, form: form }, dataAttributes, value && { value }, { children: [iconStart && (jsx(DIcon, { icon: iconStart, familyClass: iconStartFamilyClass, familyPrefix: iconStartFamilyPrefix, materialStyle: iconStartMaterialStyle })), loading && (jsx("span", { className: "spinner-border spinner-border-sm", role: "status", "aria-hidden": "true", children: jsx("span", { className: "visually-hidden", children: "Loading..." }) })), jsx("span", { children: loading && loadingText ? loadingText : content }), iconEnd && (jsx(DIcon, { icon: iconEnd, familyClass: iconEndFamilyClass, familyPrefix: iconEndFamilyPrefix, materialStyle: iconEndMaterialStyle }))] })));
884
890
  }
885
891
 
886
- function DButtonIcon({ id, icon, size, className, variant, state, loadingAriaLabel, iconMaterialStyle, ariaLabel, theme = 'primary', type = 'button', loading = false, disabled = false, stopPropagationEnabled = true, style, iconFamilyClass, iconFamilyPrefix, dataAttributes, onClick, }) {
892
+ function DButtonIcon({ id, icon, size, className, variant, state, loadingAriaLabel, iconMaterialStyle, ariaLabel, color = 'primary', type = 'button', loading = false, disabled = false, stopPropagationEnabled = true, style, iconFamilyClass, iconFamilyPrefix, dataAttributes, onClick, }) {
887
893
  const generateClasses = useMemo(() => {
888
894
  const variantClass = variant
889
- ? `btn-${variant}-${theme}`
890
- : `btn-${theme}`;
895
+ ? `btn-${variant}-${color}`
896
+ : `btn-${color}`;
891
897
  return Object.assign(Object.assign(Object.assign({ 'btn d-button-icon': true, [variantClass]: true }, size && { [`btn-${size}`]: true }), (state && state !== 'disabled') && { [state]: true }), { loading });
892
- }, [variant, theme, size, state, loading]);
898
+ }, [variant, color, size, state, loading]);
893
899
  const clickHandler = useCallback((event) => {
894
900
  if (stopPropagationEnabled) {
895
901
  event.stopPropagation();
@@ -950,11 +956,11 @@ var DCarousel$1 = Object.assign(ForwardedDCarousel, {
950
956
  Slide: DCarouselSlide,
951
957
  });
952
958
 
953
- function DChip({ theme = 'primary', text, icon, iconFamilyClass, iconFamilyPrefix, iconMaterialStyle, iconClose: iconCloseProp, iconCloseFamilyClass, iconCloseFamilyPrefix, iconCloseMaterialStyle, showClose = false, closeAriaLabel = 'close', className, style, dataAttributes, onClose, }) {
959
+ function DChip({ color = 'primary', text, icon, iconFamilyClass, iconFamilyPrefix, iconMaterialStyle, iconClose: iconCloseProp, iconCloseFamilyClass, iconCloseFamilyPrefix, iconCloseMaterialStyle, showClose = false, closeAriaLabel = 'close', className, style, dataAttributes, onClose, }) {
954
960
  const generateClasses = useMemo(() => ({
955
961
  'd-chip': true,
956
- [`d-chip-${theme}`]: !!theme,
957
- }), [theme]);
962
+ [`d-chip-${color}`]: !!color,
963
+ }), [color]);
958
964
  const { iconMap: { xLg, }, } = useDContext();
959
965
  const iconClose = useMemo(() => iconCloseProp || xLg, [iconCloseProp, xLg]);
960
966
  return (jsxs("span", Object.assign({ className: classNames(generateClasses, className), style: style }, dataAttributes, { children: [icon && (jsx("div", { className: "d-chip-icon-container", children: jsx(DIcon, { icon: icon, familyClass: iconFamilyClass, familyPrefix: iconFamilyPrefix, materialStyle: iconMaterialStyle }) })), jsx("span", { children: text }), showClose && (jsx("button", { type: "button", className: "d-chip-icon-container", onClick: onClose, "aria-label": closeAriaLabel, children: jsx(DIcon, { icon: iconClose, familyClass: iconCloseFamilyClass, familyPrefix: iconCloseFamilyPrefix, materialStyle: iconCloseMaterialStyle }) }))] })));
@@ -977,7 +983,7 @@ function DCollapse({ id, className, style, Component, hasSeparator = false, defa
977
983
  const generateStyles = useMemo(() => ({
978
984
  [`--${PREFIX_BS}collapse-separator-display`]: hasSeparator ? 'block' : 'none',
979
985
  }), [hasSeparator]);
980
- return (jsxs("div", Object.assign({ id: id, className: classNames('collapse-container', className), style: style }, dataAttributes, { children: [jsxs("button", { className: "collapse-button", type: "button", onClick: onChangeCollapse, children: [jsx("div", { className: "flex-grow-1", children: Component }), jsx(DIcon, { color: `var(--${PREFIX_BS}gray)`, size: `var(--${PREFIX_BS}fs-small)`, icon: collapsed ? iconOpen : iconClose, familyClass: iconFamilyClass, familyPrefix: iconFamilyPrefix, materialStyle: iconMaterialStyle })] }), !collapsed && (jsx("div", { className: classNames({
986
+ return (jsxs("div", Object.assign({ id: id, className: classNames('collapse-container', className), style: style }, dataAttributes, { children: [jsxs("button", { className: "collapse-button", type: "button", onClick: onChangeCollapse, children: [jsx("div", { className: "flex-grow-1", children: Component }), jsx(DIcon, { color: "gray", size: "1rem", icon: collapsed ? iconOpen : iconClose, familyClass: iconFamilyClass, familyPrefix: iconFamilyPrefix, materialStyle: iconMaterialStyle })] }), !collapsed && (jsx("div", { className: classNames({
981
987
  'collapse-body': true,
982
988
  }), style: generateStyles, children: children }))] })));
983
989
  }
@@ -1141,7 +1147,7 @@ function DSelectPlaceholder(_a) {
1141
1147
  }
1142
1148
 
1143
1149
  function DSelect(_a) {
1144
- var { id: idProp, className, style, label, labelIcon, labelIconFamilyClass, labelIconFamilyPrefix, hint, iconFamilyClass, iconFamilyPrefix, iconStart, iconStartFamilyClass, iconStartFamilyPrefix, iconStartAriaLabel, iconStartTabIndex, iconEnd, iconEndFamilyClass, iconEndFamilyPrefix, iconEndAriaLabel, iconEndTabIndex, invalid, valid, menuWithMaxContent = false, disabled, clearable, loading, floatingLabel = false, rtl, searchable, multi, components, defaultValue, placeholder, onIconStartClick, onIconEndClick, dataAttributes } = _a, props = __rest(_a, ["id", "className", "style", "label", "labelIcon", "labelIconFamilyClass", "labelIconFamilyPrefix", "hint", "iconFamilyClass", "iconFamilyPrefix", "iconStart", "iconStartFamilyClass", "iconStartFamilyPrefix", "iconStartAriaLabel", "iconStartTabIndex", "iconEnd", "iconEndFamilyClass", "iconEndFamilyPrefix", "iconEndAriaLabel", "iconEndTabIndex", "invalid", "valid", "menuWithMaxContent", "disabled", "clearable", "loading", "floatingLabel", "rtl", "searchable", "multi", "components", "defaultValue", "placeholder", "onIconStartClick", "onIconEndClick", "dataAttributes"]);
1150
+ var { id: idProp, className, style, label, hint, iconFamilyClass, iconFamilyPrefix, iconStart, iconStartFamilyClass, iconStartFamilyPrefix, iconStartAriaLabel, iconStartTabIndex, iconEnd, iconEndFamilyClass, iconEndFamilyPrefix, iconEndAriaLabel, iconEndTabIndex, invalid, valid, menuWithMaxContent = false, disabled, clearable, loading, floatingLabel = false, rtl, searchable, multi, components, defaultValue, placeholder, onIconStartClick, onIconEndClick, dataAttributes } = _a, props = __rest(_a, ["id", "className", "style", "label", "hint", "iconFamilyClass", "iconFamilyPrefix", "iconStart", "iconStartFamilyClass", "iconStartFamilyPrefix", "iconStartAriaLabel", "iconStartTabIndex", "iconEnd", "iconEndFamilyClass", "iconEndFamilyPrefix", "iconEndAriaLabel", "iconEndTabIndex", "invalid", "valid", "menuWithMaxContent", "disabled", "clearable", "loading", "floatingLabel", "rtl", "searchable", "multi", "components", "defaultValue", "placeholder", "onIconStartClick", "onIconEndClick", "dataAttributes"]);
1145
1151
  const innerId = useId();
1146
1152
  const id = useMemo(() => idProp || innerId, [idProp, innerId]);
1147
1153
  const handleOnIconStartClick = useCallback(() => {
@@ -1153,7 +1159,7 @@ function DSelect(_a) {
1153
1159
  return (jsxs("div", Object.assign({ className: classNames('d-select', className, {
1154
1160
  'd-select-floating': floatingLabel,
1155
1161
  disabled: disabled || loading,
1156
- }), style: style }, dataAttributes, { children: [label && (jsxs("label", { htmlFor: id, children: [label, labelIcon && (jsx(DIcon, { icon: labelIcon, size: `var(--${PREFIX_BS}input-label-font-size)`, familyClass: labelIconFamilyClass, familyPrefix: labelIconFamilyPrefix }))] })), jsxs("div", { className: classNames({
1162
+ }), style: style }, dataAttributes, { children: [label && (jsx("label", { htmlFor: id, children: label })), jsxs("div", { className: classNames({
1157
1163
  'input-group': true,
1158
1164
  'has-validation': invalid,
1159
1165
  disabled: disabled || loading,
@@ -1187,7 +1193,7 @@ var PickerType;
1187
1193
  PickerType["Month"] = "month";
1188
1194
  PickerType["Year"] = "year";
1189
1195
  })(PickerType || (PickerType = {}));
1190
- function DDatePickerHeaderSelector({ date, changeYear, changeMonth, decreaseMonth, increaseMonth, decreaseYear, increaseYear, monthDate, pickerType, prevMonthButtonDisabled, nextMonthButtonDisabled, monthsShown = 1, iconPrev, iconNext, prevYearButtonDisabled, nextYearButtonDisabled, iconFamilyClass, iconFamilyPrefix, iconMaterialStyle = false, prevMonthAriaLabel = 'decrease month', nextMonthAriaLabel = 'increase month', prevYearAriaLabel = 'decrease year', nextYearAriaLabel = 'increase year', iconSize, buttonVariant = 'link', buttonTheme = 'dark', style, className, minYearSelect = 1900, maxYearSelect = 2100, showHeaderSelectors = false, customHeaderCount, locale, }) {
1196
+ function DDatePickerHeaderSelector({ date, changeYear, changeMonth, decreaseMonth, increaseMonth, decreaseYear, increaseYear, monthDate, pickerType, prevMonthButtonDisabled, nextMonthButtonDisabled, monthsShown = 1, iconPrev, iconNext, prevYearButtonDisabled, nextYearButtonDisabled, prevMonthAriaLabel = 'decrease month', nextMonthAriaLabel = 'increase month', prevYearAriaLabel = 'decrease year', nextYearAriaLabel = 'increase year', iconSize, style, className, minYearSelect = 1900, maxYearSelect = 2100, showHeaderSelectors = false, customHeaderCount, locale, }) {
1191
1197
  const { iconMap: { chevronLeft, chevronRight, }, } = useDContext();
1192
1198
  const arrayYears = useMemo(() => Array.from({ length: maxYearSelect - minYearSelect + 1 }, (_, index) => minYearSelect + index), [maxYearSelect, minYearSelect]);
1193
1199
  const years = useMemo(() => arrayYears.map((year) => ({
@@ -1212,16 +1218,16 @@ function DDatePickerHeaderSelector({ date, changeYear, changeMonth, decreaseMont
1212
1218
  }, [date]);
1213
1219
  const [startYear, endYear] = getYearRange();
1214
1220
  if (pickerType === PickerType.Year) {
1215
- return (jsxs("div", { className: classNames('react-datepicker__header-selector react-datepicker__header-year-selector', className), style: style, children: [jsx(DButton, { iconStart: iconPrev || chevronLeft, iconStartFamilyClass: iconFamilyClass, iconStartFamilyPrefix: iconFamilyPrefix, iconStartMaterialStyle: iconMaterialStyle, size: iconSize, variant: buttonVariant, theme: buttonTheme, onClick: decreaseYear, disabled: prevYearButtonDisabled, ariaLabel: prevYearAriaLabel, className: "header-button" }), jsx("p", { children: `${startYear} - ${endYear}` }), jsx(DButton, { iconStart: iconNext || chevronRight, iconStartFamilyClass: iconFamilyClass, iconStartFamilyPrefix: iconFamilyPrefix, iconStartMaterialStyle: iconMaterialStyle, size: iconSize, variant: buttonVariant, theme: buttonTheme, onClick: increaseYear, disabled: nextYearButtonDisabled, ariaLabel: nextYearAriaLabel, className: "header-button" })] }));
1221
+ return (jsxs("div", { className: classNames('react-datepicker__header-selector react-datepicker__header-year-selector', className), style: style, children: [jsx(DButtonIcon, { icon: iconPrev || chevronLeft, size: iconSize, variant: "link", onClick: decreaseYear, disabled: prevYearButtonDisabled, ariaLabel: prevYearAriaLabel, className: "header-button" }), jsx("p", { children: `${startYear} - ${endYear}` }), jsx(DButtonIcon, { icon: iconNext || chevronRight, size: iconSize, variant: "link", onClick: increaseYear, disabled: nextYearButtonDisabled, ariaLabel: nextYearAriaLabel, className: "header-button" })] }));
1216
1222
  }
1217
1223
  if (pickerType === PickerType.Quarter || pickerType === PickerType.Month) {
1218
- return (jsxs("div", { className: classNames(`react-datepicker__header-selector react-datepicker__header-${pickerType}-selector`, className), style: style, children: [jsx(DButton, { iconStart: iconPrev || chevronLeft, iconStartFamilyClass: iconFamilyClass, iconStartFamilyPrefix: iconFamilyPrefix, iconStartMaterialStyle: iconMaterialStyle, size: iconSize, variant: buttonVariant, theme: buttonTheme, onClick: decreaseYear, disabled: prevMonthButtonDisabled, ariaLabel: prevMonthAriaLabel, className: "header-button", style: { visibility: customHeaderCount === 0 ? 'visible' : 'hidden' } }), jsx("div", { className: "d-flex justify-content-center flex-grow-1", children: showHeaderSelectors ? (jsx(DSelect$1, { options: years, value: defaultYear, defaultValue: defaultYear, onChange: (year) => changeYear(Number(year === null || year === void 0 ? void 0 : year.value)), searchable: false })) : (jsx("p", { children: defaultYear === null || defaultYear === void 0 ? void 0 : defaultYear.label })) }), jsx(DButton, { iconStart: iconNext || chevronRight, iconStartFamilyClass: iconFamilyClass, iconStartFamilyPrefix: iconFamilyPrefix, iconStartMaterialStyle: iconMaterialStyle, size: iconSize, variant: buttonVariant, theme: buttonTheme, onClick: increaseYear, disabled: nextMonthButtonDisabled, ariaLabel: nextMonthAriaLabel, className: "header-button", style: { visibility: customHeaderCount === monthsShown - 1 ? 'visible' : 'hidden' } })] }));
1224
+ return (jsxs("div", { className: classNames(`react-datepicker__header-selector react-datepicker__header-${pickerType}-selector`, className), style: style, children: [jsx(DButtonIcon, { icon: iconPrev || chevronLeft, size: iconSize, variant: "link", onClick: decreaseYear, disabled: prevMonthButtonDisabled, ariaLabel: prevMonthAriaLabel, className: "header-button", style: { visibility: customHeaderCount === 0 ? 'visible' : 'hidden' } }), jsx("div", { className: "d-flex justify-content-center flex-grow-1", children: showHeaderSelectors ? (jsx(DSelect$1, { options: years, value: defaultYear, defaultValue: defaultYear, onChange: (year) => changeYear(Number(year === null || year === void 0 ? void 0 : year.value)), searchable: false })) : (jsx("p", { children: defaultYear === null || defaultYear === void 0 ? void 0 : defaultYear.label })) }), jsx(DButtonIcon, { icon: iconNext || chevronRight, size: iconSize, variant: "link", onClick: increaseYear, disabled: nextMonthButtonDisabled, ariaLabel: nextMonthAriaLabel, className: "header-button", style: { visibility: customHeaderCount === monthsShown - 1 ? 'visible' : 'hidden' } })] }));
1219
1225
  }
1220
- return (jsxs("div", { className: classNames('react-datepicker__header-selector react-datepicker__header-day-selector', className), style: style, children: [jsx(DButton, { iconStart: iconPrev || chevronLeft, iconStartFamilyClass: iconFamilyClass, iconStartFamilyPrefix: iconFamilyPrefix, iconStartMaterialStyle: iconMaterialStyle, size: iconSize, variant: buttonVariant, theme: buttonTheme, onClick: decreaseMonth, disabled: prevMonthButtonDisabled, ariaLabel: prevMonthAriaLabel, className: "header-button", style: { visibility: customHeaderCount === 0 ? 'visible' : 'hidden' } }), showHeaderSelectors ? (jsxs(Fragment$1, { children: [jsx(DSelect$1, { options: months, value: defaultMonth, defaultValue: defaultMonth, onChange: (month) => changeMonth((month === null || month === void 0 ? void 0 : month.value) || 0), searchable: false, className: "custom-month-selector" }), jsx(DSelect$1, { options: years, value: defaultYear, defaultValue: defaultYear, onChange: (year) => changeYear(Number(year === null || year === void 0 ? void 0 : year.value)), searchable: false, className: "custom-year-selector" })] })) : (jsx("p", { children: `${defaultMonth.label} ${defaultYear === null || defaultYear === void 0 ? void 0 : defaultYear.label}` })), jsx(DButton, { iconStart: iconNext || chevronRight, iconStartFamilyClass: iconFamilyClass, iconStartFamilyPrefix: iconFamilyPrefix, iconStartMaterialStyle: iconMaterialStyle, size: iconSize, variant: buttonVariant, theme: buttonTheme, onClick: increaseMonth, disabled: nextMonthButtonDisabled, ariaLabel: nextMonthAriaLabel, className: "header-button", style: { visibility: customHeaderCount === monthsShown - 1 ? 'visible' : 'hidden' } })] }));
1226
+ return (jsxs(Fragment$1, { children: [jsxs("div", { className: "datepicker-top-header", children: [showHeaderSelectors && (jsx("select", { value: defaultYear === null || defaultYear === void 0 ? void 0 : defaultYear.value, onChange: (e) => changeYear(Number(e.target.value)), className: "custom-year-selector", children: years.map((year) => (jsx("option", { value: year.value, children: year.label }, year.value))) })), jsx("h4", { className: "mb-0 fw-normal", children: format(monthDate, 'LLLL, dd', { locale }) })] }), jsxs("div", { className: classNames('react-datepicker__header-selector react-datepicker__header-day-selector', className), style: style, children: [jsx(DButtonIcon, { icon: iconPrev || chevronLeft, size: iconSize, variant: "link", onClick: decreaseMonth, disabled: prevMonthButtonDisabled, ariaLabel: prevMonthAriaLabel, className: "header-button", style: { visibility: customHeaderCount === 0 ? 'visible' : 'hidden' } }), showHeaderSelectors ? (jsx(DSelect$1, { options: months, value: defaultMonth, defaultValue: defaultMonth, onChange: (month) => changeMonth((month === null || month === void 0 ? void 0 : month.value) || 0), searchable: false, className: "custom-month-selector" })) : (jsx("p", { children: `${defaultMonth.label} ${defaultYear === null || defaultYear === void 0 ? void 0 : defaultYear.label}` })), jsx(DButtonIcon, { icon: iconNext || chevronRight, size: iconSize, variant: "link", onClick: increaseMonth, disabled: nextMonthButtonDisabled, ariaLabel: nextMonthAriaLabel, className: "header-button", style: { visibility: customHeaderCount === monthsShown - 1 ? 'visible' : 'hidden' } })] })] }));
1221
1227
  }
1222
1228
 
1223
1229
  function DDatePicker(_a) {
1224
- var { inputLabel, inputHint, inputAriaLabel, inputActionAriaLabel = 'open calendar', inputId = 'input-calendar', timeId = 'input-time', timeInputLabel, iconInput, iconHeaderPrev, iconHeaderNext, iconMaterialStyle, iconFamilyClass, iconFamilyPrefix, minYearSelect, maxYearSelect, iconHeaderSize, headerPrevMonthAriaLabel, headerNextMonthAriaLabel, headerButtonVariant, headerButtonTheme, invalid = false, valid = false, renderCustomHeader: renderCustomHeaderProp, className, dateFormatCalendar: dateFormatCalendarProp, style, dataAttributes, placeholder, showHeaderSelectors } = _a, props = __rest(_a, ["inputLabel", "inputHint", "inputAriaLabel", "inputActionAriaLabel", "inputId", "timeId", "timeInputLabel", "iconInput", "iconHeaderPrev", "iconHeaderNext", "iconMaterialStyle", "iconFamilyClass", "iconFamilyPrefix", "minYearSelect", "maxYearSelect", "iconHeaderSize", "headerPrevMonthAriaLabel", "headerNextMonthAriaLabel", "headerButtonVariant", "headerButtonTheme", "invalid", "valid", "renderCustomHeader", "className", "dateFormatCalendar", "style", "dataAttributes", "placeholder", "showHeaderSelectors"]);
1230
+ var { inputLabel, inputHint, inputAriaLabel, inputActionAriaLabel = 'open calendar', inputId = 'input-calendar', timeId = 'input-time', timeInputLabel, minYearSelect, maxYearSelect, iconHeaderSize, iconMaterialStyle, iconInput, headerPrevMonthAriaLabel, headerNextMonthAriaLabel, invalid = false, valid = false, renderCustomHeader: renderCustomHeaderProp, className, dateFormatCalendar: dateFormatCalendarProp, style, dataAttributes, placeholder, showHeaderSelectors } = _a, props = __rest(_a, ["inputLabel", "inputHint", "inputAriaLabel", "inputActionAriaLabel", "inputId", "timeId", "timeInputLabel", "minYearSelect", "maxYearSelect", "iconHeaderSize", "iconMaterialStyle", "iconInput", "headerPrevMonthAriaLabel", "headerNextMonthAriaLabel", "invalid", "valid", "renderCustomHeader", "className", "dateFormatCalendar", "style", "dataAttributes", "placeholder", "showHeaderSelectors"]);
1225
1231
  const pickerType = useMemo(() => {
1226
1232
  if (props.showQuarterYearPicker)
1227
1233
  return PickerType.Quarter;
@@ -1235,15 +1241,10 @@ function DDatePicker(_a) {
1235
1241
  props.showMonthYearPicker,
1236
1242
  props.showYearPicker,
1237
1243
  ]);
1238
- const DatePickerHeader = useCallback((headerProps) => (jsx(DDatePickerHeaderSelector, Object.assign({}, headerProps, { monthsShown: props.monthsShown, iconPrev: iconHeaderPrev, iconNext: iconHeaderNext, iconMaterialStyle: iconMaterialStyle, prevMonthAriaLabel: headerPrevMonthAriaLabel, nextMonthAriaLabel: headerNextMonthAriaLabel, iconSize: iconHeaderSize, buttonVariant: headerButtonVariant, buttonTheme: headerButtonTheme, minYearSelect: minYearSelect, maxYearSelect: maxYearSelect, pickerType: pickerType, showHeaderSelectors: showHeaderSelectors, locale: props.locale }))), [
1239
- iconHeaderNext,
1240
- iconHeaderPrev,
1241
- iconMaterialStyle,
1244
+ const DatePickerHeader = useCallback((headerProps) => (jsx(DDatePickerHeaderSelector, Object.assign({}, headerProps, { monthsShown: props.monthsShown, prevMonthAriaLabel: headerPrevMonthAriaLabel, nextMonthAriaLabel: headerNextMonthAriaLabel, iconSize: iconHeaderSize, minYearSelect: minYearSelect, maxYearSelect: maxYearSelect, pickerType: pickerType, showHeaderSelectors: showHeaderSelectors, locale: props.locale }))), [
1242
1245
  headerPrevMonthAriaLabel,
1243
1246
  headerNextMonthAriaLabel,
1244
1247
  iconHeaderSize,
1245
- headerButtonVariant,
1246
- headerButtonTheme,
1247
1248
  minYearSelect,
1248
1249
  maxYearSelect,
1249
1250
  pickerType,
@@ -1256,6 +1257,32 @@ function DDatePicker(_a) {
1256
1257
  return (jsx(DatePicker, Object.assign({}, dataAttributes, props, { calendarClassName: "d-date-picker", renderCustomHeader: renderCustomHeader, placeholderText: placeholder, customInput: (jsx(ForwardedDDatePickerInput, { id: inputId, "aria-label": inputAriaLabel, iconEndAriaLabel: inputActionAriaLabel, iconMaterialStyle: iconMaterialStyle, iconEnd: iconInput, inputLabel: inputLabel, className: className, style: style, invalid: invalid, valid: valid, hint: inputHint })), customTimeInput: (jsx(DDatePickerTime, { id: timeId })) })));
1257
1258
  }
1258
1259
 
1260
+ function DLayoutPane({ className, style, children, cols, colsXs, colsSm, colsMd, colsLg, colsXl, colsXxl, dataAttributes, }) {
1261
+ const colsClass = cols ? `g-col-${cols}` : undefined;
1262
+ const colsXsClass = colsXs ? `g-col-${colsXs}` : undefined;
1263
+ const colsSmClass = colsSm ? `g-col-sm-${colsSm}` : undefined;
1264
+ const colsMdClass = colsMd ? `g-col-md-${colsMd}` : undefined;
1265
+ const colsLgClass = colsLg ? `g-col-lg-${colsLg}` : undefined;
1266
+ const colsXlClass = colsXl ? `g-col-xl-${colsXl}` : undefined;
1267
+ const colsXxlClass = colsXxl ? `g-col-xxl-${colsXxl}` : undefined;
1268
+ return (jsx("div", Object.assign({ className: classNames(colsClass, colsXsClass, colsSmClass, colsMdClass, colsLgClass, colsXlClass, colsXxlClass, className), style: style }, dataAttributes, { children: children })));
1269
+ }
1270
+
1271
+ function DLayout({ className, style, children, gap, gapSm, gapMd, gapLg, gapXl, gapXxl, dataAttributes, }) {
1272
+ const gapClasses = classNames({
1273
+ [`gap-${gap}`]: gap !== undefined,
1274
+ [`gap-sm-${gapSm}`]: gapSm !== undefined,
1275
+ [`gap-md-${gapMd}`]: gapMd !== undefined,
1276
+ [`gap-lg-${gapLg}`]: gapLg !== undefined,
1277
+ [`gap-xl-${gapXl}`]: gapXl !== undefined,
1278
+ [`gap-xxl-${gapXxl}`]: gapXxl !== undefined,
1279
+ });
1280
+ return (jsx("div", Object.assign({ style: style, className: classNames('grid', gapClasses, className) }, dataAttributes, { children: children })));
1281
+ }
1282
+ var DLayout$1 = Object.assign(DLayout, {
1283
+ Pane: DLayoutPane,
1284
+ });
1285
+
1259
1286
  function DInputMask(props, ref) {
1260
1287
  return (jsx(InputMask, Object.assign({ ref: ref, component: ForwardedDInput }, props)));
1261
1288
  }
@@ -1439,18 +1466,6 @@ function DInputCounter(_a, ref) {
1439
1466
  const ForwardedDInputCounter = forwardRef(DInputCounter);
1440
1467
  ForwardedDInputCounter.displayName = 'DInputCounter';
1441
1468
 
1442
- /**
1443
- * @deprecated
1444
- */
1445
- function DInputCurrencyBase(_a, ref) {
1446
- var { value, minValue, maxValue, currencyOptions, currencyCode, onFocus, onBlur, onChange } = _a, inputProps = __rest(_a, ["value", "minValue", "maxValue", "currencyOptions", "currencyCode", "onFocus", "onBlur", "onChange"]);
1447
- const { handleOnWheel, } = useDisableInputWheel(ref);
1448
- const { inputRef, innerValue, innerType, handleOnFocus, handleOnChange, handleOnBlur, generateStyleVariables, generateSymbolStyleVariables, } = useInputCurrency(currencyOptions, value, onFocus, onChange, onBlur, ref);
1449
- return (jsx(ForwardedDInput, Object.assign({ ref: inputRef, value: innerValue, onChange: handleOnChange, style: generateStyleVariables, inputMode: "decimal", type: innerType, onFocus: handleOnFocus, onBlur: handleOnBlur, onWheel: handleOnWheel, inputStart: (jsx("span", { slot: "input-start", style: generateSymbolStyleVariables, children: currencyCode || currencyOptions.symbol })) }, inputProps)));
1450
- }
1451
- const ForwardedDInputCurrencyBase$1 = forwardRef(DInputCurrencyBase);
1452
- ForwardedDInputCurrencyBase$1.displayName = 'DInputCurrencyBase';
1453
-
1454
1469
  function DInputCurrency(_a, ref) {
1455
1470
  var { value, minValue, maxValue, currencyCode, onFocus, onBlur, onChange } = _a, props = __rest(_a, ["value", "minValue", "maxValue", "currencyCode", "onFocus", "onBlur", "onChange"]);
1456
1471
  const { currency: currencyOptions } = useDContext();
@@ -1458,19 +1473,8 @@ function DInputCurrency(_a, ref) {
1458
1473
  const { inputRef, innerValue, innerType, handleOnFocus, handleOnChange, handleOnBlur, generateStyleVariables, generateSymbolStyleVariables, } = useInputCurrency(currencyOptions, value, onFocus, onChange, onBlur, ref);
1459
1474
  return (jsx(ForwardedDInput, Object.assign({ ref: inputRef, value: innerValue, onChange: handleOnChange, style: generateStyleVariables, inputMode: "decimal", type: innerType, onFocus: handleOnFocus, onBlur: handleOnBlur, onWheel: handleOnWheel, inputStart: (jsx("span", { slot: "input-start", style: generateSymbolStyleVariables, children: currencyCode || currencyOptions.symbol })) }, props)));
1460
1475
  }
1461
- const ForwardedDInputCurrencyBase = forwardRef(DInputCurrency);
1462
- ForwardedDInputCurrencyBase.displayName = 'DInputCurrency';
1463
-
1464
- /**
1465
- * @deprecated
1466
- */
1467
- function DInputSearch(_a, ref) {
1468
- var { type, iconEnd: iconEndProp, iconEndAriaLabel = 'search' } = _a, props = __rest(_a, ["type", "iconEnd", "iconEndAriaLabel"]);
1469
- const inputRef = useProvidedRefOrCreate(ref);
1470
- return (jsx(ForwardedDInput, Object.assign({ ref: inputRef, type: "text", iconEnd: "search", iconEndAriaLabel: iconEndAriaLabel }, props)));
1471
- }
1472
- const ForwardedDInputSearch = forwardRef(DInputSearch);
1473
- ForwardedDInputSearch.displayName = 'DInputSearch';
1476
+ const ForwardedDInputCurrency = forwardRef(DInputCurrency);
1477
+ ForwardedDInputCurrency.displayName = 'DInputCurrency';
1474
1478
 
1475
1479
  function DInputPassword(_a, ref) {
1476
1480
  var { onIconEndClick, iconEndAriaLabel = 'show/hide password' } = _a, props = __rest(_a, ["onIconEndClick", "iconEndAriaLabel"]);
@@ -1487,7 +1491,7 @@ function DInputPassword(_a, ref) {
1487
1491
  const ForwardedDInputPassword = forwardRef(DInputPassword);
1488
1492
  ForwardedDInputPassword.displayName = 'DInputPassword';
1489
1493
 
1490
- function DInputPin({ id: idProp, label = '', labelIcon, labelIconFamilyClass, labelIconFamilyPrefix, placeholder, type = 'text', disabled = false, loading = false, secret = false, characters = 4, innerInputMode = 'text', hint, invalid = false, valid = false, className, style, dataAttributes, onChange, }) {
1494
+ function DInputPin({ id: idProp, label = '', placeholder, type = 'text', disabled = false, loading = false, secret = false, characters = 4, innerInputMode = 'text', hint, invalid = false, valid = false, className, style, dataAttributes, onChange, }) {
1491
1495
  const innerId = useId();
1492
1496
  const id = useMemo(() => idProp || innerId, [idProp, innerId]);
1493
1497
  const [pattern, setPattern] = useState('');
@@ -1520,7 +1524,8 @@ function DInputPin({ id: idProp, label = '', labelIcon, labelIconFamilyClass, la
1520
1524
  }
1521
1525
  if (input.value !== '') {
1522
1526
  setActiveInput((prev) => {
1523
- const newValue = prev.with(index, input.value);
1527
+ const newValue = [...prev];
1528
+ newValue[index] = input.value;
1524
1529
  return newValue;
1525
1530
  });
1526
1531
  if (input.nextSibling) {
@@ -1536,7 +1541,8 @@ function DInputPin({ id: idProp, label = '', labelIcon, labelIconFamilyClass, la
1536
1541
  if (key === 'Backspace') {
1537
1542
  const { value } = currentTarget;
1538
1543
  setActiveInput((prev) => {
1539
- const newVal = prev.with(index, '');
1544
+ const newVal = [...prev];
1545
+ newVal[index] = '';
1540
1546
  return newVal;
1541
1547
  });
1542
1548
  if (currentTarget.previousSibling && value === '') {
@@ -1549,19 +1555,23 @@ function DInputPin({ id: idProp, label = '', labelIcon, labelIconFamilyClass, la
1549
1555
  }
1550
1556
  }, []);
1551
1557
  const focusInput = useCallback((index) => {
1552
- setActiveInput((prev) => prev.with(index, ''));
1558
+ setActiveInput((prev) => {
1559
+ const newVal = [...prev];
1560
+ newVal[index] = '';
1561
+ return newVal;
1562
+ });
1553
1563
  }, []);
1554
1564
  const wheelInput = useCallback((event) => {
1555
1565
  event.currentTarget.blur();
1556
1566
  }, []);
1557
- return (jsxs("div", Object.assign({ className: classNames('d-input-pin', className), style: style }, dataAttributes, { children: [label && (jsxs("label", { htmlFor: "pinIndex0", children: [label, labelIcon && (jsx(DIcon, { icon: labelIcon, size: `var(--${PREFIX_BS}input-label-font-size)`, familyClass: labelIconFamilyClass, familyPrefix: labelIconFamilyPrefix }))] })), jsxs("div", { className: "d-input-pin-group", id: id, children: [Array.from({ length: characters }).map((_, index) => (jsx("input", Object.assign({ className: classNames({
1567
+ return (jsxs("div", Object.assign({ className: classNames('d-input-pin', className), style: style }, dataAttributes, { children: [label && (jsx("label", { htmlFor: "pinIndex0", children: label })), jsxs("div", { className: "d-input-pin-group", id: id, children: [Array.from({ length: characters }).map((_, index) => (jsx("input", Object.assign({ className: classNames({
1558
1568
  'form-control': true,
1559
1569
  'is-invalid': invalid,
1560
1570
  'is-valid': valid,
1561
1571
  }), value: activeInput[index], type: secret ? 'password' : type, "aria-describedby": `${id}State`, inputMode: innerInputMode, id: `pinIndex${index}`, name: `pin-${index}`, maxLength: 1, onInput: (event) => nextInput(event, index), onKeyDown: (event) => prevInput(event, index), onFocus: () => focusInput(index), onWheel: wheelInput, onClick: (event) => event.preventDefault(), onPaste: (event) => handlePaste(event), autoComplete: "off", placeholder: placeholder, disabled: disabled || loading, required: true }, type === 'number' && ({ min: 0, max: 9 })), index))), loading && (jsx("div", { className: "input-group-text", children: jsx("span", { className: "spinner-border spinner-border-sm", role: "status", "aria-hidden": "true", children: jsx("span", { className: "visually-hidden", children: "Loading..." }) }) }))] }), hint && (jsx("div", { className: "form-text", id: `${id}Hint`, children: hint }))] })));
1562
1572
  }
1563
1573
 
1564
- function DInputSelect({ id: idProp, name, label = '', className, style, options = [], labelIcon, labelIconFamilyClass, labelIconFamilyPrefix, disabled = false, loading = false, iconStart, iconStartFamilyClass, iconStartFamilyPrefix, iconStartAriaLabel, iconEnd, iconEndFamilyClass, iconEndFamilyPrefix, iconEndAriaLabel, hint, value, size, floatingLabel = false, invalid = false, valid = false, dataAttributes, valueExtractor, labelExtractor, onChange, onBlur, onIconStartClick, onIconEndClick, }) {
1574
+ function DInputSelect({ id: idProp, name, label = '', className, style, options = [], disabled = false, loading = false, iconStart, iconStartFamilyClass, iconStartFamilyPrefix, iconStartAriaLabel, iconEnd, iconEndFamilyClass, iconEndFamilyPrefix, iconEndAriaLabel, hint, value, size, floatingLabel = false, invalid = false, valid = false, dataAttributes, valueExtractor, labelExtractor, onChange, onBlur, onIconStartClick, onIconEndClick, }) {
1565
1575
  const innerId = useId();
1566
1576
  const id = useMemo(() => idProp || innerId, [idProp, innerId]);
1567
1577
  const internalValueExtractor = useCallback((option) => {
@@ -1629,12 +1639,9 @@ function DInputSelect({ id: idProp, name, label = '', className, style, options
1629
1639
  valid,
1630
1640
  size,
1631
1641
  ]);
1632
- const labelComponent = useMemo(() => (jsxs("label", { htmlFor: id, children: [label, labelIcon && (jsx(DIcon, { icon: labelIcon, size: `var(--${PREFIX_BS}input-label-font-size)`, familyClass: labelIconFamilyClass, familyPrefix: labelIconFamilyPrefix }))] })), [
1642
+ const labelComponent = useMemo(() => (jsx("label", { htmlFor: id, children: label })), [
1633
1643
  id,
1634
1644
  label,
1635
- labelIcon,
1636
- labelIconFamilyClass,
1637
- labelIconFamilyPrefix,
1638
1645
  ]);
1639
1646
  const dynamicComponent = useMemo(() => {
1640
1647
  if (floatingLabel) {
@@ -1702,38 +1709,7 @@ function DInputRange(_a, ref) {
1702
1709
  const ForwardedDInputRange = forwardRef(DInputRange);
1703
1710
  ForwardedDInputRange.displayName = 'DInputRange';
1704
1711
 
1705
- /**
1706
- * @deprecated Please use DListGroup.Item or DListGroupItem instead
1707
- */
1708
- function DListItem({ children, className, style, active = false, disabled = false, theme, onClick, }) {
1709
- const Tag = useMemo(() => (onClick ? 'button' : 'div'), [onClick]);
1710
- return (jsx(Tag, Object.assign({}, Tag === 'button' && {
1711
- onClick,
1712
- type: 'button',
1713
- }, { className: classNames('list-group-item list-group-item-action', theme ? `list-group-item-${theme}` : undefined, className, {
1714
- active,
1715
- disabled,
1716
- }), style: style }, active && { 'aria-current': true }, { children: children })));
1717
- }
1718
-
1719
- /**
1720
- * @deprecated Please use DListGroup instead
1721
- */
1722
- function DList({ children, className, style, flush = false, numbered = false, horizontal = false, horizontalBreakpoint, dataAttributes, }) {
1723
- if (flush && horizontal) {
1724
- throw new Error("Horizontal and Flush props don't work together");
1725
- }
1726
- return (jsx("div", Object.assign({ className: classNames('list-group', {
1727
- 'list-group-flush': flush && !horizontal,
1728
- 'list-group-numbered': numbered,
1729
- 'list-group-horizontal': horizontal && !horizontalBreakpoint,
1730
- }, (horizontal && horizontalBreakpoint) && `list-group-horizontal-${horizontalBreakpoint}`, className), style: style }, dataAttributes, { children: children })));
1731
- }
1732
- var DList$1 = Object.assign(DList, {
1733
- Item: DListItem,
1734
- });
1735
-
1736
- function DListGroupItem({ as = 'li', action: actionProp, active, disabled, href, onClick, theme, children, className, style, dataAttributes, }) {
1712
+ function DListGroupItem({ as = 'li', action: actionProp, active, disabled, href, onClick, color, iconStart, iconStartFamilyClass, iconStartFamilyPrefix, iconStartMaterialStyle, iconEnd, iconEndFamilyClass, iconEndFamilyPrefix, iconEndMaterialStyle, children, className, style, dataAttributes, }) {
1737
1713
  const Tag = useMemo(() => {
1738
1714
  if (href) {
1739
1715
  return 'a';
@@ -1752,17 +1728,17 @@ function DListGroupItem({ as = 'li', action: actionProp, active, disabled, href,
1752
1728
  const generateClasses = useMemo(() => ({
1753
1729
  'list-group-item': true,
1754
1730
  'list-group-item-action': action,
1755
- [`list-group-item-${theme}`]: !!theme,
1731
+ [`list-group-item-${color}`]: !!color,
1756
1732
  active,
1757
1733
  disabled,
1758
- }), [action, active, disabled, theme]);
1734
+ }), [action, active, disabled, color]);
1759
1735
  const ariaAttributes = useMemo(() => {
1760
1736
  if (Tag === 'button') {
1761
1737
  return Object.assign(Object.assign({}, active && { 'aria-current': true }), disabled && { disabled: true });
1762
1738
  }
1763
1739
  return Object.assign(Object.assign({}, active && { 'aria-current': true }), disabled && { 'aria-disabled': true });
1764
1740
  }, [Tag, active, disabled]);
1765
- return (jsx(Tag, Object.assign({ className: classNames(generateClasses, className), style: style }, Tag === 'a' && href && { href }, onClick && { onClick }, ariaAttributes, dataAttributes, Tag === 'button' && { type: 'button' }, { children: children })));
1741
+ return (jsxs(Tag, Object.assign({ className: classNames(generateClasses, className), style: style }, Tag === 'a' && href && { href }, onClick && { onClick }, ariaAttributes, dataAttributes, Tag === 'button' && { type: 'button' }, { children: [iconStart && (jsx(DIcon, { icon: iconStart, familyClass: iconStartFamilyClass, familyPrefix: iconStartFamilyPrefix, materialStyle: iconStartMaterialStyle })), jsx("div", { className: "w-100", children: children }), iconEnd && (jsx(DIcon, { icon: iconEnd, familyClass: iconEndFamilyClass, familyPrefix: iconEndFamilyPrefix, materialStyle: iconEndMaterialStyle, className: "ms-auto" }))] })));
1766
1742
  }
1767
1743
 
1768
1744
  function DListGroup({ as = 'ul', numbered, flush, horizontal, children, className, style, dataAttributes, }) {
@@ -1865,11 +1841,8 @@ var DOffcanvas$1 = Object.assign(DOffcanvas, {
1865
1841
  });
1866
1842
 
1867
1843
  function DPaginator(_a) {
1868
- var { className, page, current, showArrows, navClassName } = _a, props = __rest(_a, ["className", "page", "current", "showArrows", "navClassName"]);
1869
- const backwardCompatibilityProps = useMemo(() => (Object.assign(Object.assign(Object.assign(Object.assign({}, props), { current: Number(page !== undefined ? page : current) }), showArrows !== undefined && { renderNav: showArrows }), props.extraClassName === undefined && className !== undefined && {
1870
- extraClassName: className,
1871
- })), [props, page, current, showArrows, className]);
1872
- return (jsx(ResponsivePagination, Object.assign({ navClassName: classNames('page-item-arrow', navClassName) }, backwardCompatibilityProps)));
1844
+ var { navClassName } = _a, props = __rest(_a, ["navClassName"]);
1845
+ return (jsx(ResponsivePagination, Object.assign({ navClassName: classNames('page-item-arrow', navClassName) }, props)));
1873
1846
  }
1874
1847
 
1875
1848
  function DPopover({ children, renderComponent, open, setOpen, adjustContentToRender = false, className, style, dataAttributes, }) {
@@ -1910,115 +1883,14 @@ function DPopover({ children, renderComponent, open, setOpen, adjustContentToRen
1910
1883
  }), ref: refs.setFloating, style: floatingStyles, "aria-labelledby": headingId }, getFloatingProps(), { children: children })) }))] })));
1911
1884
  }
1912
1885
 
1913
- function DProgress({ className, style, currentValue, minValue = 0, maxValue = 100, hideCurrentValue = false, enableStripedAnimation = false, dataAttributes, }) {
1886
+ function DProgress({ className, style, currentValue, minValue = 0, maxValue = 100, hideCurrentValue = false, enableStripedAnimation = false, height, dataAttributes, }) {
1914
1887
  const percentage = useMemo(() => (Math.round((currentValue * 100) / maxValue)), [currentValue, maxValue]);
1915
1888
  const formatProgress = useMemo(() => `${percentage}%`, [percentage]);
1916
1889
  const generateClasses = useMemo(() => ({
1917
1890
  'progress-bar': true,
1918
1891
  'progress-bar-striped progress-bar-animated': enableStripedAnimation,
1919
1892
  }), [enableStripedAnimation]);
1920
- return (jsx("div", Object.assign({ className: classNames('progress', className) }, dataAttributes, { children: jsx("div", { className: classNames(generateClasses), role: "progressbar", "aria-label": "Progress bar", style: Object.assign({ width: formatProgress }, style), "aria-valuenow": currentValue, "aria-valuemin": minValue, "aria-valuemax": maxValue, children: !hideCurrentValue && formatProgress }) })));
1921
- }
1922
-
1923
- function DQuickActionButton({ line1, line2, className, actionIcon, actionIconFamilyClass, actionIconFamilyPrefix, actionIconTheme, representativeImage, representativeIcon, representativeIconTheme = 'secondary', representativeIconHasCircle = false, representativeIconFamilyClass, representativeIconFamilyPrefix, onClick, href, hrefTarget, style, dataAttributes, }) {
1924
- const Tag = useMemo(() => {
1925
- if (href) {
1926
- return 'a';
1927
- }
1928
- if (onClick) {
1929
- return 'button';
1930
- }
1931
- return 'div';
1932
- }, [href, onClick]);
1933
- const tagProps = useMemo(() => {
1934
- if (href) {
1935
- return {
1936
- className: classNames('d-quick-action-button', 'd-quick-action-button-feedback', className),
1937
- href,
1938
- target: hrefTarget,
1939
- };
1940
- }
1941
- if (onClick) {
1942
- return {
1943
- className: classNames('d-quick-action-button', 'd-quick-action-button-feedback', className),
1944
- onClick,
1945
- };
1946
- }
1947
- return {
1948
- className: classNames('d-quick-action-button', className),
1949
- };
1950
- }, [
1951
- className,
1952
- href,
1953
- hrefTarget,
1954
- onClick,
1955
- ]);
1956
- return (jsxs(Tag, Object.assign({ style: style }, tagProps, dataAttributes, { children: [representativeIcon && (jsx(DIcon, { className: "d-quick-action-button-representative-icon", size: representativeIconHasCircle
1957
- ? `var(--${PREFIX_BS}quick-action-button-representative-icon-size)`
1958
- : `var(--${PREFIX_BS}quick-action-button-representative-image-size)`, icon: representativeIcon, hasCircle: representativeIconHasCircle, theme: representativeIconTheme, familyClass: representativeIconFamilyClass, familyPrefix: representativeIconFamilyPrefix })), representativeImage && (jsx("img", { className: "d-quick-action-button-representative-image", src: representativeImage, alt: "" })), jsx("div", { className: "d-quick-action-button-content", children: jsxs("div", { className: "d-quick-action-button-text", children: [jsx("span", { className: "d-quick-action-button-line1", children: line1 }), jsx("small", { className: "d-quick-action-button-line2", children: line2 })] }) }), actionIcon && (jsx(DIcon, { className: "d-quick-action-button-action-icon", icon: actionIcon, size: `var(--${PREFIX_BS}quick-action-button-action-icon-size)`, theme: actionIconTheme, familyClass: actionIconFamilyClass, familyPrefix: actionIconFamilyPrefix }))] })));
1959
- }
1960
-
1961
- /**
1962
- * @deprecated
1963
- */
1964
- function DQuickActionCheck({ id: idProp, name, value, line1, line2, line3, className, style, checked, dataAttributes, onChange, }) {
1965
- const innerId = useId();
1966
- const id = useMemo(() => idProp || innerId, [idProp, innerId]);
1967
- const changeHandler = useCallback((event) => {
1968
- event.stopPropagation();
1969
- onChange === null || onChange === void 0 ? void 0 : onChange(event);
1970
- }, [onChange]);
1971
- return (jsxs("label", Object.assign({ className: classNames('d-quick-action-check', className), htmlFor: id, style: style }, dataAttributes, { children: [jsx(DInputCheck, { id: id, type: "radio", name: name, value: value, checked: checked, onChange: changeHandler }), jsxs("div", { className: "d-quick-action-check-detail", children: [jsx("span", { className: "d-quick-action-check-line1", children: line1 }), jsx("span", { className: "d-quick-action-check-line2", children: line2 })] }), jsx("span", { className: "d-quick-action-check-line3", children: line3 })] })));
1972
- }
1973
-
1974
- function DQuickActionSelect({ id: idProp, name, value, line1, line2, className, style, selected = false, dataAttributes, onChange, }) {
1975
- const innerRef = useRef(null);
1976
- const innerId = useId();
1977
- const id = useMemo(() => idProp || innerId, [idProp, innerId]);
1978
- const changeHandler = useCallback((event) => {
1979
- event.stopPropagation();
1980
- onChange === null || onChange === void 0 ? void 0 : onChange(event);
1981
- }, [onChange]);
1982
- useEffect(() => {
1983
- if (innerRef.current) {
1984
- innerRef.current.checked = selected;
1985
- }
1986
- }, [selected]);
1987
- return (jsxs("label", Object.assign({ className: classNames('d-quick-action-select', className), htmlFor: id, style: style }, dataAttributes, { children: [jsx("input", { ref: innerRef, id: id, type: "radio", name: name, value: value, onChange: changeHandler }), jsx("span", { className: "d-quick-action-select-line1", children: line1 }), jsx("span", { className: "d-quick-action-select-line2", children: line2 })] })));
1988
- }
1989
-
1990
- /**
1991
- * @deprecated
1992
- */
1993
- function DQuickActionSwitch({ id: idProp, name, label, hint, checked, disabled, className, style, dataAttributes, onClick, }) {
1994
- const innerId = useId();
1995
- const id = useMemo(() => idProp || innerId, [idProp, innerId]);
1996
- const clickHandler = useCallback((event) => {
1997
- event.stopPropagation();
1998
- onClick === null || onClick === void 0 ? void 0 : onClick(checked);
1999
- }, [checked, onClick]);
2000
- return (jsxs("button", Object.assign({ className: classNames('d-quick-action-switch', className), type: "button", onClick: clickHandler, style: style }, dataAttributes, { children: [jsx("div", { className: "d-quick-action-switch-content", children: jsx(DInputSwitch, { id: id, name: name, disabled: disabled, checked: checked, readonly: true, label: label }) }), jsx("div", { className: "d-quick-action-switch-hint", children: hint })] })));
2001
- }
2002
-
2003
- /**
2004
- * @deprecated Please use https://getbootstrap.com/docs/5.3/components/placeholders/ instead
2005
- */
2006
- function DSkeleton({ speed = 2, viewBox, backgroundColor, foregroundColor, children, }) {
2007
- const innerBackgroundColor = useMemo(() => {
2008
- if (backgroundColor) {
2009
- return backgroundColor;
2010
- }
2011
- const computedStyle = getComputedStyle(document.documentElement);
2012
- return computedStyle.getPropertyValue(`--${PREFIX_BS}secondary-100`);
2013
- }, [backgroundColor]);
2014
- const innerForegroundColor = useMemo(() => {
2015
- if (foregroundColor) {
2016
- return foregroundColor;
2017
- }
2018
- const computedStyle = getComputedStyle(document.documentElement);
2019
- return computedStyle.getPropertyValue(`--${PREFIX_BS}gray-100`);
2020
- }, [foregroundColor]);
2021
- return (jsx(ContentLoader, { speed: speed, viewBox: viewBox, backgroundColor: innerBackgroundColor, foregroundColor: innerForegroundColor, children: children }));
1893
+ return (jsx("div", Object.assign({ className: classNames('progress', className), style: Object.assign({ height }, style) }, dataAttributes, { children: jsx("div", { className: classNames(generateClasses), role: "progressbar", "aria-label": "Progress bar", style: { width: formatProgress }, "aria-valuenow": currentValue, "aria-valuemin": minValue, "aria-valuemax": maxValue, children: !hideCurrentValue && formatProgress }) })));
2022
1894
  }
2023
1895
 
2024
1896
  function DStepper$2({ options, currentStep, iconSuccess: iconSuccessProp, iconSuccessFamilyClass, iconSuccessFamilyPrefix, iconSuccessMaterialStyle = false, vertical = false, completed, alignStart = false, className, style, }) {
@@ -2031,13 +1903,13 @@ function DStepper$2({ options, currentStep, iconSuccess: iconSuccessProp, iconSu
2031
1903
  'd-stepper-desktop': true,
2032
1904
  'is-vertical': vertical,
2033
1905
  'is-align-start': alignStart && !vertical,
2034
- }, className), style: style, children: options.map(({ label, value, description }) => (jsxs("div", { className: "d-step", children: [jsx("div", { className: "d-step-value", children: jsx("div", { className: classNames({
1906
+ }, className), style: style, children: options.map(({ label, value, description }) => (jsxs("div", { className: classNames({
1907
+ 'd-step': true,
1908
+ 'd-step-current': value === currentStep && !completed,
1909
+ }), children: [jsx("div", { className: "d-step-value", children: jsxs("div", { className: classNames({
2035
1910
  'd-step-icon-container': true,
2036
1911
  'd-step-check': value < currentStep || completed,
2037
- 'd-step-current': value === currentStep && !completed,
2038
- }), children: value < currentStep || completed
2039
- ? (jsx(DIcon, { icon: icon, familyClass: iconSuccessFamilyClass, familyPrefix: iconSuccessFamilyPrefix, materialStyle: iconSuccessMaterialStyle, className: "d-step-icon" }))
2040
- : value }) }), jsxs("div", { className: "d-step-text-container", children: [jsx("div", { className: "d-step-label", children: label }), description && (jsx("div", { className: "d-step-description", children: description }))] })] }, value))) }));
1912
+ }), children: [((value < currentStep) || completed) && (jsx(DIcon, { icon: icon, familyClass: iconSuccessFamilyClass, familyPrefix: iconSuccessFamilyPrefix, materialStyle: iconSuccessMaterialStyle, className: "d-step-icon" })), value] }) }), jsxs("div", { className: "d-step-text-container", children: [jsx("div", { className: "d-step-label", children: label }), description && (jsx("div", { className: "d-step-description", children: description }))] })] }, value))) }));
2041
1913
  }
2042
1914
 
2043
1915
  function DStepper$1({ options, currentStep, className, style, }) {
@@ -2077,7 +1949,7 @@ function DStepper({ options, currentStep, iconSuccess, iconSuccessFamilyClass, i
2077
1949
  const ARROW_WIDTH = 8;
2078
1950
  const ARROW_HEIGHT = 4;
2079
1951
  const GAP = 2;
2080
- function DTooltip({ className, childrenClassName, style, offSet = ARROW_HEIGHT + GAP, padding, withFocus = false, withClick = false, withHover = true, open = false, theme = 'dark', placement = 'top', size, Component, children, }) {
1952
+ function DTooltip({ className, childrenClassName, style, offSet = ARROW_HEIGHT + GAP, padding, withFocus = false, withClick = false, withHover = true, open = false, placement = 'top', size, Component, children, }) {
2081
1953
  const [isOpen, setIsOpen] = useState(open);
2082
1954
  const arrowRef = useRef(null);
2083
1955
  const { refs, context, floatingStyles, } = useFloating({
@@ -2108,10 +1980,16 @@ function DTooltip({ className, childrenClassName, style, offSet = ARROW_HEIGHT +
2108
1980
  dismiss,
2109
1981
  role,
2110
1982
  ]);
2111
- const generateClasses = useMemo(() => (Object.assign({ 'tooltip show': true, [`tooltip-${size}`]: !!size, [`tooltip-${theme}`]: !!theme }, className && { [className]: true })), [size, theme, className]);
1983
+ const generateClasses = useMemo(() => (Object.assign({ 'tooltip show': true, [`tooltip-${size}`]: !!size }, className && { [className]: true })), [size, className]);
2112
1984
  return (jsxs(Fragment$1, { children: [jsx("div", Object.assign({ className: childrenClassName, ref: refs.setReference }, getReferenceProps(), { children: Component })), jsx(FloatingPortal, { children: isOpen && (jsxs("div", Object.assign({ className: classNames(generateClasses), ref: refs.setFloating, style: Object.assign(Object.assign({}, floatingStyles), style) }, getFloatingProps(), { children: [jsx(FloatingArrow, { ref: arrowRef, context: context, width: ARROW_WIDTH, height: ARROW_HEIGHT }), jsx("div", { className: "tooltip-inner", children: children })] }))) })] }));
2113
1985
  }
2114
1986
 
1987
+ function DTimeline({ className, style, dataAttributes, items, }) {
1988
+ return (jsx("div", Object.assign({ style: style, className: classNames('d-timeline', className) }, dataAttributes, { children: items.map((item, index) => (jsxs("div", { className: classNames('d-timeline-item', {
1989
+ [`d-timeline-item-${item.status}`]: item.status,
1990
+ }), children: [jsx("div", { className: "d-timeline-item-connector" }), jsx("div", { className: "d-timeline-item-icon", children: jsx("i", { className: `bi bi-${item.icon || 'check'}` }) }), jsxs("div", { className: "d-timeline-item-content", children: [jsx("div", { className: "d-timeline-item-title", children: item.title }), item.description && jsx("div", { className: "d-timeline-item-description", children: item.description }), item.time && jsx("div", { className: "d-timeline-item-time", children: item.time }), item.children] })] }, index))) })));
1991
+ }
1992
+
2115
1993
  const TabContext = createContext(undefined);
2116
1994
  function useTabContext() {
2117
1995
  const context = useContext(TabContext);
@@ -2150,7 +2028,7 @@ function DTabs({ children, defaultSelected, onChange, options, className, classN
2150
2028
  'flex-column': !vertical || variant === 'tabs',
2151
2029
  }), style: style }, dataAttributes, { children: [jsx("nav", { className: classNames(generateClasses), children: options.map((option) => (jsx("button", { id: `${option.tab}Tab`, className: classNames('nav-link', {
2152
2030
  active: option.tab === selected,
2153
- }, classNameTab), type: "button", role: "tab", "aria-controls": `${option.tab}Pane`, "aria-selected": option.tab === selected, disabled: option.disabled, onClick: () => onSelect(option), children: option.label }, option.label))) }), jsx("div", { className: "tab-content w-100", children: children })] })) }));
2031
+ }, classNameTab), type: "button", role: "tab", "aria-controls": `${option.tab}Pane`, "aria-selected": option.tab === selected, disabled: option.disabled, onClick: () => onSelect(option), children: option.label }, option.tab))) }), jsx("div", { className: "tab-content w-100", children: children })] })) }));
2154
2032
  }
2155
2033
  var DTabs$1 = Object.assign(DTabs, {
2156
2034
  Tab: DTabContent,
@@ -2182,20 +2060,18 @@ function useDToast() {
2182
2060
  if (typeof data === 'function') {
2183
2061
  return toast.custom(data, toastProps);
2184
2062
  }
2185
- const { title, description, icon, closeIcon, timestamp, theme, soft, } = data;
2063
+ const { title, description, icon, closeIcon, timestamp, color, } = data;
2186
2064
  return toast.custom(({ id, visible }) => {
2187
2065
  if (!visible) {
2188
2066
  return null;
2189
2067
  }
2190
2068
  if (!description) {
2191
2069
  return (jsx(DToast$1, { className: classNames({
2192
- [`toast-${theme}`]: !!theme && !soft,
2193
- [`toast-soft-${theme}`]: !!theme && !!soft,
2070
+ [`toast-${color}`]: !!color,
2194
2071
  }, 'show'), children: jsxs(DToast$1.Body, { children: [icon && (jsx(DIcon, { className: "toast-icon", icon: icon })), jsx("p", { className: "toast-title", children: title }), jsx("button", { type: "button", className: "d-close align-self-center", "aria-label": "Close", onClick: () => toast.dismiss(id), children: jsx(DIcon, { icon: closeIcon || xLg }) })] }) }));
2195
2072
  }
2196
2073
  return (jsxs(DToast$1, { className: classNames({
2197
- [`toast-${theme}`]: !!theme && !soft,
2198
- [`toast-soft-${theme}`]: !!theme && !!soft,
2074
+ [`toast-${color}`]: !!color,
2199
2075
  }, 'show'), children: [jsxs(DToast$1.Header, { children: [icon && (jsx(DIcon, { className: "toast-icon", icon: icon })), jsx("p", { className: "toast-title", children: title }), timestamp && (jsx("small", { className: "toast-timestamp", children: timestamp })), jsx("button", { type: "button", className: "d-close align-self-center", "aria-label": "Close", onClick: () => toast.dismiss(id), children: jsx(DIcon, { icon: closeIcon || xLg }) })] }), jsx(DToast$1.Body, { children: jsx("span", { children: description }) })] }));
2200
2076
  }, toastProps);
2201
2077
  }, [xLg]);
@@ -2266,7 +2142,7 @@ function validatePhoneNumber(phone) {
2266
2142
  }
2267
2143
 
2268
2144
  function DInputPhone(_a, ref) {
2269
- var { id: idProp, style, className, label = '', labelIcon, labelIconFamilyClass, labelIconFamilyPrefix, labelIconMaterialStyle, disabled = false, loading = false, iconFamilyClass, iconFamilyPrefix, iconMaterialStyle, iconEnd, iconEndDisabled, iconEndFamilyClass, iconEndFamilyPrefix, iconEndAriaLabel, iconEndTabIndex, iconEndMaterialStyle, hint, size, invalid = false, valid = false, floatingLabel = false, inputEnd, value, placeholder = '', dataAttributes, onChange, onIconEndClick, countrySelectorProps, filteredCountries, defaultCountry = 'cl' } = _a, inputProps = __rest(_a, ["id", "style", "className", "label", "labelIcon", "labelIconFamilyClass", "labelIconFamilyPrefix", "labelIconMaterialStyle", "disabled", "loading", "iconFamilyClass", "iconFamilyPrefix", "iconMaterialStyle", "iconEnd", "iconEndDisabled", "iconEndFamilyClass", "iconEndFamilyPrefix", "iconEndAriaLabel", "iconEndTabIndex", "iconEndMaterialStyle", "hint", "size", "invalid", "valid", "floatingLabel", "inputEnd", "value", "placeholder", "dataAttributes", "onChange", "onIconEndClick", "countrySelectorProps", "filteredCountries", "defaultCountry"]);
2145
+ var { id: idProp, style, className, label = '', disabled = false, loading = false, iconFamilyClass, iconFamilyPrefix, iconMaterialStyle, iconEnd, iconEndDisabled, iconEndFamilyClass, iconEndFamilyPrefix, iconEndAriaLabel, iconEndTabIndex, iconEndMaterialStyle, hint, size, invalid = false, valid = false, floatingLabel = false, inputEnd, value, placeholder = '', dataAttributes, onChange, onIconEndClick, countrySelectorProps, filteredCountries, defaultCountry = 'cl' } = _a, inputProps = __rest(_a, ["id", "style", "className", "label", "disabled", "loading", "iconFamilyClass", "iconFamilyPrefix", "iconMaterialStyle", "iconEnd", "iconEndDisabled", "iconEndFamilyClass", "iconEndFamilyPrefix", "iconEndAriaLabel", "iconEndTabIndex", "iconEndMaterialStyle", "hint", "size", "invalid", "valid", "floatingLabel", "inputEnd", "value", "placeholder", "dataAttributes", "onChange", "onIconEndClick", "countrySelectorProps", "filteredCountries", "defaultCountry"]);
2270
2146
  const innerRef = useProvidedRefOrCreate(ref);
2271
2147
  const innerId = useId();
2272
2148
  const id = useMemo(() => idProp || innerId, [idProp, innerId]);
@@ -2325,13 +2201,9 @@ function DInputPhone(_a, ref) {
2325
2201
  placeholder,
2326
2202
  valid,
2327
2203
  ]);
2328
- const labelComponent = useMemo(() => (jsxs("label", { htmlFor: id, children: [label, labelIcon && (jsx(DIcon, { icon: labelIcon, size: `var(--${PREFIX_BS}label-font-size)`, familyClass: labelIconFamilyClass, familyPrefix: labelIconFamilyPrefix, materialStyle: labelIconMaterialStyle }))] })), [
2204
+ const labelComponent = useMemo(() => (jsx("label", { htmlFor: id, children: label })), [
2329
2205
  id,
2330
2206
  label,
2331
- labelIcon,
2332
- labelIconFamilyClass,
2333
- labelIconFamilyPrefix,
2334
- labelIconMaterialStyle,
2335
2207
  ]);
2336
2208
  const dynamicComponent = useMemo(() => {
2337
2209
  if (floatingLabel) {
@@ -2352,5 +2224,87 @@ function DInputPhone(_a, ref) {
2352
2224
  const ForwardedDInputPhone = forwardRef(DInputPhone);
2353
2225
  ForwardedDInputPhone.displayName = 'DInputPhone';
2354
2226
 
2355
- export { DAlert, DAvatar, DBadge, DBoxFile, DButton, DButtonIcon, DCard$1 as DCard, DCardBody, DCardFooter, DCardHeader, DCarousel$1 as DCarousel, DCarouselSlide, DChip, DCollapse, DContext, DContextProvider, DCurrencyText, DDatePicker, DIcon, DIconBase, ForwardedDInput as DInput, DInputCheck, ForwardedDInputCounter as DInputCounter, ForwardedDInputCurrencyBase as DInputCurrency, ForwardedDInputCurrencyBase$1 as DInputCurrencyBase, ForwardedDInputMask as DInputMask, ForwardedDInputPassword as DInputPassword, ForwardedDInputPhone as DInputPhone, DInputPin, ForwardedDInputRange as DInputRange, ForwardedDInputSearch as DInputSearch, DInputSelect, DInputSwitch, DList$1 as DList, DListGroup$1 as DListGroup, DListGroupItem, DListItem, DModal$1 as DModal, DModalBody, DModalFooter, DModalHeader, DOffcanvas$1 as DOffcanvas, DOffcanvasBody, DOffcanvasFooter, DOffcanvasHeader, DPaginator, DPopover, DProgress, DQuickActionButton, DQuickActionCheck, DQuickActionSelect, DQuickActionSwitch, DSelect$1 as DSelect, DSkeleton, DStepper, DStepper$2 as DStepperDesktop, DStepper$1 as DStepperMobile, DTabContent, DTableHead, DTabs$1 as DTabs, DToast$1 as DToast, DToastContainer, DTooltip, changeQueryString, checkMediaQuery, configureI8n as configureI18n, formatCurrency, getCssVariable, getQueryString, subscribeToMediaQuery, useDContext, useDPortalContext, useDToast, useDisableBodyScrollEffect, useDisableInputWheel, useFormatCurrency, useInputCurrency, useItemSelection, useMediaBreakpointUpLg, useMediaBreakpointUpMd, useMediaBreakpointUpSm, useMediaBreakpointUpXl, useMediaBreakpointUpXs, useMediaBreakpointUpXxl, useMediaQuery, usePortal, useProvidedRefOrCreate, useStackState, useTabContext, validatePhoneNumber };
2227
+ const DEFAULT_IMAGE = 'https://cdn.modyo.cloud/uploads/06b434f7-b943-4f54-9543-84a904e189aa/original/Visa_Logo_1_.png';
2228
+ const CHIP_IMAGE = 'https://cdn.modyo.cloud/uploads/4660ad00-e5d8-477e-8919-52b53d0a26fb/original/chip-debit-svgrepo-com_1_.png';
2229
+ function DCreditCard({ brand = 'visa', name, number, holderText = 'Card Holder', logoImage, isChipVisible = true, className, isVertical = false, }) {
2230
+ return (jsxs("div", { className: classNames('d-credit-card overflow-hidden text-white', 'position-relative rounded-3', 'd-none d-lg-flex', isVertical && 'is-vertical', className), children: [jsxs("div", { className: "d-credit-card-header", children: [jsx("img", { src: logoImage || DEFAULT_IMAGE, alt: brand, className: "d-credit-card-logo", width: 100 }), isChipVisible && (jsx("div", { className: "d-credit-card-chip p-2 rounded-2", children: jsx("img", { src: CHIP_IMAGE, alt: "chip", width: 30, className: "d-credit-card-chip-image" }) }))] }), jsxs("div", { className: "d-credit-card-details mt-auto d-none d-sm-block", children: [jsx("div", { className: "d-credit-card-number d-none d-sm-block mb-4", children: number }), jsx("small", { className: "d-block opacity-50", children: holderText }), jsx("span", { className: "name", children: name })] })] }));
2231
+ }
2232
+
2233
+ const getItemClass = (action) => {
2234
+ const base = `dropdown-item d-flex align-items-center
2235
+ ${action.color ? `dropdown-item-${action.color}` : ''} ${action.disabled ? 'disabled' : ''}`;
2236
+ return base;
2237
+ };
2238
+ function DDropdown({ actions, dropdownToggle, className, }) {
2239
+ const [open, setOpen] = useState(false);
2240
+ const dropdownRef = useRef(null);
2241
+ const [position, setPosition] = useState('down'); // 🆕
2242
+ // Cerrar al hacer click fuera
2243
+ useEffect(() => {
2244
+ const handleClickOutside = (event) => {
2245
+ if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
2246
+ setOpen(false);
2247
+ }
2248
+ };
2249
+ document.addEventListener('mousedown', handleClickOutside);
2250
+ return () => document.removeEventListener('mousedown', handleClickOutside);
2251
+ }, []);
2252
+ // 🆕 Calcular posición del menú al abrir
2253
+ useEffect(() => {
2254
+ if (open && dropdownRef.current) {
2255
+ const rect = dropdownRef.current.getBoundingClientRect();
2256
+ const spaceBottom = window.innerHeight - rect.bottom;
2257
+ const spaceRight = window.innerWidth - rect.right;
2258
+ if (spaceBottom < 150) {
2259
+ setPosition('up');
2260
+ }
2261
+ else if (spaceRight < 150) {
2262
+ setPosition('start');
2263
+ }
2264
+ else {
2265
+ setPosition('down');
2266
+ }
2267
+ }
2268
+ }, [open]);
2269
+ let ToggleElement;
2270
+ if (dropdownToggle) {
2271
+ if (typeof dropdownToggle === 'function') {
2272
+ ToggleElement = dropdownToggle({ open, toggle: () => setOpen(!open) });
2273
+ }
2274
+ else {
2275
+ ToggleElement = dropdownToggle;
2276
+ }
2277
+ }
2278
+ else {
2279
+ ToggleElement = (jsx(DButtonIcon, { variant: "link", stopPropagationEnabled: false, onClick: () => setOpen(!open), icon: "MoreVertical" }));
2280
+ }
2281
+ return (jsxs("div", { className: `dropdown position-relative drop-${position} ${className}`, ref: dropdownRef, children: [ToggleElement, jsx("ul", { style: {
2282
+ position: 'absolute',
2283
+ top: position === 'up' ? 'auto' : '100%',
2284
+ bottom: position === 'up' ? '100%' : 'auto',
2285
+ left: position === 'start' ? 'auto' : 0,
2286
+ right: position === 'start' ? '0' : 'auto',
2287
+ transform: 'translateY(4px)',
2288
+ }, className: `dropdown-menu p-2 ${open ? 'show' : ''}`, children: actions.map((action, index) => {
2289
+ if (action.isDivider) {
2290
+ return (jsx("hr", { className: "dropdown-divider" }, index));
2291
+ }
2292
+ return (jsx("li", { children: action.href ? (jsxs("a", { className: getItemClass(action), href: action.href, onClick: (e) => {
2293
+ if (action.disabled) {
2294
+ e.preventDefault();
2295
+ }
2296
+ else {
2297
+ setOpen(false);
2298
+ }
2299
+ }, children: [action.icon && (jsx(DIcon, { icon: action.icon, className: "me-2", size: "1rem" })), action.label] })) : (jsxs("button", { className: getItemClass(action), type: "button", onClick: () => {
2300
+ var _a;
2301
+ if (!action.disabled) {
2302
+ (_a = action.onClick) === null || _a === void 0 ? void 0 : _a.call(action);
2303
+ setOpen(false);
2304
+ }
2305
+ }, disabled: action.disabled, children: [action.icon && (jsx(DIcon, { icon: action.icon, className: "me-2", size: "1rem" })), action.label] })) }, index));
2306
+ }) })] }));
2307
+ }
2308
+
2309
+ export { DAlert, DAvatar, DBadge, DBox, DBoxFile, DButton, DButtonIcon, DCard$1 as DCard, DCardBody, DCardFooter, DCardHeader, DCarousel$1 as DCarousel, DCarouselSlide, DChip, DCollapse, DContext, DContextProvider, DCreditCard, DCurrencyText, DDatePicker, DDropdown, DIcon, DIconBase, ForwardedDInput as DInput, DInputCheck, ForwardedDInputCounter as DInputCounter, ForwardedDInputCurrency as DInputCurrency, ForwardedDInputMask as DInputMask, ForwardedDInputPassword as DInputPassword, ForwardedDInputPhone as DInputPhone, DInputPin, ForwardedDInputRange as DInputRange, DInputSelect, DInputSwitch, DLayout$1 as DLayout, DLayoutPane, DListGroup$1 as DListGroup, DListGroupItem, DModal$1 as DModal, DModalBody, DModalFooter, DModalHeader, DOffcanvas$1 as DOffcanvas, DOffcanvasBody, DOffcanvasFooter, DOffcanvasHeader, DPaginator, DPopover, DProgress, DSelect$1 as DSelect, DStepper, DStepper$2 as DStepperDesktop, DStepper$1 as DStepperMobile, DTabContent, DTableHead, DTabs$1 as DTabs, DTimeline, DToast$1 as DToast, DToastContainer, DTooltip, changeQueryString, checkMediaQuery, configureI8n as configureI18n, formatCurrency, getCssVariable, getQueryString, subscribeToMediaQuery, useDContext, useDPortalContext, useDToast, useDisableBodyScrollEffect, useDisableInputWheel, useFormatCurrency, useInputCurrency, useItemSelection, useMediaBreakpointUpLg, useMediaBreakpointUpMd, useMediaBreakpointUpSm, useMediaBreakpointUpXl, useMediaBreakpointUpXs, useMediaBreakpointUpXxl, useMediaQuery, usePortal, useProvidedRefOrCreate, useStackState, useTabContext, validatePhoneNumber };
2356
2310
  //# sourceMappingURL=index.esm.js.map