@dynamic-framework/ui-react 2.9.0 → 2.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (402) hide show
  1. package/dist/css/dynamic-ui.css +1 -1
  2. package/dist/css/dynamic-ui.min.css +1 -1
  3. package/dist/esm/components/DAlert/DAlert.js +16 -0
  4. package/dist/esm/components/DAlert/DAlert.js.map +1 -0
  5. package/dist/esm/components/DAlert/index.js +6 -0
  6. package/dist/esm/components/DAlert/index.js.map +1 -0
  7. package/dist/esm/components/DAvatar/DAvatar.js +23 -0
  8. package/dist/esm/components/DAvatar/DAvatar.js.map +1 -0
  9. package/dist/esm/components/DAvatar/index.js +6 -0
  10. package/dist/esm/components/DAvatar/index.js.map +1 -0
  11. package/dist/esm/components/DBadge/DBadge.js +31 -0
  12. package/dist/esm/components/DBadge/DBadge.js.map +1 -0
  13. package/dist/esm/components/DBadge/index.js +6 -0
  14. package/dist/esm/components/DBadge/index.js.map +1 -0
  15. package/dist/esm/components/DBox/DBox.js +9 -0
  16. package/dist/esm/components/DBox/DBox.js.map +1 -0
  17. package/dist/esm/components/DBox/index.js +6 -0
  18. package/dist/esm/components/DBox/index.js.map +1 -0
  19. package/dist/esm/components/DBoxFile/DBoxFile.js +26 -0
  20. package/dist/esm/components/DBoxFile/DBoxFile.js.map +1 -0
  21. package/dist/esm/components/DBoxFile/index.js +6 -0
  22. package/dist/esm/components/DBoxFile/index.js.map +1 -0
  23. package/dist/esm/components/DBoxFile/useDBoxFile.js +236 -0
  24. package/dist/esm/components/DBoxFile/useDBoxFile.js.map +1 -0
  25. package/dist/esm/components/DBoxFile/utils.js +127 -0
  26. package/dist/esm/components/DBoxFile/utils.js.map +1 -0
  27. package/dist/esm/components/DButton/DButton.js +84 -0
  28. package/dist/esm/components/DButton/DButton.js.map +1 -0
  29. package/dist/esm/components/DButton/index.js +6 -0
  30. package/dist/esm/components/DButton/index.js.map +1 -0
  31. package/dist/esm/components/DButtonIcon/DButtonIcon.js +52 -0
  32. package/dist/esm/components/DButtonIcon/DButtonIcon.js.map +1 -0
  33. package/dist/esm/components/DButtonIcon/index.js +6 -0
  34. package/dist/esm/components/DButtonIcon/index.js.map +1 -0
  35. package/dist/esm/components/DButtonIcon/warnMissingAccessibleName.js +40 -0
  36. package/dist/esm/components/DButtonIcon/warnMissingAccessibleName.js.map +1 -0
  37. package/dist/esm/components/DCard/DCard.js +17 -0
  38. package/dist/esm/components/DCard/DCard.js.map +1 -0
  39. package/dist/esm/components/DCard/components/DCardBody.js +9 -0
  40. package/dist/esm/components/DCard/components/DCardBody.js.map +1 -0
  41. package/dist/esm/components/DCard/components/DCardFooter.js +9 -0
  42. package/dist/esm/components/DCard/components/DCardFooter.js.map +1 -0
  43. package/dist/esm/components/DCard/components/DCardHeader.js +9 -0
  44. package/dist/esm/components/DCard/components/DCardHeader.js.map +1 -0
  45. package/dist/esm/components/DCard/index.js +9 -0
  46. package/dist/esm/components/DCard/index.js.map +1 -0
  47. package/dist/esm/components/DCarousel/DCarousel.js +39 -0
  48. package/dist/esm/components/DCarousel/DCarousel.js.map +1 -0
  49. package/dist/esm/components/DCarousel/components/DCarouselSlide.js +12 -0
  50. package/dist/esm/components/DCarousel/components/DCarouselSlide.js.map +1 -0
  51. package/dist/esm/components/DCarousel/index.js +7 -0
  52. package/dist/esm/components/DCarousel/index.js.map +1 -0
  53. package/dist/esm/components/DChip/DChip.js +18 -0
  54. package/dist/esm/components/DChip/DChip.js.map +1 -0
  55. package/dist/esm/components/DChip/index.js +6 -0
  56. package/dist/esm/components/DChip/index.js.map +1 -0
  57. package/dist/esm/components/DCollapse/DCollapse.js +30 -0
  58. package/dist/esm/components/DCollapse/DCollapse.js.map +1 -0
  59. package/dist/esm/components/DCollapse/index.js +6 -0
  60. package/dist/esm/components/DCollapse/index.js.map +1 -0
  61. package/dist/esm/components/DConfirmModal/DConfirmModalContainer.js +59 -0
  62. package/dist/esm/components/DConfirmModal/DConfirmModalContainer.js.map +1 -0
  63. package/dist/esm/components/DConfirmModal/DConfirmModalUI.js +39 -0
  64. package/dist/esm/components/DConfirmModal/DConfirmModalUI.js.map +1 -0
  65. package/dist/esm/components/DConfirmModal/confirmModalStore.js +38 -0
  66. package/dist/esm/components/DConfirmModal/confirmModalStore.js.map +1 -0
  67. package/dist/esm/components/DCreditCard/DCreditCard.js +15 -0
  68. package/dist/esm/components/DCreditCard/DCreditCard.js.map +1 -0
  69. package/dist/esm/components/DCreditCard/index.js +6 -0
  70. package/dist/esm/components/DCreditCard/index.js.map +1 -0
  71. package/dist/esm/components/DCurrencyText/DCurrencyText.js +10 -0
  72. package/dist/esm/components/DCurrencyText/DCurrencyText.js.map +1 -0
  73. package/dist/esm/components/DCurrencyText/index.js +6 -0
  74. package/dist/esm/components/DCurrencyText/index.js.map +1 -0
  75. package/dist/esm/components/DDataStateWrapper/DDataStateWrapper.js +35 -0
  76. package/dist/esm/components/DDataStateWrapper/DDataStateWrapper.js.map +1 -0
  77. package/dist/esm/components/DDataStateWrapper/components/EmptyState.js +10 -0
  78. package/dist/esm/components/DDataStateWrapper/components/EmptyState.js.map +1 -0
  79. package/dist/esm/components/DDataStateWrapper/components/ErrorState.js +10 -0
  80. package/dist/esm/components/DDataStateWrapper/components/ErrorState.js.map +1 -0
  81. package/dist/esm/components/DDataStateWrapper/components/LoadingState.js +8 -0
  82. package/dist/esm/components/DDataStateWrapper/components/LoadingState.js.map +1 -0
  83. package/dist/esm/components/DDataStateWrapper/index.js +9 -0
  84. package/dist/esm/components/DDataStateWrapper/index.js.map +1 -0
  85. package/dist/esm/components/DDatePicker/DDatePicker.js +54 -0
  86. package/dist/esm/components/DDatePicker/DDatePicker.js.map +1 -0
  87. package/dist/esm/components/DDatePicker/components/DDatePickerHeaderSelector.js +50 -0
  88. package/dist/esm/components/DDatePicker/components/DDatePickerHeaderSelector.js.map +1 -0
  89. package/dist/esm/components/DDatePicker/components/DDatePickerInput.js +16 -0
  90. package/dist/esm/components/DDatePicker/components/DDatePickerInput.js.map +1 -0
  91. package/dist/esm/components/DDatePicker/components/DDatePickerTime.js +11 -0
  92. package/dist/esm/components/DDatePicker/components/DDatePickerTime.js.map +1 -0
  93. package/dist/esm/components/DDatePicker/index.js +6 -0
  94. package/dist/esm/components/DDatePicker/index.js.map +1 -0
  95. package/dist/esm/components/DDropdown/DDropdown.js +315 -0
  96. package/dist/esm/components/DDropdown/DDropdown.js.map +1 -0
  97. package/dist/esm/components/DDropdown/index.js +6 -0
  98. package/dist/esm/components/DDropdown/index.js.map +1 -0
  99. package/dist/esm/components/DErrorBoundary/DErrorBoundary.js +22 -0
  100. package/dist/esm/components/DErrorBoundary/DErrorBoundary.js.map +1 -0
  101. package/dist/esm/components/DErrorBoundary/components/DefaultErrorBoundary.js +10 -0
  102. package/dist/esm/components/DErrorBoundary/components/DefaultErrorBoundary.js.map +1 -0
  103. package/dist/esm/components/DErrorBoundary/index.js +7 -0
  104. package/dist/esm/components/DErrorBoundary/index.js.map +1 -0
  105. package/dist/esm/components/DIcon/DIcon.js +21 -0
  106. package/dist/esm/components/DIcon/DIcon.js.map +1 -0
  107. package/dist/esm/components/DIcon/index.js +6 -0
  108. package/dist/esm/components/DIcon/index.js.map +1 -0
  109. package/dist/esm/components/DIconBase/DIconBase.js +146 -0
  110. package/dist/esm/components/DIconBase/DIconBase.js.map +1 -0
  111. package/dist/esm/components/DIconBase/index.js +6 -0
  112. package/dist/esm/components/DIconBase/index.js.map +1 -0
  113. package/dist/esm/components/DIconBase/resolveIconFromRegistry.js +20 -0
  114. package/dist/esm/components/DIconBase/resolveIconFromRegistry.js.map +1 -0
  115. package/dist/esm/components/DIconBase/warnUnknownIcon.js +59 -0
  116. package/dist/esm/components/DIconBase/warnUnknownIcon.js.map +1 -0
  117. package/dist/esm/components/DInput/DInput.js +83 -0
  118. package/dist/esm/components/DInput/DInput.js.map +1 -0
  119. package/dist/esm/components/DInput/index.js +6 -0
  120. package/dist/esm/components/DInput/index.js.map +1 -0
  121. package/dist/esm/components/DInputCheck/DInputCheck.js +57 -0
  122. package/dist/esm/components/DInputCheck/DInputCheck.js.map +1 -0
  123. package/dist/esm/components/DInputCheck/index.js +6 -0
  124. package/dist/esm/components/DInputCheck/index.js.map +1 -0
  125. package/dist/esm/components/DInputCounter/DInputCounter.js +49 -0
  126. package/dist/esm/components/DInputCounter/DInputCounter.js.map +1 -0
  127. package/dist/esm/components/DInputCounter/index.js +6 -0
  128. package/dist/esm/components/DInputCounter/index.js.map +1 -0
  129. package/dist/esm/components/DInputCurrency/DInputCurrency.js +20 -0
  130. package/dist/esm/components/DInputCurrency/DInputCurrency.js.map +1 -0
  131. package/dist/esm/components/DInputCurrency/index.js +6 -0
  132. package/dist/esm/components/DInputCurrency/index.js.map +1 -0
  133. package/dist/esm/components/DInputMask/DInputMask.js +13 -0
  134. package/dist/esm/components/DInputMask/DInputMask.js.map +1 -0
  135. package/dist/esm/components/DInputMask/index.js +6 -0
  136. package/dist/esm/components/DInputMask/index.js.map +1 -0
  137. package/dist/esm/components/DInputPassword/DInputPassword.js +24 -0
  138. package/dist/esm/components/DInputPassword/DInputPassword.js.map +1 -0
  139. package/dist/esm/components/DInputPassword/index.js +6 -0
  140. package/dist/esm/components/DInputPassword/index.js.map +1 -0
  141. package/dist/esm/components/DInputPhone/DInputPhone.js +96 -0
  142. package/dist/esm/components/DInputPhone/DInputPhone.js.map +1 -0
  143. package/dist/esm/components/DInputPhone/index.js +6 -0
  144. package/dist/esm/components/DInputPhone/index.js.map +1 -0
  145. package/dist/esm/components/DInputPin/DInputPin.js +86 -0
  146. package/dist/esm/components/DInputPin/DInputPin.js.map +1 -0
  147. package/dist/esm/components/DInputPin/index.js +6 -0
  148. package/dist/esm/components/DInputPin/index.js.map +1 -0
  149. package/dist/esm/components/DInputRange/DInputRange.js +46 -0
  150. package/dist/esm/components/DInputRange/DInputRange.js.map +1 -0
  151. package/dist/esm/components/DInputRange/index.js +6 -0
  152. package/dist/esm/components/DInputRange/index.js.map +1 -0
  153. package/dist/esm/components/DInputSearch/DInputSearch.js +57 -0
  154. package/dist/esm/components/DInputSearch/DInputSearch.js.map +1 -0
  155. package/dist/esm/components/DInputSearch/index.js +6 -0
  156. package/dist/esm/components/DInputSearch/index.js.map +1 -0
  157. package/dist/esm/components/DInputSelect/DInputSelect.js +90 -0
  158. package/dist/esm/components/DInputSelect/DInputSelect.js.map +1 -0
  159. package/dist/esm/components/DInputSelect/index.js +6 -0
  160. package/dist/esm/components/DInputSelect/index.js.map +1 -0
  161. package/dist/esm/components/DInputSwitch/DInputSwitch.js +32 -0
  162. package/dist/esm/components/DInputSwitch/DInputSwitch.js.map +1 -0
  163. package/dist/esm/components/DInputSwitch/index.js +6 -0
  164. package/dist/esm/components/DInputSwitch/index.js.map +1 -0
  165. package/dist/esm/components/DLayout/DLayout.js +22 -0
  166. package/dist/esm/components/DLayout/DLayout.js.map +1 -0
  167. package/dist/esm/components/DLayout/components/DLayoutPane.js +16 -0
  168. package/dist/esm/components/DLayout/components/DLayoutPane.js.map +1 -0
  169. package/dist/esm/components/DLayout/index.js +7 -0
  170. package/dist/esm/components/DLayout/index.js.map +1 -0
  171. package/dist/esm/components/DListGroup/DListGroup.js +31 -0
  172. package/dist/esm/components/DListGroup/DListGroup.js.map +1 -0
  173. package/dist/esm/components/DListGroup/components/DListGroupItem.js +41 -0
  174. package/dist/esm/components/DListGroup/components/DListGroupItem.js.map +1 -0
  175. package/dist/esm/components/DListGroup/index.js +7 -0
  176. package/dist/esm/components/DListGroup/index.js.map +1 -0
  177. package/dist/esm/components/DModal/DModal.js +37 -0
  178. package/dist/esm/components/DModal/DModal.js.map +1 -0
  179. package/dist/esm/components/DModal/components/DModalBody.js +9 -0
  180. package/dist/esm/components/DModal/components/DModalBody.js.map +1 -0
  181. package/dist/esm/components/DModal/components/DModalFooter.js +14 -0
  182. package/dist/esm/components/DModal/components/DModalFooter.js.map +1 -0
  183. package/dist/esm/components/DModal/components/DModalHeader.js +15 -0
  184. package/dist/esm/components/DModal/components/DModalHeader.js.map +1 -0
  185. package/dist/esm/components/DModal/index.js +9 -0
  186. package/dist/esm/components/DModal/index.js.map +1 -0
  187. package/dist/esm/components/DOffcanvas/DOffcanvas.js +82 -0
  188. package/dist/esm/components/DOffcanvas/DOffcanvas.js.map +1 -0
  189. package/dist/esm/components/DOffcanvas/components/DOffcanvasBody.js +9 -0
  190. package/dist/esm/components/DOffcanvas/components/DOffcanvasBody.js.map +1 -0
  191. package/dist/esm/components/DOffcanvas/components/DOffcanvasFooter.js +14 -0
  192. package/dist/esm/components/DOffcanvas/components/DOffcanvasFooter.js.map +1 -0
  193. package/dist/esm/components/DOffcanvas/components/DOffcanvasHeader.js +15 -0
  194. package/dist/esm/components/DOffcanvas/components/DOffcanvasHeader.js.map +1 -0
  195. package/dist/esm/components/DOffcanvas/index.js +9 -0
  196. package/dist/esm/components/DOffcanvas/index.js.map +1 -0
  197. package/dist/esm/components/DOtp/DOtp.js +26 -0
  198. package/dist/esm/components/DOtp/DOtp.js.map +1 -0
  199. package/dist/esm/components/DOtp/components/OtpCountdown.js +12 -0
  200. package/dist/esm/components/DOtp/components/OtpCountdown.js.map +1 -0
  201. package/dist/esm/components/DOtp/index.js +6 -0
  202. package/dist/esm/components/DOtp/index.js.map +1 -0
  203. package/dist/esm/components/DPaginator/DPaginator.js +12 -0
  204. package/dist/esm/components/DPaginator/DPaginator.js.map +1 -0
  205. package/dist/esm/components/DPaginator/index.js +6 -0
  206. package/dist/esm/components/DPaginator/index.js.map +1 -0
  207. package/dist/esm/components/DPasswordStrengthMeter/DPasswordStrengthMeter.js +27 -0
  208. package/dist/esm/components/DPasswordStrengthMeter/DPasswordStrengthMeter.js.map +1 -0
  209. package/dist/esm/components/DPasswordStrengthMeter/PasswordCheckItem.js +10 -0
  210. package/dist/esm/components/DPasswordStrengthMeter/PasswordCheckItem.js.map +1 -0
  211. package/dist/esm/components/DPasswordStrengthMeter/PasswordCheckList.js +41 -0
  212. package/dist/esm/components/DPasswordStrengthMeter/PasswordCheckList.js.map +1 -0
  213. package/dist/esm/components/DPasswordStrengthMeter/PasswordStrength.js +23 -0
  214. package/dist/esm/components/DPasswordStrengthMeter/PasswordStrength.js.map +1 -0
  215. package/dist/esm/components/DPasswordStrengthMeter/index.js +6 -0
  216. package/dist/esm/components/DPasswordStrengthMeter/index.js.map +1 -0
  217. package/dist/esm/components/DPopover/DPopover.js +49 -0
  218. package/dist/esm/components/DPopover/DPopover.js.map +1 -0
  219. package/dist/esm/components/DPopover/index.js +6 -0
  220. package/dist/esm/components/DPopover/index.js.map +1 -0
  221. package/dist/esm/components/DProgress/DProgress.js +16 -0
  222. package/dist/esm/components/DProgress/DProgress.js.map +1 -0
  223. package/dist/esm/components/DProgress/index.js +6 -0
  224. package/dist/esm/components/DProgress/index.js.map +1 -0
  225. package/dist/esm/components/DSelect/DSelect.js +60 -0
  226. package/dist/esm/components/DSelect/DSelect.js.map +1 -0
  227. package/dist/esm/components/DSelect/components/DSelectClearIndicator.js +12 -0
  228. package/dist/esm/components/DSelect/components/DSelectClearIndicator.js.map +1 -0
  229. package/dist/esm/components/DSelect/components/DSelectDropdownIndicator.js +12 -0
  230. package/dist/esm/components/DSelect/components/DSelectDropdownIndicator.js.map +1 -0
  231. package/dist/esm/components/DSelect/components/DSelectLoadingIndicator.js +12 -0
  232. package/dist/esm/components/DSelect/components/DSelectLoadingIndicator.js.map +1 -0
  233. package/dist/esm/components/DSelect/components/DSelectMultiValueRemove.js +12 -0
  234. package/dist/esm/components/DSelect/components/DSelectMultiValueRemove.js.map +1 -0
  235. package/dist/esm/components/DSelect/components/DSelectOptionCheck.js +14 -0
  236. package/dist/esm/components/DSelect/components/DSelectOptionCheck.js.map +1 -0
  237. package/dist/esm/components/DSelect/components/DSelectOptionEmoji.js +14 -0
  238. package/dist/esm/components/DSelect/components/DSelectOptionEmoji.js.map +1 -0
  239. package/dist/esm/components/DSelect/components/DSelectOptionIcon.js +15 -0
  240. package/dist/esm/components/DSelect/components/DSelectOptionIcon.js.map +1 -0
  241. package/dist/esm/components/DSelect/components/DSelectPlaceholder.js +14 -0
  242. package/dist/esm/components/DSelect/components/DSelectPlaceholder.js.map +1 -0
  243. package/dist/esm/components/DSelect/components/DSelectSingleValueEmoji.js +15 -0
  244. package/dist/esm/components/DSelect/components/DSelectSingleValueEmoji.js.map +1 -0
  245. package/dist/esm/components/DSelect/components/DSelectSingleValueEmojiText.js +15 -0
  246. package/dist/esm/components/DSelect/components/DSelectSingleValueEmojiText.js.map +1 -0
  247. package/dist/esm/components/DSelect/components/DSelectSingleValueIconText.js +16 -0
  248. package/dist/esm/components/DSelect/components/DSelectSingleValueIconText.js.map +1 -0
  249. package/dist/esm/components/DSelect/index.js +6 -0
  250. package/dist/esm/components/DSelect/index.js.map +1 -0
  251. package/dist/esm/components/DStepper/DStepper.js +13 -0
  252. package/dist/esm/components/DStepper/DStepper.js.map +1 -0
  253. package/dist/esm/components/DStepper/index.js +6 -0
  254. package/dist/esm/components/DStepper/index.js.map +1 -0
  255. package/dist/esm/components/DStepperDesktop/DStepperDesktop.js +27 -0
  256. package/dist/esm/components/DStepperDesktop/DStepperDesktop.js.map +1 -0
  257. package/dist/esm/components/DStepperDesktop/index.js +6 -0
  258. package/dist/esm/components/DStepperDesktop/index.js.map +1 -0
  259. package/dist/esm/components/DStepperMobile/DStepperMobile.js +37 -0
  260. package/dist/esm/components/DStepperMobile/DStepperMobile.js.map +1 -0
  261. package/dist/esm/components/DStepperMobile/index.js +6 -0
  262. package/dist/esm/components/DStepperMobile/index.js.map +1 -0
  263. package/dist/esm/components/DTabs/DTabs.js +117 -0
  264. package/dist/esm/components/DTabs/DTabs.js.map +1 -0
  265. package/dist/esm/components/DTabs/TabContext.js +13 -0
  266. package/dist/esm/components/DTabs/TabContext.js.map +1 -0
  267. package/dist/esm/components/DTabs/components/DTabContent.js +14 -0
  268. package/dist/esm/components/DTabs/components/DTabContent.js.map +1 -0
  269. package/dist/esm/components/DTabs/index.js +8 -0
  270. package/dist/esm/components/DTabs/index.js.map +1 -0
  271. package/dist/esm/components/DTimeline/DTimeline.js +12 -0
  272. package/dist/esm/components/DTimeline/DTimeline.js.map +1 -0
  273. package/dist/esm/components/DTimeline/index.js +6 -0
  274. package/dist/esm/components/DTimeline/index.js.map +1 -0
  275. package/dist/esm/components/DToast/DToast.js +15 -0
  276. package/dist/esm/components/DToast/DToast.js.map +1 -0
  277. package/dist/esm/components/DToast/components/DToastBody.js +9 -0
  278. package/dist/esm/components/DToast/components/DToastBody.js.map +1 -0
  279. package/dist/esm/components/DToast/components/DToastHeader.js +9 -0
  280. package/dist/esm/components/DToast/components/DToastHeader.js.map +1 -0
  281. package/dist/esm/components/DToast/index.js +8 -0
  282. package/dist/esm/components/DToast/index.js.map +1 -0
  283. package/dist/esm/components/DToastContainer/DToastContainer.js +9 -0
  284. package/dist/esm/components/DToastContainer/DToastContainer.js.map +1 -0
  285. package/dist/esm/components/DToastContainer/index.js +7 -0
  286. package/dist/esm/components/DToastContainer/index.js.map +1 -0
  287. package/dist/esm/components/DToastContainer/useDToast.js +58 -0
  288. package/dist/esm/components/DToastContainer/useDToast.js.map +1 -0
  289. package/dist/esm/components/DTooltip/DTooltip.js +51 -0
  290. package/dist/esm/components/DTooltip/DTooltip.js.map +1 -0
  291. package/dist/esm/components/DTooltip/index.js +6 -0
  292. package/dist/esm/components/DTooltip/index.js.map +1 -0
  293. package/dist/esm/components/DVoucher/DVoucher.js +55 -0
  294. package/dist/esm/components/DVoucher/DVoucher.js.map +1 -0
  295. package/dist/esm/components/DVoucher/hooks/useScreenshot.js +30 -0
  296. package/dist/esm/components/DVoucher/hooks/useScreenshot.js.map +1 -0
  297. package/dist/esm/components/DVoucher/hooks/useScreenshotDownload.js +30 -0
  298. package/dist/esm/components/DVoucher/hooks/useScreenshotDownload.js.map +1 -0
  299. package/dist/esm/components/DVoucher/hooks/useScreenshotWebShare.js +27 -0
  300. package/dist/esm/components/DVoucher/hooks/useScreenshotWebShare.js.map +1 -0
  301. package/dist/esm/components/DVoucher/index.js +9 -0
  302. package/dist/esm/components/DVoucher/index.js.map +1 -0
  303. package/dist/esm/components/config.js +14 -0
  304. package/dist/esm/components/config.js.map +1 -0
  305. package/dist/esm/contexts/DContext.js +124 -0
  306. package/dist/esm/contexts/DContext.js.map +1 -0
  307. package/dist/esm/contexts/DPortalContext.js +128 -0
  308. package/dist/esm/contexts/DPortalContext.js.map +1 -0
  309. package/dist/esm/hooks/useConfirmModal.js +63 -0
  310. package/dist/esm/hooks/useConfirmModal.js.map +1 -0
  311. package/dist/esm/hooks/useCountdown.js +45 -0
  312. package/dist/esm/hooks/useCountdown.js.map +1 -0
  313. package/dist/esm/hooks/useDisableBodyScrollEffect.js +52 -0
  314. package/dist/esm/hooks/useDisableBodyScrollEffect.js.map +1 -0
  315. package/dist/esm/hooks/useDisableInputWheel.js +17 -0
  316. package/dist/esm/hooks/useDisableInputWheel.js.map +1 -0
  317. package/dist/esm/hooks/useFormatCurrency.js +16 -0
  318. package/dist/esm/hooks/useFormatCurrency.js.map +1 -0
  319. package/dist/esm/hooks/useInputCurrency.js +76 -0
  320. package/dist/esm/hooks/useInputCurrency.js.map +1 -0
  321. package/dist/esm/hooks/useItemSelection.js +35 -0
  322. package/dist/esm/hooks/useItemSelection.js.map +1 -0
  323. package/dist/esm/hooks/useMediaBreakpointUp.js +30 -0
  324. package/dist/esm/hooks/useMediaBreakpointUp.js.map +1 -0
  325. package/dist/esm/hooks/useMediaQuery.js +11 -0
  326. package/dist/esm/hooks/useMediaQuery.js.map +1 -0
  327. package/dist/esm/hooks/useOtp.js +107 -0
  328. package/dist/esm/hooks/useOtp.js.map +1 -0
  329. package/dist/esm/hooks/usePortal.js +26 -0
  330. package/dist/esm/hooks/usePortal.js.map +1 -0
  331. package/dist/esm/hooks/useProvidedRefOrCreate.js +24 -0
  332. package/dist/esm/hooks/useProvidedRefOrCreate.js.map +1 -0
  333. package/dist/esm/hooks/useResponsiveProp.js +50 -0
  334. package/dist/esm/hooks/useResponsiveProp.js.map +1 -0
  335. package/dist/esm/hooks/useStackState.js +40 -0
  336. package/dist/esm/hooks/useStackState.js.map +1 -0
  337. package/dist/esm/icons/coreIcons.js +55 -0
  338. package/dist/esm/icons/coreIcons.js.map +1 -0
  339. package/dist/esm/index.js +98 -0
  340. package/dist/esm/index.js.map +1 -0
  341. package/dist/esm/utils/attr-accept.js +38 -0
  342. package/dist/esm/utils/attr-accept.js.map +1 -0
  343. package/dist/esm/utils/buildUrl.js +57 -0
  344. package/dist/esm/utils/buildUrl.js.map +1 -0
  345. package/dist/esm/utils/changeQueryString.js +19 -0
  346. package/dist/esm/utils/changeQueryString.js.map +1 -0
  347. package/dist/esm/utils/configureI18n.js +20 -0
  348. package/dist/esm/utils/configureI18n.js.map +1 -0
  349. package/dist/esm/utils/formatCurrency.js +8 -0
  350. package/dist/esm/utils/formatCurrency.js.map +1 -0
  351. package/dist/esm/utils/getCssVariable.js +7 -0
  352. package/dist/esm/utils/getCssVariable.js.map +1 -0
  353. package/dist/esm/utils/getKeyboardFocusableElements.js +11 -0
  354. package/dist/esm/utils/getKeyboardFocusableElements.js.map +1 -0
  355. package/dist/esm/utils/getQueryString.js +8 -0
  356. package/dist/esm/utils/getQueryString.js.map +1 -0
  357. package/dist/esm/utils/mediaQuery.js +13 -0
  358. package/dist/esm/utils/mediaQuery.js.map +1 -0
  359. package/dist/esm/utils/sanitizeHref.js +67 -0
  360. package/dist/esm/utils/sanitizeHref.js.map +1 -0
  361. package/dist/esm/utils/validatePhoneNumber.js +14 -0
  362. package/dist/esm/utils/validatePhoneNumber.js.map +1 -0
  363. package/dist/icons-core.json +33 -0
  364. package/dist/index.esm.js +287 -22
  365. package/dist/index.esm.js.map +1 -1
  366. package/dist/index.js +287 -21
  367. package/dist/index.js.map +1 -1
  368. package/dist/types/components/DButtonIcon/warnMissingAccessibleName.d.ts +18 -0
  369. package/dist/types/components/DIcon/DIcon.d.ts +8 -0
  370. package/dist/types/components/DIconBase/DIconBase.d.ts +43 -1
  371. package/dist/types/components/DIconBase/resolveIconFromRegistry.d.ts +14 -0
  372. package/dist/types/components/DIconBase/warnUnknownIcon.d.ts +13 -0
  373. package/dist/types/components/DInputRange/DInputRange.d.ts +1 -1
  374. package/dist/types/components/config.d.ts +10 -0
  375. package/dist/types/icons/coreIcons.d.ts +24 -0
  376. package/dist/types/icons/index.d.ts +2 -0
  377. package/dist/types/index.d.ts +1 -0
  378. package/package.json +4 -4
  379. package/dist/types/components/DVoucher/hooks/useScreenshotDownload.spec.d.ts +0 -1
  380. package/dist/types/components/DVoucher/hooks/useScreenshotWebShare.spec.d.ts +0 -1
  381. package/dist/types/hooks/tests/useCountdown.spec.d.ts +0 -1
  382. package/dist/types/hooks/tests/useDisableBodyScrollEffect.spec.d.ts +0 -1
  383. package/dist/types/hooks/tests/useDisableInputWheel.spec.d.ts +0 -1
  384. package/dist/types/hooks/tests/useFormatCurrency.spec.d.ts +0 -1
  385. package/dist/types/hooks/tests/useInputCurrency.spec.d.ts +0 -1
  386. package/dist/types/hooks/tests/useItemSelection.spec.d.ts +0 -1
  387. package/dist/types/hooks/tests/useMediaBreakpointUp.spec.d.ts +0 -1
  388. package/dist/types/hooks/tests/useMediaQuery.spec.d.ts +0 -1
  389. package/dist/types/hooks/tests/usePortal.spec.d.ts +0 -1
  390. package/dist/types/hooks/tests/useProvidedRefOrCreate.spec.d.ts +0 -1
  391. package/dist/types/hooks/tests/useStackState.spec.d.ts +0 -1
  392. package/dist/types/utils/tests/attr-accept.spec.d.ts +0 -1
  393. package/dist/types/utils/tests/buildUrl.spec.d.ts +0 -1
  394. package/dist/types/utils/tests/changeQueryString.spec.d.ts +0 -1
  395. package/dist/types/utils/tests/configureI18n.spec.d.ts +0 -1
  396. package/dist/types/utils/tests/formatCurrency.spec.d.ts +0 -1
  397. package/dist/types/utils/tests/getCssVariable.spec.d.ts +0 -1
  398. package/dist/types/utils/tests/getKeyboardFocusableElements.spec.d.ts +0 -1
  399. package/dist/types/utils/tests/getQueryString.spec.d.ts +0 -1
  400. package/dist/types/utils/tests/mediaQuery.spec.d.ts +0 -1
  401. package/dist/types/utils/tests/sanitizeHref.spec.d.ts +0 -1
  402. package/dist/types/utils/tests/validatePhoneNumber.spec.d.ts +0 -1
