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

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 (144) hide show
  1. package/dist/css/dynamic-ui-non-root.css +7054 -3736
  2. package/dist/css/dynamic-ui-non-root.min.css +3 -3
  3. package/dist/css/dynamic-ui-root.css +339 -161
  4. package/dist/css/dynamic-ui-root.min.css +3 -3
  5. package/dist/css/dynamic-ui.css +7380 -3884
  6. package/dist/css/dynamic-ui.min.css +3 -3
  7. package/dist/index.esm.js +641 -406
  8. package/dist/index.esm.js.map +1 -1
  9. package/dist/index.js +685 -433
  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/DBox/DBox.d.ts +5 -0
  15. package/dist/types/components/DBox/index.d.ts +2 -0
  16. package/dist/types/components/DBoxFile/DBoxFile.d.ts +1 -1
  17. package/dist/types/components/DButton/DButton.d.ts +8 -17
  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 +13 -9
  28. package/dist/types/components/DInput/DInput.d.ts +3 -2
  29. package/dist/types/components/DInputCheck/DInputCheck.d.ts +2 -1
  30. package/dist/types/components/DInputCounter/DInputCounter.d.ts +3 -2
  31. package/dist/types/components/DInputCurrency/DInputCurrency.d.ts +4 -3
  32. package/dist/types/components/DInputMask/DInputMask.d.ts +7 -17
  33. package/dist/types/components/DInputPhone/DInputPhone.d.ts +2 -2
  34. package/dist/types/components/DInputPin/DInputPin.d.ts +3 -3
  35. package/dist/types/components/DInputRange/DInputRange.d.ts +2 -2
  36. package/dist/types/components/DInputSelect/DInputSelect.d.ts +3 -3
  37. package/dist/types/components/DInputSwitch/DInputSwitch.d.ts +2 -1
  38. package/dist/types/components/DLayout/DLayout.d.ts +22 -0
  39. package/dist/types/components/DLayout/components/DLayoutPane.d.ts +13 -0
  40. package/dist/types/components/DLayout/index.d.ts +3 -0
  41. package/dist/types/components/DListGroup/components/DListGroupItem.d.ts +4 -4
  42. package/dist/types/components/DModal/DModal.d.ts +3 -1
  43. package/dist/types/components/DOffcanvas/DOffcanvas.d.ts +3 -1
  44. package/dist/types/components/DOtp/DOtp.d.ts +16 -0
  45. package/dist/types/components/DOtp/DOtpspec.d.ts +0 -0
  46. package/dist/types/components/DOtp/components/OtpCountdown.d.ts +7 -0
  47. package/dist/types/components/DOtp/hooks/useCountdown.d.ts +4 -0
  48. package/dist/types/components/DOtp/index.d.ts +2 -0
  49. package/dist/types/components/DPaginator/DPaginator.d.ts +2 -27
  50. package/dist/types/components/DPasswordStrengthMeter/DPasswordStrengthMeter.d.ts +23 -0
  51. package/dist/types/components/DPasswordStrengthMeter/PasswordCheckItem.d.ts +7 -0
  52. package/dist/types/components/DPasswordStrengthMeter/PasswordCheckList.d.ts +14 -0
  53. package/dist/types/components/DPasswordStrengthMeter/PasswordStrength.d.ts +6 -0
  54. package/dist/types/components/DPasswordStrengthMeter/index.d.ts +3 -0
  55. package/dist/types/components/DProgress/DProgress.d.ts +2 -1
  56. package/dist/types/components/DSelect/DSelect.d.ts +3 -3
  57. package/dist/types/components/DTabs/DTabs.d.ts +2 -2
  58. package/dist/types/components/DTimeline/DTimeline.d.ts +15 -0
  59. package/dist/types/components/DTimeline/index.d.ts +2 -0
  60. package/dist/types/components/DToastContainer/useDToast.d.ts +2 -2
  61. package/dist/types/components/DTooltip/DTooltip.d.ts +1 -2
  62. package/dist/types/components/DVoucher/DVoucher.d.ts +14 -0
  63. package/dist/types/components/DVoucher/hooks/useScreenshot.d.ts +5 -0
  64. package/dist/types/components/DVoucher/hooks/useScreenshotDownload.d.ts +5 -0
  65. package/dist/types/components/DVoucher/hooks/useScreenshotWebShare.d.ts +5 -0
  66. package/dist/types/components/DVoucher/index.d.ts +2 -0
  67. package/dist/types/components/config.d.ts +0 -2
  68. package/dist/types/components/index.d.ts +8 -9
  69. package/dist/types/components/interface.d.ts +3 -8
  70. package/dist/types/hooks/useResponsiveProp.d.ts +35 -0
  71. package/jest/setup.js +0 -2
  72. package/package.json +43 -40
  73. package/src/style/_shame.scss +42 -1
  74. package/src/style/abstracts/_mixins.scss +35 -23
  75. package/src/style/abstracts/_utilities.scss +70 -1
  76. package/src/style/abstracts/variables/_+import.scss +3 -2
  77. package/src/style/abstracts/variables/_alerts.scss +2 -0
  78. package/src/style/abstracts/variables/_body.scss +10 -3
  79. package/src/style/abstracts/variables/_border.scss +5 -5
  80. package/src/style/abstracts/variables/_buttons.scss +19 -11
  81. package/src/style/abstracts/variables/_cards.scss +6 -4
  82. package/src/style/abstracts/variables/_chips.scss +2 -2
  83. package/src/style/abstracts/variables/_colors.scss +147 -70
  84. package/src/style/abstracts/variables/_datepicker.scss +10 -9
  85. package/src/style/abstracts/variables/_dropdowns.scss +6 -4
  86. package/src/style/abstracts/variables/_forms.scss +4 -4
  87. package/src/style/abstracts/variables/_list-group.scss +2 -2
  88. package/src/style/abstracts/variables/_modals.scss +4 -3
  89. package/src/style/abstracts/variables/_offcanvas.scss +1 -0
  90. package/src/style/abstracts/variables/_pagination.scss +4 -4
  91. package/src/style/abstracts/variables/_shadow.scss +1 -0
  92. package/src/style/abstracts/variables/_tables.scss +8 -3
  93. package/src/style/abstracts/variables/_tooltip.scss +1 -1
  94. package/src/style/abstracts/variables/_typography.scss +7 -7
  95. package/src/style/base/_+import.scss +1 -0
  96. package/src/style/base/_alert.scss +1 -27
  97. package/src/style/base/_badge.scss +50 -12
  98. package/src/style/base/_buttons.scss +33 -30
  99. package/src/style/base/_dropdown.scss +18 -0
  100. package/src/style/base/_input-group.scss +5 -0
  101. package/src/style/base/_label.scss +0 -4
  102. package/src/style/base/_list-group.scss +6 -0
  103. package/src/style/base/_pagination.scss +2 -0
  104. package/src/style/base/_tables.scss +4 -0
  105. package/src/style/base/_tooltip.scss +1 -10
  106. package/src/style/components/_+import.scss +5 -4
  107. package/src/style/components/_d-avatar.scss +2 -20
  108. package/src/style/components/_d-box-file.scss +1 -1
  109. package/src/style/components/_d-box.scss +13 -0
  110. package/src/style/components/_d-carousel.scss +19 -1
  111. package/src/style/components/_d-credit-card.scss +67 -0
  112. package/src/style/components/_d-datepicker.scss +83 -26
  113. package/src/style/components/_d-icon.scss +10 -3
  114. package/src/style/components/_d-modal.scss +3 -0
  115. package/src/style/components/_d-stepper-desktop.scss +61 -65
  116. package/src/style/components/_d-stepper-mobile.scss +2 -2
  117. package/src/style/components/_d-tabs.scss +37 -0
  118. package/src/style/components/_d-timeline.scss +108 -0
  119. package/src/style/components/_d-voucher.scss +29 -0
  120. package/src/style/helpers/_color-bg.scss +13 -3
  121. package/src/style/root/_root.scss +109 -86
  122. package/dist/types/components/DInputCurrencyBase/DInputCurrencyBase.d.ts +0 -26
  123. package/dist/types/components/DInputCurrencyBase/index.d.ts +0 -2
  124. package/dist/types/components/DInputSearch/DInputSearch.d.ts +0 -17
  125. package/dist/types/components/DInputSearch/index.d.ts +0 -2
  126. package/dist/types/components/DList/DList.d.ts +0 -17
  127. package/dist/types/components/DList/components/DListItem.d.ts +0 -13
  128. package/dist/types/components/DList/index.d.ts +0 -3
  129. package/dist/types/components/DQuickActionButton/DQuickActionButton.d.ts +0 -20
  130. package/dist/types/components/DQuickActionButton/index.d.ts +0 -2
  131. package/dist/types/components/DQuickActionCheck/DQuickActionCheck.d.ts +0 -17
  132. package/dist/types/components/DQuickActionCheck/index.d.ts +0 -2
  133. package/dist/types/components/DQuickActionSelect/DQuickActionSelect.d.ts +0 -13
  134. package/dist/types/components/DQuickActionSelect/index.d.ts +0 -2
  135. package/dist/types/components/DQuickActionSwitch/DQuickActionSwitch.d.ts +0 -15
  136. package/dist/types/components/DQuickActionSwitch/index.d.ts +0 -2
  137. package/dist/types/components/DSkeleton/DSkeleton.d.ts +0 -11
  138. package/dist/types/components/DSkeleton/index.d.ts +0 -2
  139. package/dist/types/components/DTableHead/DTableHead.d.ts +0 -9
  140. package/dist/types/components/DTableHead/index.d.ts +0 -2
  141. package/src/style/components/_d-quick-action-button.scss +0 -121
  142. package/src/style/components/_d-quick-action-check.scss +0 -74
  143. package/src/style/components/_d-quick-action-select.scss +0 -58
  144. package/src/style/components/_d-quick-action-switch.scss +0 -64
