@dynamic-framework/ui-react 1.35.1 → 1.36.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 (36) hide show
  1. package/dist/css/dynamic-ui-non-root.css +373 -85
  2. package/dist/css/dynamic-ui-non-root.min.css +2 -2
  3. package/dist/css/dynamic-ui-root.css +4 -1
  4. package/dist/css/dynamic-ui-root.min.css +2 -2
  5. package/dist/css/dynamic-ui.css +376 -85
  6. package/dist/css/dynamic-ui.min.css +2 -2
  7. package/dist/index.esm.js +125 -19
  8. package/dist/index.esm.js.map +1 -1
  9. package/dist/index.js +126 -18
  10. package/dist/index.js.map +1 -1
  11. package/dist/types/components/DBoxFile/useDBoxFile.d.ts +1 -1
  12. package/dist/types/components/DDatePicker/DDatePicker.d.ts +4 -3
  13. package/dist/types/components/DDatePicker/components/DDatePickerHeaderSelector.d.ts +3 -1
  14. package/dist/types/components/DDatePicker/components/DDatePickerTime.d.ts +5 -7
  15. package/dist/types/components/DInputPhone/DInputPhone.d.ts +26 -0
  16. package/dist/types/components/DInputPhone/index.d.ts +2 -0
  17. package/dist/types/components/DSelect/DSelect.d.ts +2 -1
  18. package/dist/types/components/index.d.ts +1 -0
  19. package/dist/types/utils/index.d.ts +1 -0
  20. package/dist/types/utils/validatePhoneNumber.d.ts +1 -0
  21. package/jest/setup.js +15 -2
  22. package/package.json +9 -3
  23. package/src/style/abstracts/_utilities.scss +11 -1
  24. package/src/style/abstracts/variables/_+import.scss +2 -1
  25. package/src/style/abstracts/variables/_datepicker.scss +5 -8
  26. package/src/style/abstracts/variables/_input-phone.scss +62 -0
  27. package/src/style/abstracts/variables/_navs.scss +3 -1
  28. package/src/style/abstracts/variables/_typography.scss +2 -0
  29. package/src/style/base/_form-switch.scss +1 -1
  30. package/src/style/base/_nav.scss +9 -13
  31. package/src/style/components/_+import.scss +1 -0
  32. package/src/style/components/_d-datepicker.scss +79 -152
  33. package/src/style/components/_d-input-phone.scss +286 -0
  34. package/src/style/components/_d-select.scss +22 -2
  35. package/src/style/components/_d-timepicker.scss +43 -29
  36. package/src/style/root/_root.scss +4 -0
@@ -16,7 +16,7 @@ export type DBoxFileProps = {
16
16
  onDrop?: (acceptedFiles: File[], rejectedFiles: RejectedFile[], event?: Event) => void;
17
17
  onDragEnter?: (event: DragEvent<HTMLDivElement>) => void;
18
18
  onDragLeave?: (event: DragEvent<HTMLDivElement>) => void;
19
- onFileDialogCancel?: () => void;
19
+ onLoad?: (acceptedFiles: File[]) => void;
20
20
  onError?: (error: Error) => void;
21
21
  };