@@ -0,0 +1,58 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { useCallback } from 'react';
3
+ import { toast } from 'react-hot-toast';
4
+ import classNames from 'classnames';
5
+ import DToast from '../DToast/DToast.js';
6
+ import DIcon from '../DIcon/DIcon.js';
7
+ import { useDContext } from '../../contexts/DContext.js';
8
+
9
+ /**
10
+ * Hook that provides a `toast` function to dispatch DToast notifications.
11
+ *
12
+ * Prerequisites:
13
+ * - The calling component must be inside `DContextProvider` (provides icon context).
14
+ * - `DToastContainer` must be present somewhere in the component tree as a render target.
15
+ *
16
+ * @returns {{ toast }} Object containing a `toast` dispatcher function.
17
+ * @requires DContextProvider
18
+ * @requires DToastContainer
19
+ * @example
20
+ * const { toast } = useDToast();
21
+ * toast({ title: 'Saved', color: 'success' });
22
+ */
23
+ function useDToast() {
24
+ const { iconMap: { xLg, }, } = useDContext();
25
+ /**
26
+ * Dispatches a toast notification rendered as a `DToast` component.
27
+ * When `data` is a `ToastData` object, the default DToast layout is used.
28
+ * When `data` is a render function, full custom content is rendered instead.
29
+ * Returns the toast ID, which can be passed to `reactHotToast.dismiss(id)`.
30
+ * @param data - Toast content as `ToastData` or a render function for custom layouts.
31
+ * @param toastProps - Optional per-toast overrides: id, duration, position.
32
+ */
33
+ const toast$1 = useCallback((data, toastProps) => {
34
+ if (typeof data === 'function') {
35
+ return toast.custom(data, toastProps);
36
+ }
37
+ const { title, description, icon, closeIcon, timestamp, color, } = data;
38
+ return toast.custom(({ id, visible }) => {
39
+ if (!visible) {
40
+ return null;
41
+ }
42
+ if (!description) {
43
+ return (jsx(DToast, { className: classNames({
44
+ [`toast-${color}`]: !!color,
45
+ }, 'show'), children: jsxs(DToast.Body, { children: [icon && (jsx(DIcon, { className: "toast-icon", icon: icon })), jsx("p", { className: "toast-title", children: title }), jsx("button", { type: "button", className: "d-close", "aria-label": "Close", onClick: () => toast.dismiss(id), children: jsx(DIcon, { icon: closeIcon || xLg }) })] }) }));
46
+ }
47
+ return (jsxs(DToast, { className: classNames({
48
+ [`toast-${color}`]: !!color,
49
+ }, 'show'), children: [jsxs(DToast.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", "aria-label": "Close", onClick: () => toast.dismiss(id), children: jsx(DIcon, { icon: closeIcon || xLg }) })] }), jsx(DToast.Body, { children: jsx("span", { children: description }) })] }));
50
+ }, toastProps);
51
+ }, [xLg]);
52
+ return {
53
+ toast: toast$1,
54
+ };
55
+ }
56
+
57
+ export { useDToast as default };
58
+ //# sourceMappingURL=useDToast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDToast.js","sources":["../../../../dist-transpiled/components/DToastContainer/useDToast.js"],"sourcesContent":["import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useCallback, } from 'react';\nimport { toast as reactHotToast, } from 'react-hot-toast';\nimport classNames from 'classnames';\nimport DToast from '../DToast/DToast';\nimport DIcon from '../DIcon';\nimport { useDContext } from '../../contexts';\n/**\n * Hook that provides a `toast` function to dispatch DToast notifications.\n *\n * Prerequisites:\n * - The calling component must be inside `DContextProvider` (provides icon context).\n * - `DToastContainer` must be present somewhere in the component tree as a render target.\n *\n * @returns {{ toast }} Object containing a `toast` dispatcher function.\n * @requires DContextProvider\n * @requires DToastContainer\n * @example\n * const { toast } = useDToast();\n * toast({ title: 'Saved', color: 'success' });\n */\nexport default function useDToast() {\n const { iconMap: { xLg, }, } = useDContext();\n /**\n * Dispatches a toast notification rendered as a `DToast` component.\n * When `data` is a `ToastData` object, the default DToast layout is used.\n * When `data` is a render function, full custom content is rendered instead.\n * Returns the toast ID, which can be passed to `reactHotToast.dismiss(id)`.\n * @param data - Toast content as `ToastData` or a render function for custom layouts.\n * @param toastProps - Optional per-toast overrides: id, duration, position.\n */\n const toast = useCallback((data, toastProps) => {\n if (typeof data === 'function') {\n return reactHotToast.custom(data, toastProps);\n }\n const { title, description, icon, closeIcon, timestamp, color, } = data;\n return reactHotToast.custom(({ id, visible }) => {\n if (!visible) {\n return null;\n }\n if (!description) {\n return (_jsx(DToast, { className: classNames({\n [`toast-${color}`]: !!color,\n }, 'show'), children: _jsxs(DToast.Body, { children: [icon && (_jsx(DIcon, { className: \"toast-icon\", icon: icon })), _jsx(\"p\", { className: \"toast-title\", children: title }), _jsx(\"button\", { type: \"button\", className: \"d-close\", \"aria-label\": \"Close\", onClick: () => reactHotToast.dismiss(id), children: _jsx(DIcon, { icon: closeIcon || xLg }) })] }) }));\n }\n return (_jsxs(DToast, { className: classNames({\n [`toast-${color}`]: !!color,\n }, 'show'), children: [_jsxs(DToast.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\", \"aria-label\": \"Close\", onClick: () => reactHotToast.dismiss(id), children: _jsx(DIcon, { icon: closeIcon || xLg }) })] }), _jsx(DToast.Body, { children: _jsx(\"span\", { children: description }) })] }));\n }, toastProps);\n }, [xLg]);\n return {\n toast,\n };\n}\n//# sourceMappingURL=useDToast.js.map"],"names":["toast","reactHotToast","_jsx","_jsxs"],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
+ import { useState, useRef, useMemo } from 'react';
3
+ import { useFloating, autoUpdate, offset, flip, shift, arrow, useHover, useFocus, useDismiss, useClick, useRole, useInteractions, FloatingPortal, FloatingArrow } from '@floating-ui/react';
4
+ import classNames from 'classnames';
5
+
6
+ const ARROW_WIDTH = 8;
7
+ const ARROW_HEIGHT = 4;
8
+ const GAP = 2;
9
+ /**
10
+ * Tooltip is an abstraction component that wraps any element (`Component`) and displays
11
+ * floating contextual content (`children`) positioned relative to it using Floating UI.
12
+ * Use it to add short, non-critical hints or descriptions triggered by hover, focus, or
13
+ * click, without altering the surrounding layout.
14
+ */
15
+ function DTooltip({ className, childrenClassName, style, offSet = ARROW_HEIGHT + GAP, padding, withFocus = false, withClick = false, withHover = true, open = false, placement = 'top', size, Component, children, }) {
16
+ const [isOpen, setIsOpen] = useState(open);
17
+ const arrowRef = useRef(null);
18
+ const { refs, context, floatingStyles, } = useFloating({
19
+ open: isOpen,
20
+ onOpenChange: setIsOpen,
21
+ placement,
22
+ whileElementsMounted: autoUpdate,
23
+ middleware: [
24
+ offset(offSet),
25
+ flip(),
26
+ shift({
27
+ padding,
28
+ }),
29
+ arrow({
30
+ element: arrowRef,
31
+ }),
32
+ ],
33
+ });
34
+ const hover = useHover(context, { move: false });
35
+ const focus = useFocus(context);
36
+ const dismiss = useDismiss(context, { ancestorScroll: true });
37
+ const click = useClick(context);
38
+ const role = useRole(context, { role: 'tooltip' });
39
+ const { getReferenceProps, getFloatingProps } = useInteractions([
40
+ withHover ? hover : undefined,
41
+ withClick ? click : undefined,
42
+ withFocus ? focus : undefined,
43
+ dismiss,
44
+ role,
45
+ ]);
46
+ const generateClasses = useMemo(() => (Object.assign({ 'tooltip show': true, [`tooltip-${size}`]: !!size }, className && { [className]: true })), [size, className]);
47
+ return (jsxs(Fragment, { 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 })] }))) })] }));
48
+ }
49
+
50
+ export { DTooltip as default };
51
+ //# sourceMappingURL=DTooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DTooltip.js","sources":["../../../../dist-transpiled/components/DTooltip/DTooltip.js"],"sourcesContent":["import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { useState, useRef, useMemo } from 'react';\nimport { autoUpdate, offset, flip, shift, arrow, useClick, useDismiss, useFocus, useFloating, useHover, useInteractions, useRole, FloatingPortal, FloatingArrow, } from '@floating-ui/react';\nimport classNames from 'classnames';\nconst ARROW_WIDTH = 8;\nconst ARROW_HEIGHT = 4;\nconst GAP = 2;\n/**\n * Tooltip is an abstraction component that wraps any element (`Component`) and displays\n * floating contextual content (`children`) positioned relative to it using Floating UI.\n * Use it to add short, non-critical hints or descriptions triggered by hover, focus, or\n * click, without altering the surrounding layout.\n */\nexport default function DTooltip({ className, childrenClassName, style, offSet = ARROW_HEIGHT + GAP, padding, withFocus = false, withClick = false, withHover = true, open = false, placement = 'top', size, Component, children, }) {\n const [isOpen, setIsOpen] = useState(open);\n const arrowRef = useRef(null);\n const { refs, context, floatingStyles, } = useFloating({\n open: isOpen,\n onOpenChange: setIsOpen,\n placement,\n whileElementsMounted: autoUpdate,\n middleware: [\n offset(offSet),\n flip(),\n shift({\n padding,\n }),\n arrow({\n element: arrowRef,\n }),\n ],\n });\n const hover = useHover(context, { move: false });\n const focus = useFocus(context);\n const dismiss = useDismiss(context, { ancestorScroll: true });\n const click = useClick(context);\n const role = useRole(context, { role: 'tooltip' });\n const { getReferenceProps, getFloatingProps } = useInteractions([\n withHover ? hover : undefined,\n withClick ? click : undefined,\n withFocus ? focus : undefined,\n dismiss,\n role,\n ]);\n const generateClasses = useMemo(() => (Object.assign({ 'tooltip show': true, [`tooltip-${size}`]: !!size }, className && { [className]: true })), [size, className]);\n return (_jsxs(_Fragment, { 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 })] }))) })] }));\n}\n//# sourceMappingURL=DTooltip.js.map"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import DTooltip from './DTooltip.js';
2
+
3
+
4
+
5
+ export { DTooltip as default };
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,55 @@
1
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
+ import classNames from 'classnames';
3
+ import useScreenshotDownload from './hooks/useScreenshotDownload.js';
4
+ import useScreenshotWebShare from './hooks/useScreenshotWebShare.js';
5
+ import DIcon from '../DIcon/DIcon.js';
6
+ import DButton from '../DButton/DButton.js';
7
+
8
+ function DVoucher({ amount, amountDetails, icon, title, onError, message, downloadText = 'Download', shareText = 'Share', fileName = 'voucher', hideActions = false, className, children, }) {
9
+ const { shareRef, share } = useScreenshotWebShare();
10
+ const { downloadRef, download } = useScreenshotDownload();
11
+ const handleShare = () => {
12
+ share(fileName)
13
+ .catch(async (err) => {
14
+ if (onError) {
15
+ await onError(err);
16
+ }
17
+ })
18
+ .catch(() => {
19
+ // Error already handled by onError
20
+ });
21
+ };
22
+ const handleDownload = () => {
23
+ download(fileName)
24
+ .catch(async (err) => {
25
+ if (onError) {
26
+ await onError(err);
27
+ }
28
+ })
29
+ .catch(() => {
30
+ // Error already handled by onError
31
+ });
32
+ };
33
+ const defaultIconProps = {
34
+ icon: 'CircleCheckBig',
35
+ color: 'success',
36
+ size: '2rem',
37
+ hasCircle: true,
38
+ };
39
+ const resolvedIconProps = (() => {
40
+ if (icon === false || icon == null)
41
+ return null;
42
+ if (typeof icon === 'string')
43
+ return Object.assign(Object.assign({}, defaultIconProps), { icon });
44
+ if (typeof icon === 'object')
45
+ return Object.assign(Object.assign({}, defaultIconProps), icon);
46
+ return defaultIconProps;
47
+ })();
48
+ return (jsx("div", { className: classNames('d-voucher', className), ref: (el) => {
49
+ shareRef.current = el;
50
+ downloadRef.current = el;
51
+ }, children: jsxs("div", { children: [jsxs("div", { className: "d-voucher-header", children: [resolvedIconProps && (jsx(DIcon, Object.assign({}, resolvedIconProps))), jsxs("div", { className: "d-voucher-title-group", children: [jsx("h3", { className: "d-voucher-title", children: title }), jsx("p", { className: "d-voucher-message", children: message })] })] }), amount && (jsxs("div", { className: "d-voucher-amount", children: [jsx("div", { className: classNames('d-voucher-amount-value', { 'd-voucher-amount-value-with-details': !!amountDetails }), children: amount }), amountDetails] })), jsx("hr", { className: "d-voucher-divider" }), children, !hideActions && (jsxs(Fragment, { children: [jsx("hr", { className: "my-4" }), jsxs("div", { className: "d-voucher-footer", children: [jsx(DButton, { onClick: handleShare, iconStart: "Share2", text: shareText, variant: "outline", size: "sm" }), jsx(DButton, { onClick: handleDownload, iconStart: "Download", text: downloadText, variant: "outline", size: "sm" })] })] }))] }) }));
52
+ }
53
+
54
+ export { DVoucher as default };
55
+ //# sourceMappingURL=DVoucher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DVoucher.js","sources":["../../../../dist-transpiled/components/DVoucher/DVoucher.js"],"sourcesContent":["import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport classNames from 'classnames';\nimport useScreenshotDownload from './hooks/useScreenshotDownload';\nimport useScreenshotWebShare from './hooks/useScreenshotWebShare';\nimport DIcon from '../DIcon';\nimport DButton from '../DButton';\nexport default function DVoucher({ amount, amountDetails, icon, title, onError, message, downloadText = 'Download', shareText = 'Share', fileName = 'voucher', hideActions = false, className, children, }) {\n const { shareRef, share } = useScreenshotWebShare();\n const { downloadRef, download } = useScreenshotDownload();\n const handleShare = () => {\n share(fileName)\n .catch(async (err) => {\n if (onError) {\n await onError(err);\n }\n })\n .catch(() => {\n // Error already handled by onError\n });\n };\n const handleDownload = () => {\n download(fileName)\n .catch(async (err) => {\n if (onError) {\n await onError(err);\n }\n })\n .catch(() => {\n // Error already handled by onError\n });\n };\n const defaultIconProps = {\n icon: 'CircleCheckBig',\n color: 'success',\n size: '2rem',\n hasCircle: true,\n };\n const resolvedIconProps = (() => {\n if (icon === false || icon == null)\n return null;\n if (typeof icon === 'string')\n return Object.assign(Object.assign({}, defaultIconProps), { icon });\n if (typeof icon === 'object')\n return Object.assign(Object.assign({}, defaultIconProps), icon);\n return defaultIconProps;\n })();\n return (_jsx(\"div\", { className: classNames('d-voucher', className), ref: (el) => {\n shareRef.current = el;\n downloadRef.current = el;\n }, children: _jsxs(\"div\", { children: [_jsxs(\"div\", { className: \"d-voucher-header\", children: [resolvedIconProps && (_jsx(DIcon, Object.assign({}, resolvedIconProps))), _jsxs(\"div\", { className: \"d-voucher-title-group\", children: [_jsx(\"h3\", { className: \"d-voucher-title\", children: title }), _jsx(\"p\", { className: \"d-voucher-message\", children: message })] })] }), amount && (_jsxs(\"div\", { className: \"d-voucher-amount\", children: [_jsx(\"div\", { className: classNames('d-voucher-amount-value', { 'd-voucher-amount-value-with-details': !!amountDetails }), children: amount }), amountDetails] })), _jsx(\"hr\", { className: \"d-voucher-divider\" }), children, !hideActions && (_jsxs(_Fragment, { children: [_jsx(\"hr\", { className: \"my-4\" }), _jsxs(\"div\", { className: \"d-voucher-footer\", children: [_jsx(DButton, { onClick: handleShare, iconStart: \"Share2\", text: shareText, variant: \"outline\", size: \"sm\" }), _jsx(DButton, { onClick: handleDownload, iconStart: \"Download\", text: downloadText, variant: \"outline\", size: \"sm\" })] })] }))] }) }));\n}\n//# sourceMappingURL=DVoucher.js.map"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import html2canvas from 'html2canvas';
2
+ import { useRef, useCallback } from 'react';
3
+
4
+ function useScreenshot() {
5
+ const clipRef = useRef(null);
6
+ const takeBlob = useCallback(async (type) => {
7
+ if (!clipRef.current) {
8
+ throw new Error('set the clipRef');
9
+ }
10
+ const canvas = await html2canvas(clipRef === null || clipRef === void 0 ? void 0 : clipRef.current, {
11
+ allowTaint: true,
12
+ useCORS: true,
13
+ });
14
+ return (new Promise((resolve, reject) => {
15
+ canvas.toBlob((innerBlob) => {
16
+ if (!innerBlob) {
17
+ return reject();
18
+ }
19
+ return resolve(innerBlob);
20
+ }, type);
21
+ }));
22
+ }, []);
23
+ return {
24
+ clipRef,
25
+ takeBlob,
26
+ };
27
+ }
28
+
29
+ export { useScreenshot as default };
30
+ //# sourceMappingURL=useScreenshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useScreenshot.js","sources":["../../../../../dist-transpiled/components/DVoucher/hooks/useScreenshot.js"],"sourcesContent":["import html2canvas from 'html2canvas';\nimport { useRef, useCallback } from 'react';\nexport default function useScreenshot() {\n const clipRef = useRef(null);\n const takeBlob = useCallback(async (type) => {\n if (!clipRef.current) {\n throw new Error('set the clipRef');\n }\n const canvas = await html2canvas(clipRef === null || clipRef === void 0 ? void 0 : clipRef.current, {\n allowTaint: true,\n useCORS: true,\n });\n return (new Promise((resolve, reject) => {\n canvas.toBlob((innerBlob) => {\n if (!innerBlob) {\n return reject();\n }\n return resolve(innerBlob);\n }, type);\n }));\n }, []);\n return {\n clipRef,\n takeBlob,\n };\n}\n//# sourceMappingURL=useScreenshot.js.map"],"names":[],"mappings":";;;AAEe,SAAS,aAAa,GAAG;AACxC,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;AAChC,IAAI,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,IAAI,KAAK;AACjD,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;AAC9B,YAAY,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC;AAC9C,QAAQ;AACR,QAAQ,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE;AAC5G,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,OAAO,EAAE,IAAI;AACzB,SAAS,CAAC;AACV,QAAQ,QAAQ,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AACjD,YAAY,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK;AACzC,gBAAgB,IAAI,CAAC,SAAS,EAAE;AAChC,oBAAoB,OAAO,MAAM,EAAE;AACnC,gBAAgB;AAChB,gBAAgB,OAAO,OAAO,CAAC,SAAS,CAAC;AACzC,YAAY,CAAC,EAAE,IAAI,CAAC;AACpB,QAAQ,CAAC,CAAC;AACV,IAAI,CAAC,EAAE,EAAE,CAAC;AACV,IAAI,OAAO;AACX,QAAQ,OAAO;AACf,QAAQ,QAAQ;AAChB,KAAK;AACL;;;;"}
@@ -0,0 +1,30 @@
1
+ import { useCallback } from 'react';
2
+ import useScreenshot from './useScreenshot.js';
3
+
4
+ function useScreenshotDownload() {
5
+ const { clipRef, takeBlob } = useScreenshot();
6
+ const download = useCallback(async (fileName = 'voucher') => {
7
+ const blob = await takeBlob('image/jpeg');
8
+ const url = window.URL.createObjectURL(blob);
9
+ const link = window.document.createElement('a');
10
+ link.style.display = 'none';
11
+ link.href = url;
12
+ // Fall back to the default base name when the caller passes a blank/whitespace value,
13
+ // so the file is never named just ".jpg".
14
+ const safeFileName = fileName.trim() || 'voucher';
15
+ // The extension is always appended by the hook to guarantee a valid image file,
16
+ // regardless of what fileName the caller passes (e.g. "receipt.png" -> "receipt.png.jpg").
17
+ link.download = `${safeFileName}.jpg`;
18
+ document.body.appendChild(link);
19
+ link.click();
20
+ document.body.removeChild(link);
21
+ window.URL.revokeObjectURL(url);
22
+ }, [takeBlob]);
23
+ return {
24
+ download,
25
+ downloadRef: clipRef,
26
+ };
27
+ }
28
+
29
+ export { useScreenshotDownload as default };
30
+ //# sourceMappingURL=useScreenshotDownload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useScreenshotDownload.js","sources":["../../../../../dist-transpiled/components/DVoucher/hooks/useScreenshotDownload.js"],"sourcesContent":["import { useCallback } from 'react';\nimport useScreenshot from './useScreenshot';\nexport default function useScreenshotDownload() {\n const { clipRef, takeBlob } = useScreenshot();\n const download = useCallback(async (fileName = 'voucher') => {\n const blob = await takeBlob('image/jpeg');\n const url = window.URL.createObjectURL(blob);\n const link = window.document.createElement('a');\n link.style.display = 'none';\n link.href = url;\n // Fall back to the default base name when the caller passes a blank/whitespace value,\n // so the file is never named just \".jpg\".\n const safeFileName = fileName.trim() || 'voucher';\n // The extension is always appended by the hook to guarantee a valid image file,\n // regardless of what fileName the caller passes (e.g. \"receipt.png\" -> \"receipt.png.jpg\").\n link.download = `${safeFileName}.jpg`;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n window.URL.revokeObjectURL(url);\n }, [takeBlob]);\n return {\n download,\n downloadRef: clipRef,\n };\n}\n//# sourceMappingURL=useScreenshotDownload.js.map"],"names":[],"mappings":";;;AAEe,SAAS,qBAAqB,GAAG;AAChD,IAAI,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,aAAa,EAAE;AACjD,IAAI,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,QAAQ,GAAG,SAAS,KAAK;AACjE,QAAQ,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC;AACjD,QAAQ,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;AACpD,QAAQ,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AACvD,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;AACnC,QAAQ,IAAI,CAAC,IAAI,GAAG,GAAG;AACvB;AACA;AACA,QAAQ,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,SAAS;AACzD;AACA;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC;AAC7C,QAAQ,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACvC,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB,QAAQ,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACvC,QAAQ,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC;AACvC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AAClB,IAAI,OAAO;AACX,QAAQ,QAAQ;AAChB,QAAQ,WAAW,EAAE,OAAO;AAC5B,KAAK;AACL;;;;"}
@@ -0,0 +1,27 @@
1
+ import { useCallback } from 'react';
2
+ import useScreenshot from './useScreenshot.js';
3
+
4
+ function useScreenshotWebShare() {
5
+ const { takeBlob, clipRef } = useScreenshot();
6
+ const share = useCallback(async (fileName = 'voucher') => {
7
+ const blob = await takeBlob('image/jpeg');
8
+ // Fall back to the default base name when the caller passes a blank/whitespace value,
9
+ // so the file is never named just ".jpeg".
10
+ const safeFileName = fileName.trim() || 'voucher';
11
+ // The extension is always appended by the hook to guarantee a valid image file,
12
+ // regardless of what fileName the caller passes (e.g. "receipt.png" -> "receipt.png.jpeg").
13
+ const image = new File([blob], `${safeFileName}.jpeg`, { type: 'image/jpeg' });
14
+ if (!navigator.canShare || !navigator.canShare({ files: [image] })) {
15
+ window.print();
16
+ return;
17
+ }
18
+ await navigator.share({ files: [image] });
19
+ }, [takeBlob]);
20
+ return {
21
+ share,
22
+ shareRef: clipRef,
23
+ };
24
+ }
25
+
26
+ export { useScreenshotWebShare as default };
27
+ //# sourceMappingURL=useScreenshotWebShare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useScreenshotWebShare.js","sources":["../../../../../dist-transpiled/components/DVoucher/hooks/useScreenshotWebShare.js"],"sourcesContent":["import { useCallback } from 'react';\nimport useScreenshot from './useScreenshot';\nexport default function useScreenshotWebShare() {\n const { takeBlob, clipRef } = useScreenshot();\n const share = useCallback(async (fileName = 'voucher') => {\n const blob = await takeBlob('image/jpeg');\n // Fall back to the default base name when the caller passes a blank/whitespace value,\n // so the file is never named just \".jpeg\".\n const safeFileName = fileName.trim() || 'voucher';\n // The extension is always appended by the hook to guarantee a valid image file,\n // regardless of what fileName the caller passes (e.g. \"receipt.png\" -> \"receipt.png.jpeg\").\n const image = new File([blob], `${safeFileName}.jpeg`, { type: 'image/jpeg' });\n if (!navigator.canShare || !navigator.canShare({ files: [image] })) {\n window.print();\n return;\n }\n await navigator.share({ files: [image] });\n }, [takeBlob]);\n return {\n share,\n shareRef: clipRef,\n };\n}\n//# sourceMappingURL=useScreenshotWebShare.js.map"],"names":[],"mappings":";;;AAEe,SAAS,qBAAqB,GAAG;AAChD,IAAI,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,aAAa,EAAE;AACjD,IAAI,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,QAAQ,GAAG,SAAS,KAAK;AAC9D,QAAQ,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC;AACjD;AACA;AACA,QAAQ,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,SAAS;AACzD;AACA;AACA,QAAQ,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;AACtF,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AAC5E,YAAY,MAAM,CAAC,KAAK,EAAE;AAC1B,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AACjD,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;AAClB,IAAI,OAAO;AACX,QAAQ,KAAK;AACb,QAAQ,QAAQ,EAAE,OAAO;AACzB,KAAK;AACL;;;;"}
@@ -0,0 +1,9 @@
1
+ import DVoucher from './DVoucher.js';
2
+ export { default as useScreenshot } from './hooks/useScreenshot.js';
3
+ export { default as useScreenshotDownload } from './hooks/useScreenshotDownload.js';
4
+ export { default as useScreenshotWebShare } from './hooks/useScreenshotWebShare.js';
5
+
6
+
7
+
8
+ export { DVoucher as default };
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -0,0 +1,14 @@
1
+ const PREFIX_BS = 'bs-';
2
+ /**
3
+ * Default icon-font family configured by `DContextProvider`.
4
+ *
5
+ * `DIconBase` compares the family it receives against these values to tell an
6
+ * unconfigured consumer apart from one that deliberately opted into an icon
7
+ * font (Material Symbols, Bootstrap Icons). Only the former gets the
8
+ * development warning for an unresolved icon name.
9
+ */
10
+ const DEFAULT_ICON_FAMILY_CLASS = 'bi';
11
+ const DEFAULT_ICON_FAMILY_PREFIX = 'bi-';
12
+
13
+ export { DEFAULT_ICON_FAMILY_CLASS, DEFAULT_ICON_FAMILY_PREFIX, PREFIX_BS };
14
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sources":["../../../dist-transpiled/components/config.js"],"sourcesContent":["export const PREFIX_BS = 'bs-';\n/**\n * Default icon-font family configured by `DContextProvider`.\n *\n * `DIconBase` compares the family it receives against these values to tell an\n * unconfigured consumer apart from one that deliberately opted into an icon\n * font (Material Symbols, Bootstrap Icons). Only the former gets the\n * development warning for an unresolved icon name.\n */\nexport const DEFAULT_ICON_FAMILY_CLASS = 'bi';\nexport const DEFAULT_ICON_FAMILY_PREFIX = 'bi-';\n//# sourceMappingURL=config.js.map"],"names":[],"mappings":"AAAY,MAAC,SAAS,GAAG;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,yBAAyB,GAAG;AAC7B,MAAC,0BAA0B,GAAG;;;;"}
@@ -0,0 +1,124 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { createContext, useContext, useState, useCallback, useLayoutEffect, useMemo } from 'react';
3
+ import { DPortalContextProvider } from './DPortalContext.js';
4
+ import { createConfirmModalStore, ConfirmModalStoreContext } from '../components/DConfirmModal/confirmModalStore.js';
5
+ import { DEFAULT_ICON_FAMILY_PREFIX, DEFAULT_ICON_FAMILY_CLASS, PREFIX_BS } from '../components/config.js';
6
+ import getCssVariable from '../utils/getCssVariable.js';
7
+
8
+ const DEFAULT_STATE = {
9
+ language: 'en',
10
+ currency: {
11
+ symbol: '$',
12
+ precision: 2,
13
+ separator: ',',
14
+ decimal: '.',
15
+ },
16
+ icon: {
17
+ familyClass: DEFAULT_ICON_FAMILY_CLASS,
18
+ familyPrefix: DEFAULT_ICON_FAMILY_PREFIX,
19
+ materialStyle: false,
20
+ },
21
+ iconRegistry: undefined,
22
+ iconMap: {
23
+ x: 'X',
24
+ xLg: 'X',
25
+ chevronUp: 'ChevronUp',
26
+ chevronDown: 'ChevronDown',
27
+ chevronLeft: 'ChevronLeft',
28
+ chevronRight: 'ChevronRight',
29
+ upload: 'Upload',
30
+ calendar: 'Calendar',
31
+ check: 'Check',
32
+ alert: {
33
+ warning: 'AlertCircle',
34
+ danger: 'AlertTriangle',
35
+ success: 'CheckCircle',
36
+ info: 'Info',
37
+ },
38
+ input: {
39
+ search: 'Search',
40
+ show: 'Eye',
41
+ hide: 'EyeOff',
42
+ increase: 'Plus',
43
+ decrease: 'Minus',
44
+ },
45
+ },
46
+ breakpoints: {
47
+ xs: '',
48
+ sm: '',
49
+ md: '',
50
+ lg: '',
51
+ xl: '',
52
+ xxl: '',
53
+ },
54
+ setContext: () => { },
55
+ };
56
+ const DContext = createContext(DEFAULT_STATE);
57
+ /**
58
+ * Root context provider for Dynamic UI. Wrap your application with this
59
+ * component to configure icons, currency, language, and portal settings
60
+ * for all descendant Dynamic UI components.
61
+ *
62
+ * To enable confirmation modals you must also mount `DConfirmModalContainer`
63
+ * somewhere inside this provider (typically right before the closing tag of
64
+ * your root layout), similar to how `DToastContainer` works:
65
+ *
66
+ * ```tsx
67
+ * // Default: portalName="d-portal"
68
+ * <DContextProvider>
69
+ * <App />
70
+ * <DConfirmModalContainer nodeId="d-portal" />
71
+ * </DContextProvider>
72
+ * ```
73
+ *
74
+ * If you customize `portalName`, match it in `DConfirmModalContainer.nodeId`:
75
+ *
76
+ * ```tsx
77
+ * // Custom portalName
78
+ * <DContextProvider portalName="my-custom-portal">
79
+ * <App />
80
+ * <DConfirmModalContainer nodeId="my-custom-portal" />
81
+ * </DContextProvider>
82
+ * ```
83
+ *
84
+ * @template T - Map of portal name → payload shape (e.g. `{ modal: { title: string } }`).
85
+ * Pass it once at the top level: `<DContextProvider<MyPortals> ...>`.
86
+ */
87
+ function DContextProvider({ language = DEFAULT_STATE.language, currency = DEFAULT_STATE.currency, icon = DEFAULT_STATE.icon, iconRegistry = DEFAULT_STATE.iconRegistry, iconMap = DEFAULT_STATE.iconMap, portalName = 'd-portal', availablePortals, children, }) {
88
+ const [internalContext, setInternalContext,] = useState({
89
+ language,
90
+ currency,
91
+ icon,
92
+ iconRegistry,
93
+ iconMap,
94
+ breakpoints: DEFAULT_STATE.breakpoints,
95
+ });
96
+ const setContext = useCallback((newValue) => (setInternalContext((prevInternalContext) => (Object.assign(Object.assign({}, prevInternalContext), newValue)))), []);
97
+ useLayoutEffect(() => {
98
+ setContext({
99
+ breakpoints: {
100
+ xs: getCssVariable(`--${PREFIX_BS}breakpoint-xs`),
101
+ sm: getCssVariable(`--${PREFIX_BS}breakpoint-sm`),
102
+ md: getCssVariable(`--${PREFIX_BS}breakpoint-md`),
103
+ lg: getCssVariable(`--${PREFIX_BS}breakpoint-lg`),
104
+ xl: getCssVariable(`--${PREFIX_BS}breakpoint-xl`),
105
+ xxl: getCssVariable(`--${PREFIX_BS}breakpoint-xxl`),
106
+ },
107
+ });
108
+ }, [setContext]);
109
+ const value = useMemo(() => (Object.assign(Object.assign({}, internalContext), { setContext })), [internalContext, setContext]);
110
+ const confirmStore = useMemo(() => createConfirmModalStore(), []);
111
+ return (jsx(ConfirmModalStoreContext.Provider, { value: confirmStore, children: jsx(DContext.Provider, { value: value, children: jsx(DPortalContextProvider, { portalName: portalName, availablePortals: availablePortals, children: children }) }) }));
112
+ }
113
+ /**
114
+ * Returns the Dynamic UI context value set by `DContextProvider`.
115
+ * Falls back to the library's built-in defaults when no `DContextProvider`
116
+ * is present in the tree — wrap your application with `DContextProvider`
117
+ * to customise icons, currency, language, and portal settings.
118
+ */
119
+ function useDContext() {
120
+ return useContext(DContext);
121
+ }
122
+
123
+ export { DContext, DContextProvider, useDContext };
124
+ //# sourceMappingURL=DContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DContext.js","sources":["../../../dist-transpiled/contexts/DContext.js"],"sourcesContent":["import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { createContext, useCallback, useContext, useLayoutEffect, useMemo, useState, } from 'react';\nimport { DPortalContextProvider, } from './DPortalContext';\nimport { createConfirmModalStore, ConfirmModalStoreContext, } from '../components/DConfirmModal/confirmModalStore';\nimport { DEFAULT_ICON_FAMILY_CLASS, DEFAULT_ICON_FAMILY_PREFIX, PREFIX_BS, } from '../components/config';\nimport getCssVariable from '../utils/getCssVariable';\nconst DEFAULT_STATE = {\n language: 'en',\n currency: {\n symbol: '$',\n precision: 2,\n separator: ',',\n decimal: '.',\n },\n icon: {\n familyClass: DEFAULT_ICON_FAMILY_CLASS,\n familyPrefix: DEFAULT_ICON_FAMILY_PREFIX,\n materialStyle: false,\n },\n iconRegistry: undefined,\n iconMap: {\n x: 'X',\n xLg: 'X',\n chevronUp: 'ChevronUp',\n chevronDown: 'ChevronDown',\n chevronLeft: 'ChevronLeft',\n chevronRight: 'ChevronRight',\n upload: 'Upload',\n calendar: 'Calendar',\n check: 'Check',\n alert: {\n warning: 'AlertCircle',\n danger: 'AlertTriangle',\n success: 'CheckCircle',\n info: 'Info',\n },\n input: {\n search: 'Search',\n show: 'Eye',\n hide: 'EyeOff',\n increase: 'Plus',\n decrease: 'Minus',\n },\n },\n breakpoints: {\n xs: '',\n sm: '',\n md: '',\n lg: '',\n xl: '',\n xxl: '',\n },\n setContext: () => { },\n};\nexport const DContext = createContext(DEFAULT_STATE);\n/**\n * Root context provider for Dynamic UI. Wrap your application with this\n * component to configure icons, currency, language, and portal settings\n * for all descendant Dynamic UI components.\n *\n * To enable confirmation modals you must also mount `DConfirmModalContainer`\n * somewhere inside this provider (typically right before the closing tag of\n * your root layout), similar to how `DToastContainer` works:\n *\n * ```tsx\n * // Default: portalName=\"d-portal\"\n * <DContextProvider>\n * <App />\n * <DConfirmModalContainer nodeId=\"d-portal\" />\n * </DContextProvider>\n * ```\n *\n * If you customize `portalName`, match it in `DConfirmModalContainer.nodeId`:\n *\n * ```tsx\n * // Custom portalName\n * <DContextProvider portalName=\"my-custom-portal\">\n * <App />\n * <DConfirmModalContainer nodeId=\"my-custom-portal\" />\n * </DContextProvider>\n * ```\n *\n * @template T - Map of portal name → payload shape (e.g. `{ modal: { title: string } }`).\n * Pass it once at the top level: `<DContextProvider<MyPortals> ...>`.\n */\nexport function DContextProvider({ language = DEFAULT_STATE.language, currency = DEFAULT_STATE.currency, icon = DEFAULT_STATE.icon, iconRegistry = DEFAULT_STATE.iconRegistry, iconMap = DEFAULT_STATE.iconMap, portalName = 'd-portal', availablePortals, children, }) {\n const [internalContext, setInternalContext,] = useState({\n language,\n currency,\n icon,\n iconRegistry,\n iconMap,\n breakpoints: DEFAULT_STATE.breakpoints,\n });\n const setContext = useCallback((newValue) => (setInternalContext((prevInternalContext) => (Object.assign(Object.assign({}, prevInternalContext), newValue)))), []);\n useLayoutEffect(() => {\n setContext({\n breakpoints: {\n xs: getCssVariable(`--${PREFIX_BS}breakpoint-xs`),\n sm: getCssVariable(`--${PREFIX_BS}breakpoint-sm`),\n md: getCssVariable(`--${PREFIX_BS}breakpoint-md`),\n lg: getCssVariable(`--${PREFIX_BS}breakpoint-lg`),\n xl: getCssVariable(`--${PREFIX_BS}breakpoint-xl`),\n xxl: getCssVariable(`--${PREFIX_BS}breakpoint-xxl`),\n },\n });\n }, [setContext]);\n const value = useMemo(() => (Object.assign(Object.assign({}, internalContext), { setContext })), [internalContext, setContext]);\n const confirmStore = useMemo(() => createConfirmModalStore(), []);\n return (_jsx(ConfirmModalStoreContext.Provider, { value: confirmStore, children: _jsx(DContext.Provider, { value: value, children: _jsx(DPortalContextProvider, { portalName: portalName, availablePortals: availablePortals, children: children }) }) }));\n}\n/**\n * Returns the Dynamic UI context value set by `DContextProvider`.\n * Falls back to the library's built-in defaults when no `DContextProvider`\n * is present in the tree — wrap your application with `DContextProvider`\n * to customise icons, currency, language, and portal settings.\n */\nexport function useDContext() {\n return useContext(DContext);\n}\n//# sourceMappingURL=DContext.js.map"],"names":["_jsx"],"mappings":"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"}