@grandbazar/ui-baza 1.2.10 → 1.2.12

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.
package/dist/index.cjs CHANGED
@@ -1321,6 +1321,19 @@ function getCalendarGrid(month, year, firstDayOfWeek) {
1321
1321
  );
1322
1322
  }
1323
1323
 
1324
+ function normalizeDateRange(firstDate, secondDate) {
1325
+ if (!firstDate || !secondDate) {
1326
+ return { firstDate, secondDate };
1327
+ }
1328
+ if (firstDate.getTime() <= secondDate.getTime()) {
1329
+ return { firstDate, secondDate };
1330
+ }
1331
+ return {
1332
+ firstDate: secondDate,
1333
+ secondDate: firstDate
1334
+ };
1335
+ }
1336
+
1324
1337
  const datePickerField = "_datePickerField_1qk8s_2";
1325
1338
  const datePickerFieldCalendar = "_datePickerFieldCalendar_1qk8s_8";
1326
1339
  const datePickerFieldWeek = "_datePickerFieldWeek_1qk8s_14";
@@ -1426,9 +1439,14 @@ function useDatePickerControls(initialDate = /* @__PURE__ */ new Date()) {
1426
1439
  };
1427
1440
  }
1428
1441
 
1429
- function useDatePickerMultiSelect(firstDayOfWeek = LOCALE_FIRST_DAY_OF_WEEK.ru) {
1430
- const [firstSelectedDate, setFirstSelectedDate] = React.useState(null);
1431
- const [secondSelectedDate, setSecondSelectedDate] = React.useState(null);
1442
+ function useDatePickerMultiSelect({
1443
+ firstDayOfWeek = LOCALE_FIRST_DAY_OF_WEEK.ru,
1444
+ initialFirstSelectedDate = null,
1445
+ initialSecondSelectedDate = null
1446
+ } = {}) {
1447
+ const normalizedRange = normalizeDateRange(initialFirstSelectedDate, initialSecondSelectedDate);
1448
+ const [firstSelectedDate, setFirstSelectedDate] = React.useState(normalizedRange.firstDate);
1449
+ const [secondSelectedDate, setSecondSelectedDate] = React.useState(normalizedRange.secondDate);
1432
1450
  const lastDayOfWeek = (firstDayOfWeek + 6) % 7;
1433
1451
  const dayInfoCache = React.useMemo(() => /* @__PURE__ */ new Map(), []);
1434
1452
  const getDayInfo = React.useCallback(
@@ -1544,8 +1562,8 @@ function useDatePickerMultiSelect(firstDayOfWeek = LOCALE_FIRST_DAY_OF_WEEK.ru)
1544
1562
  return { firstSelectedDate, secondSelectedDate, setFirstSelectedDate, setSecondSelectedDate, getCellProps };
1545
1563
  }
1546
1564
 
1547
- function useDatePickerSelect() {
1548
- const [selectedDate, setSelectedDate] = React.useState(null);
1565
+ function useDatePickerSelect({ initialSelectedDate = null } = {}) {
1566
+ const [selectedDate, setSelectedDate] = React.useState(initialSelectedDate);
1549
1567
  const getCellProps = React.useCallback(
1550
1568
  (day) => {
1551
1569
  return {
@@ -2462,9 +2480,9 @@ function TextFieldLabel({ className, children, isRequired, ...props }) {
2462
2480
  return /* @__PURE__ */ jsxRuntime.jsx("label", { className: classNames(styles$9.textFieldLabel, className), "data-required": isRequired, ...props, children });
2463
2481
  }
2464
2482
 
2465
- const textFieldRoot = "_textFieldRoot_1geya_2";
2466
- const lg$2 = "_lg_1geya_38";
2467
- const md$3 = "_md_1geya_68";
2483
+ const textFieldRoot = "_textFieldRoot_cs7mv_2";
2484
+ const lg$2 = "_lg_cs7mv_38";
2485
+ const md$3 = "_md_cs7mv_70";
2468
2486
  const styles$8 = {
2469
2487
  textFieldRoot: textFieldRoot,
2470
2488
  lg: lg$2,
package/dist/index.d.ts CHANGED
@@ -880,6 +880,16 @@ declare type TTooltipRootProps = Omit<React.ComponentProps<typeof TooltipContent
880
880
  centerArrowToTrigger?: boolean;
881
881
  };
882
882
 
883
+ declare type TUseDatePickerMultiSelectOptions = {
884
+ firstDayOfWeek?: number;
885
+ initialFirstSelectedDate?: Date | null;
886
+ initialSecondSelectedDate?: Date | null;
887
+ };
888
+
889
+ declare type TUseDatePickerSelectOptions = {
890
+ initialSelectedDate?: Date | null;
891
+ };
892
+
883
893
  declare type TWithRef<TProps, TElement = HTMLElement> = TProps & {
884
894
  ref?: React.Ref<TElement>;
885
895
  };
@@ -904,10 +914,13 @@ export declare function useDatePickerControls(initialDate?: Date): {
904
914
  * Manages date range selection state for DatePicker.
905
915
  * Handles two-date selection with automatic ordering and visual range styling.
906
916
  *
907
- * @param firstDayOfWeek - First day of the week (0 = Sunday, 1 = Monday, etc.)
917
+ * @param options - Hook options for range selection
918
+ * @param options.firstDayOfWeek - First day of the week (0 = Sunday, 1 = Monday, etc.)
919
+ * @param options.initialFirstSelectedDate - Initial start date for range selection
920
+ * @param options.initialSecondSelectedDate - Initial end date for range selection
908
921
  * @returns Object containing selected dates, setters, and cell props generator with range styling
909
922
  */
910
- export declare function useDatePickerMultiSelect(firstDayOfWeek?: number): {
923
+ export declare function useDatePickerMultiSelect({ firstDayOfWeek, initialFirstSelectedDate, initialSecondSelectedDate, }?: TUseDatePickerMultiSelectOptions): {
911
924
  firstSelectedDate: Date | null;
912
925
  secondSelectedDate: Date | null;
913
926
  setFirstSelectedDate: Dispatch<SetStateAction<Date | null>>;
@@ -919,9 +932,11 @@ export declare function useDatePickerMultiSelect(firstDayOfWeek?: number): {
919
932
  * Manages single date selection state for DatePicker.
920
933
  * Provides cell props with selection logic and state management.
921
934
  *
935
+ * @param options - Hook options for initial selection state
936
+ * @param options.initialSelectedDate - Initial selected date
922
937
  * @returns Object containing selected date, setter, and cell props generator
923
938
  */
924
- export declare function useDatePickerSelect(): {
939
+ export declare function useDatePickerSelect({ initialSelectedDate }?: TUseDatePickerSelectOptions): {
925
940
  selectedDate: Date | null;
926
941
  setSelectedDate: Dispatch<SetStateAction<Date | null>>;
927
942
  getCellProps: (day: TCalendarDay) => Pick<ComponentProps<typeof DatePickerCell>, "onClick" | "disabled" | "isCurrent" | "state">;
package/dist/index.js CHANGED
@@ -1317,6 +1317,19 @@ function getCalendarGrid(month, year, firstDayOfWeek) {
1317
1317
  );
1318
1318
  }
1319
1319
 
1320
+ function normalizeDateRange(firstDate, secondDate) {
1321
+ if (!firstDate || !secondDate) {
1322
+ return { firstDate, secondDate };
1323
+ }
1324
+ if (firstDate.getTime() <= secondDate.getTime()) {
1325
+ return { firstDate, secondDate };
1326
+ }
1327
+ return {
1328
+ firstDate: secondDate,
1329
+ secondDate: firstDate
1330
+ };
1331
+ }
1332
+
1320
1333
  const datePickerField = "_datePickerField_1qk8s_2";
1321
1334
  const datePickerFieldCalendar = "_datePickerFieldCalendar_1qk8s_8";
1322
1335
  const datePickerFieldWeek = "_datePickerFieldWeek_1qk8s_14";
@@ -1422,9 +1435,14 @@ function useDatePickerControls(initialDate = /* @__PURE__ */ new Date()) {
1422
1435
  };
1423
1436
  }
1424
1437
 
1425
- function useDatePickerMultiSelect(firstDayOfWeek = LOCALE_FIRST_DAY_OF_WEEK.ru) {
1426
- const [firstSelectedDate, setFirstSelectedDate] = useState(null);
1427
- const [secondSelectedDate, setSecondSelectedDate] = useState(null);
1438
+ function useDatePickerMultiSelect({
1439
+ firstDayOfWeek = LOCALE_FIRST_DAY_OF_WEEK.ru,
1440
+ initialFirstSelectedDate = null,
1441
+ initialSecondSelectedDate = null
1442
+ } = {}) {
1443
+ const normalizedRange = normalizeDateRange(initialFirstSelectedDate, initialSecondSelectedDate);
1444
+ const [firstSelectedDate, setFirstSelectedDate] = useState(normalizedRange.firstDate);
1445
+ const [secondSelectedDate, setSecondSelectedDate] = useState(normalizedRange.secondDate);
1428
1446
  const lastDayOfWeek = (firstDayOfWeek + 6) % 7;
1429
1447
  const dayInfoCache = useMemo(() => /* @__PURE__ */ new Map(), []);
1430
1448
  const getDayInfo = useCallback(
@@ -1540,8 +1558,8 @@ function useDatePickerMultiSelect(firstDayOfWeek = LOCALE_FIRST_DAY_OF_WEEK.ru)
1540
1558
  return { firstSelectedDate, secondSelectedDate, setFirstSelectedDate, setSecondSelectedDate, getCellProps };
1541
1559
  }
1542
1560
 
1543
- function useDatePickerSelect() {
1544
- const [selectedDate, setSelectedDate] = useState(null);
1561
+ function useDatePickerSelect({ initialSelectedDate = null } = {}) {
1562
+ const [selectedDate, setSelectedDate] = useState(initialSelectedDate);
1545
1563
  const getCellProps = useCallback(
1546
1564
  (day) => {
1547
1565
  return {
@@ -2458,9 +2476,9 @@ function TextFieldLabel({ className, children, isRequired, ...props }) {
2458
2476
  return /* @__PURE__ */ jsx("label", { className: classNames(styles$9.textFieldLabel, className), "data-required": isRequired, ...props, children });
2459
2477
  }
2460
2478
 
2461
- const textFieldRoot = "_textFieldRoot_1geya_2";
2462
- const lg$2 = "_lg_1geya_38";
2463
- const md$3 = "_md_1geya_68";
2479
+ const textFieldRoot = "_textFieldRoot_cs7mv_2";
2480
+ const lg$2 = "_lg_cs7mv_38";
2481
+ const md$3 = "_md_cs7mv_70";
2464
2482
  const styles$8 = {
2465
2483
  textFieldRoot: textFieldRoot,
2466
2484
  lg: lg$2,
package/dist/style.css CHANGED
@@ -1424,7 +1424,7 @@ textarea {
1424
1424
  }
1425
1425
  }
1426
1426
  @layer ui_baza_components {
1427
- ._textFieldRoot_1geya_2 {
1427
+ ._textFieldRoot_cs7mv_2 {
1428
1428
  --ring-width: 1px;
1429
1429
  --ring-color: var(--color-neutral-alpha-120);
1430
1430
 
@@ -1460,7 +1460,7 @@ textarea {
1460
1460
  }
1461
1461
  }
1462
1462
 
1463
- &._lg_1geya_38 {
1463
+ &._lg_cs7mv_38 {
1464
1464
  min-height: calc(var(--line-height-lg) + var(--space-2xl) * 2);
1465
1465
  padding: var(--space-md) var(--space-xl);
1466
1466
  border-radius: var(--radius-xl);
@@ -1482,7 +1482,9 @@ textarea {
1482
1482
 
1483
1483
  [data-element='label'],
1484
1484
  [data-element='label-suffix'] {
1485
- --label-scale: calc(var(--line-height-sm) / var(--line-height-lg));
1485
+ /* Android 9 Chrome bug: calc(var(--line-height-sm) / var(--line-height-lg)) can fail in transforms.
1486
+ Keep a literal ratio for stable floating-label scaling on legacy Chromium. */
1487
+ --label-scale: calc(16 / 24);
1486
1488
  transform: translateY(calc(-1 * var(--space-md) / var(--label-scale))) scale(var(--label-scale));
1487
1489
  opacity: 1;
1488
1490
  }
@@ -1490,7 +1492,7 @@ textarea {
1490
1492
  }
1491
1493
  }
1492
1494
 
1493
- &._md_1geya_68 {
1495
+ &._md_cs7mv_70 {
1494
1496
  min-height: calc(var(--line-height-lg) + var(--space-lg) * 2);
1495
1497
  padding: var(--space-lg);
1496
1498
  border-radius: var(--radius-lg);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grandbazar/ui-baza",
3
- "version": "1.2.10",
3
+ "version": "1.2.12",
4
4
  "description": "A lightweight and modular UI kit for building modern, accessible web interfaces. Designed for flexibility, scalability, and developer happiness.",
5
5
  "repository": {
6
6
  "type": "git",