22
22
  export default function useDBoxFile(props: DBoxFileProps): {
@@ -1,6 +1,7 @@
1
1
  import type { DatePickerProps } from 'react-datepicker';
2
+ import { Locale } from 'date-fns';
2
3
  import type { BaseProps, ButtonVariant, ComponentSize, FamilyIconProps } from '../interface';
3
- type Props = BaseProps & FamilyIconProps & Omit<DatePickerProps, 'showMonthDropdown' | 'showMonthYearDropdown' | 'showYearDropdown' | 'useShortMonthInDropdown' | 'yearDropdownItemNumber' | 'scrollableYearDropdown' | 'dropdownMode' | 'yearItemNumber'> & {
4
+ type Props = BaseProps & FamilyIconProps & Omit<DatePickerProps, 'showMonthDropdown' | 'showMonthYearDropdown' | 'showYearDropdown' | 'useShortMonthInDropdown' | 'yearDropdownItemNumber' | 'scrollableYearDropdown' | 'dropdownMode' | 'yearItemNumber' | 'portalId' | 'withPortal' | 'onPortalKeyDown' | 'portalHost' | 'locale'> & {
4
5
  inputLabel?: string;
5
6
  inputHint?: string;
6
7
  inputAriaLabel?: string;
@@ -8,7 +9,6 @@ type Props = BaseProps & FamilyIconProps & Omit<DatePickerProps, 'showMonthDropd
8
9
  iconInput?: string;
9
10
  inputId?: string;
10
11
  timeId?: string;
11
- timeLabel?: string;
12
12
  iconHeaderPrev?: string;
13
13
  iconHeaderNext?: string;
14
14
  iconHeaderSize?: ComponentSize;
@@ -22,6 +22,7 @@ type Props = BaseProps & FamilyIconProps & Omit<DatePickerProps, 'showMonthDropd
22
22
  valid?: boolean;
23
23
  placeholder?: string;
24
24
  showHeaderSelectors?: boolean;
25
+ locale?: Locale;
25
26
  };
26
- export default function DDatePicker({ inputLabel, inputHint, inputAriaLabel, inputActionAriaLabel, inputId, timeId, timeLabel, iconInput, iconHeaderPrev, iconHeaderNext, iconMaterialStyle, iconFamilyClass, iconFamilyPrefix, minYearSelect, maxYearSelect, iconHeaderSize, headerPrevMonthAriaLabel, headerNextMonthAriaLabel, headerButtonVariant, headerButtonTheme, invalid, valid, renderCustomHeader: renderCustomHeaderProp, className, dateFormatCalendar, style, dataAttributes, placeholder, showHeaderSelectors, ...props }: Props): import("react/jsx-runtime").JSX.Element;
27
+ export default function DDatePicker({ inputLabel, inputHint, inputAriaLabel, inputActionAriaLabel, inputId, timeId, timeInputLabel, iconInput, iconHeaderPrev, iconHeaderNext, iconMaterialStyle, iconFamilyClass, iconFamilyPrefix, minYearSelect, maxYearSelect, iconHeaderSize, headerPrevMonthAriaLabel, headerNextMonthAriaLabel, headerButtonVariant, headerButtonTheme, invalid, valid, renderCustomHeader: renderCustomHeaderProp, className, dateFormatCalendar, style, dataAttributes, placeholder, showHeaderSelectors, ...props }: Props): import("react/jsx-runtime").JSX.Element;
27
28
  export {};
@@ -1,3 +1,4 @@
1
+ import { Locale } from 'date-fns';
1
2
  import type { ComponentProps } from 'react';
2
3
  import type { ReactDatePickerCustomHeaderProps } from 'react-datepicker';
3
4
  import DButton from '../../DButton';
@@ -33,6 +34,7 @@ type Props = BaseProps & FamilyIconProps & ReactDatePickerCustomHeaderProps & {
33
34
  maxYearSelect?: number;
34
35
  showHeaderSelectors?: boolean;
35
36
  monthsShown?: number;
37
+ locale?: Locale;
36
38
  } & Omit<ComponentProps<typeof DButton>, 'iconStart' | 'onClick' | 'disabled'>;
37
- export default function DDatePickerHeaderSelector({ date, changeYear, changeMonth, decreaseMonth, increaseMonth, decreaseYear, increaseYear, monthDate, pickerType, prevMonthButtonDisabled, nextMonthButtonDisabled, monthsShown, iconPrev, iconNext, prevYearButtonDisabled, nextYearButtonDisabled, iconFamilyClass, iconFamilyPrefix, iconMaterialStyle, prevMonthAriaLabel, nextMonthAriaLabel, prevYearAriaLabel, nextYearAriaLabel, iconSize, buttonVariant, buttonTheme, style, className, minYearSelect, maxYearSelect, showHeaderSelectors, customHeaderCount, }: Props): import("react/jsx-runtime").JSX.Element;
39
+ export default function DDatePickerHeaderSelector({ date, changeYear, changeMonth, decreaseMonth, increaseMonth, decreaseYear, increaseYear, monthDate, pickerType, prevMonthButtonDisabled, nextMonthButtonDisabled, monthsShown, iconPrev, iconNext, prevYearButtonDisabled, nextYearButtonDisabled, iconFamilyClass, iconFamilyPrefix, iconMaterialStyle, prevMonthAriaLabel, nextMonthAriaLabel, prevYearAriaLabel, nextYearAriaLabel, iconSize, buttonVariant, buttonTheme, style, className, minYearSelect, maxYearSelect, showHeaderSelectors, customHeaderCount, locale, }: Props): import("react/jsx-runtime").JSX.Element;
38
40
  export {};
@@ -1,9 +1,7 @@
1
- import type { ComponentProps } from 'react';
2
- import { BaseProps } from '../../interface';
3
- import DInput from '../../DInput';
4
- type Props = BaseProps & {
1
+ type Props = {
2
+ id?: string;
5
3
  value?: string;
6
- onChange?: (value?: string) => void;
7
- } & Omit<ComponentProps<typeof DInput>, 'type' | 'isReadOnly' | 'onChange' | 'value'>;
8
- export default function DDatePickerTime({ value, onChange, id, label, className, style, ...props }: Props): import("react/jsx-runtime").JSX.Element;
4
+ onChange?: (time: string) => void;
5
+ };
6
+ export default function DDatePickerTime({ value, onChange, id, }: Props): import("react/jsx-runtime").JSX.Element;
9
7
  export {};
@@ -0,0 +1,26 @@
1
+ import type { ReactNode } from 'react';
2
+ import { CountryIso2, CountrySelectorProps, ParsedCountry } from 'react-international-phone';
3
+ import type { BaseProps, ComponentSize, EndIconProps, FamilyIconProps, LabelIconProps } from '../interface';
4
+ type OnChangeType = {
5
+ phone: string;
6
+ inputValue: string;
7
+ country: ParsedCountry;
8
+ isValid: boolean;
9
+ };
10
+ declare const ForwardedDInputPhone: import("react").ForwardRefExoticComponent<Omit<Omit<Omit<import("react").DetailedHTMLProps<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "ref">, "pattern" | "value" | "type" | "onChange" | "onWheel" | "inputMode">, "size" | "loading" | "label" | "value" | "invalid" | "onChange" | keyof BaseProps | keyof FamilyIconProps | keyof LabelIconProps | keyof EndIconProps | "hint" | "valid" | "floatingLabel" | "inputEnd" | "onIconEndClick" | "countrySelectorProps" | "filteredCountries" | "defaultCountry"> & BaseProps & FamilyIconProps & LabelIconProps & EndIconProps & {
11
+ value?: string | undefined;
12
+ label?: string | undefined;
13
+ loading?: boolean | undefined;
14
+ hint?: string | undefined;
15
+ size?: ComponentSize | undefined;
16
+ invalid?: boolean | undefined;
17
+ valid?: boolean | undefined;
18
+ floatingLabel?: boolean | undefined;
19
+ inputEnd?: ReactNode;
20
+ onChange?: ((value: OnChangeType) => void) | undefined;
21
+ onIconEndClick?: ((value?: string) => void) | undefined;
22
+ countrySelectorProps?: Omit<CountrySelectorProps, "disabled" | "onSelect" | "selectedCountry" | "countries"> | undefined;
23
+ filteredCountries?: CountryIso2[] | undefined;
24
+ defaultCountry?: CountryIso2 | undefined;
25
+ } & import("react").RefAttributes<HTMLInputElement>>;
26
+ export default ForwardedDInputPhone;
@@ -0,0 +1,2 @@
1
+ import DInputPhone from './DInputPhone';
2
+ export default DInputPhone;
@@ -17,6 +17,7 @@ type Props<Option, IsMulti extends boolean, Group extends GroupBase<Option>> = B
17
17
  invalid?: boolean;
18
18
  valid?: boolean;
19
19
  menuWithMaxContent?: boolean;
20
+ floatingLabel?: boolean;
20
21
  onIconStartClick?: (value?: SelectProps<Option, IsMulti, Group>['defaultValue']) => void;
21
22
  onIconEndClick?: (value?: SelectProps<Option, IsMulti, Group>['defaultValue']) => void;
22
23
  disabled?: SelectProps<Option, IsMulti, Group>['isDisabled'];
@@ -26,7 +27,7 @@ type Props<Option, IsMulti extends boolean, Group extends GroupBase<Option>> = B
26
27
  searchable?: SelectProps<Option, IsMulti, Group>['isSearchable'];
27
28
  multi?: SelectProps<Option, IsMulti, Group>['isMulti'];
28
29
  };
29
- 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, 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, 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
31
  declare const _default: typeof DSelect & {
31
32
  OptionCheck: typeof DSelectOptionCheck;
32
33
  OptionIcon: typeof DSelectOptionIcon;
@@ -47,3 +47,4 @@ export type { DTabOption } from './DTabs';
47
47
  export { default as DToast } from './DToast';
48
48
  export { default as DToastContainer, useDToast, } from './DToastContainer';
49
49
  export { default as DTableHead } from './DTableHead';
50
+ export { default as DInputPhone } from './DInputPhone';
@@ -3,4 +3,5 @@ export { default as configureI18n } from './configureI18n';
3
3
  export { default as getQueryString } from './getQueryString';
4
4
  export { default as changeQueryString } from './changeQueryString';
5
5
  export { default as getCssVariable } from './getCssVariable';
6
+ export { default as validatePhoneNumber } from './validatePhoneNumber';
6
7
  export * from './mediaQuery';
@@ -0,0 +1 @@
1
+ export default function validatePhoneNumber(phone: string): boolean;
package/jest/setup.js CHANGED
@@ -1,7 +1,5 @@
1
1
  jest.mock('react-content-loader', () => jest.fn());
2
2
 
3
- jest.mock('react-responsive-pagination', () => jest.fn());
4
-
5
3
  jest.mock('@react-input/mask', () => ({
6
4
  InputMask: jest.fn(),
7
5
  }));
@@ -28,3 +26,18 @@ Object.defineProperty(global.window, 'matchMedia', {
28
26
  dispatchEvent: jest.fn(),
29
27
  })),
30
28
  });