@@ -1,31 +1,6 @@
1
1
  import type { ResponsivePaginationProps } from 'react-responsive-pagination';
2
2
  import { DataAttributes } from '../interface';
3
- export type Props = Omit<ResponsivePaginationProps, 'current'> & {
4
- current?: ResponsivePaginationProps['current'];
5
- /**
6
- * @deprecated its use is changing, use extraClassName instead, originally
7
- * we set className prop to extraClassName from react-responsive-pagination API.
8
- *
9
- * now we are trying to expose the entire API of react-responsive-pagination and
10
- * to ensure backward compatibility we are setting the className prop to
11
- * extraClassName from react-responsive-pagination only if extraClassName is not present.
12
- */
13
- className?: ResponsivePaginationProps['extraClassName'];
14
- /**
15
- * @deprecated use current instead, react-responsive-pagination API.
16
- */
17
- page?: ResponsivePaginationProps['current'];
18
- /**
19
- * @deprecated use renderNav instead, react-responsive-pagination API.
20
- */
21
- showArrows?: ResponsivePaginationProps['renderNav'];
3
+ export type Props = ResponsivePaginationProps & {
22
4
  dataAttributes?: DataAttributes;
23
5
  };
24
- export type ConditionalProps = Props | (Props & {
25
- current: number;
26
- page?: undefined;
27
- }) | (Props & {
28
- page: number;
29
- current?: undefined;
30
- });
31
- export default function DPaginator({ className, page, current, showArrows, navClassName, ...props }: ConditionalProps): import("react/jsx-runtime").JSX.Element;
6
+ export default function DPaginator({ navClassName, ...props }: Props): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,23 @@
1
+ import type { BaseProps } from '../interface';
2
+ export type ValidationMessages = {
3
+ number: string;
4
+ lowercaseLetter: string;
5
+ uppercaseLetter: string;
6
+ especialChar: string;
7
+ notMatch?: string;
8
+ };
9
+ export type ValidationCheck = 'uppercase' | 'lowercase' | 'number' | 'specialChar';
10
+ type Props = BaseProps & {
11
+ id?: string;
12
+ label?: string;
13
+ placeholder?: string;
14
+ value?: string;
15
+ name?: string;
16
+ disabled?: boolean;
17
+ invalid?: boolean;
18
+ validationMessages?: ValidationMessages;
19
+ enabledChecks?: ValidationCheck[];
20
+ onChange?: (value: string) => void;
21
+ };
22
+ export default function DPasswordStrengthMeter({ id, label, placeholder, value, name, disabled, invalid, validationMessages, enabledChecks, className, style, dataAttributes, onChange, }: Props): import("react/jsx-runtime").JSX.Element;
23
+ export {};
@@ -0,0 +1,7 @@
1
+ type Props = {
2
+ password: string;
3
+ regex: RegExp;
4
+ text: string;
5
+ };
6
+ export default function PasswordCheckItem({ password, regex, text, }: Props): import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,14 @@
1
+ import type { ValidationMessages, ValidationCheck } from './DPasswordStrengthMeter';
2
+ type Props = {
3
+ password: string;
4
+ validationMessages: ValidationMessages;
5
+ enabledChecks: ValidationCheck[];
6
+ };
7
+ export declare const CHECK_REGEX: {
8
+ uppercase: RegExp;
9
+ lowercase: RegExp;
10
+ number: RegExp;
11
+ specialChar: RegExp;
12
+ };
13
+ export default function PasswordChecksList({ password, validationMessages, enabledChecks, }: Props): import("react/jsx-runtime").JSX.Element;
14
+ export {};
@@ -0,0 +1,6 @@
1
+ type Props = {
2
+ strength: number;
3
+ total: number;
4
+ };
5
+ export default function PasswordStrengthBar({ strength, total }: Props): import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1,3 @@
1
+ import DPasswordStrengthMeter from './DPasswordStrengthMeter';
2
+ export type { ValidationMessages, ValidationCheck } from './DPasswordStrengthMeter';
3
+ export default DPasswordStrengthMeter;
@@ -5,6 +5,7 @@ type Props = BaseProps & {
5
5
  maxValue?: number;
6
6
  hideCurrentValue?: boolean;
7
7
  enableStripedAnimation?: boolean;
8
+ height?: string | number;
8
9
  };
9
- export default function DProgress({ className, style, currentValue, minValue, maxValue, hideCurrentValue, enableStripedAnimation, dataAttributes, }: Props): import("react/jsx-runtime").JSX.Element;
10
+ export default function DProgress({ className, style, currentValue, minValue, maxValue, hideCurrentValue, enableStripedAnimation, height, dataAttributes, }: Props): import("react/jsx-runtime").JSX.Element;
10
11
  export {};
@@ -10,8 +10,8 @@ import DSelectOptionEmoji from './components/DSelectOptionEmoji';
10
10
  import DSelectSingleValueEmoji from './components/DSelectSingleValueEmoji';
11
11
  import DSelectSingleValueEmojiText from './components/DSelectSingleValueEmojiText';
12
12
  import DSelectPlaceholder from './components/DSelectPlaceholder';
13
- import type { BaseProps, EndIconProps, FamilyIconProps, LabelIconProps, StartIconProps } from '../interface';
14
- type Props<Option, IsMulti extends boolean, Group extends GroupBase<Option>> = BaseProps & FamilyIconProps & LabelIconProps & StartIconProps & EndIconProps & Omit<SelectProps<Option, IsMulti, Group>, 'isDisabled' | 'isClearable' | 'isLoading' | 'isRtl' | 'isSearchable' | 'isMulti'> & {
13
+ import type { BaseProps, EndIconProps, FamilyIconProps, StartIconProps } from '../interface';
14
+ type Props<Option, IsMulti extends boolean, Group extends GroupBase<Option>> = BaseProps & FamilyIconProps & StartIconProps & EndIconProps & Omit<SelectProps<Option, IsMulti, Group>, 'isDisabled' | 'isClearable' | 'isLoading' | 'isRtl' | 'isSearchable' | 'isMulti'> & {
15
15
  label?: string;
16
16
  hint?: string;
17
17
  invalid?: boolean;
@@ -27,7 +27,7 @@ type Props<Option, IsMulti extends boolean, Group extends GroupBase<Option>> = B
27
27
  searchable?: SelectProps<Option, IsMulti, Group>['isSearchable'];
28
28
  multi?: SelectProps<Option, IsMulti, Group>['isMulti'];
29
29
  };
30
- declare function DSelect<Option = unknown, IsMulti extends boolean = false, Group extends GroupBase<Option> = GroupBase<Option>>({ id: idProp, 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, ...props }: Props<Option, IsMulti, Group>): import("react/jsx-runtime").JSX.Element;
30
+ declare function DSelect<Option = unknown, IsMulti extends boolean = false, Group extends GroupBase<Option> = GroupBase<Option>>({ id: idProp, 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, ...props }: Props<Option, IsMulti, Group>): import("react/jsx-runtime").JSX.Element;
31
31
  declare const _default: typeof DSelect & {
32
32
  OptionCheck: typeof DSelectOptionCheck;
33
33
  OptionIcon: typeof DSelectOptionIcon;
@@ -2,11 +2,11 @@ import type { PropsWithChildren } from 'react';
2
2
  import DTabContent from './components/DTabContent';
3
3
  import type { BaseProps } from '../interface';
4
4
  export type DTabOption = {
5
- label: string;
5
+ label: string | React.ReactNode;
6
6
  tab: string;
7
7
  disabled?: boolean;
8
8
  };
9
- export type TabVariant = 'tabs' | 'pills' | 'underline';
9
+ export type TabVariant = 'tabs' | 'pills' | 'underline' | 'toggle-button-group';
10
10
  type Props = BaseProps & PropsWithChildren<{
11
11
  classNameTab?: string;
12
12
  onChange?: (option: DTabOption) => void;
@@ -0,0 +1,15 @@
1
+ /// <reference types="react" />
2
+ import type { BaseProps } from '../interface';
3
+ export type DTimelineItem = {
4
+ title: string;
5
+ description?: string;
6
+ time?: string;
7
+ icon?: string;
8
+ status?: 'success' | 'warning' | 'danger' | 'info';
9
+ children?: React.ReactNode;
10
+ };
11
+ type Props = BaseProps & {
12
+ items: DTimelineItem[];
13
+ };
14
+ export default function DTimeline({ className, style, dataAttributes, items, }: Props): import("react/jsx-runtime").JSX.Element;
15
+ export {};
@@ -0,0 +1,2 @@
1
+ import DTimeline from './DTimeline';
2
+ export default DTimeline;
@@ -1,12 +1,12 @@
1
1
  import { Renderable, Toast, ValueFunction } from 'react-hot-toast';
2
+ import { ComponentStateColor } from '../interface';
2
3
  type ToastData = {
3
4
  title: string;
4
5
  description?: string;
5
6
  timestamp?: string;
6
7
  icon?: string;
7
8
  closeIcon?: string;
8
- theme?: string;
9
- soft?: boolean;
9
+ color?: ComponentStateColor;
10
10
  };
11
11
  type Props = Partial<Pick<Toast, 'id' | 'duration' | 'position'>>;
12
12
  export default function useDToast(): {
@@ -9,9 +9,8 @@ export type Props = BaseProps & PropsWithChildren<{
9
9
  withFocus?: boolean;
10
10
  withClick?: boolean;
11
11
  open?: boolean;
12
- theme?: string;
13
12
  size?: ComponentSize;
14
13
  placement?: Placement;
15
14
  Component: ReactNode;
16
15
  }>;
17
- export default function DTooltip({ className, childrenClassName, style, offSet, padding, withFocus, withClick, withHover, open, theme, placement, size, Component, children, }: Props): import("react/jsx-runtime").JSX.Element;
16
+ export default function DTooltip({ className, childrenClassName, style, offSet, padding, withFocus, withClick, withHover, open, placement, size, Component, children, }: Props): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import { PropsWithChildren, ReactNode } from 'react';
2
+ type Props = PropsWithChildren<{
3
+ amount?: string;
4
+ amountDetails?: ReactNode;
5
+ icon?: string;
6
+ color?: string;
7
+ message: string;
8
+ title: string;
9
+ downloadText?: string;
10
+ shareText?: string;
11
+ onError?: (err: Error) => Promise<void> | void;
12
+ }>;
13
+ export default function DVoucher({ amount, amountDetails, icon, color, title, onError, message, downloadText, shareText, children, }: Props): import("react/jsx-runtime").JSX.Element;
14
+ export {};
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ export default function useScreenshot(): {
3
+ clipRef: import("react").RefObject<HTMLDivElement | null>;
4
+ takeBlob: (type?: string) => Promise<Blob>;
5
+ };
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ export default function useScreenshotDownload(): {
3
+ download: () => Promise<void>;
4
+ downloadRef: import("react").RefObject<HTMLDivElement | null>;
5
+ };
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ export default function useScreenshotWebShare(): {
3
+ share: () => Promise<void>;
4
+ shareRef: import("react").RefObject<HTMLDivElement | null>;
5
+ };
@@ -0,0 +1,2 @@
1
+ import DVoucher from './DVoucher';
2
+ export default DVoucher;
@@ -1,3 +1 @@
1
1
  export declare const PREFIX_BS = "bs-";
2
- export declare const ICON_FAMILY_CLASS = "bi";
3
- export declare const ICON_FAMILY_PREFIX = "bi-";
@@ -1,6 +1,7 @@
1
1
  export { default as DAlert } from './DAlert';
2
2
  export { default as DAvatar } from './DAvatar';
3
3
  export { default as DBadge } from './DBadge';
4
+ export { default as DBox } from './DBox';
4
5
  export { default as DBoxFile } from './DBoxFile';
5
6
  export { default as DButton } from './DButton';
6
7
  export { default as DButtonIcon } from './DButtonIcon';
@@ -11,14 +12,15 @@ export { default as DCollapse } from './DCollapse';
11
12
  export { default as DCurrencyText } from './DCurrencyText';
12
13
  export { default as DDatePicker } from './DDatePicker';
13
14
  export { default as DIcon } from './DIcon';
15
+ export { default as DLayout, DLayoutPane, } from './DLayout';
14
16
  export { default as DIconBase } from './DIconBase';
15
17
  export { default as DInput } from './DInput';
16
18
  export { default as DInputMask } from './DInputMask';
17
19
  export { default as DInputCounter } from './DInputCounter';
18
- export { default as DInputCurrencyBase } from './DInputCurrencyBase';
19
20
  export { default as DInputCurrency } from './DInputCurrency';
20
- export { default as DInputSearch } from './DInputSearch';
21
21
  export { default as DInputPassword } from './DInputPassword';
22
+ export { default as DPasswordStrengthMeter } from './DPasswordStrengthMeter';
23
+ export type { ValidationMessages, ValidationCheck } from './DPasswordStrengthMeter';
22
24
  export { default as DInputCheck } from './DInputCheck';
23
25
  export { default as DInputPin } from './DInputPin';
24
26
  export { default as DInputSelect } from './DInputSelect';
@@ -26,25 +28,22 @@ export type { DInputSelectDefaultOption, DInputSelectProps } from './DInputSelec
26
28
  export { default as DInputSwitch } from './DInputSwitch';
27
29
  export { default as DInputRange } from './DInputRange';
28
30
  export { default as DSelect } from './DSelect';
29
- export { default as DList, DListItem, } from './DList';
30
31
  export { default as DListGroup, DListGroupItem, } from './DListGroup';
31
32
  export { default as DModal, DModalHeader, DModalBody, DModalFooter, } from './DModal';
32
33
  export { default as DOffcanvas, DOffcanvasHeader, DOffcanvasBody, DOffcanvasFooter, } from './DOffcanvas';
33
34
  export { default as DPaginator } from './DPaginator';
34
35
  export { default as DPopover } from './DPopover';
35
36
  export { default as DProgress } from './DProgress';
36
- export { default as DQuickActionButton } from './DQuickActionButton';
37
- export { default as DQuickActionCheck } from './DQuickActionCheck';
38
- export { default as DQuickActionSelect } from './DQuickActionSelect';
39
- export { default as DQuickActionSwitch } from './DQuickActionSwitch';
40
- export { default as DSkeleton } from './DSkeleton';
41
37
  export { default as DStepper } from './DStepper';
42
38
  export { default as DStepperDesktop } from './DStepperDesktop';
43
39
  export { default as DStepperMobile } from './DStepperMobile';
44
40
  export { default as DTooltip } from './DTooltip';
41
+ export { default as DTimeline } from './DTimeline';
45
42
  export { default as DTabs, useTabContext, DTabContent, } from './DTabs';
46
43
  export type { DTabOption } from './DTabs';
47
44
  export { default as DToast } from './DToast';
48
45
  export { default as DToastContainer, useDToast, } from './DToastContainer';
49
- export { default as DTableHead } from './DTableHead';
50
46
  export { default as DInputPhone } from './DInputPhone';
47
+ export { default as DCreditCard } from './DCreditCard';
48
+ export { default as DDropdown } from './DDropdown';
49
+ export { default as DVoucher } from './DVoucher';
@@ -24,12 +24,6 @@ export type FamilyIconProps = {
24
24
  iconFamilyPrefix?: string;
25
25
  iconMaterialStyle?: boolean;
26
26
  };
27
- export type LabelIconProps = {
28
- labelIcon?: string;
29
- labelIconFamilyClass?: string;
30
- labelIconFamilyPrefix?: string;
31
- labelIconMaterialStyle?: boolean;
32
- };
33
27
  export type StartIconProps = {
34
28
  iconStart?: string;
35
29
  iconStartDisabled?: boolean;
@@ -48,9 +42,10 @@ export type EndIconProps = {
48
42
  iconEndTabIndex?: number;
49
43
  iconEndMaterialStyle?: boolean;
50
44
  };
51
- export type AlertTheme = 'success' | 'info' | 'warning' | 'danger' | 'primary' | 'secondary';
45
+ export type ComponentColor = string;
46
+ export type ComponentStateColor = 'success' | 'danger' | 'warning' | 'info';
52
47
  export type AlertThemeIconMap = {
53
- [state in AlertTheme]: string;
48
+ [state in ComponentStateColor]: string;
54
49
  };
55
50
  export type ButtonVariant = 'outline' | 'link';
56
51
  export type ButtonType = 'submit' | 'reset' | 'button';
@@ -0,0 +1,35 @@
1
+ /**
2
+ * A mapping of breakpoint names to values for responsive properties.
3
+ *
4
+ * This type allows you to specify a value for one or more
5
+ * breakpoints ('xs', 'sm', 'md', 'lg', 'xl', 'xxl').
6
+ * When used with `useResponsiveProp`, the value for
7
+ * the highest matching breakpoint will be selected.
8
+ *
9
+ * Usage example:
10
+ * ```ts
11
+ * const prop: ResponsiveProp = { xs: "small", md: "medium", xl: "large" };
12
+ * ```
13
+ */
14
+ export type ResponsiveProp = Partial<Record<'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl', string>>;
15
+ /**
16
+ * React hook to resolve a responsive property value based on the current viewport breakpoint.
17
+ *
18
+ * Given a `ResponsiveProp` object, this hook returns the value for the highest matching breakpoint.
19
+ * If multiple breakpoints match, the value for the largest (highest) breakpoint is used.
20
+ * If no breakpoints match, `undefined` is returned.
21
+ *
22
+ * @param useListener - Whether to listen for breakpoint changes (default: false).
23
+ * @returns An object with a `responsivePropValue` function that takes a
24
+ * `ResponsiveProp` and returns the resolved value.
25
+ *
26
+ * Usage example:
27
+ * ```ts
28
+ * const { responsivePropValue } = useResponsiveProp();
29
+ * const value = responsivePropValue({ xs: "A", md: "B", xl: "C" });
30
+ * // value will be "C" if xl breakpoint is active, "B" if md is active, etc.
31
+ * ```
32
+ */
33
+ export declare function useResponsiveProp(useListener?: boolean): {
34
+ responsivePropValue: (prop: ResponsiveProp) => string | undefined;
35
+ };
package/jest/setup.js CHANGED
@@ -1,8 +1,6 @@
1
1
  /* eslint-disable react/prop-types */
2
2
  const React = require('react');
3
3
 
4
- jest.mock('react-content-loader', () => jest.fn());
5
-
6
4
  jest.mock('react-responsive-pagination', () => {
7
5
  function MockPagination(props) {
8
6
  const {
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "sideEffects": [
4
4
  "*.css"
5
5
  ],
6
- "version": "2.0.0-dev.1",
6
+ "version": "2.0.0-dev.10",
7
7
  "description": "React Dynamic Framework",
8
8
  "license": "https://github.com/dynamic-framework/dynamic-ui/blob/master/libraries/dynamic-ui-react/LICENSE.md",
9
9
  "repository": {
@@ -49,9 +49,13 @@
49
49
  "build:react:watch": "tsc -p ./tsconfig.build.json && rollup -c rollup.config.mjs",
50
50
  "build:scss": "node scripts/build-scss.js",
51
51
  "build:scss:watch": "npx nodemon --watch src --ext scss --exec 'npm run build:scss'",
52
- "cp": "npm run cp:bootstrap && npm run cp:popper && npm run cp:bootstrap-icons",
52
+ "dev:ts": "tsc -p tsconfig.build.json",
53
+ "dev:rollup": "rollup -c rollup.config.mjs",
54
+ "dev:scss": "node scripts/build-scss.js",
55
+ "build:once": "npm run dev:ts && npm run dev:rollup && sleep 0.5 && npm run dev:scss && yalc push",
56
+ "watch:ds": "npx nodemon --watch src --ext ts,tsx,scss --delay 1000ms --exec \"npm run build:once\"",
57
+ "cp": "npm run cp:bootstrap && npm run cp:popper",
53
58
  "cp:bootstrap": "scripts/cp-boostrap.sh",
54
- "cp:bootstrap-icons": "scripts/cp-boostrap-icons.sh",
55
59
  "cp:popper": "scripts/cp-popper.sh",
56
60
  "clean": "rimraf dist-transpiled && rimraf dist",
57
61
  "compile": "tsc -p . && rollup -c rollup.config.mjs",
@@ -70,7 +74,8 @@
70
74
  "publish:cdn-dev": "aws s3 sync ./dist/ s3://dynamicframework-cdn/assets/dev/ui-react --delete --acl public-read",
71
75
  "lint-staged": "lint-staged",
72
76
  "prepare": "husky",
73
- "commitlint": "commitlint --edit"
77
+ "commitlint": "commitlint --edit",
78
+ "verify": "node scripts/verify.js"
74
79
  },
75
80
  "engines": {
76
81
  "node": ">=22.0.0"
@@ -84,22 +89,23 @@
84
89
  "jest/"
85
90
  ],
86
91
  "dependencies": {
87
- "@floating-ui/react": "~0.26.1",
88
- "@react-input/mask": "~1.0.20",
92
+ "@floating-ui/react": "~0.27.16",
93
+ "@react-input/mask": "~2.0.4",
89
94
  "@splidejs/react-splide": "~0.7.12",
90
95
  "@splidejs/splide": "~4.1.4",
91
- "bootstrap": "~5.3.3",
92
- "classnames": "~2.3.2",
96
+ "bootstrap": "~5.3.8",
97
+ "classnames": "~2.5.1",
93
98
  "currency.js": "~2.0.4",
94
- "date-fns": "~2.30.0",
95
- "file-selector": "^2.1.2",
96
- "google-libphonenumber": "^3.2.40",
97
- "i18next": "~23.6.0",
98
- "react-content-loader": "~6.2.1",
99
+ "date-fns": "~4.1.0",
100
+ "file-selector": "~2.1.2",
101
+ "google-libphonenumber": "~3.2.43",
102
+ "html2canvas": "^1.4.1",
103
+ "jspdf": "^3.0.3",
104
+ "lucide-react": "^0.553.0",
99
105
  "react-datepicker": "~8.3.0",
100
- "react-international-phone": "~4.5.0",
101
- "react-responsive-pagination": "^2.9.0",
102
- "react-select": "^5.8.3"
106
+ "react-international-phone": "~4.6.0",
107
+ "react-responsive-pagination": "~2.11.3",
108
+ "react-select": "~5.10.2"
103
109
  },
104
110
  "devDependencies": {
105
111
  "@babel/core": "~7.23.2",
@@ -120,9 +126,9 @@
120
126
  "@testing-library/user-event": "^14.6.1",
121
127
  "@types/google-libphonenumber": "~7.4.30",
122
128
  "@types/jest": "~29.5.12",
123
- "@types/node": "~18.15.3",
124
- "@types/react": "~19.1.8",
125
- "@types/react-dom": "~19.1.6",
129
+ "@types/node": "^22.0.0",
130
+ "@types/react": "^19.2.0",
131
+ "@types/react-dom": "^19.2.0",
126
132
  "@typescript-eslint/eslint-plugin": "~6.9.0",
127
133
  "@typescript-eslint/parser": "~6.9.0",
128
134
  "@vitejs/plugin-react": "~4.7.0",
@@ -130,7 +136,6 @@
130
136
  "axe-playwright": "~1.2.3",
131
137
  "babel-jest": "^29.7.0",
132
138
  "babel-loader": "~9.1.3",
133
- "bootstrap-icons": "~1.13.1",
134
139
  "conventional-changelog-conventionalcommits": "~6.1.0",
135
140
  "eslint": "~8.52.0",
136
141
  "eslint-config-airbnb": "~19.0.4",
@@ -139,23 +144,25 @@
139
144
  "eslint-plugin-jsx-a11y": "~6.7.1",
140
145
  "eslint-plugin-react": "~7.33.2",
141
146
  "eslint-plugin-react-hooks": "~4.6.0",
142
- "formik": "~2.4.6",
143
- "glob": "~10.3.10",
147
+ "formik": "~2.4.8",
148
+ "framer-motion": "^12.23.24",
149
+ "glob": "^11.1.0",
144
150
  "husky": "~9.1.7",
151
+ "i18next": "~25.6.1",
145
152
  "jest": "~29.7.0",
146
153
  "jest-axe": "~8.0.0",
147
154
  "jest-cli": "~29.7.0",
148
155
  "jest-environment-jsdom": "~29.7.0",
149
156
  "lint-staged": "^15.2.10",
150
157
  "postcss-cli": "~10.1.0",
151
- "react": "~19.1.0",
152
- "react-dom": "~19.1.0",
153
- "react-hot-toast": "~2.5.2",
154
- "react-i18next": "~13.3.1",
155
- "recharts": "~3.1.0",
158
+ "react": "~19.2.1",
159
+ "react-dom": "~19.2.1",
160
+ "react-hot-toast": "~2.6.0",
161
+ "react-i18next": "~16.2.4",
162
+ "recharts": "~3.3.0",
156
163
  "remark-gfm": "~4.0.1",
157
- "rimraf": "~6.0.1",
158
- "rollup": "^4.27.4",
164
+ "rimraf": "~6.1.0",
165
+ "rollup": "~4.53.1",
159
166
  "sass": "~1.69.4",
160
167
  "storybook": "~9.0.17",
161
168
  "stylelint": "^16.16.0",
@@ -163,19 +170,15 @@
163
170
  "ts-jest": "~29.2.3",
164
171
  "tslib": "~2.6.2",
165
172
  "typescript": "~5.2.2",
166
- "vite": "~6.3.5",
173
+ "vite": "^6.4.1",
167
174
  "yup": "^1.6.1"
168
175
  },
169
176
  "peerDependencies": {
170
- "react": "~19.1.0",
171
- "react-dom": "~19.1.0",
172
- "react-hot-toast": "~2.5.2",
173
- "react-i18next": "~13.3.1",
174
- "recharts": "~3.1.0"
175
- },
176
- "peerDependenciesMeta": {
177
- "recharts": {
178
- "optional": true
179
- }
177
+ "framer-motion": ">=12 <13",
178
+ "i18next": ">=25 <26",
179
+ "react": ">=18 <20",
180
+ "react-dom": ">=18 <20",
181
+ "react-hot-toast": ">=2 <3",
182
+ "react-i18next": ">=16 <17"
180
183
  }
181
184
  }
@@ -1,5 +1,46 @@
1
- // keep empty.
1
+ /* stylelint-disable declaration-no-important */
2
2
 
3
3
  .flex-1 {
4
4
  flex: 1;
5
5
  }
6
+
7
+ .text-muted {
8
+ --#{$prefix}text-muted: var(--#{$prefix}gray-400);
9
+ color: var(--#{$prefix}text-muted) !important;
10
+ }
11
+
12
+ .form-text {
13
+ --#{$prefix}form-text: var(--#{$prefix}gray-400);
14
+ color: var(--#{$prefix}form-text) !important;
15
+ }
16
+
17
+ .spinner-border {
18
+ margin-top: 4px;
19
+ margin-bottom: 4px;
20
+ }
21
+
22
+ th {
23
+ font-weight: var(--#{$prefix}fw-semibold) !important;
24
+ }
25
+
26
+ @media (min-width: 1200px) {
27
+ legend {
28
+ margin-bottom: 1rem;
29
+ font-size: 1.25rem;
30
+ line-height: 1;
31
+ }
32
+ }
33
+
34
+ $container-max-widths: (
35
+ sm: 540px,
36
+ md: 720px,
37
+ lg: 960px,
38
+ xl: 1140px,
39
+ xxl: 1320px
40
+ ) !default;
41
+
42
+ @each $size, $width in $container-max-widths {
43
+ .max-w-#{$size} {
44
+ max-width: $width;
45
+ }
46
+ }