@dynamic-framework/ui-react 2.2.0 → 2.3.1

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 (57) hide show
  1. package/README.md +8 -0
  2. package/dist/css/dynamic-ui.css +2215 -224
  3. package/dist/css/dynamic-ui.min.css +2 -2
  4. package/dist/index.esm.js +197 -132
  5. package/dist/index.esm.js.map +1 -1
  6. package/dist/index.js +195 -130
  7. package/dist/index.js.map +1 -1
  8. package/dist/types/components/DBadge/DBadge.d.ts +3 -2
  9. package/dist/types/components/DButton/DButton.d.ts +3 -2
  10. package/dist/types/components/DButtonIcon/DButtonIcon.d.ts +3 -7
  11. package/dist/types/components/DCollapse/DCollapse.d.ts +1 -2
  12. package/dist/types/components/DDatePicker/DDatePicker.d.ts +2 -1
  13. package/dist/types/components/DDatePicker/components/DDatePickerTime.d.ts +4 -6
  14. package/dist/types/components/DInputPin/DInputPin.d.ts +2 -1
  15. package/dist/types/components/DPopover/DPopover.d.ts +2 -7
  16. package/dist/types/components/DSelect/DSelect.d.ts +2 -1
  17. package/dist/types/components/DSelect/components/DSelectOptionCheck.d.ts +1 -1
  18. package/dist/types/components/DTabs/DTabs.d.ts +3 -1
  19. package/package.json +11 -15
  20. package/src/style/_shame.scss +2 -2
  21. package/src/style/abstracts/_mixins.scss +4 -4
  22. package/src/style/abstracts/_utilities.scss +68 -11
  23. package/src/style/abstracts/variables/_+import.scss +2 -2
  24. package/src/style/abstracts/variables/_alerts.scss +1 -1
  25. package/src/style/abstracts/variables/_border.scss +9 -0
  26. package/src/style/abstracts/variables/_buttons.scss +1 -1
  27. package/src/style/abstracts/variables/_carousel.scss +13 -1
  28. package/src/style/abstracts/variables/_colors.scss +2 -2
  29. package/src/style/abstracts/variables/_navs.scss +23 -27
  30. package/src/style/base/_+import.scss +1 -0
  31. package/src/style/base/_badge.scss +1 -1
  32. package/src/style/base/_carousel.scss +44 -0
  33. package/src/style/base/_collapse.scss +21 -8
  34. package/src/style/base/_nav.scss +10 -59
  35. package/src/style/base/_type.scss +4 -0
  36. package/src/style/components/_+import.scss +0 -1
  37. package/src/style/components/_d-avatar.scss +2 -2
  38. package/src/style/components/_d-box.scss +10 -10
  39. package/src/style/components/_d-carousel.scss +26 -4
  40. package/src/style/components/_d-chip.scss +13 -3
  41. package/src/style/components/_d-credit-card.scss +22 -12
  42. package/src/style/components/_d-icon.scss +17 -0
  43. package/src/style/components/_d-select.scss +59 -25
  44. package/src/style/components/_d-stepper-desktop.scss +2 -2
  45. package/src/style/components/_d-tabs.scss +7 -18
  46. package/src/style/components/_d-timeline.scss +6 -5
  47. package/src/style/components/_d-voucher.scss +1 -1
  48. package/src/style/helpers/_+import.scss +1 -0
  49. package/src/style/helpers/_animations.scss +13 -0
  50. package/src/style/root/_root.scss +8 -4
  51. package/dist/css/dynamic-ui-non-root.css +0 -50044
  52. package/dist/css/dynamic-ui-non-root.min.css +0 -6
  53. package/dist/css/dynamic-ui-root.css +0 -1116
  54. package/dist/css/dynamic-ui-root.min.css +0 -6
  55. package/src/style/components/_d-collapse-icon-text.scss +0 -16
  56. package/src/style/dynamic-ui-non-root.scss +0 -17
  57. package/src/style/dynamic-ui-root.scss +0 -5
@@ -1,8 +1,9 @@
1
1
  import type { BaseProps, ComponentColor } from '../interface';