29
+
30
+ // eslint-disable-next-line no-undef
31
+ globalThis.ResizeObserver = class {
32
+ observe() {
33
+ return this;
34
+ }
35
+
36
+ unobserve() {
37
+ return this;
38
+ }
39
+
40
+ disconnect() {
41
+ return this;
42
+ }
43
+ };
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "sideEffects": [
4
4
  "*.css"
5
5
  ],
6
- "version": "1.35.1",
6
+ "version": "1.36.0",
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": {
@@ -91,9 +91,11 @@
91
91
  "currency.js": "~2.0.4",
92
92
  "date-fns": "~2.30.0",
93
93
  "file-selector": "^2.1.2",
94
+ "google-libphonenumber": "^3.2.40",
94
95
  "i18next": "~23.6.0",
95
96
  "react-content-loader": "~6.2.1",
96
97
  "react-datepicker": "~8.3.0",
98
+ "react-international-phone": "~4.5.0",
97
99
  "react-responsive-pagination": "^2.9.0",
98
100
  "react-select": "^5.8.3"
99
101
  },
@@ -120,6 +122,7 @@
120
122
  "@storybook/theming": "~8.2.9",
121
123
  "@testing-library/jest-dom": "~6.1.4",
122
124
  "@testing-library/react": "~14.0.0",
