@uzum-tech/ui 1.12.13 → 1.12.14

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.
@@ -1,8 +1,8 @@
1
- import { type PropType, type ComputedRef, type ExtractPropTypes } from 'vue';
1
+ import { type PropType, type ExtractPropTypes } from 'vue';
2
2
  import { type Hljs } from '../../_mixins';
3
3
  import type { UDateLocale, ULocale } from '../../locales';
4
4
  import type { GlobalTheme, GlobalThemeOverrides, GlobalComponentConfig, GlobalIconConfig } from './interface';
5
- import type { RtlProp, Breakpoints, BreakpointProps, BreakpointThemeOverrides } from './internal-interface';
5
+ import type { RtlProp, Breakpoints, BreakpointProps, BreakpointThemeOverrides, BreakpointMode } from './internal-interface';
6
6
  import type { Katex } from './katex';
7
7
  export declare const configProviderProps: {
8
8
  readonly abstract: BooleanConstructor;
@@ -31,6 +31,10 @@ export declare const configProviderProps: {
31
31
  readonly breakpoints: PropType<Breakpoints>;
32
32
  readonly breakpointProps: PropType<BreakpointProps>;
33
33
  readonly breakpointThemeOverrides: PropType<BreakpointThemeOverrides>;
34
+ readonly breakpointMode: {
35
+ readonly type: PropType<BreakpointMode>;
36
+ readonly default: "desktop-first";
37
+ };
34
38
  readonly preflightStyleDisabled: BooleanConstructor;
35
39
  readonly inlineThemeDisabled: {
36
40
  readonly type: BooleanConstructor;
@@ -70,6 +74,10 @@ declare const _default: import("vue").DefineComponent<{
70
74
  readonly breakpoints: PropType<Breakpoints>;
71
75
  readonly breakpointProps: PropType<BreakpointProps>;
72
76
  readonly breakpointThemeOverrides: PropType<BreakpointThemeOverrides>;
77
+ readonly breakpointMode: {
78
+ readonly type: PropType<BreakpointMode>;
79
+ readonly default: "desktop-first";
80
+ };
73
81
  readonly preflightStyleDisabled: BooleanConstructor;
74
82
  readonly inlineThemeDisabled: {
75
83
  readonly type: BooleanConstructor;
@@ -81,11 +89,11 @@ declare const _default: import("vue").DefineComponent<{
81
89
  readonly default: undefined;
82
90
  };
83
91
  }, {
84
- mergedClsPrefix: ComputedRef<string>;
85
- mergedBordered: ComputedRef<boolean | undefined>;
86
- mergedNamespace: ComputedRef<string | undefined>;
87
- mergedTheme: ComputedRef<GlobalTheme | undefined>;
88
- mergedThemeOverrides: ComputedRef<GlobalThemeOverrides | undefined>;
92
+ mergedClsPrefix: import("vue").ComputedRef<string>;
93
+ mergedBordered: import("vue").ComputedRef<boolean | undefined>;
94
+ mergedNamespace: import("vue").ComputedRef<string | undefined>;
95
+ mergedTheme: import("vue").ComputedRef<GlobalTheme | undefined>;
96
+ mergedThemeOverrides: import("vue").ComputedRef<GlobalThemeOverrides | undefined>;
89
97
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
90
98
  readonly abstract: BooleanConstructor;
91
99
  readonly bordered: {
@@ -113,6 +121,10 @@ declare const _default: import("vue").DefineComponent<{
113
121
  readonly breakpoints: PropType<Breakpoints>;
114
122
  readonly breakpointProps: PropType<BreakpointProps>;
115
123
  readonly breakpointThemeOverrides: PropType<BreakpointThemeOverrides>;
124
+ readonly breakpointMode: {
125
+ readonly type: PropType<BreakpointMode>;
126
+ readonly default: "desktop-first";
127
+ };
116
128
  readonly preflightStyleDisabled: BooleanConstructor;
117
129
  readonly inlineThemeDisabled: {
118
130
  readonly type: BooleanConstructor;
@@ -128,6 +140,7 @@ declare const _default: import("vue").DefineComponent<{
128
140
  readonly bordered: boolean | undefined;
129
141
  readonly clsPrefix: string;
130
142
  readonly tag: string;
143
+ readonly breakpointMode: BreakpointMode;
131
144
  readonly preflightStyleDisabled: boolean;
132
145
  readonly inlineThemeDisabled: boolean;
133
146
  readonly as: string | undefined;
@@ -29,6 +29,10 @@ export const configProviderProps = {
29
29
  breakpoints: Object,
30
30
  breakpointProps: Object,
31
31
  breakpointThemeOverrides: Object,
32
+ breakpointMode: {
33
+ type: String,
34
+ default: 'desktop-first'
35
+ },
32
36
  preflightStyleDisabled: Boolean,
33
37
  inlineThemeDisabled: {
34
38
  type: Boolean,
@@ -53,7 +57,7 @@ export default defineComponent({
53
57
  const mergedThemeRef = computed(() => {
54
58
  const { theme } = props;
55
59
  if (theme === null)
56
- return undefined;
60
+ return;
57
61
  const inheritedTheme = UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedThemeRef.value;
58
62
  return theme === undefined
59
63
  ? inheritedTheme
@@ -61,30 +65,64 @@ export default defineComponent({
61
65
  ? theme
62
66
  : Object.assign({}, inheritedTheme, theme);
63
67
  });
64
- const getActiveBreakpointValue = (breakpointMap) => {
65
- if (!breakpointMap || !isBrowser) {
66
- return undefined;
67
- }
68
- const currentWidth = windowWidthRef.value;
68
+ const mergedBreakpointModeRef = computed(() => {
69
+ const { breakpointMode } = props;
70
+ return (breakpointMode ||
71
+ (UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedBreakpointModeRef.value) ||
72
+ 'desktop-first');
73
+ });
74
+ const getMergedBreakpointValues = (breakpointMap) => {
75
+ if (!breakpointMap)
76
+ return;
69
77
  const breakpointWidths = Object.keys(breakpointMap)
70
78
  .map(Number)
71
- .filter((width) => width <= currentWidth)
72
- .sort((a, b) => b - a);
73
- if (breakpointWidths.length === 0) {
74
- return undefined;
79
+ .sort((leftWidth, rightWidth) => leftWidth - rightWidth);
80
+ const mergedMap = {};
81
+ let previousValue;
82
+ for (const width of breakpointWidths) {
83
+ if (previousValue !== undefined) {
84
+ mergedMap[width] = merge({}, previousValue, breakpointMap[width]);
85
+ }
86
+ else {
87
+ mergedMap[width] = breakpointMap[width];
88
+ }
89
+ previousValue = mergedMap[width];
90
+ }
91
+ return mergedMap;
92
+ };
93
+ const getActiveBreakpointValue = (breakpointMap, mode = 'desktop-first') => {
94
+ if (!breakpointMap || !isBrowser)
95
+ return;
96
+ const mergedMap = getMergedBreakpointValues(breakpointMap);
97
+ if (!mergedMap)
98
+ return;
99
+ const currentWidth = windowWidthRef.value;
100
+ const breakpointWidths = Object.keys(mergedMap).map(Number);
101
+ let matchingBreakpoints;
102
+ if (mode === 'mobile-first') {
103
+ matchingBreakpoints = breakpointWidths
104
+ .filter((width) => width >= currentWidth)
105
+ .sort((leftWidth, rightWidth) => leftWidth - rightWidth);
106
+ }
107
+ else {
108
+ matchingBreakpoints = breakpointWidths
109
+ .filter((width) => width <= currentWidth)
110
+ .sort((leftWidth, rightWidth) => rightWidth - leftWidth);
75
111
  }
76
- const activeBreakpoint = breakpointWidths[0];
77
- return breakpointMap[activeBreakpoint];
112
+ if (matchingBreakpoints.length === 0)
113
+ return;
114
+ const activeBreakpoint = matchingBreakpoints[0];
115
+ return mergedMap[activeBreakpoint];
78
116
  };
79
- const activeBreakPointThemeOverridesRef = computed(() => {
117
+ const activeBreakpointThemeOverridesRef = computed(() => {
80
118
  const { breakpointThemeOverrides } = props;
81
119
  const breakpointThemeOverridesToUse = breakpointThemeOverrides !== null && breakpointThemeOverrides !== void 0 ? breakpointThemeOverrides : UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedBreakpointThemeOverridesRef.value;
82
- return getActiveBreakpointValue(breakpointThemeOverridesToUse);
120
+ return getActiveBreakpointValue(breakpointThemeOverridesToUse, mergedBreakpointModeRef.value);
83
121
  });
84
122
  const mergedThemeOverridesRef = computed(() => {
85
123
  const { themeOverrides } = props;
86
124
  if (themeOverrides === null)
87
- return undefined;
125
+ return;
88
126
  let baseThemeOverrides;
89
127
  if (themeOverrides === undefined) {
90
128
  baseThemeOverrides = UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedThemeOverridesRef.value;
@@ -98,14 +136,14 @@ export default defineComponent({
98
136
  baseThemeOverrides = merge({}, inheritedThemeOverrides, themeOverrides);
99
137
  }
100
138
  }
101
- const activeBreakPointThemeOverrides = activeBreakPointThemeOverridesRef.value;
102
- if (!activeBreakPointThemeOverrides) {
139
+ const activeBreakpointThemeOverrides = activeBreakpointThemeOverridesRef.value;
140
+ if (!activeBreakpointThemeOverrides) {
103
141
  return baseThemeOverrides;
104
142
  }
105
143
  if (!baseThemeOverrides) {
106
- return activeBreakPointThemeOverrides;
144
+ return activeBreakpointThemeOverrides;
107
145
  }
108
- return merge({}, baseThemeOverrides, activeBreakPointThemeOverrides);
146
+ return merge({}, baseThemeOverrides, activeBreakpointThemeOverrides);
109
147
  });
110
148
  const mergedNamespaceRef = useMemo(() => {
111
149
  const { namespace } = props;
@@ -140,24 +178,24 @@ export default defineComponent({
140
178
  window.removeEventListener('resize', updateWindowWidth);
141
179
  }
142
180
  });
143
- const activeBreakPointPropsRef = computed(() => {
181
+ const activeBreakpointPropsRef = computed(() => {
144
182
  const { breakpointProps } = props;
145
183
  const breakpointPropsToUse = breakpointProps !== null && breakpointProps !== void 0 ? breakpointProps : UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedBreakpointPropsRef.value;
146
- return getActiveBreakpointValue(breakpointPropsToUse);
184
+ return getActiveBreakpointValue(breakpointPropsToUse, mergedBreakpointModeRef.value);
147
185
  });
148
186
  const mergedComponentPropsRef = computed(() => {
149
187
  const { componentOptions } = props;
150
188
  const baseComponentOptions = componentOptions !== undefined
151
189
  ? componentOptions
152
190
  : UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedComponentPropsRef.value;
153
- const activeBreakPointProps = activeBreakPointPropsRef.value;
154
- if (!activeBreakPointProps) {
191
+ const activeBreakpointProps = activeBreakpointPropsRef.value;
192
+ if (!activeBreakpointProps) {
155
193
  return baseComponentOptions;
156
194
  }
157
195
  if (!baseComponentOptions) {
158
- return activeBreakPointProps;
196
+ return activeBreakpointProps;
159
197
  }
160
- return merge({}, baseComponentOptions, activeBreakPointProps);
198
+ return merge({}, baseComponentOptions, activeBreakpointProps);
161
199
  });
162
200
  const mergedClsPrefixRef = computed(() => {
163
201
  const { clsPrefix } = props;
@@ -227,13 +265,16 @@ export default defineComponent({
227
265
  mergedComponentPropsRef,
228
266
  mergedBreakpointPropsRef,
229
267
  mergedBreakpointThemeOverridesRef,
268
+ mergedBreakpointModeRef,
269
+ activeBreakpointPropsRef,
270
+ activeBreakpointThemeOverridesRef,
230
271
  mergedBorderedRef,
231
272
  mergedNamespaceRef,
232
273
  mergedClsPrefixRef,
233
274
  mergedLocaleRef: computed(() => {
234
275
  const { locale } = props;
235
276
  if (locale === null)
236
- return undefined;
277
+ return;
237
278
  return locale === undefined
238
279
  ? UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedLocaleRef.value
239
280
  : locale;
@@ -241,7 +282,7 @@ export default defineComponent({
241
282
  mergedDateLocaleRef: computed(() => {
242
283
  const { dateLocale } = props;
243
284
  if (dateLocale === null)
244
- return undefined;
285
+ return;
245
286
  return dateLocale === undefined
246
287
  ? UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedDateLocaleRef.value
247
288
  : dateLocale;
@@ -13,4 +13,4 @@ export type GlobalThemeOverrides = {
13
13
  } & {
14
14
  [key in keyof GlobalThemeWithoutCommon]?: ExtractThemeOverrides<GlobalThemeWithoutCommon[key]>;
15
15
  };
16
- export type { GlobalIconConfig, GlobalComponentConfig, BreakpointProps, BreakpointThemeOverrides } from './internal-interface';
16
+ export type { GlobalIconConfig, GlobalComponentConfig, BreakpointProps, BreakpointThemeOverrides, BreakpointMode } from './internal-interface';
@@ -429,6 +429,7 @@ export type RtlEnabledState = Partial<Record<keyof GlobalThemeWithoutCommon, Rtl
429
429
  export type Breakpoints = Record<string, number> | undefined;
430
430
  export type BreakpointProps = Record<number, GlobalComponentConfig> | undefined;
431
431
  export type BreakpointThemeOverrides = Record<number, GlobalThemeOverrides> | undefined;
432
+ export type BreakpointMode = 'mobile-first' | 'desktop-first';
432
433
  export interface ConfigProviderInjection {
433
434
  mergedBreakpointsRef: Ref<Breakpoints | undefined>;
434
435
  mergedClsPrefixRef: Ref<string>;
@@ -446,6 +447,9 @@ export interface ConfigProviderInjection {
446
447
  mergedThemeHashRef: Ref<string>;
447
448
  mergedBreakpointPropsRef: Ref<BreakpointProps | undefined>;
448
449
  mergedBreakpointThemeOverridesRef: Ref<BreakpointThemeOverrides | undefined>;
450
+ mergedBreakpointModeRef: Ref<BreakpointMode>;
451
+ activeBreakpointPropsRef: Ref<GlobalComponentConfig | undefined>;
452
+ activeBreakpointThemeOverridesRef: Ref<GlobalThemeOverrides | undefined>;
449
453
  inlineThemeDisabled: boolean;
450
454
  preflightStyleDisabled: boolean;
451
455
  }
package/es/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const _default: "1.12.13";
1
+ declare const _default: "1.12.14";
2
2
  export default _default;
package/es/version.js CHANGED
@@ -1 +1 @@
1
- export default '1.12.13';
1
+ export default '1.12.14';
@@ -1,8 +1,8 @@
1
- import { type PropType, type ComputedRef, type ExtractPropTypes } from 'vue';
1
+ import { type PropType, type ExtractPropTypes } from 'vue';
2
2
  import { type Hljs } from '../../_mixins';
3
3
  import type { UDateLocale, ULocale } from '../../locales';
4
4
  import type { GlobalTheme, GlobalThemeOverrides, GlobalComponentConfig, GlobalIconConfig } from './interface';
5
- import type { RtlProp, Breakpoints, BreakpointProps, BreakpointThemeOverrides } from './internal-interface';
5
+ import type { RtlProp, Breakpoints, BreakpointProps, BreakpointThemeOverrides, BreakpointMode } from './internal-interface';
6
6
  import type { Katex } from './katex';
7
7
  export declare const configProviderProps: {
8
8
  readonly abstract: BooleanConstructor;
@@ -31,6 +31,10 @@ export declare const configProviderProps: {
31
31
  readonly breakpoints: PropType<Breakpoints>;
32
32
  readonly breakpointProps: PropType<BreakpointProps>;
33
33
  readonly breakpointThemeOverrides: PropType<BreakpointThemeOverrides>;
34
+ readonly breakpointMode: {
35
+ readonly type: PropType<BreakpointMode>;
36
+ readonly default: "desktop-first";
37
+ };
34
38
  readonly preflightStyleDisabled: BooleanConstructor;
35
39
  readonly inlineThemeDisabled: {
36
40
  readonly type: BooleanConstructor;
@@ -70,6 +74,10 @@ declare const _default: import("vue").DefineComponent<{
70
74
  readonly breakpoints: PropType<Breakpoints>;
71
75
  readonly breakpointProps: PropType<BreakpointProps>;
72
76
  readonly breakpointThemeOverrides: PropType<BreakpointThemeOverrides>;
77
+ readonly breakpointMode: {
78
+ readonly type: PropType<BreakpointMode>;
79
+ readonly default: "desktop-first";
80
+ };
73
81
  readonly preflightStyleDisabled: BooleanConstructor;
74
82
  readonly inlineThemeDisabled: {
75
83
  readonly type: BooleanConstructor;
@@ -81,11 +89,11 @@ declare const _default: import("vue").DefineComponent<{
81
89
  readonly default: undefined;
82
90
  };
83
91
  }, {
84
- mergedClsPrefix: ComputedRef<string>;
85
- mergedBordered: ComputedRef<boolean | undefined>;
86
- mergedNamespace: ComputedRef<string | undefined>;
87
- mergedTheme: ComputedRef<GlobalTheme | undefined>;
88
- mergedThemeOverrides: ComputedRef<GlobalThemeOverrides | undefined>;
92
+ mergedClsPrefix: import("vue").ComputedRef<string>;
93
+ mergedBordered: import("vue").ComputedRef<boolean | undefined>;
94
+ mergedNamespace: import("vue").ComputedRef<string | undefined>;
95
+ mergedTheme: import("vue").ComputedRef<GlobalTheme | undefined>;
96
+ mergedThemeOverrides: import("vue").ComputedRef<GlobalThemeOverrides | undefined>;
89
97
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
90
98
  readonly abstract: BooleanConstructor;
91
99
  readonly bordered: {
@@ -113,6 +121,10 @@ declare const _default: import("vue").DefineComponent<{
113
121
  readonly breakpoints: PropType<Breakpoints>;
114
122
  readonly breakpointProps: PropType<BreakpointProps>;
115
123
  readonly breakpointThemeOverrides: PropType<BreakpointThemeOverrides>;
124
+ readonly breakpointMode: {
125
+ readonly type: PropType<BreakpointMode>;
126
+ readonly default: "desktop-first";
127
+ };
116
128
  readonly preflightStyleDisabled: BooleanConstructor;
117
129
  readonly inlineThemeDisabled: {
118
130
  readonly type: BooleanConstructor;
@@ -128,6 +140,7 @@ declare const _default: import("vue").DefineComponent<{
128
140
  readonly bordered: boolean | undefined;
129
141
  readonly clsPrefix: string;
130
142
  readonly tag: string;
143
+ readonly breakpointMode: BreakpointMode;
131
144
  readonly preflightStyleDisabled: boolean;
132
145
  readonly inlineThemeDisabled: boolean;
133
146
  readonly as: string | undefined;
@@ -32,6 +32,10 @@ exports.configProviderProps = {
32
32
  breakpoints: Object,
33
33
  breakpointProps: Object,
34
34
  breakpointThemeOverrides: Object,
35
+ breakpointMode: {
36
+ type: String,
37
+ default: 'desktop-first'
38
+ },
35
39
  preflightStyleDisabled: Boolean,
36
40
  inlineThemeDisabled: {
37
41
  type: Boolean,
@@ -56,7 +60,7 @@ exports.default = (0, vue_1.defineComponent)({
56
60
  const mergedThemeRef = (0, vue_1.computed)(() => {
57
61
  const { theme } = props;
58
62
  if (theme === null)
59
- return undefined;
63
+ return;
60
64
  const inheritedTheme = UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedThemeRef.value;
61
65
  return theme === undefined
62
66
  ? inheritedTheme
@@ -64,30 +68,64 @@ exports.default = (0, vue_1.defineComponent)({
64
68
  ? theme
65
69
  : Object.assign({}, inheritedTheme, theme);
66
70
  });
67
- const getActiveBreakpointValue = (breakpointMap) => {
68
- if (!breakpointMap || !_utils_1.isBrowser) {
69
- return undefined;
70
- }
71
- const currentWidth = windowWidthRef.value;
71
+ const mergedBreakpointModeRef = (0, vue_1.computed)(() => {
72
+ const { breakpointMode } = props;
73
+ return (breakpointMode ||
74
+ (UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedBreakpointModeRef.value) ||
75
+ 'desktop-first');
76
+ });
77
+ const getMergedBreakpointValues = (breakpointMap) => {
78
+ if (!breakpointMap)
79
+ return;
72
80
  const breakpointWidths = Object.keys(breakpointMap)
73
81
  .map(Number)
74
- .filter((width) => width <= currentWidth)
75
- .sort((a, b) => b - a);
76
- if (breakpointWidths.length === 0) {
77
- return undefined;
82
+ .sort((leftWidth, rightWidth) => leftWidth - rightWidth);
83
+ const mergedMap = {};
84
+ let previousValue;
85
+ for (const width of breakpointWidths) {
86
+ if (previousValue !== undefined) {
87
+ mergedMap[width] = (0, lodash_1.merge)({}, previousValue, breakpointMap[width]);
88
+ }
89
+ else {
90
+ mergedMap[width] = breakpointMap[width];
91
+ }
92
+ previousValue = mergedMap[width];
93
+ }
94
+ return mergedMap;
95
+ };
96
+ const getActiveBreakpointValue = (breakpointMap, mode = 'desktop-first') => {
97
+ if (!breakpointMap || !_utils_1.isBrowser)
98
+ return;
99
+ const mergedMap = getMergedBreakpointValues(breakpointMap);
100
+ if (!mergedMap)
101
+ return;
102
+ const currentWidth = windowWidthRef.value;
103
+ const breakpointWidths = Object.keys(mergedMap).map(Number);
104
+ let matchingBreakpoints;
105
+ if (mode === 'mobile-first') {
106
+ matchingBreakpoints = breakpointWidths
107
+ .filter((width) => width >= currentWidth)
108
+ .sort((leftWidth, rightWidth) => leftWidth - rightWidth);
109
+ }
110
+ else {
111
+ matchingBreakpoints = breakpointWidths
112
+ .filter((width) => width <= currentWidth)
113
+ .sort((leftWidth, rightWidth) => rightWidth - leftWidth);
78
114
  }
79
- const activeBreakpoint = breakpointWidths[0];
80
- return breakpointMap[activeBreakpoint];
115
+ if (matchingBreakpoints.length === 0)
116
+ return;
117
+ const activeBreakpoint = matchingBreakpoints[0];
118
+ return mergedMap[activeBreakpoint];
81
119
  };
82
- const activeBreakPointThemeOverridesRef = (0, vue_1.computed)(() => {
120
+ const activeBreakpointThemeOverridesRef = (0, vue_1.computed)(() => {
83
121
  const { breakpointThemeOverrides } = props;
84
122
  const breakpointThemeOverridesToUse = breakpointThemeOverrides !== null && breakpointThemeOverrides !== void 0 ? breakpointThemeOverrides : UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedBreakpointThemeOverridesRef.value;
85
- return getActiveBreakpointValue(breakpointThemeOverridesToUse);
123
+ return getActiveBreakpointValue(breakpointThemeOverridesToUse, mergedBreakpointModeRef.value);
86
124
  });
87
125
  const mergedThemeOverridesRef = (0, vue_1.computed)(() => {
88
126
  const { themeOverrides } = props;
89
127
  if (themeOverrides === null)
90
- return undefined;
128
+ return;
91
129
  let baseThemeOverrides;
92
130
  if (themeOverrides === undefined) {
93
131
  baseThemeOverrides = UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedThemeOverridesRef.value;
@@ -101,14 +139,14 @@ exports.default = (0, vue_1.defineComponent)({
101
139
  baseThemeOverrides = (0, lodash_1.merge)({}, inheritedThemeOverrides, themeOverrides);
102
140
  }
103
141
  }
104
- const activeBreakPointThemeOverrides = activeBreakPointThemeOverridesRef.value;
105
- if (!activeBreakPointThemeOverrides) {
142
+ const activeBreakpointThemeOverrides = activeBreakpointThemeOverridesRef.value;
143
+ if (!activeBreakpointThemeOverrides) {
106
144
  return baseThemeOverrides;
107
145
  }
108
146
  if (!baseThemeOverrides) {
109
- return activeBreakPointThemeOverrides;
147
+ return activeBreakpointThemeOverrides;
110
148
  }
111
- return (0, lodash_1.merge)({}, baseThemeOverrides, activeBreakPointThemeOverrides);
149
+ return (0, lodash_1.merge)({}, baseThemeOverrides, activeBreakpointThemeOverrides);
112
150
  });
113
151
  const mergedNamespaceRef = (0, vooks_1.useMemo)(() => {
114
152
  const { namespace } = props;
@@ -143,24 +181,24 @@ exports.default = (0, vue_1.defineComponent)({
143
181
  window.removeEventListener('resize', updateWindowWidth);
144
182
  }
145
183
  });
146
- const activeBreakPointPropsRef = (0, vue_1.computed)(() => {
184
+ const activeBreakpointPropsRef = (0, vue_1.computed)(() => {
147
185
  const { breakpointProps } = props;
148
186
  const breakpointPropsToUse = breakpointProps !== null && breakpointProps !== void 0 ? breakpointProps : UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedBreakpointPropsRef.value;
149
- return getActiveBreakpointValue(breakpointPropsToUse);
187
+ return getActiveBreakpointValue(breakpointPropsToUse, mergedBreakpointModeRef.value);
150
188
  });
151
189
  const mergedComponentPropsRef = (0, vue_1.computed)(() => {
152
190
  const { componentOptions } = props;
153
191
  const baseComponentOptions = componentOptions !== undefined
154
192
  ? componentOptions
155
193
  : UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedComponentPropsRef.value;
156
- const activeBreakPointProps = activeBreakPointPropsRef.value;
157
- if (!activeBreakPointProps) {
194
+ const activeBreakpointProps = activeBreakpointPropsRef.value;
195
+ if (!activeBreakpointProps) {
158
196
  return baseComponentOptions;
159
197
  }
160
198
  if (!baseComponentOptions) {
161
- return activeBreakPointProps;
199
+ return activeBreakpointProps;
162
200
  }
163
- return (0, lodash_1.merge)({}, baseComponentOptions, activeBreakPointProps);
201
+ return (0, lodash_1.merge)({}, baseComponentOptions, activeBreakpointProps);
164
202
  });
165
203
  const mergedClsPrefixRef = (0, vue_1.computed)(() => {
166
204
  const { clsPrefix } = props;
@@ -230,13 +268,16 @@ exports.default = (0, vue_1.defineComponent)({
230
268
  mergedComponentPropsRef,
231
269
  mergedBreakpointPropsRef,
232
270
  mergedBreakpointThemeOverridesRef,
271
+ mergedBreakpointModeRef,
272
+ activeBreakpointPropsRef,
273
+ activeBreakpointThemeOverridesRef,
233
274
  mergedBorderedRef,
234
275
  mergedNamespaceRef,
235
276
  mergedClsPrefixRef,
236
277
  mergedLocaleRef: (0, vue_1.computed)(() => {
237
278
  const { locale } = props;
238
279
  if (locale === null)
239
- return undefined;
280
+ return;
240
281
  return locale === undefined
241
282
  ? UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedLocaleRef.value
242
283
  : locale;
@@ -244,7 +285,7 @@ exports.default = (0, vue_1.defineComponent)({
244
285
  mergedDateLocaleRef: (0, vue_1.computed)(() => {
245
286
  const { dateLocale } = props;
246
287
  if (dateLocale === null)
247
- return undefined;
288
+ return;
248
289
  return dateLocale === undefined
249
290
  ? UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedDateLocaleRef.value
250
291
  : dateLocale;
@@ -13,4 +13,4 @@ export type GlobalThemeOverrides = {
13
13
  } & {
14
14
  [key in keyof GlobalThemeWithoutCommon]?: ExtractThemeOverrides<GlobalThemeWithoutCommon[key]>;
15
15
  };
16
- export type { GlobalIconConfig, GlobalComponentConfig, BreakpointProps, BreakpointThemeOverrides } from './internal-interface';
16
+ export type { GlobalIconConfig, GlobalComponentConfig, BreakpointProps, BreakpointThemeOverrides, BreakpointMode } from './internal-interface';
@@ -429,6 +429,7 @@ export type RtlEnabledState = Partial<Record<keyof GlobalThemeWithoutCommon, Rtl
429
429
  export type Breakpoints = Record<string, number> | undefined;
430
430
  export type BreakpointProps = Record<number, GlobalComponentConfig> | undefined;
431
431
  export type BreakpointThemeOverrides = Record<number, GlobalThemeOverrides> | undefined;
432
+ export type BreakpointMode = 'mobile-first' | 'desktop-first';
432
433
  export interface ConfigProviderInjection {
433
434
  mergedBreakpointsRef: Ref<Breakpoints | undefined>;
434
435
  mergedClsPrefixRef: Ref<string>;
@@ -446,6 +447,9 @@ export interface ConfigProviderInjection {
446
447
  mergedThemeHashRef: Ref<string>;
447
448
  mergedBreakpointPropsRef: Ref<BreakpointProps | undefined>;
448
449
  mergedBreakpointThemeOverridesRef: Ref<BreakpointThemeOverrides | undefined>;
450
+ mergedBreakpointModeRef: Ref<BreakpointMode>;
451
+ activeBreakpointPropsRef: Ref<GlobalComponentConfig | undefined>;
452
+ activeBreakpointThemeOverridesRef: Ref<GlobalThemeOverrides | undefined>;
449
453
  inlineThemeDisabled: boolean;
450
454
  preflightStyleDisabled: boolean;
451
455
  }
package/lib/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const _default: "1.12.13";
1
+ declare const _default: "1.12.14";
2
2
  export default _default;
package/lib/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = '1.12.13';
3
+ exports.default = '1.12.14';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uzum-tech/ui",
3
- "version": "1.12.13",
3
+ "version": "1.12.14",
4
4
  "description": "A Vue 3 Component Library. Fairly Complete, Theme Customizable, Uses TypeScript, Fast",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
package/web-types.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
3
3
  "framework": "vue",
4
4
  "name": "@uzum-tech/ui",
5
- "version": "1.12.13",
5
+ "version": "1.12.14",
6
6
  "js-types-syntax": "typescript",
7
7
  "contributions": {
8
8
  "html": {
@@ -3701,6 +3701,13 @@
3701
3701
  "doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/config-provider",
3702
3702
  "type": "object"
3703
3703
  },
3704
+ {
3705
+ "name": "breakpoint-mode",
3706
+ "doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/config-provider",
3707
+ "type": "'mobile-first' | 'desktop-first'",
3708
+ "description": "Controls how breakpoints are applied. In `desktop-first` mode (default), applies the largest breakpoint ≤ current width. In `mobile-first` mode, applies the smallest breakpoint ≥ current width.",
3709
+ "default": "'desktop-first'"
3710
+ },
3704
3711
  {
3705
3712
  "name": "preflight-style-disabled",
3706
3713
  "doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/config-provider",
@@ -3730,14 +3737,14 @@
3730
3737
  "name": "break-point-props",
3731
3738
  "doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/config-provider",
3732
3739
  "type": "{ [width: number]: GlobalComponentConfig }",
3733
- "description": "Component props configuration based on screen width. When screen width is less than or equal to the specified width, the corresponding component props will be applied. Useful for responsive design (e.g., smaller button size on mobile).",
3740
+ "description": "Component props configuration based on screen width. The behavior depends on `breakpoint-mode`. Values from previous breakpoints are inherited by default unless explicitly overridden.",
3734
3741
  "default": "undefined"
3735
3742
  },
3736
3743
  {
3737
3744
  "name": "break-point-theme-overrides",
3738
3745
  "doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/config-provider",
3739
3746
  "type": "{ [width: number]: GlobalThemeOverrides }",
3740
- "description": "Theme variables configuration based on screen width. When screen width is less than or equal to the specified width, the corresponding theme overrides will be applied. Useful for responsive theming (e.g., different colors on mobile vs desktop).",
3747
+ "description": "Theme variables configuration based on screen width. The behavior depends on `breakpoint-mode`. Values from previous breakpoints are inherited by default unless explicitly overridden.",
3741
3748
  "default": "undefined"
3742
3749
  },
3743
3750
  {