2
+ import { ResponsiveProp } from '../../hooks/useResponsiveProp';
2
3
  type Props = BaseProps & {
3
4
  text?: string;
4
5
  soft?: boolean;
5
- size?: 'sm' | 'lg';
6
+ size?: string | ResponsiveProp;
6
7
  rounded?: boolean;
7
8
  color?: ComponentColor;
8
9
  id?: string;
@@ -12,5 +13,5 @@ type Props = BaseProps & {
12
13
  iconFamilyClass?: string;
13
14
  iconFamilyPrefix?: string;
14
15
  };
15
- export default function DBadge({ text, soft, color, id, rounded, className, size, style, iconStart, iconEnd, iconMaterialStyle, iconFamilyClass, iconFamilyPrefix, dataAttributes, }: Props): import("react/jsx-runtime").JSX.Element;
16
+ export default function DBadge(props: Props): import("react/jsx-runtime").JSX.Element;
16
17
  export {};
@@ -1,11 +1,12 @@
1
1
  import { type ButtonHTMLAttributes } from 'react';
2
- import type { BaseProps, ButtonVariant, ComponentColor, ComponentSize, EndIconProps, StartIconProps } from '../interface';
2
+ import { ResponsiveProp } from '../../hooks/useResponsiveProp';
3
+ import type { BaseProps, ButtonVariant, ComponentColor, EndIconProps, StartIconProps } from '../interface';
3
4
  interface Props extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'color'>, BaseProps, StartIconProps, EndIconProps {
4
5
  href?: string;
5
6
  target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];
6
7
  rel?: React.AnchorHTMLAttributes<HTMLAnchorElement>['rel'];
7
8
  color?: ComponentColor;
8
- size?: ComponentSize;
9
+ size?: string | ResponsiveProp;
9
10
  variant?: ButtonVariant;
10
11
  text?: string;
11
12
  loading?: boolean;
@@ -1,22 +1,18 @@
1
1
  import type { MouseEvent } from 'react';
2
- import type { BaseProps, ButtonType, ButtonVariant, ComponentColor, ComponentSize, FamilyIconProps, InputState } from '../interface';
3
- type Props = BaseProps & FamilyIconProps & {
4
- id?: string;
2
+ import type { BaseProps, ButtonVariant, ComponentColor, ComponentSize, FamilyIconProps, InputState } from '../interface';
3
+ type Props = BaseProps & FamilyIconProps & React.ButtonHTMLAttributes<HTMLButtonElement> & {
5
4
  icon: string;
6
5
  size?: ComponentSize;
7
6
  variant?: ButtonVariant;
8
7
  color?: ComponentColor;
9
8
  state?: InputState;
10
- type?: ButtonType;
11
9
  loading?: boolean;
12
10
  loadingAriaLabel?: string;
13
- ariaLabel?: string;
14
11
  stopPropagationEnabled?: boolean;
15
- disabled?: boolean;
16
12
  href?: string;
17
13
  target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];
18
14
  rel?: React.AnchorHTMLAttributes<HTMLAnchorElement>['rel'];
19
15
  onClick?: (event: MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => void;
20
16
  };
21
- export default function DButtonIcon({ id, icon, size, className, variant, state, loadingAriaLabel, iconMaterialStyle, ariaLabel, color, type, loading, disabled, href, target, rel, stopPropagationEnabled, style, iconFamilyClass, iconFamilyPrefix, dataAttributes, onClick, }: Props): import("react/jsx-runtime").JSX.Element;
17
+ export default function DButtonIcon({ id, icon, size, className, variant, state, loadingAriaLabel, iconMaterialStyle, disabled, color, loading, href, target, rel, stopPropagationEnabled, style, iconFamilyClass, iconFamilyPrefix, dataAttributes, onClick, 'aria-label': ariaLabelProp, ...rest }: Props): import("react/jsx-runtime").JSX.Element;
22
18
  export {};
@@ -3,7 +3,6 @@ import type { BaseProps, FamilyIconProps } from '../interface';
3
3
  type Props = BaseProps & FamilyIconProps & PropsWithChildren<{
4
4
  id?: string;
5
5
  Component: ReactElement<unknown> | ReactNode;
6
- hasSeparator?: boolean;
7
6
  /**
8
7
  * Reactive prop for controlled and uncontrolled mode.
9
8
  *
@@ -15,5 +14,5 @@ type Props = BaseProps & FamilyIconProps & PropsWithChildren<{
15
14
  iconOpen?: string;
16
15
  iconClose?: string;
17
16
  }>;
18
- export default function DCollapse({ id, className, style, Component, hasSeparator, defaultCollapsed, onChange, children, iconOpen: iconOpenProp, iconClose: iconCloseProp, iconFamilyClass, iconFamilyPrefix, iconMaterialStyle, dataAttributes, }: Props): import("react/jsx-runtime").JSX.Element;
17
+ export default function DCollapse({ id, className, style, Component, defaultCollapsed, onChange, children, iconOpen: iconOpenProp, iconClose: iconCloseProp, iconFamilyClass, iconFamilyPrefix, iconMaterialStyle, dataAttributes, }: Props): import("react/jsx-runtime").JSX.Element;
19
18
  export {};
@@ -24,6 +24,7 @@ type Props = BaseProps & FamilyIconProps & Omit<DatePickerProps, 'showMonthDropd
24
24
  showHeaderSelectors?: boolean;
25
25
  formatHeaderDate?: string;
26
26
  locale?: Locale;
27
+ ariaLabelInputTime?: string;
27
28
  };
28
- export default function DDatePicker({ inputLabel, inputHint, inputAriaLabel, inputActionAriaLabel, inputId, timeId, timeInputLabel, minYearSelect, maxYearSelect, iconHeaderSize, iconMaterialStyle, iconInput, headerPrevMonthAriaLabel, headerNextMonthAriaLabel, invalid, valid, renderCustomHeader: renderCustomHeaderProp, className, dateFormatCalendar, style, dataAttributes, placeholder, showHeaderSelectors, formatHeaderDate, ...props }: Props): import("react/jsx-runtime").JSX.Element;
29
+ export default function DDatePicker({ inputLabel, inputHint, inputAriaLabel, ariaLabelInputTime, inputActionAriaLabel, inputId, timeId, timeInputLabel, minYearSelect, maxYearSelect, iconHeaderSize, iconMaterialStyle, iconInput, headerPrevMonthAriaLabel, headerNextMonthAriaLabel, invalid, valid, renderCustomHeader: renderCustomHeaderProp, className, dateFormatCalendar, style, dataAttributes, placeholder, showHeaderSelectors, formatHeaderDate, ...props }: Props): import("react/jsx-runtime").JSX.Element;
29
30
  export {};
@@ -1,7 +1,5 @@
1
- type Props = {
2
- id?: string;
3
- value?: string;
4
- onChange?: (time: string) => void;
5
- };
6
- export default function DDatePickerTime({ value, onChange, id, }: Props): import("react/jsx-runtime").JSX.Element;
1
+ import { ComponentProps } from 'react';
2
+ import DInput from '../../DInput';
3
+ type Props = Pick<ComponentProps<typeof DInput>, 'id' | 'value' | 'onChange' | 'aria-label'>;
4
+ export default function DDatePickerTime({ ...rest }: Props): import("react/jsx-runtime").JSX.Element;
7
5
  export {};
@@ -14,6 +14,7 @@ type Props = BaseProps & FamilyIconProps & {
14
14
  invalid?: boolean;
15
15
  valid?: boolean;
16
16
  onChange?: (value: string) => void;
17
+ 'aria-label'?: string;
17
18
  };
18
- export default function DInputPin({ id: idProp, label, placeholder, type, disabled, loading, secret, characters, innerInputMode, hint, invalid, valid, className, style, dataAttributes, onChange, }: Props): import("react/jsx-runtime").JSX.Element;
19
+ export default function DInputPin({ id: idProp, label, placeholder, type, disabled, loading, secret, characters, innerInputMode, hint, invalid, valid, className, style, dataAttributes, onChange, 'aria-label': ariaLabel, }: Props): import("react/jsx-runtime").JSX.Element;
19
20
  export {};
@@ -1,12 +1,7 @@
1
- import type { PropsWithChildren, ReactElement } from 'react';
1
+ import type { ReactElement, PropsWithChildren } from 'react';
2
2
  import type { BaseProps } from '../interface';
3
3
  type Props = BaseProps & PropsWithChildren<{
4
- /**
5
- * Component to render in call to action
6
- * @param {boolean} open
7
- * @returns {React.ReactElement}
8
- */
9
- renderComponent: (open: boolean) => ReactElement<unknown>;
4
+ renderComponent: (open: boolean) => ReactElement;
10
5
  open: boolean;
11
6
  setOpen?: (open: boolean) => void;
12
7
  adjustContentToRender?: boolean;
@@ -13,6 +13,7 @@ import DSelectPlaceholder from './components/DSelectPlaceholder';
13
13
  import type { BaseProps, EndIconProps, FamilyIconProps, StartIconProps } from '../interface';
14
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
+ ariaLabel?: string;
16
17
  hint?: string;
17
18
  invalid?: boolean;
18
19
  valid?: boolean;
@@ -27,7 +28,7 @@ type Props<Option, IsMulti extends boolean, Group extends GroupBase<Option>> = B
27
28
  searchable?: SelectProps<Option, IsMulti, Group>['isSearchable'];
28
29
  multi?: SelectProps<Option, IsMulti, Group>['isMulti'];
29
30
  };
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
+ 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, ariaLabel, ...props }: Props<Option, IsMulti, Group>): import("react/jsx-runtime").JSX.Element;
31
32
  declare const _default: typeof DSelect & {
32
33
  OptionCheck: typeof DSelectOptionCheck;
33
34
  OptionIcon: typeof DSelectOptionIcon;
@@ -1,2 +1,2 @@
1
1
  import type { GroupBase, OptionProps } from 'react-select';
2
- export default function DSelectOptionCheck<Option = unknown, IsMulti extends boolean = false, Group extends GroupBase<Option> = GroupBase<Option>>({ innerProps, children, isSelected, ...props }: OptionProps<Option, IsMulti, Group>): import("react/jsx-runtime").JSX.Element;
2
+ export default function DSelectOptionCheck<Option = unknown, IsMulti extends boolean = false, Group extends GroupBase<Option> = GroupBase<Option>>({ children, isSelected, ...props }: OptionProps<Option, IsMulti, Group>): import("react/jsx-runtime").JSX.Element;
@@ -14,8 +14,10 @@ type Props = BaseProps & PropsWithChildren<{
14
14
  defaultSelected: string;
15
15
  vertical?: boolean;
16
16
  variant?: TabVariant;
17
+ ariaLabel?: string;
18
+ ariaLabelledBy?: string;
17
19
  }>;
18
- declare function DTabs({ children, defaultSelected, onChange, options, className, classNameTab, style, vertical, variant, dataAttributes, }: Props): import("react/jsx-runtime").JSX.Element;
20
+ declare function DTabs({ children, defaultSelected, onChange, options, className, classNameTab, style, vertical, variant, dataAttributes, ariaLabel, ariaLabelledBy, }: Props): import("react/jsx-runtime").JSX.Element;
19
21
  declare const _default: typeof DTabs & {
20
22
  Tab: typeof DTabContent;
21
23
  };
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "sideEffects": [
4
4
  "*.css"
5
5
  ],
6
- "version": "2.2.0",
6
+ "version": "2.3.1",
7
7
  "description": "React Dynamic Framework",
8
8
  "license": "https://github.com/dynamic-framework/dynamic-ui/blob/master/LICENSE.md",
9
9
  "repository": {
@@ -75,7 +75,8 @@
75
75
  "lint-staged": "lint-staged",
76
76
  "prepare": "husky",
77
77
  "commitlint": "commitlint --edit",
78
- "verify": "node scripts/verify.js"
78
+ "verify": "node scripts/verify.js",
79
+ "axe": "npx tsx scripts/generate-a11y-report.ts"
79
80
  },
80
81
  "engines": {
81
82
  "node": ">=22.0.0"
@@ -109,10 +110,7 @@
109
110
  "react-select": "~5.10.2"
110
111
  },
111
112
  "devDependencies": {
112
- "@babel/core": "~7.23.2",
113
- "@babel/preset-env": "~7.23.2",
114
- "@babel/preset-react": "~7.22.15",
115
- "@babel/preset-typescript": "~7.23.2",
113
+ "@axe-core/playwright": "^4.11.1",
116
114
  "@commitlint/cli": "~19.3.0",
117
115
  "@commitlint/config-conventional": "~19.2.2",
118
116
  "@mdx-js/react": "~2.3.0",
@@ -135,8 +133,6 @@
135
133
  "@vitejs/plugin-react": "~4.7.0",
136
134
  "autoprefixer": "~10.4.16",
137
135
  "axe-playwright": "~1.2.3",
138
- "babel-jest": "^29.7.0",
139
- "babel-loader": "~9.1.3",
140
136
  "conventional-changelog-conventionalcommits": "~6.1.0",
141
137
  "eslint": "~8.52.0",
142
138
  "eslint-config-airbnb": "~19.0.4",
@@ -147,14 +143,13 @@
147
143
  "eslint-plugin-react-hooks": "~4.6.0",
148
144
  "formik": "~2.4.8",
149
145
  "framer-motion": "^12.23.24",
150
- "glob": "^11.1.0",
151
146
  "husky": "~9.1.7",
152
147
  "i18next": "~25.6.1",
153
- "jest": "~29.7.0",
154
- "jest-axe": "~8.0.0",
155
- "jest-cli": "~29.7.0",
156
- "jest-environment-jsdom": "~29.7.0",
148
+ "jest": "^30.3.0",
149
+ "jest-axe": "^10.0.0",
150
+ "jest-environment-jsdom": "^30.3.0",
157
151
  "lint-staged": "^15.2.10",
152
+ "playwright": "^1.58.2",
158
153
  "postcss-cli": "~10.1.0",
159
154
  "react": "~19.2.1",
160
155
  "react-dom": "~19.2.1",
@@ -163,13 +158,14 @@
163
158
  "recharts": "~3.3.0",
164
159
  "remark-gfm": "~4.0.1",
165
160
  "rimraf": "~6.1.0",
166
- "rollup": "~4.53.1",
161
+ "rollup": "^4.59.0",
167
162
  "sass": "~1.69.4",
168
163
  "storybook": "^10.2.8",
169
164
  "stylelint": "^16.16.0",
170
165
  "stylelint-config-twbs-bootstrap": "^16.0.0",
171
- "ts-jest": "~29.2.3",
166
+ "ts-jest": "^29.4.6",
172
167
  "tslib": "~2.6.2",
168
+ "tsx": "^4.21.0",
173
169
  "typescript": "~5.2.2",
174
170
  "vite": "^6.4.1",
175
171
  "yup": "^1.6.1"
@@ -5,12 +5,12 @@
5
5
  }
6
6
 
7
7
  .text-muted {
8
- --#{$prefix}text-muted: var(--#{$prefix}gray-400);
8
+ --#{$prefix}text-muted: var(--#{$prefix}gray-500);
9
9
  color: var(--#{$prefix}text-muted) !important;
10
10
  }
11
11
 
12
12
  .form-text {
13
- --#{$prefix}form-text: var(--#{$prefix}gray-400);
13
+ --#{$prefix}form-text: var(--#{$prefix}gray-500);
14
14
  color: var(--#{$prefix}form-text) !important;
15
15
  }
16
16
 
@@ -43,12 +43,12 @@
43
43
  // scss-docs-start df-btn-outline-variant-variables-mixin
44
44
  @mixin df-button-outline-variant-variables(
45
45
  $color-name,
46
- $default-color: var(--#{$prefix}#{$color-name}-500),
46
+ $default-color: if($color-name == "warning", var(--#{$prefix}#{$color-name}-700), var(--#{$prefix}#{$color-name}-500)),
47
47
  $default-border-color: $default-color,
48
- $hover-color: var(--#{$prefix}#{$color-name}-600),
48
+ $hover-color: if($color-name == "warning", var(--#{$prefix}#{$color-name}-800), var(--#{$prefix}#{$color-name}-600)),
49
49
  $hover-border-color: $hover-color,
50
50
  $focus-color: $hover-color,
51
- $active-color: var(--#{$prefix}#{$color-name}-700),
51
+ $active-color: if($color-name == "warning", var(--#{$prefix}#{$color-name}-900), var(--#{$prefix}#{$color-name}-700)),
52
52
  $active-border-color: $active-color,
53
53
  $disabled-opacity: $btn-disabled-opacity,
54
54
  $box-shadow: $btn-box-shadow,
@@ -84,7 +84,7 @@
84
84
  // scss-docs-start df-btn-link-variant-variables-mixin
85
85
  @mixin df-button-link-variant-variables(
86
86
  $color-name,
87
- $default-color: var(--#{$prefix}#{$color-name}-500),
87
+ $default-color: if($color-name == "warning", var(--#{$prefix}#{$color-name}-700), var(--#{$prefix}#{$color-name}-500)),
88
88
  $hover-text-color: var(--#{$prefix}#{$color-name}-600),
89
89
  $focus-text-color: var(--#{$prefix}#{$color-name}-600),
90
90
  $active-text-color: var(--#{$prefix}#{$color-name}-700),
@@ -38,20 +38,10 @@ $utilities: map-merge(
38
38
  )
39
39
  )
40
40
  ),
41
- "shadow": map-merge(
42
- map-get($utilities, "shadow"),
43
- (
44
- values: (
45
- null: var(--#{$prefix}box-shadow),
46
- sm: var(--#{$prefix}box-shadow-sm),
47
- lg: var(--#{$prefix}box-shadow-lg),
48
- none: none
49
- )
50
- )
51
- ),
52
41
  "text-opacity": map-merge(
53
42
  map-get($utilities, "text-opacity"),
54
43
  (
44
+ responsive: true,
55
45
  values: map-merge(
56
46
  map-get(map-get($utilities, "text-opacity"), "values"),
57
47
  (
@@ -72,15 +62,82 @@ $utilities: map-merge(
72
62
  responsive: true
73
63
  )
74
64
  ),
65
+ "border": map-merge(
66
+ map-get($utilities, "border"),
67
+ (
68
+ responsive: true,
69
+ )
70
+ ),
71
+ "border-top": map-merge(
72
+ map-get($utilities, "border-top"),
73
+ (
74
+ responsive: true,
75
+ )
76
+ ),
77
+ "border-end": map-merge(
78
+ map-get($utilities, "border-end"),
79
+ (
80
+ responsive: true,
81
+ )
82
+ ),
83
+ "border-bottom": map-merge(
84
+ map-get($utilities, "border-bottom"),
85
+ (
86
+ responsive: true,
87
+ )
88
+ ),
89
+ "border-start": map-merge(
90
+ map-get($utilities, "border-start"),
91
+ (
92
+ responsive: true,
93
+ )
94
+ ),
75
95
  "border-color": map-merge(
76
96
  map-get($utilities, "border-color"),
77
97
  (
98
+ responsive: true,
78
99
  values: map-merge(
79
100
  map-get(map-get($utilities, "border-color"), "values"),
80
101
  map-loop($palette-grays, rgba-css-var, "$key", "border"),
81
102
  )
82
103
  )
83
104
  ),
105
+ "border-width": map-merge(
106
+ map-get($utilities, "border-width"),
107
+ (
108
+ responsive: true,
109
+ )
110
+ ),
111
+ "rounded": map-merge(
112
+ map-get($utilities, "rounded"),
113
+ (
114
+ responsive: true,
115
+ )
116
+ ),
117
+ "rounded-top": map-merge(
118
+ map-get($utilities, "rounded-top"),
119
+ (
120
+ responsive: true,
121
+ )
122
+ ),
123
+ "rounded-end": map-merge(
124
+ map-get($utilities, "rounded-end"),
125
+ (
126
+ responsive: true,
127
+ )
128
+ ),
129
+ "rounded-bottom": map-merge(
130
+ map-get($utilities, "rounded-bottom"),
131
+ (
132
+ responsive: true,
133
+ )
134
+ ),
135
+ "rounded-start": map-merge(
136
+ map-get($utilities, "rounded-start"),
137
+ (
138
+ responsive: true,
139
+ )
140
+ ),
84
141
  "grid-column": (
85
142
  class: "g-col",
86
143
  property: grid-column,
@@ -20,8 +20,8 @@ $focus-ring-opacity: .25 !default;
20
20
  $focus-ring-blur: 0 !default;
21
21
  // custom
22
22
  $focus-ring-border-color: transparent !default;
23
- $focus-ring-color-mapping: "secondary-rgb" !default;
24
- $focus-ring-color: var(--#{$prefix}gray-100) !default;
23
+ $focus-ring-color-mapping: "primary-rgb" !default;
24
+ $focus-ring-color: var(--#{$prefix}focus-ring-color) !default;
25
25
  // end custom
26
26
  $focus-ring-box-shadow: 0 0 $focus-ring-blur $focus-ring-width $focus-ring-color !default;
27
27
  // scss-docs-end focus-ring-variables
@@ -1,6 +1,6 @@
1
1
  // Alerts
2
2
  // scss-docs-start alert-variables
3
- $alert-border-radius: var(--#{$prefix}border-radius-sm) !default;
3
+ $alert-border-radius: var(--#{$prefix}border-radius) !default;
4
4
  $alert-link-font-weight: var(--#{$prefix}fw-bold) !default;
5
5
  // scss-docs-end alert-variables
6
6
 
@@ -15,3 +15,12 @@ $border-radius-xl: 1.5rem !default;
15
15
  $border-radius-xxl: 2rem !default;
16
16
  $border-radius-pill: 50rem !default;
17
17
  // scss-docs-end border-radius-variables
18
+
19
+ $border-widths: (
20
+ 1: var(--#{$prefix}border-width),
21
+ 2: calc(var(--#{$prefix}border-width) * 2),
22
+ 3: calc(var(--#{$prefix}border-width) * 3),
23
+ 4: calc(var(--#{$prefix}border-width) * 4),
24
+ 5: calc(var(--#{$prefix}border-width) * 5),
25
+ 6: calc(var(--#{$prefix}border-width) * 6)
26
+ ) !default;
@@ -7,7 +7,7 @@ $btn-color: var(--#{$prefix}body-color) !default;
7
7
  $btn-padding-y: $spacer-2 !default;
8
8
  $btn-padding-x: $spacer-4 !default;
9
9
  $btn-line-height: 1.5 !default;
10
- $btn-font-weight: $font-weight-semibold !default;
10
+ $btn-font-weight: $font-weight-normal !default;
11
11
 
12
12
  $btn-padding-y-sm: $spacer-1 !default;
13
13
  $btn-padding-x-sm: $spacer-3 !default;
@@ -2,7 +2,19 @@
2
2
 
3
3
  // scss-docs-start carousel-variables
4
4
  $carousel-control-color: var(--#{$prefix}white) !default;
5
- $carousel-indicator-active-bg: var(--#{$prefix}white) !default;
5
+ $carousel-indicator-bg: var(--#{$prefix}primary-100) !default;
6
+ $carousel-indicator-border: 1px solid var(--#{$prefix}primary-200) !default;
7
+ $carousel-indicator-width: 16px !default;
8
+ $carousel-indicator-height: 16px !default;
9
+ $carousel-indicator-radius: 100px !default;
10
+ $carousel-indicator-active-width: 26px !default;
11
+ $carousel-indicator-active-bg: var(--#{$prefix}primary) !default;
12
+ $carousel-indicator-active-border: var(--#{$prefix}primary) !default;
13
+ $carousel-indicator-hover-bg: var(--#{$prefix}primary-200) !default;
14
+ $carousel-control-bg: var(--#{$prefix}primary) !default;
15
+ $carousel-control-width: 24px !default;
16
+ $carousel-control-height: 24px !default;
17
+ $carousel-control-radius: 48px !default;
6
18
  $carousel-caption-color: var(--#{$prefix}white) !default;
7
19
  // scss-docs-end carousel-variables
8
20
 
@@ -41,7 +41,7 @@ $purple: #4848b7 !default;
41
41
  $pink: #d81b60 !default;
42
42
  $red: #dc3545 !default;
43
43
  $orange: #fd7e14 !default;
44
- $yellow: #ffc107 !default;
44
+ $yellow: #ffb300 !default;
45
45
  $green: #198754 !default;
46
46
  $teal: #20c997 !default;
47
47
  $cyan: #0dcaf0 !default;
@@ -404,7 +404,7 @@ $info-text-emphasis: var(--#{$prefix}info-600) !default;
404
404
  $warning-text-emphasis: var(--#{$prefix}warning-800) !default;
405
405
  $danger-text-emphasis: var(--#{$prefix}danger-600) !default;
406
406
  $light-text-emphasis: var(--#{$prefix}gray-600) !default;
407
- $dark-text-emphasis: var(--#{$prefix}gray-600) !default;
407
+ $dark-text-emphasis: var(--#{$prefix}gray-25) !default;
408
408
  // scss-docs-end theme-text-variables
409
409
 
410
410
  // scss-docs-start theme-bg-subtle-variables
@@ -1,34 +1,30 @@
1
1
  // Navs
2
2
 
3
3
  // scss-docs-start nav-variables
4
- $nav-link-padding-y: $spacer-2 !default;
5
- $nav-link-padding-x: $spacer-4 !default;
6
- $nav-link-font-size: var(--#{$prefix}body-font-size) !default;
7
- $nav-link-font-weight: var(--#{$prefix}fw-normal) !default;
8
- $nav-link-color: var(--#{$prefix}gray-900) !default;
9
- $nav-link-hover-color: var(--#{$prefix}primary-600) !default;
10
- $nav-link-hover-bg: transparent !default; // Custom
11
- $nav-link-disabled-color: var(--#{$prefix}gray-300) !default;
4
+ $nav-link-padding-y: $spacer-2 !default;
5
+ $nav-link-padding-x: $spacer-4 !default;
6
+ $nav-link-font-size: var(--#{$prefix}body-font-size) !default;
7
+ $nav-link-font-weight: var(--#{$prefix}fw-normal) !default;
8
+ $nav-link-color: var(--#{$prefix}gray-900) !default;
9
+ $nav-link-hover-color: var(--#{$prefix}primary-600) !default;
10
+ $nav-link-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;
11
+ $nav-link-disabled-color: var(--#{$prefix}gray-300) !default;
12
+ $nav-link-focus-box-shadow: $focus-ring-box-shadow !default;
12
13
 
13
- // custom
14
- $nav-link-border-active-font-weight: var(--#{$prefix}fw-bold) !default;
15
- // end custom
14
+ $nav-tabs-border-color: var(--#{$prefix}gray-100) !default;
15
+ $nav-tabs-border-width: var(--#{$prefix}border-width) !default;
16
+ $nav-tabs-border-radius: var(--#{$prefix}border-radius-sm) !default;
17
+ $nav-tabs-link-hover-border-color: $nav-tabs-border-color !default;
18
+ $nav-tabs-link-active-color: var(--#{$prefix}primary) !default;
19
+ $nav-tabs-link-active-bg: var(--#{$prefix}white) !default;
20
+ $nav-tabs-link-active-border-color: var(--#{$prefix}nav-tabs-border-color) !default;
16
21
 
17
- $nav-tabs-border-radius: var(--#{$prefix}border-radius-sm) !default;
18
- $nav-tabs-link-active-color: var(--#{$prefix}primary) !default;
19
- $nav-tabs-link-active-bg: var(--#{$prefix}white) !default;
20
- $nav-tabs-link-active-border-color: var(--#{$prefix}gray-300) !default;
21
- $nav-tabs-border-color: var(--#{$prefix}gray-300) !default;
22
+ $nav-pills-border-radius: var(--#{$prefix}border-radius-sm) !default;
23
+ $nav-pills-link-active-color: var(--#{$prefix}primary-500) !default;
24
+ $nav-pills-link-active-bg: var(--#{$prefix}gray-50) !default;
22
25
 
23
- // custom
24
- $nav-nav-gap: var(--#{$prefix}ref-spacer-0) !default;
25
- // end custom
26
-
27
- $nav-pills-border-radius: var(--#{$prefix}border-radius-sm) !default;
28
- $nav-pills-link-active-color: var(--#{$prefix}white) !default;
29
- $nav-pills-link-active-bg: var(--#{$prefix}primary) !default;
26
+ $nav-underline-gap: 1rem !default;
27
+ $nav-underline-border-width: 2px !default;
28
+ $nav-underline-link-active-color: var(--#{$prefix}primary) !default;
29
+ $nav-underline-font-weight: var(--#{$prefix}fw-normal) !default; // custom
30
30
  // scss-docs-end nav-variables
31
-
32
- $nav-underline-link-active-color: var(--#{$prefix}primary) !default;
33
- $nav-underline-border-width: 2px !default;
34
- $nav-underline-border-color: transparent !default;
@@ -59,3 +59,4 @@
59
59
  @import "tooltip";
60
60
  @import "placeholder";
61
61
  @import "nav";
62
+ @import "carousel"
@@ -3,7 +3,7 @@
3
3
  --#{$prefix}badge-icon-size: #{$badge-font-size};
4
4
  --#{$prefix}badge-bg: #{$badge-bg};
5
5
  --#{$prefix}badge-color: #{$badge-color};
6
- --#{$prefix}badge-sm-font-size: var(--#{$prefix}font-size-sm);
6
+ --#{$prefix}badge-sm-font-size: var(--#{$prefix}fs-small);
7
7
  --#{$prefix}badge-lg-font-size: var(--#{$prefix}fs-5);
8
8
 
9
9
  display: inline-flex;
@@ -0,0 +1,44 @@
1
+ .carousel-indicators {
2
+ position: relative;
3
+ [data-bs-target] {
4
+ width: $carousel-indicator-width;
5
+ height: $carousel-indicator-height;
6
+ text-align: left;
7
+ text-indent: 0;
8
+ background: $carousel-indicator-bg;
9
+ border: $carousel-indicator-border;
10
+ border-radius: $carousel-indicator-radius;
11
+ opacity: 1;
12
+ transition: .3s;
13
+ &.active {
14
+ width: $carousel-indicator-active-width;
15
+ background: $carousel-indicator-active-bg;
16
+ border-color: $carousel-indicator-active-border;
17
+ transition: .3s;
18
+ &:hover {
19
+ background: $carousel-indicator-active-bg;
20
+ }
21
+ }
22
+ &:hover {
23
+ background: $carousel-indicator-hover-bg;
24
+ }
25
+ }
26
+ }
27
+
28
+ .carousel-control-prev,
29
+ .carousel-control-next {
30
+ top: calc(50% - 20px);
31
+ bottom: auto;
32
+ width: $carousel-control-width;
33
+ height: $carousel-control-height;
34
+ padding: var(--#{$prefix}ref-spacer-1);
35
+ margin-inline: var(--#{$prefix}ref-spacer-1);
36
+ background: $carousel-control-bg;
37
+ border-radius: $carousel-control-radius;
38
+ opacity: .85;
39
+ }
40
+
41
+ .carousel-control-next-icon,
42
+ .carousel-control-prev-icon {
43
+ filter: invert(1);
44
+ }
@@ -14,6 +14,8 @@
14
14
  --#{$prefix}collapse-separator-display: none;
15
15
  --#{$prefix}collapse-separator-height: 1px;
16
16
  --#{$prefix}collapse-separator-bg: var(--#{$prefix}gray-200);
17
+ --#{$prefix}collapse-interpolate-size: allow-keywords;
18
+ --#{$prefix}collapse-transition: all ease-in-out .3s allow-discrete;
17
19
 
18
20
  background-color: var(--#{$prefix}collapse-bg);
19
21
  border-radius: var(--#{$prefix}collapse-border-radius);
@@ -40,15 +42,26 @@
40
42
  position: relative;
41
43
  padding: var(--#{$prefix}collapse-body-padding-y) var(--#{$prefix}collapse-body-padding-x);
42
44
  padding-top: 0;
45
+ }
43
46
 
44
- &::before {
45
- position: absolute;
46
- top: 0;
47
- display: var(--#{$prefix}collapse-separator-display);
48
- width: calc(100% - (var(--#{$prefix}collapse-body-padding-x) * 2));
49
- height: var(--#{$prefix}collapse-separator-height);
50
- content: " ";
51
- background-color: var(--#{$prefix}collapse-separator-bg);
47
+ .collapse-body-wrapper {
48
+ height: 0;
49
+ overflow: hidden;
50
+ opacity: 0;
51
+ transition: var(--#{$prefix}collapse-transition);
52
+ interpolate-size: var(--#{$prefix}collapse-interpolate-size);
53
+ &.show {
54
+ display: block;
55
+ height: auto;
56
+ opacity: 1;
52
57
  }
53
58
  }
59
+
60
+ @starting-style {
61
+ .collapse-body-wrapper.show {
62
+ height: 0;
63
+ opacity: 0;
64
+ }
65
+ }
66
+
54
67
  }