125
+ "@types/google-libphonenumber": "^7.4.30",
123
126
  "@types/jest": "~29.5.12",
124
127
  "@types/node": "~18.15.3",
125
128
  "@types/react": "~18.2.31",
@@ -128,6 +131,7 @@
128
131
  "@typescript-eslint/parser": "~6.9.0",
129
132
  "autoprefixer": "~10.4.16",
130
133
  "axe-playwright": "~1.2.3",
134
+ "babel-jest": "^29.7.0",
131
135
  "babel-loader": "~9.1.3",
132
136
  "bootstrap-icons": "~1.11.3",
133
137
  "conventional-changelog-conventionalcommits": "~6.1.0",
@@ -138,6 +142,7 @@
138
142
  "eslint-plugin-jsx-a11y": "~6.7.1",
139
143
  "eslint-plugin-react": "~7.33.2",
140
144
  "eslint-plugin-react-hooks": "~4.6.0",
145
+ "formik": "^2.4.6",
141
146
  "glob": "~10.3.10",
142
147
  "husky": "~8.0.3",
143
148
  "jest": "~29.7.0",
@@ -159,7 +164,8 @@
159
164
  "stylelint-config-twbs-bootstrap": "^16.0.0",
160
165
  "ts-jest": "~29.2.3",
161
166
  "tslib": "~2.6.2",
162
- "typescript": "~5.2.2"
167
+ "typescript": "~5.2.2",
168
+ "yup": "^1.6.1"
163
169
  },
164
170
  "peerDependencies": {
165
171
  "react": "~18.3.1",
@@ -173,4 +179,4 @@
173
179
  "optional": true
174
180
  }
175
181
  }
176
- }
182
+ }
@@ -136,6 +136,16 @@ $utilities: map-merge(
136
136
  css-var: true,
137
137
  css-variable-name: fs-body-font-size,
138
138
  values: $body-font-sizes
139
- )
139
+ ),
140
+ "line-height": (
141
+ property: line-height,
142
+ class: lh,
143
+ values: (
144
+ 1: 1,
145
+ sm: var(--#{$prefix}lh-sm),
146
+ base: var(--#{$prefix}lh-base),
147
+ lg: var(--#{$prefix}lh-lg),
148
+ )
149
+ ),
140
150
  )
141
151
  );
@@ -95,5 +95,6 @@ $input-btn-border-width: var(--#{$prefix}border-width) !default;
95
95
  @import "chips";
96
96
  @import "collapse-icon-text";
97
97
  @import "box-file";
98
- @import "datepicker"
98
+ @import "datepicker";
99
+ @import "input-phone";
99
100
  // end custom
@@ -5,10 +5,10 @@ $datepicker-border-color: var(--#{$prefix}gray-400) !default;
5
5
  $datepicker-border-radius: var(--#{$prefix}border-radius-sm) !default;
6
6
  $datepicker-day-border-radius: .25rem !default;
7
7
  // Header
8
- $datepicker-header-bg: var(--#{$prefix}gray-100) !default;
8
+ $datepicker-header-bg: var(--#{$prefix}secondary-soft) !default;
9
9
  $datepicker-header-padding: var(--#{$prefix}ref-spacer-2) 0 !default;
10
10
  $datepicker-header-font-weight: var(--#{$prefix}fw-bold) !default;
11
- $datepicker-day-names-color: var(--#{$prefix}body-color) !default;
11
+ $datepicker-day-names-color: var(--#{$prefix}gray) !default;
12
12
  $datepicker-day-names-font-size: var(--#{$prefix}fs-small) !default;
13
13
 
14
14
  // Body
@@ -20,6 +20,7 @@ $datepicker-day-outside-month-color: var(--#{$prefix}gray-700) !default;
20
20
  $datepicker-day-bg: var(--#{$prefix}secondary) !default;
21
21
  $datepicker-day-hover-bg: var(--#{$prefix}gray-100) !default;
22
22
  $datepicker-day-width: var(--#{$prefix}ref-spacer-7) !default;
23
+ $datepicker-day-color: var(--#{$prefix}body-color) !default;
23
24
 
24
25
  // Day selected
25
26
  $datepicker-day-selected-color: var(--#{$prefix}white) !default;
@@ -42,9 +43,5 @@ $datepicker-range-end-bg: var(--#{$prefix}secondary-600) !default;
42
43
  $datepicker-in-range-bg: var(--#{$prefix}secondary-200) !default;
43
44
  $datepicker-range-color: var(--#{$prefix}body-color) !default;
44
45
  $datepicker-in-range-hover-bg: var(--#{$prefix}secondary-400) !default;
45
- $datepicker-in-range-disabled-color: var(--#{$prefix}secondary-300) !default;
46
- $datepicker-in-range-disabled-bg: var(--#{$prefix}gray-300) !default;
47
-
48
- // Portal
49
- $datepicker-portal-bg: rgba(var(--#{$prefix}black-rgb), .3) !default;
50
- // scss-docs-start breadcrumb-variables
46
+ $datepicker-in-range-disabled-color: var(--#{$prefix}secondary-200) !default;
47
+ $datepicker-in-range-disabled-bg: var(--#{$prefix}secondary-50) !default;
@@ -0,0 +1,62 @@
1
+ // General styles
2
+ $input-phone-height: 36px !default;
3
+ $input-phone-font-size: var(--#{$prefix}fs-sm) !default;
4
+ $input-phone-border-radius: var(--#{$prefix}ref-spacer-1) !default;
5
+ $input-phone-border-color: var(--#{$prefix}gray-100) !default;
6
+ $input-phone-background-color: var(--#{$prefix}white) !default;
7
+ $input-phone-text-color: var(--#{$prefix}body-color) !default;
8
+ $input-phone-disabled-background-color: var(--#{$prefix}gray-100) !default;
9
+ $input-phone-disabled-text-color: var(--#{$prefix}gray-600) !default;
10
+
11
+ // Country selector
12
+ $input-phone-country-selector-border-color: transparent !default;
13
+ $input-phone-country-selector-background-color: $input-phone-background-color !default;
14
+ $input-phone-country-selector-background-color-hover: transparent !default;
15
+ $input-phone-disabled-country-selector-background-color: $input-phone-disabled-background-color !default;
16
+
17
+ // Country selector arrow
18
+ $input-phone-country-selector-arrow-size: 4px !default;
19
+ $input-phone-country-selector-arrow-color: var(--#{$prefix}gray-700) !default;
20
+ $input-phone-disabled-country-selector-arrow-color: var(--#{$prefix}gray-500) !default;
21
+
22
+ // Flag
23
+ $input-phone-flag-width: 24px !default;
24
+ $input-phone-flag-height: 24px !default;
25
+
26
+ // Dropdown (country list)
27
+ $input-phone-dropdown-top: calc(100% + var(--#{$prefix}ref-spacer-2)) !default;
28
+ $input-phone-dropdown-left: 0 !default;
29
+ $input-phone-dropdown-border-radius: var(--#{$prefix}border-radius-sm) !default;
30
+ $input-phone-dropdown-border: 1px solid var(--#{$prefix}gray-200) !default;
31
+ $input-phone-dropdown-shadow: 0 !default;
32
+
33
+ // Dropdown items
34
+ $input-phone-dropdown-item-background-color: $input-phone-background-color !default;
35
+ $input-phone-dropdown-item-text-color: $input-phone-text-color !default;
36
+ $input-phone-dropdown-item-dial-code-color: var(--#{$prefix}gray-500) !default;
37
+ $input-phone-dropdown-item-height: 28px !default;
38
+ $input-phone-dropdown-item-padding: var(--#{$prefix}ref-spacer-3) var(--#{$prefix}ref-spacer-3) !default;
39
+ $input-phone-dropdown-item-font-size: var(--#{$prefix}fs-body-small) !default;
40
+ $input-phone-dropdown-item-font-weight: var(--#{$prefix}fw-normal) !default;
41
+
42
+ // Selected / hover items
43
+ $input-phone-hover-dropdown-item-background-color: var(--#{$prefix}gray-100) !default;
44
+ $input-phone-selected-dropdown-item-background-color: unset !default;
45
+ $input-phone-selected-dropdown-item-color: $input-phone-text-color !default;
46
+ $input-phone-selected-dropdown-item-font-weight: var(--#{$prefix}fw-bold) !default;
47
+ $input-phone-selected-dropdown-item-dial-code-color: $input-phone-dropdown-item-dial-code-color !default;
48
+
49
+ // Preferred list
50
+ $input-phone-dropdown-preferred-list-item-background-color: var(--#{$prefix}gray-25) !default;
51
+
52
+ // Preferred list separator
53
+ $input-phone-dropdown-preferred-list-divider-margin: 0 !default;
54
+ $input-phone-dropdown-preferred-list-divider-color: $input-phone-border-color !default;
55
+
56
+ // Country code preview
57
+ $input-phone-dial-code-preview-border-color: $input-phone-border-color !default;
58
+ $input-phone-dial-code-preview-background-color: $input-phone-background-color !default;
59
+ $input-phone-dial-code-preview-text-color: $input-phone-text-color !default;
60
+ $input-phone-dial-code-preview-font-size: $input-phone-font-size !default;
61
+ $input-phone-dial-code-preview-disabled-background-color: $input-phone-disabled-background-color !default;
62
+ $input-phone-dial-code-preview-disabled-text-color: $input-phone-disabled-text-color !default;
@@ -7,7 +7,7 @@ $nav-link-font-size: var(--#{$prefix}body-font-size) !default;
7
7
  $nav-link-font-weight: var(--#{$prefix}fw-normal) !default;
8
8
  $nav-link-color: var(--#{$prefix}gray-900) !default;
9
9
  $nav-link-hover-color: var(--#{$prefix}primary-600) !default;
10
- $nav-link-hover-bg: var(--#{$prefix}surface-primary) !default;
10
+ $nav-link-hover-bg: transparent !default; // Custom
11
11
  $nav-link-disabled-color: var(--#{$prefix}gray-300) !default;
12
12
 
13
13
  // custom
@@ -30,3 +30,5 @@ $nav-pills-link-active-bg: var(--#{$prefix}primary) !default;
30
30
  // scss-docs-end nav-variables
31
31
 
32
32
  $nav-underline-link-active-color: var(--#{$prefix}primary) !default;
33
+ $nav-underline-border-width: 2px !default;
34
+ $nav-underline-border-color: transparent !default;
@@ -36,6 +36,8 @@ $font-weight-bolder: var(--#{$prefix}fw-bolder) !default;
36
36
  $font-weight-base: $font-weight-normal !default;
37
37
 
38
38
  $line-height-base: 1.5 !default;
39
+ $line-height-sm: 1.25 !default;
40
+ $line-height-lg: 2 !default;
39
41
 
40
42
  // custom
41
43
  $body-large-font-size-value: $font-size-base * 1.5 !default; // 24px - 21.525px
@@ -1,6 +1,6 @@
1
1
  .form-switch {
2
2
  --#{$prefix}form-switch-width: #{$form-switch-width};
3
- --#{$prefix}form-switch-padding-start: #{$form-switch-padding-start} * -1;
3
+ --#{$prefix}form-switch-padding-start: calc(#{$form-switch-padding-start} * -1);
4
4
  --#{$prefix}form-switch-bg: #{escape-svg($form-switch-bg-image)};
5
5
  --#{$prefix}form-switch-border-radius: #{$form-switch-border-radius};
6
6
  --#{$prefix}form-switch-focus-bg-image: #{escape-svg($form-switch-focus-bg-image)};
@@ -10,7 +10,7 @@
10
10
  --#{$prefix}nav-link-hover-color: #{$nav-link-hover-color};
11
11
 
12
12
  .nav-link {
13
- &:hover {
13
+ &:hover:not(.active, .disabled, :disabled) {
14
14
  background-color: var(--#{$prefix}nav-link-hover-bg);
15
15
  }
16
16
  }
@@ -29,30 +29,25 @@
29
29
  }
30
30
  }
31
31
 
32
- .nav-pills {
33
- .nav-link.active {
34
- &:hover {
35
- color: var(--#{$prefix}nav-link-hover-color);
36
- }
37
- }
38
- }
39
-
40
32
  .nav-underline {
33
+ --#{$prefix}nav-underline-border-width: #{$nav-underline-border-width};
34
+ --#{$prefix}nav-underline-border-color: #{$nav-underline-border-color};
35
+
41
36
  &.flex-column {
42
37
  .nav-link {
43
- border-right: 1px solid var(--#{$prefix}nav-tabs-border-color);
44
- border-bottom-color: transparent;
38
+ border-right: var(--#{$prefix}nav-underline-border-width) solid var(--#{$prefix}nav-underline-border-color);
39
+ border-bottom-width: 0;
45
40
  }
46
41
 
47
42
  .nav-link.active {
48
43
  background-color: var(--#{$prefix}nav-link-hover-bg);
49
- border-right: 1px solid currentcolor;
44
+ border-right: var(--#{$prefix}nav-underline-border-width) solid currentcolor;
50
45
  }
51
46
  }
52
47
 
53
48
  .nav-link {
54
49
  padding: var(--#{$prefix}nav-link-padding-y) var(--#{$prefix}nav-link-padding-x);
55
- border-bottom: 1px solid var(--#{$prefix}gray-300);
50
+ border-bottom: var(--#{$prefix}nav-underline-border-width) solid var(--#{$prefix}nav-underline-border-color);
56
51
  }
57
52
  }
58
53
 
@@ -61,6 +56,7 @@
61
56
  &.active {
62
57
  border-bottom-color: transparent;
63
58
  }
59
+
64
60
  &:not(.active):is(:hover, :focus) {
65
61
  border-color: transparent;
66
62
  }
@@ -21,3 +21,4 @@
21
21
  @import "d-card-account";
22
22
  @import "d-select";
23
23
  @import "d-table-head";
24
+ @import "d-input-phone";