@xsolla/xui-calendar 0.127.0 → 0.129.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.
- package/native/index.d.mts +4 -3
- package/native/index.d.ts +4 -3
- package/native/index.js +21 -7
- package/native/index.js.map +1 -1
- package/native/index.mjs +24 -10
- package/native/index.mjs.map +1 -1
- package/package.json +7 -7
- package/web/index.d.mts +4 -3
- package/web/index.d.ts +4 -3
- package/web/index.js +14 -6
- package/web/index.js.map +1 -1
- package/web/index.mjs +17 -9
- package/web/index.mjs.map +1 -1
package/native/index.d.mts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import react__default, { ReactNode } from 'react';
|
|
3
|
+
import { ThemeOverrideProps } from '@xsolla/xui-core';
|
|
3
4
|
import * as locales from 'date-fns/locale';
|
|
4
5
|
|
|
5
6
|
type CalendarLocaleType = keyof typeof locales;
|
|
@@ -30,7 +31,7 @@ interface CalendarChipsProps {
|
|
|
30
31
|
*/
|
|
31
32
|
testID?: string;
|
|
32
33
|
}
|
|
33
|
-
interface CalendarGridProps {
|
|
34
|
+
interface CalendarGridProps extends ThemeOverrideProps {
|
|
34
35
|
currentMonth: Date;
|
|
35
36
|
locale?: CalendarLocaleType;
|
|
36
37
|
firstDayOfWeek?: number;
|
|
@@ -57,7 +58,7 @@ interface CalendarHeaderProps {
|
|
|
57
58
|
maxDate?: Date | null;
|
|
58
59
|
contextMenuMaxHeight?: number;
|
|
59
60
|
}
|
|
60
|
-
interface CalendarProps {
|
|
61
|
+
interface CalendarProps extends ThemeOverrideProps {
|
|
61
62
|
locale?: CalendarLocaleType;
|
|
62
63
|
/**
|
|
63
64
|
* The day to use as first day of the week, starting from 0 (Sunday) to 6 (Saturday).
|
|
@@ -132,7 +133,7 @@ interface CalendarProps {
|
|
|
132
133
|
*/
|
|
133
134
|
onChange?: (date: Date | [Date | null, Date | null]) => void;
|
|
134
135
|
}
|
|
135
|
-
interface DualCalendarProps {
|
|
136
|
+
interface DualCalendarProps extends ThemeOverrideProps {
|
|
136
137
|
locale?: CalendarLocaleType;
|
|
137
138
|
/**
|
|
138
139
|
* The day to use as first day of the week, starting from 0 (Sunday) to 6 (Saturday).
|
package/native/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import react__default, { ReactNode } from 'react';
|
|
3
|
+
import { ThemeOverrideProps } from '@xsolla/xui-core';
|
|
3
4
|
import * as locales from 'date-fns/locale';
|
|
4
5
|
|
|
5
6
|
type CalendarLocaleType = keyof typeof locales;
|
|
@@ -30,7 +31,7 @@ interface CalendarChipsProps {
|
|
|
30
31
|
*/
|
|
31
32
|
testID?: string;
|
|
32
33
|
}
|
|
33
|
-
interface CalendarGridProps {
|
|
34
|
+
interface CalendarGridProps extends ThemeOverrideProps {
|
|
34
35
|
currentMonth: Date;
|
|
35
36
|
locale?: CalendarLocaleType;
|
|
36
37
|
firstDayOfWeek?: number;
|
|
@@ -57,7 +58,7 @@ interface CalendarHeaderProps {
|
|
|
57
58
|
maxDate?: Date | null;
|
|
58
59
|
contextMenuMaxHeight?: number;
|
|
59
60
|
}
|
|
60
|
-
interface CalendarProps {
|
|
61
|
+
interface CalendarProps extends ThemeOverrideProps {
|
|
61
62
|
locale?: CalendarLocaleType;
|
|
62
63
|
/**
|
|
63
64
|
* The day to use as first day of the week, starting from 0 (Sunday) to 6 (Saturday).
|
|
@@ -132,7 +133,7 @@ interface CalendarProps {
|
|
|
132
133
|
*/
|
|
133
134
|
onChange?: (date: Date | [Date | null, Date | null]) => void;
|
|
134
135
|
}
|
|
135
|
-
interface DualCalendarProps {
|
|
136
|
+
interface DualCalendarProps extends ThemeOverrideProps {
|
|
136
137
|
locale?: CalendarLocaleType;
|
|
137
138
|
/**
|
|
138
139
|
* The day to use as first day of the week, starting from 0 (Sunday) to 6 (Saturday).
|
package/native/index.js
CHANGED
|
@@ -86,6 +86,10 @@ var Box = ({
|
|
|
86
86
|
left,
|
|
87
87
|
right,
|
|
88
88
|
width,
|
|
89
|
+
minWidth,
|
|
90
|
+
minHeight,
|
|
91
|
+
maxWidth,
|
|
92
|
+
maxHeight,
|
|
89
93
|
flex,
|
|
90
94
|
overflow,
|
|
91
95
|
zIndex,
|
|
@@ -117,6 +121,10 @@ var Box = ({
|
|
|
117
121
|
zIndex,
|
|
118
122
|
height,
|
|
119
123
|
width,
|
|
124
|
+
minWidth,
|
|
125
|
+
minHeight,
|
|
126
|
+
maxWidth,
|
|
127
|
+
maxHeight,
|
|
120
128
|
padding,
|
|
121
129
|
paddingHorizontal,
|
|
122
130
|
paddingVertical,
|
|
@@ -245,7 +253,7 @@ var Text = ({
|
|
|
245
253
|
}
|
|
246
254
|
const incomingStyle = import_react_native2.StyleSheet.flatten(styleProp);
|
|
247
255
|
const baseStyle = {
|
|
248
|
-
color,
|
|
256
|
+
color: color ?? incomingStyle?.color,
|
|
249
257
|
fontSize: typeof fontSize === "number" ? fontSize : void 0,
|
|
250
258
|
fontWeight,
|
|
251
259
|
fontFamily: resolvedFontFamily,
|
|
@@ -428,9 +436,11 @@ var CalendarGrid = ({
|
|
|
428
436
|
selectedDate,
|
|
429
437
|
selectingRange,
|
|
430
438
|
onDayPress,
|
|
431
|
-
testID
|
|
439
|
+
testID,
|
|
440
|
+
themeMode,
|
|
441
|
+
themeProductContext
|
|
432
442
|
}) => {
|
|
433
|
-
const { theme } = (0, import_xui_core.
|
|
443
|
+
const { theme } = (0, import_xui_core.useResolvedTheme)({ themeMode, themeProductContext });
|
|
434
444
|
const localeObj = locales2[locale] || locales2.enUS;
|
|
435
445
|
const monthStart = (0, import_date_fns2.startOfMonth)(currentMonth);
|
|
436
446
|
const monthEnd = (0, import_date_fns2.endOfMonth)(currentMonth);
|
|
@@ -595,9 +605,11 @@ var Calendar = (0, import_react3.forwardRef)(
|
|
|
595
605
|
maxDate,
|
|
596
606
|
firstDayOfWeek = 0,
|
|
597
607
|
month,
|
|
598
|
-
initialMonth
|
|
608
|
+
initialMonth,
|
|
609
|
+
themeMode,
|
|
610
|
+
themeProductContext
|
|
599
611
|
}, ref) => {
|
|
600
|
-
const { theme } = (0, import_xui_core2.
|
|
612
|
+
const { theme } = (0, import_xui_core2.useResolvedTheme)({ themeMode, themeProductContext });
|
|
601
613
|
const [currentMonth, setCurrentMonth] = (0, import_react3.useState)(
|
|
602
614
|
month || initialMonth || selectedDate || startDate || /* @__PURE__ */ new Date()
|
|
603
615
|
);
|
|
@@ -775,9 +787,11 @@ var DualCalendar = (0, import_react4.forwardRef)(
|
|
|
775
787
|
maxDate,
|
|
776
788
|
firstDayOfWeek = 0,
|
|
777
789
|
month,
|
|
778
|
-
initialMonth
|
|
790
|
+
initialMonth,
|
|
791
|
+
themeMode,
|
|
792
|
+
themeProductContext
|
|
779
793
|
}, ref) => {
|
|
780
|
-
const { theme } = (0, import_xui_core3.
|
|
794
|
+
const { theme } = (0, import_xui_core3.useResolvedTheme)({ themeMode, themeProductContext });
|
|
781
795
|
const [leftMonth, setLeftMonth] = (0, import_react4.useState)(
|
|
782
796
|
month || initialMonth || startDate || /* @__PURE__ */ new Date()
|
|
783
797
|
);
|
package/native/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.tsx","../../src/Calendar.tsx","../../../primitives-native/src/Box.tsx","../../../primitives-native/src/Text.tsx","../../src/CalendarHeader.tsx","../../src/utils.ts","../../src/CalendarGrid.tsx","../../src/CalendarChips.tsx","../../src/DualCalendar.tsx"],"sourcesContent":["export * from \"./Calendar\";\nexport * from \"./DualCalendar\";\nexport * from \"./CalendarHeader\";\nexport * from \"./CalendarGrid\";\nexport * from \"./CalendarChips\";\nexport * from \"./types\";\nexport * from \"./utils\";\n","import { forwardRef, useCallback, useEffect, useState } from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box } from \"@xsolla/xui-primitives\";\nimport { useDesignSystem } from \"@xsolla/xui-core\";\nimport { addMonths, subDays, subMonths, startOfDay } from \"date-fns\";\nimport { CalendarHeader } from \"./CalendarHeader\";\nimport { CalendarGrid } from \"./CalendarGrid\";\nimport { CalendarChips } from \"./CalendarChips\";\nimport type { CalendarProps } from \"./types\";\n\nexport const Calendar = forwardRef<any, CalendarProps>(\n (\n {\n locale = \"enUS\",\n onChange,\n startDate,\n endDate,\n selectedDate,\n selectsRange = false,\n contextMenuMaxHeight,\n topContent,\n bottomContent,\n chips,\n activeChip,\n onChipSelect,\n testID,\n minDate,\n maxDate,\n firstDayOfWeek = 0,\n month,\n initialMonth,\n },\n ref\n ) => {\n const { theme } = useDesignSystem();\n\n const [currentMonth, setCurrentMonth] = useState<Date>(\n (month || initialMonth || selectedDate || startDate || new Date()) as Date\n );\n const [selectedStartDate, setSelectedStartDate] = useState<\n Date | null | undefined\n >(startDate);\n const [selectedEndDate, setSelectedEndDate] = useState<\n Date | null | undefined\n >(endDate);\n const [locSelectedDate, setLocSelectedDate] = useState<\n Date | null | undefined\n >(selectedDate);\n const [selectingRange, setSelectingRange] = useState<Date | null>(null);\n\n useEffect(() => {\n setSelectedStartDate(startDate);\n setSelectedEndDate(endDate);\n setLocSelectedDate(selectedDate);\n if (month !== undefined) {\n setCurrentMonth(month);\n }\n }, [startDate, endDate, selectedDate, month]);\n\n const handleChange = useCallback(\n (date: Date) => {\n const newDate = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n );\n\n if (!selectsRange) {\n setLocSelectedDate(newDate);\n onChange?.(newDate);\n } else {\n if (!selectedStartDate || (selectedStartDate && selectedEndDate)) {\n setSelectedStartDate(newDate);\n setSelectedEndDate(null);\n setSelectingRange(newDate);\n onChange?.([newDate, null]);\n } else {\n const start =\n selectedStartDate < newDate ? selectedStartDate : newDate;\n const end =\n selectedStartDate < newDate ? newDate : selectedStartDate;\n setSelectedStartDate(start);\n setSelectedEndDate(end);\n setSelectingRange(null);\n onChange?.([start, end]);\n }\n }\n },\n [onChange, selectsRange, selectedStartDate, selectedEndDate]\n );\n\n const decreaseMonth = useCallback(\n () => setCurrentMonth((prev) => subMonths(prev, 1)),\n []\n );\n const increaseMonth = useCallback(\n () => setCurrentMonth((prev) => addMonths(prev, 1)),\n []\n );\n const changeMonth = useCallback(\n (m: number) =>\n setCurrentMonth((prev) => new Date(prev.getFullYear(), m, 1)),\n []\n );\n const changeYear = useCallback(\n (y: number) => setCurrentMonth((prev) => new Date(y, prev.getMonth(), 1)),\n []\n );\n\n const handleChipSelect = useCallback(\n (value: string) => {\n onChipSelect?.(value);\n\n const chip = chips?.find((c) => c.value === value);\n if (!chip || chip.days === undefined) return;\n\n const today = startOfDay(new Date());\n\n if (chip.days === 0) {\n if (selectsRange) {\n setSelectedStartDate(today);\n setSelectedEndDate(today);\n setSelectingRange(null);\n onChange?.([today, today]);\n } else {\n setLocSelectedDate(today);\n onChange?.(today);\n }\n setCurrentMonth(today);\n return;\n }\n\n const start = subDays(today, chip.days);\n if (selectsRange) {\n setSelectedStartDate(start);\n setSelectedEndDate(today);\n setSelectingRange(null);\n onChange?.([start, today]);\n } else {\n setLocSelectedDate(start);\n onChange?.(start);\n }\n setCurrentMonth(start);\n },\n [chips, selectsRange, onChange, onChipSelect]\n );\n\n return (\n <Box\n ref={ref}\n testID={testID}\n backgroundColor={theme.colors.background.secondary}\n borderRadius={8}\n padding={16}\n overflow=\"hidden\"\n style={{\n boxShadow:\n \"0px 2px 3px 0px rgba(7, 7, 8, 0.2), 0px 6px 10px 4px rgba(7, 7, 8, 0.1)\",\n width: 312,\n }}\n >\n {topContent?.({ close: () => {} })}\n\n {chips && chips.length > 0 && (\n <CalendarChips\n chips={chips}\n activeChip={activeChip}\n onChipSelect={handleChipSelect}\n />\n )}\n\n <CalendarHeader\n monthDate={currentMonth}\n decreaseMonth={decreaseMonth}\n increaseMonth={increaseMonth}\n changeYear={changeYear}\n changeMonth={changeMonth}\n locale={locale}\n minDate={minDate}\n maxDate={maxDate}\n contextMenuMaxHeight={contextMenuMaxHeight}\n />\n\n <CalendarGrid\n currentMonth={currentMonth}\n locale={locale}\n firstDayOfWeek={firstDayOfWeek}\n selectsRange={selectsRange}\n minDate={minDate}\n maxDate={maxDate}\n startDate={selectedStartDate}\n endDate={selectedEndDate}\n selectedDate={locSelectedDate}\n selectingRange={selectingRange}\n onDayPress={handleChange}\n />\n\n {bottomContent?.({ close: () => {} })}\n </Box>\n );\n }\n);\n\nCalendar.displayName = \"Calendar\";\n","import React from \"react\";\nimport {\n View,\n Pressable,\n Image,\n ViewStyle,\n ImageStyle,\n DimensionValue,\n AnimatableNumericValue,\n} from \"react-native\";\nimport { BoxProps } from \"@xsolla/xui-primitives-core\";\n\nexport const Box: React.FC<BoxProps> = ({\n children,\n onPress,\n onLayout,\n onMoveShouldSetResponder,\n onResponderGrant,\n onResponderMove,\n onResponderRelease,\n onResponderTerminate,\n backgroundColor,\n borderColor,\n borderWidth,\n borderBottomWidth,\n borderBottomColor,\n borderTopWidth,\n borderTopColor,\n borderLeftWidth,\n borderLeftColor,\n borderRightWidth,\n borderRightColor,\n borderRadius,\n borderStyle,\n height,\n padding,\n paddingHorizontal,\n paddingVertical,\n margin,\n marginTop,\n marginBottom,\n marginLeft,\n marginRight,\n flexDirection,\n alignItems,\n justifyContent,\n position,\n top,\n bottom,\n left,\n right,\n width,\n flex,\n overflow,\n zIndex,\n hoverStyle,\n pressStyle,\n style,\n \"data-testid\": dataTestId,\n testID,\n as,\n src,\n alt,\n ...rest\n}) => {\n const getContainerStyle = (pressed?: boolean): ViewStyle => ({\n backgroundColor:\n pressed && pressStyle?.backgroundColor\n ? pressStyle.backgroundColor\n : backgroundColor,\n borderColor,\n borderWidth,\n borderBottomWidth,\n borderBottomColor,\n borderTopWidth,\n borderTopColor,\n borderLeftWidth,\n borderLeftColor,\n borderRightWidth,\n borderRightColor,\n borderRadius: borderRadius as AnimatableNumericValue,\n borderStyle: borderStyle as ViewStyle[\"borderStyle\"],\n overflow,\n zIndex,\n height: height as DimensionValue,\n width: width as DimensionValue,\n padding: padding as DimensionValue,\n paddingHorizontal: paddingHorizontal as DimensionValue,\n paddingVertical: paddingVertical as DimensionValue,\n margin: margin as DimensionValue,\n marginTop: marginTop as DimensionValue,\n marginBottom: marginBottom as DimensionValue,\n marginLeft: marginLeft as DimensionValue,\n marginRight: marginRight as DimensionValue,\n flexDirection,\n alignItems,\n justifyContent,\n position: position as ViewStyle[\"position\"],\n top: top as DimensionValue,\n bottom: bottom as DimensionValue,\n left: left as DimensionValue,\n right: right as DimensionValue,\n flex,\n ...(style as ViewStyle),\n });\n\n const finalTestID = dataTestId || testID;\n\n // Destructure and drop web-only props from rest before passing to RN components\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const {\n role,\n tabIndex,\n onKeyDown,\n onKeyUp,\n \"aria-label\": _ariaLabel,\n \"aria-labelledby\": _ariaLabelledBy,\n \"aria-current\": _ariaCurrent,\n \"aria-disabled\": _ariaDisabled,\n \"aria-live\": _ariaLive,\n className,\n \"data-testid\": _dataTestId,\n ...nativeRest\n } = rest as Record<string, unknown>;\n\n // Handle as=\"img\" for React Native\n if (as === \"img\" && src) {\n const imageStyle: ImageStyle = {\n width: width as DimensionValue,\n height: height as DimensionValue,\n borderRadius: borderRadius as number,\n position: position as ImageStyle[\"position\"],\n top: top as DimensionValue,\n bottom: bottom as DimensionValue,\n left: left as DimensionValue,\n right: right as DimensionValue,\n ...(style as ImageStyle),\n };\n\n return (\n <Image\n source={{ uri: src }}\n style={imageStyle}\n testID={finalTestID}\n resizeMode=\"cover\"\n {...nativeRest}\n />\n );\n }\n\n if (onPress) {\n return (\n <Pressable\n onPress={onPress}\n onLayout={onLayout}\n onMoveShouldSetResponder={onMoveShouldSetResponder}\n onResponderGrant={onResponderGrant}\n onResponderMove={onResponderMove}\n onResponderRelease={onResponderRelease}\n onResponderTerminate={onResponderTerminate}\n style={({ pressed }) => getContainerStyle(pressed)}\n testID={finalTestID}\n {...nativeRest}\n >\n {children}\n </Pressable>\n );\n }\n\n return (\n <View\n style={getContainerStyle()}\n testID={finalTestID}\n onLayout={onLayout}\n onMoveShouldSetResponder={onMoveShouldSetResponder}\n onResponderGrant={onResponderGrant}\n onResponderMove={onResponderMove}\n onResponderRelease={onResponderRelease}\n onResponderTerminate={onResponderTerminate}\n {...nativeRest}\n >\n {children}\n </View>\n );\n};\n","import React from \"react\";\nimport {\n Text as RNText,\n TextStyle,\n AccessibilityRole,\n StyleSheet,\n} from \"react-native\";\nimport { TextProps } from \"@xsolla/xui-primitives-core\";\n\nconst roleMap: Record<string, AccessibilityRole> = {\n alert: \"alert\",\n heading: \"header\",\n button: \"button\",\n link: \"link\",\n text: \"text\",\n};\n\nconst parseNumericValue = (\n value: string | number | undefined\n): number | undefined => {\n if (value === undefined) return undefined;\n if (typeof value === \"number\") return value;\n const parsed = parseFloat(value);\n return isNaN(parsed) ? undefined : parsed;\n};\n\nexport const Text: React.FC<TextProps> = ({\n children,\n color,\n fontSize,\n fontWeight,\n fontFamily,\n textAlign,\n lineHeight,\n numberOfLines,\n id,\n role,\n style: styleProp,\n ...props\n}) => {\n let resolvedFontFamily = fontFamily\n ? fontFamily.split(\",\")[0].replace(/['\"]/g, \"\").trim()\n : undefined;\n\n if (\n resolvedFontFamily === \"Pilat Wide\" ||\n resolvedFontFamily === \"Pilat Wide Bold\" ||\n resolvedFontFamily === \"Aktiv Grotesk\"\n ) {\n resolvedFontFamily = undefined;\n }\n\n const incomingStyle = StyleSheet.flatten(styleProp) as TextStyle | undefined;\n\n const baseStyle: TextStyle = {\n color,\n fontSize: typeof fontSize === \"number\" ? fontSize : undefined,\n fontWeight: fontWeight as TextStyle[\"fontWeight\"],\n fontFamily: resolvedFontFamily,\n textDecorationLine: props.textDecoration as TextStyle[\"textDecorationLine\"],\n textAlign: textAlign ?? incomingStyle?.textAlign,\n lineHeight: parseNumericValue(lineHeight ?? incomingStyle?.lineHeight),\n marginTop: parseNumericValue(\n incomingStyle?.marginTop as number | string | undefined\n ),\n marginBottom: parseNumericValue(\n incomingStyle?.marginBottom as number | string | undefined\n ),\n };\n\n const accessibilityRole = role ? roleMap[role] : undefined;\n\n return (\n <RNText\n style={baseStyle}\n numberOfLines={numberOfLines}\n testID={id}\n accessibilityRole={accessibilityRole}\n >\n {children}\n </RNText>\n );\n};\n","import React, { useCallback, useMemo } from \"react\";\nimport { IconButton } from \"@xsolla/xui-button\";\nimport { Select } from \"@xsolla/xui-select\";\nimport { ArrowLeft, ArrowRight } from \"@xsolla/xui-icons-base\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box } from \"@xsolla/xui-primitives\";\nimport { getMonthInLocale } from \"./utils\";\nimport type { CalendarHeaderProps } from \"./types\";\n\nconst months = [\n \"january\",\n \"february\",\n \"march\",\n \"april\",\n \"may\",\n \"june\",\n \"july\",\n \"august\",\n \"september\",\n \"october\",\n \"november\",\n \"december\",\n];\n\nexport const CalendarHeader: React.FC<CalendarHeaderProps> = ({\n monthDate,\n decreaseMonth,\n increaseMonth,\n changeYear,\n changeMonth,\n prevMonthButtonDisabled,\n nextMonthButtonDisabled,\n locale,\n minDate,\n maxDate,\n}) => {\n const handleChangeMonth = useCallback(\n (value: any) => {\n changeMonth(months.indexOf(value as string));\n },\n [changeMonth]\n );\n\n const handleChangeYear = useCallback(\n (value: any) => {\n changeYear(parseInt(value as string, 10));\n },\n [changeYear]\n );\n\n const monthOptions = useMemo(() => {\n return months.map((month, index) => ({\n label: getMonthInLocale(index, locale),\n value: month,\n }));\n }, [locale]);\n\n const yearOptions = useMemo(() => {\n const options = [];\n const yearStart = minDate ? minDate.getFullYear() : 1900;\n const yearEnd = maxDate\n ? maxDate.getFullYear()\n : new Date().getFullYear() + 100;\n for (let i = yearEnd; i >= yearStart; i--) {\n options.push({ value: i.toString(), label: i.toString() });\n }\n return options;\n }, [minDate, maxDate]);\n\n return (\n <Box\n width=\"100%\"\n flexDirection=\"row\"\n justifyContent=\"space-between\"\n alignItems=\"center\"\n marginBottom={16}\n gap={8}\n >\n <IconButton\n size=\"xs\"\n tone=\"mono\"\n variant=\"tertiary\"\n onPress={decreaseMonth}\n disabled={prevMonthButtonDisabled}\n icon={<ArrowLeft size={16} />}\n aria-label=\"Previous month\"\n />\n\n <Box flexDirection=\"row\" flex={1} gap={4}>\n <Box flex={1.5}>\n <Select\n value={months[monthDate.getMonth()]}\n onChange={handleChangeMonth}\n options={monthOptions}\n size=\"sm\"\n />\n </Box>\n <Box flex={1}>\n <Select\n value={monthDate.getFullYear().toString()}\n onChange={handleChangeYear}\n options={yearOptions}\n size=\"sm\"\n />\n </Box>\n </Box>\n\n <IconButton\n size=\"xs\"\n tone=\"mono\"\n variant=\"tertiary\"\n onPress={increaseMonth}\n disabled={nextMonthButtonDisabled}\n icon={<ArrowRight size={16} />}\n aria-label=\"Next month\"\n />\n </Box>\n );\n};\n","import { format, setMonth } from \"date-fns\";\nimport * as locales from \"date-fns/locale\";\nimport type { CalendarLocaleType } from \"./types\";\n\nconst defaultLocale = \"enUS\";\n\nexport function formatDate(\n date: Date,\n formatStr: string,\n locale: CalendarLocaleType = defaultLocale\n) {\n const localeObj = locales[locale] || locales[defaultLocale];\n\n return format(date, formatStr, {\n locale: localeObj,\n });\n}\n\nexport function getMonthInLocale(\n month: number,\n locale: CalendarLocaleType = defaultLocale\n) {\n return formatDate(setMonth(new Date(), month), \"LLLL\", locale);\n}\n","import React, { useMemo, useCallback } from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box, Text } from \"@xsolla/xui-primitives\";\nimport { useDesignSystem } from \"@xsolla/xui-core\";\nimport {\n addDays,\n eachDayOfInterval,\n endOfDay,\n endOfMonth,\n endOfWeek,\n format,\n isAfter,\n isBefore,\n isSameDay,\n isSameMonth,\n isToday,\n isWithinInterval,\n startOfDay,\n startOfMonth,\n startOfWeek,\n} from \"date-fns\";\nimport * as locales from \"date-fns/locale\";\nimport type { CalendarGridProps } from \"./types\";\n\nexport const CalendarGrid: React.FC<CalendarGridProps> = ({\n currentMonth,\n locale = \"enUS\",\n firstDayOfWeek = 0,\n selectsRange = false,\n minDate,\n maxDate,\n startDate,\n endDate,\n selectedDate,\n selectingRange,\n onDayPress,\n testID,\n}) => {\n const { theme } = useDesignSystem();\n const localeObj = (locales as any)[locale] || locales.enUS;\n\n const monthStart = startOfMonth(currentMonth);\n const monthEnd = endOfMonth(currentMonth);\n const weekStartsOn = (firstDayOfWeek ?? 0) as any;\n const calendarStart = startOfWeek(monthStart, { weekStartsOn });\n const calendarEnd = endOfWeek(monthEnd, { weekStartsOn });\n\n const days = eachDayOfInterval({ start: calendarStart, end: calendarEnd });\n\n const weekDays = useMemo(() => {\n return Array.from({ length: 7 }, (_, i) => {\n const day = addDays(calendarStart, i);\n return format(day, \"EEEEEE\", { locale: localeObj });\n });\n }, [calendarStart, localeObj]);\n\n const weeks = useMemo(() => {\n const weekArray: Date[][] = [];\n for (let i = 0; i < days.length; i += 7) {\n weekArray.push(days.slice(i, i + 7));\n }\n return weekArray;\n }, [days]);\n\n const isDateDisabled = useCallback(\n (date: Date) => {\n if (minDate && isBefore(date, startOfDay(minDate))) return true;\n if (maxDate && isAfter(date, endOfDay(maxDate))) return true;\n return false;\n },\n [minDate, maxDate]\n );\n\n const isDateInRange = useCallback(\n (date: Date) => {\n if (!selectsRange || !startDate) return false;\n const rangeEnd = endDate || selectingRange;\n if (!rangeEnd) return false;\n const start = startDate < rangeEnd ? startDate : rangeEnd;\n const end = startDate < rangeEnd ? rangeEnd : startDate;\n return isWithinInterval(date, {\n start: startOfDay(start),\n end: endOfDay(end),\n });\n },\n [selectsRange, startDate, endDate, selectingRange]\n );\n\n return (\n <Box testID={testID}>\n <Box flexDirection=\"row\" justifyContent=\"space-between\" marginBottom={8}>\n {weekDays.map((day, i) => (\n <Box key={i} width={40} alignItems=\"center\">\n <Text\n fontSize={12}\n fontWeight=\"600\"\n color={theme.colors.content.tertiary}\n >\n {day.toUpperCase()}\n </Text>\n </Box>\n ))}\n </Box>\n\n <Box gap={2}>\n {weeks.map((week, i) => (\n <Box key={i} flexDirection=\"row\" justifyContent=\"space-between\">\n {week.map((day, j) => {\n const isOutsideMonth = !isSameMonth(day, currentMonth);\n const isSelected =\n (!selectsRange &&\n selectedDate &&\n isSameDay(day, selectedDate)) ||\n (selectsRange &&\n startDate &&\n endDate &&\n isSameDay(day, startDate) &&\n isSameDay(day, endDate));\n const isRangeStart =\n selectsRange && startDate && isSameDay(day, startDate);\n const isRangeEnd =\n selectsRange && endDate && isSameDay(day, endDate);\n const inRange = isDateInRange(day);\n const today = isToday(day);\n const disabled = isDateDisabled(day);\n\n let bgColor = \"transparent\";\n let textColor = theme.colors.content.primary;\n\n if (isSelected || isRangeStart || isRangeEnd) {\n bgColor = theme.colors.background.brand.primary;\n textColor = theme.colors.content.on.brand;\n } else if (inRange) {\n bgColor = theme.colors.overlay.brand;\n } else if (today) {\n bgColor = theme.colors.overlay.mono;\n }\n\n if (isOutsideMonth || disabled) {\n textColor = theme.colors.content.tertiary;\n }\n\n return (\n <Box\n key={j}\n width={40}\n height={32}\n alignItems=\"center\"\n justifyContent=\"center\"\n borderRadius={\n isSelected || isRangeStart || isRangeEnd ? 4 : 0\n }\n backgroundColor={bgColor}\n cursor={disabled || isOutsideMonth ? \"default\" : \"pointer\"}\n onPress={() =>\n !disabled && !isOutsideMonth && onDayPress?.(day)\n }\n hoverStyle={\n !disabled && !isOutsideMonth && !isSelected\n ? { backgroundColor: theme.colors.overlay.mono }\n : undefined\n }\n >\n <Text\n color={textColor}\n fontSize={14}\n fontWeight={\n isSelected || isRangeStart || isRangeEnd ? \"600\" : \"400\"\n }\n >\n {format(day, \"d\")}\n </Text>\n </Box>\n );\n })}\n </Box>\n ))}\n </Box>\n </Box>\n );\n};\n","import React from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box } from \"@xsolla/xui-primitives\";\nimport { Tag } from \"@xsolla/xui-tag\";\nimport type { CalendarChipsProps } from \"./types\";\n\nexport const CalendarChips: React.FC<CalendarChipsProps> = ({\n chips,\n activeChip,\n onChipSelect,\n testID,\n}) => {\n if (!chips || chips.length === 0) return null;\n\n return (\n <Box\n testID={testID}\n flexDirection=\"row\"\n flexWrap=\"wrap\"\n gap={8}\n marginBottom={16}\n >\n {chips.map((chip) => {\n const isActive = activeChip === chip.value;\n return (\n <Box\n key={chip.value}\n onPress={() => onChipSelect?.(chip.value)}\n cursor=\"pointer\"\n >\n <Tag\n size=\"sm\"\n tone={isActive ? \"brand\" : \"primary\"}\n type={isActive ? \"solid\" : \"outlined\"}\n >\n {chip.label}\n </Tag>\n </Box>\n );\n })}\n </Box>\n );\n};\n","import { forwardRef, useCallback, useEffect, useState } from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box } from \"@xsolla/xui-primitives\";\nimport { useDesignSystem } from \"@xsolla/xui-core\";\nimport { addMonths, subDays, subMonths, startOfDay } from \"date-fns\";\nimport { CalendarHeader } from \"./CalendarHeader\";\nimport { CalendarGrid } from \"./CalendarGrid\";\nimport { CalendarChips } from \"./CalendarChips\";\nimport type { DualCalendarProps } from \"./types\";\n\nexport const DualCalendar = forwardRef<any, DualCalendarProps>(\n (\n {\n locale = \"enUS\",\n onChange,\n startDate,\n endDate,\n contextMenuMaxHeight,\n topContent,\n bottomContent,\n chips,\n activeChip,\n onChipSelect,\n testID,\n minDate,\n maxDate,\n firstDayOfWeek = 0,\n month,\n initialMonth,\n },\n ref\n ) => {\n const { theme } = useDesignSystem();\n\n const [leftMonth, setLeftMonth] = useState<Date>(\n (month || initialMonth || startDate || new Date()) as Date\n );\n const [selectedStartDate, setSelectedStartDate] = useState<\n Date | null | undefined\n >(startDate);\n const [selectedEndDate, setSelectedEndDate] = useState<\n Date | null | undefined\n >(endDate);\n const [selectingRange, setSelectingRange] = useState<Date | null>(null);\n\n const rightMonth = addMonths(leftMonth, 1);\n\n useEffect(() => {\n setSelectedStartDate(startDate);\n setSelectedEndDate(endDate);\n if (month !== undefined) {\n setLeftMonth(month);\n }\n }, [startDate, endDate, month]);\n\n const handleDayPress = useCallback(\n (date: Date) => {\n const newDate = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n );\n\n if (!selectedStartDate || (selectedStartDate && selectedEndDate)) {\n setSelectedStartDate(newDate);\n setSelectedEndDate(null);\n setSelectingRange(newDate);\n onChange?.([newDate, null]);\n } else {\n const start =\n selectedStartDate < newDate ? selectedStartDate : newDate;\n const end = selectedStartDate < newDate ? newDate : selectedStartDate;\n setSelectedStartDate(start);\n setSelectedEndDate(end);\n setSelectingRange(null);\n onChange?.([start, end]);\n }\n },\n [onChange, selectedStartDate, selectedEndDate]\n );\n\n const decreaseLeftMonth = useCallback(\n () => setLeftMonth((prev) => subMonths(prev, 1)),\n []\n );\n const increaseLeftMonth = useCallback(\n () => setLeftMonth((prev) => addMonths(prev, 1)),\n []\n );\n const changeLeftMonth = useCallback(\n (m: number) => setLeftMonth((prev) => new Date(prev.getFullYear(), m, 1)),\n []\n );\n const changeLeftYear = useCallback(\n (y: number) => setLeftMonth((prev) => new Date(y, prev.getMonth(), 1)),\n []\n );\n\n const decreaseRightMonth = useCallback(\n () => setLeftMonth((prev) => subMonths(prev, 1)),\n []\n );\n const increaseRightMonth = useCallback(\n () => setLeftMonth((prev) => addMonths(prev, 1)),\n []\n );\n const changeRightMonth = useCallback(\n (m: number) => setLeftMonth(new Date(rightMonth.getFullYear(), m - 1, 1)),\n [rightMonth]\n );\n const changeRightYear = useCallback(\n (y: number) => setLeftMonth(new Date(y, rightMonth.getMonth() - 1, 1)),\n [rightMonth]\n );\n\n const handleChipSelect = useCallback(\n (value: string) => {\n onChipSelect?.(value);\n\n const chip = chips?.find((c) => c.value === value);\n if (!chip || chip.days === undefined) return;\n\n const today = startOfDay(new Date());\n\n if (chip.days === 0) {\n setSelectedStartDate(today);\n setSelectedEndDate(today);\n setSelectingRange(null);\n setLeftMonth(today);\n onChange?.([today, today]);\n return;\n }\n\n const start = subDays(today, chip.days);\n setSelectedStartDate(start);\n setSelectedEndDate(today);\n setSelectingRange(null);\n setLeftMonth(start);\n onChange?.([start, today]);\n },\n [chips, onChange, onChipSelect]\n );\n\n return (\n <Box\n ref={ref}\n testID={testID}\n backgroundColor={theme.colors.background.secondary}\n borderRadius={8}\n padding={16}\n overflow=\"hidden\"\n style={{\n boxShadow:\n \"0px 2px 3px 0px rgba(7, 7, 8, 0.2), 0px 6px 10px 4px rgba(7, 7, 8, 0.1)\",\n width: 624,\n }}\n >\n {topContent?.({ close: () => {} })}\n\n {chips && chips.length > 0 && (\n <CalendarChips\n chips={chips}\n activeChip={activeChip}\n onChipSelect={handleChipSelect}\n />\n )}\n\n <Box flexDirection=\"row\" gap={16}>\n <Box flex={1}>\n <CalendarHeader\n monthDate={leftMonth}\n decreaseMonth={decreaseLeftMonth}\n increaseMonth={increaseLeftMonth}\n changeYear={changeLeftYear}\n changeMonth={changeLeftMonth}\n locale={locale}\n minDate={minDate}\n maxDate={maxDate}\n contextMenuMaxHeight={contextMenuMaxHeight}\n />\n\n <CalendarGrid\n currentMonth={leftMonth}\n locale={locale}\n firstDayOfWeek={firstDayOfWeek}\n selectsRange\n minDate={minDate}\n maxDate={maxDate}\n startDate={selectedStartDate}\n endDate={selectedEndDate}\n selectingRange={selectingRange}\n onDayPress={handleDayPress}\n />\n </Box>\n\n <Box flex={1}>\n <CalendarHeader\n monthDate={rightMonth}\n decreaseMonth={decreaseRightMonth}\n increaseMonth={increaseRightMonth}\n changeYear={changeRightYear}\n changeMonth={changeRightMonth}\n locale={locale}\n minDate={minDate}\n maxDate={maxDate}\n contextMenuMaxHeight={contextMenuMaxHeight}\n />\n\n <CalendarGrid\n currentMonth={rightMonth}\n locale={locale}\n firstDayOfWeek={firstDayOfWeek}\n selectsRange\n minDate={minDate}\n maxDate={maxDate}\n startDate={selectedStartDate}\n endDate={selectedEndDate}\n selectingRange={selectingRange}\n onDayPress={handleDayPress}\n />\n </Box>\n </Box>\n\n {bottomContent?.({ close: () => {} })}\n </Box>\n );\n }\n);\n\nDualCalendar.displayName = \"DualCalendar\";\n"],"mappings":"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","names":["import_react","import_react_native","import_jsx_runtime","RNText","import_xui_core","import_date_fns","import_jsx_runtime","import_react","import_date_fns","locales","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_xui_core","import_date_fns","import_jsx_runtime"]}
|
|
1
|
+
{"version":3,"sources":["../../src/index.tsx","../../src/Calendar.tsx","../../../primitives-native/src/Box.tsx","../../../primitives-native/src/Text.tsx","../../src/CalendarHeader.tsx","../../src/utils.ts","../../src/CalendarGrid.tsx","../../src/CalendarChips.tsx","../../src/DualCalendar.tsx"],"sourcesContent":["export * from \"./Calendar\";\nexport * from \"./DualCalendar\";\nexport * from \"./CalendarHeader\";\nexport * from \"./CalendarGrid\";\nexport * from \"./CalendarChips\";\nexport * from \"./types\";\nexport * from \"./utils\";\n","import { forwardRef, useCallback, useEffect, useState } from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box } from \"@xsolla/xui-primitives\";\nimport { useResolvedTheme } from \"@xsolla/xui-core\";\nimport { addMonths, subDays, subMonths, startOfDay } from \"date-fns\";\nimport { CalendarHeader } from \"./CalendarHeader\";\nimport { CalendarGrid } from \"./CalendarGrid\";\nimport { CalendarChips } from \"./CalendarChips\";\nimport type { CalendarProps } from \"./types\";\n\nexport const Calendar = forwardRef<any, CalendarProps>(\n (\n {\n locale = \"enUS\",\n onChange,\n startDate,\n endDate,\n selectedDate,\n selectsRange = false,\n contextMenuMaxHeight,\n topContent,\n bottomContent,\n chips,\n activeChip,\n onChipSelect,\n testID,\n minDate,\n maxDate,\n firstDayOfWeek = 0,\n month,\n initialMonth,\n themeMode,\n themeProductContext,\n },\n ref\n ) => {\n const { theme } = useResolvedTheme({ themeMode, themeProductContext });\n\n const [currentMonth, setCurrentMonth] = useState<Date>(\n (month || initialMonth || selectedDate || startDate || new Date()) as Date\n );\n const [selectedStartDate, setSelectedStartDate] = useState<\n Date | null | undefined\n >(startDate);\n const [selectedEndDate, setSelectedEndDate] = useState<\n Date | null | undefined\n >(endDate);\n const [locSelectedDate, setLocSelectedDate] = useState<\n Date | null | undefined\n >(selectedDate);\n const [selectingRange, setSelectingRange] = useState<Date | null>(null);\n\n useEffect(() => {\n setSelectedStartDate(startDate);\n setSelectedEndDate(endDate);\n setLocSelectedDate(selectedDate);\n if (month !== undefined) {\n setCurrentMonth(month);\n }\n }, [startDate, endDate, selectedDate, month]);\n\n const handleChange = useCallback(\n (date: Date) => {\n const newDate = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n );\n\n if (!selectsRange) {\n setLocSelectedDate(newDate);\n onChange?.(newDate);\n } else {\n if (!selectedStartDate || (selectedStartDate && selectedEndDate)) {\n setSelectedStartDate(newDate);\n setSelectedEndDate(null);\n setSelectingRange(newDate);\n onChange?.([newDate, null]);\n } else {\n const start =\n selectedStartDate < newDate ? selectedStartDate : newDate;\n const end =\n selectedStartDate < newDate ? newDate : selectedStartDate;\n setSelectedStartDate(start);\n setSelectedEndDate(end);\n setSelectingRange(null);\n onChange?.([start, end]);\n }\n }\n },\n [onChange, selectsRange, selectedStartDate, selectedEndDate]\n );\n\n const decreaseMonth = useCallback(\n () => setCurrentMonth((prev) => subMonths(prev, 1)),\n []\n );\n const increaseMonth = useCallback(\n () => setCurrentMonth((prev) => addMonths(prev, 1)),\n []\n );\n const changeMonth = useCallback(\n (m: number) =>\n setCurrentMonth((prev) => new Date(prev.getFullYear(), m, 1)),\n []\n );\n const changeYear = useCallback(\n (y: number) => setCurrentMonth((prev) => new Date(y, prev.getMonth(), 1)),\n []\n );\n\n const handleChipSelect = useCallback(\n (value: string) => {\n onChipSelect?.(value);\n\n const chip = chips?.find((c) => c.value === value);\n if (!chip || chip.days === undefined) return;\n\n const today = startOfDay(new Date());\n\n if (chip.days === 0) {\n if (selectsRange) {\n setSelectedStartDate(today);\n setSelectedEndDate(today);\n setSelectingRange(null);\n onChange?.([today, today]);\n } else {\n setLocSelectedDate(today);\n onChange?.(today);\n }\n setCurrentMonth(today);\n return;\n }\n\n const start = subDays(today, chip.days);\n if (selectsRange) {\n setSelectedStartDate(start);\n setSelectedEndDate(today);\n setSelectingRange(null);\n onChange?.([start, today]);\n } else {\n setLocSelectedDate(start);\n onChange?.(start);\n }\n setCurrentMonth(start);\n },\n [chips, selectsRange, onChange, onChipSelect]\n );\n\n return (\n <Box\n ref={ref}\n testID={testID}\n backgroundColor={theme.colors.background.secondary}\n borderRadius={8}\n padding={16}\n overflow=\"hidden\"\n style={{\n boxShadow:\n \"0px 2px 3px 0px rgba(7, 7, 8, 0.2), 0px 6px 10px 4px rgba(7, 7, 8, 0.1)\",\n width: 312,\n }}\n >\n {topContent?.({ close: () => {} })}\n\n {chips && chips.length > 0 && (\n <CalendarChips\n chips={chips}\n activeChip={activeChip}\n onChipSelect={handleChipSelect}\n />\n )}\n\n <CalendarHeader\n monthDate={currentMonth}\n decreaseMonth={decreaseMonth}\n increaseMonth={increaseMonth}\n changeYear={changeYear}\n changeMonth={changeMonth}\n locale={locale}\n minDate={minDate}\n maxDate={maxDate}\n contextMenuMaxHeight={contextMenuMaxHeight}\n />\n\n <CalendarGrid\n currentMonth={currentMonth}\n locale={locale}\n firstDayOfWeek={firstDayOfWeek}\n selectsRange={selectsRange}\n minDate={minDate}\n maxDate={maxDate}\n startDate={selectedStartDate}\n endDate={selectedEndDate}\n selectedDate={locSelectedDate}\n selectingRange={selectingRange}\n onDayPress={handleChange}\n />\n\n {bottomContent?.({ close: () => {} })}\n </Box>\n );\n }\n);\n\nCalendar.displayName = \"Calendar\";\n","import React from \"react\";\nimport {\n View,\n Pressable,\n Image,\n ViewStyle,\n ImageStyle,\n DimensionValue,\n AnimatableNumericValue,\n} from \"react-native\";\nimport { BoxProps } from \"@xsolla/xui-primitives-core\";\n\nexport const Box: React.FC<BoxProps> = ({\n children,\n onPress,\n onLayout,\n onMoveShouldSetResponder,\n onResponderGrant,\n onResponderMove,\n onResponderRelease,\n onResponderTerminate,\n backgroundColor,\n borderColor,\n borderWidth,\n borderBottomWidth,\n borderBottomColor,\n borderTopWidth,\n borderTopColor,\n borderLeftWidth,\n borderLeftColor,\n borderRightWidth,\n borderRightColor,\n borderRadius,\n borderStyle,\n height,\n padding,\n paddingHorizontal,\n paddingVertical,\n margin,\n marginTop,\n marginBottom,\n marginLeft,\n marginRight,\n flexDirection,\n alignItems,\n justifyContent,\n position,\n top,\n bottom,\n left,\n right,\n width,\n minWidth,\n minHeight,\n maxWidth,\n maxHeight,\n flex,\n overflow,\n zIndex,\n hoverStyle,\n pressStyle,\n style,\n \"data-testid\": dataTestId,\n testID,\n as,\n src,\n alt,\n ...rest\n}) => {\n const getContainerStyle = (pressed?: boolean): ViewStyle => ({\n backgroundColor:\n pressed && pressStyle?.backgroundColor\n ? pressStyle.backgroundColor\n : backgroundColor,\n borderColor,\n borderWidth,\n borderBottomWidth,\n borderBottomColor,\n borderTopWidth,\n borderTopColor,\n borderLeftWidth,\n borderLeftColor,\n borderRightWidth,\n borderRightColor,\n borderRadius: borderRadius as AnimatableNumericValue,\n borderStyle: borderStyle as ViewStyle[\"borderStyle\"],\n overflow,\n zIndex,\n height: height as DimensionValue,\n width: width as DimensionValue,\n minWidth: minWidth as DimensionValue,\n minHeight: minHeight as DimensionValue,\n maxWidth: maxWidth as DimensionValue,\n maxHeight: maxHeight as DimensionValue,\n padding: padding as DimensionValue,\n paddingHorizontal: paddingHorizontal as DimensionValue,\n paddingVertical: paddingVertical as DimensionValue,\n margin: margin as DimensionValue,\n marginTop: marginTop as DimensionValue,\n marginBottom: marginBottom as DimensionValue,\n marginLeft: marginLeft as DimensionValue,\n marginRight: marginRight as DimensionValue,\n flexDirection,\n alignItems,\n justifyContent,\n position: position as ViewStyle[\"position\"],\n top: top as DimensionValue,\n bottom: bottom as DimensionValue,\n left: left as DimensionValue,\n right: right as DimensionValue,\n flex,\n ...(style as ViewStyle),\n });\n\n const finalTestID = dataTestId || testID;\n\n // Destructure and drop web-only props from rest before passing to RN components\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const {\n role,\n tabIndex,\n onKeyDown,\n onKeyUp,\n \"aria-label\": _ariaLabel,\n \"aria-labelledby\": _ariaLabelledBy,\n \"aria-current\": _ariaCurrent,\n \"aria-disabled\": _ariaDisabled,\n \"aria-live\": _ariaLive,\n className,\n \"data-testid\": _dataTestId,\n ...nativeRest\n } = rest as Record<string, unknown>;\n\n // Handle as=\"img\" for React Native\n if (as === \"img\" && src) {\n const imageStyle: ImageStyle = {\n width: width as DimensionValue,\n height: height as DimensionValue,\n borderRadius: borderRadius as number,\n position: position as ImageStyle[\"position\"],\n top: top as DimensionValue,\n bottom: bottom as DimensionValue,\n left: left as DimensionValue,\n right: right as DimensionValue,\n ...(style as ImageStyle),\n };\n\n return (\n <Image\n source={{ uri: src }}\n style={imageStyle}\n testID={finalTestID}\n resizeMode=\"cover\"\n {...nativeRest}\n />\n );\n }\n\n if (onPress) {\n return (\n <Pressable\n onPress={onPress}\n onLayout={onLayout}\n onMoveShouldSetResponder={onMoveShouldSetResponder}\n onResponderGrant={onResponderGrant}\n onResponderMove={onResponderMove}\n onResponderRelease={onResponderRelease}\n onResponderTerminate={onResponderTerminate}\n style={({ pressed }) => getContainerStyle(pressed)}\n testID={finalTestID}\n {...nativeRest}\n >\n {children}\n </Pressable>\n );\n }\n\n return (\n <View\n style={getContainerStyle()}\n testID={finalTestID}\n onLayout={onLayout}\n onMoveShouldSetResponder={onMoveShouldSetResponder}\n onResponderGrant={onResponderGrant}\n onResponderMove={onResponderMove}\n onResponderRelease={onResponderRelease}\n onResponderTerminate={onResponderTerminate}\n {...nativeRest}\n >\n {children}\n </View>\n );\n};\n","import React from \"react\";\nimport {\n Text as RNText,\n TextStyle,\n AccessibilityRole,\n StyleSheet,\n} from \"react-native\";\nimport { TextProps } from \"@xsolla/xui-primitives-core\";\n\nconst roleMap: Record<string, AccessibilityRole> = {\n alert: \"alert\",\n heading: \"header\",\n button: \"button\",\n link: \"link\",\n text: \"text\",\n};\n\nconst parseNumericValue = (\n value: string | number | undefined\n): number | undefined => {\n if (value === undefined) return undefined;\n if (typeof value === \"number\") return value;\n const parsed = parseFloat(value);\n return isNaN(parsed) ? undefined : parsed;\n};\n\nexport const Text: React.FC<TextProps> = ({\n children,\n color,\n fontSize,\n fontWeight,\n fontFamily,\n textAlign,\n lineHeight,\n numberOfLines,\n id,\n role,\n style: styleProp,\n ...props\n}) => {\n let resolvedFontFamily = fontFamily\n ? fontFamily.split(\",\")[0].replace(/['\"]/g, \"\").trim()\n : undefined;\n\n if (\n resolvedFontFamily === \"Pilat Wide\" ||\n resolvedFontFamily === \"Pilat Wide Bold\" ||\n resolvedFontFamily === \"Aktiv Grotesk\"\n ) {\n resolvedFontFamily = undefined;\n }\n\n const incomingStyle = StyleSheet.flatten(styleProp) as TextStyle | undefined;\n\n const baseStyle: TextStyle = {\n color: color ?? incomingStyle?.color,\n fontSize: typeof fontSize === \"number\" ? fontSize : undefined,\n fontWeight: fontWeight as TextStyle[\"fontWeight\"],\n fontFamily: resolvedFontFamily,\n textDecorationLine: props.textDecoration as TextStyle[\"textDecorationLine\"],\n textAlign: textAlign ?? incomingStyle?.textAlign,\n lineHeight: parseNumericValue(lineHeight ?? incomingStyle?.lineHeight),\n marginTop: parseNumericValue(\n incomingStyle?.marginTop as number | string | undefined\n ),\n marginBottom: parseNumericValue(\n incomingStyle?.marginBottom as number | string | undefined\n ),\n };\n\n const accessibilityRole = role ? roleMap[role] : undefined;\n\n return (\n <RNText\n style={baseStyle}\n numberOfLines={numberOfLines}\n testID={id}\n accessibilityRole={accessibilityRole}\n >\n {children}\n </RNText>\n );\n};\n","import React, { useCallback, useMemo } from \"react\";\nimport { IconButton } from \"@xsolla/xui-button\";\nimport { Select } from \"@xsolla/xui-select\";\nimport { ArrowLeft, ArrowRight } from \"@xsolla/xui-icons-base\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box } from \"@xsolla/xui-primitives\";\nimport { getMonthInLocale } from \"./utils\";\nimport type { CalendarHeaderProps } from \"./types\";\n\nconst months = [\n \"january\",\n \"february\",\n \"march\",\n \"april\",\n \"may\",\n \"june\",\n \"july\",\n \"august\",\n \"september\",\n \"october\",\n \"november\",\n \"december\",\n];\n\nexport const CalendarHeader: React.FC<CalendarHeaderProps> = ({\n monthDate,\n decreaseMonth,\n increaseMonth,\n changeYear,\n changeMonth,\n prevMonthButtonDisabled,\n nextMonthButtonDisabled,\n locale,\n minDate,\n maxDate,\n}) => {\n const handleChangeMonth = useCallback(\n (value: any) => {\n changeMonth(months.indexOf(value as string));\n },\n [changeMonth]\n );\n\n const handleChangeYear = useCallback(\n (value: any) => {\n changeYear(parseInt(value as string, 10));\n },\n [changeYear]\n );\n\n const monthOptions = useMemo(() => {\n return months.map((month, index) => ({\n label: getMonthInLocale(index, locale),\n value: month,\n }));\n }, [locale]);\n\n const yearOptions = useMemo(() => {\n const options = [];\n const yearStart = minDate ? minDate.getFullYear() : 1900;\n const yearEnd = maxDate\n ? maxDate.getFullYear()\n : new Date().getFullYear() + 100;\n for (let i = yearEnd; i >= yearStart; i--) {\n options.push({ value: i.toString(), label: i.toString() });\n }\n return options;\n }, [minDate, maxDate]);\n\n return (\n <Box\n width=\"100%\"\n flexDirection=\"row\"\n justifyContent=\"space-between\"\n alignItems=\"center\"\n marginBottom={16}\n gap={8}\n >\n <IconButton\n size=\"xs\"\n tone=\"mono\"\n variant=\"tertiary\"\n onPress={decreaseMonth}\n disabled={prevMonthButtonDisabled}\n icon={<ArrowLeft size={16} />}\n aria-label=\"Previous month\"\n />\n\n <Box flexDirection=\"row\" flex={1} gap={4}>\n <Box flex={1.5}>\n <Select\n value={months[monthDate.getMonth()]}\n onChange={handleChangeMonth}\n options={monthOptions}\n size=\"sm\"\n />\n </Box>\n <Box flex={1}>\n <Select\n value={monthDate.getFullYear().toString()}\n onChange={handleChangeYear}\n options={yearOptions}\n size=\"sm\"\n />\n </Box>\n </Box>\n\n <IconButton\n size=\"xs\"\n tone=\"mono\"\n variant=\"tertiary\"\n onPress={increaseMonth}\n disabled={nextMonthButtonDisabled}\n icon={<ArrowRight size={16} />}\n aria-label=\"Next month\"\n />\n </Box>\n );\n};\n","import { format, setMonth } from \"date-fns\";\nimport * as locales from \"date-fns/locale\";\nimport type { CalendarLocaleType } from \"./types\";\n\nconst defaultLocale = \"enUS\";\n\nexport function formatDate(\n date: Date,\n formatStr: string,\n locale: CalendarLocaleType = defaultLocale\n) {\n const localeObj = locales[locale] || locales[defaultLocale];\n\n return format(date, formatStr, {\n locale: localeObj,\n });\n}\n\nexport function getMonthInLocale(\n month: number,\n locale: CalendarLocaleType = defaultLocale\n) {\n return formatDate(setMonth(new Date(), month), \"LLLL\", locale);\n}\n","import React, { useMemo, useCallback } from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box, Text } from \"@xsolla/xui-primitives\";\nimport { useResolvedTheme } from \"@xsolla/xui-core\";\nimport {\n addDays,\n eachDayOfInterval,\n endOfDay,\n endOfMonth,\n endOfWeek,\n format,\n isAfter,\n isBefore,\n isSameDay,\n isSameMonth,\n isToday,\n isWithinInterval,\n startOfDay,\n startOfMonth,\n startOfWeek,\n} from \"date-fns\";\nimport * as locales from \"date-fns/locale\";\nimport type { CalendarGridProps } from \"./types\";\n\nexport const CalendarGrid: React.FC<CalendarGridProps> = ({\n currentMonth,\n locale = \"enUS\",\n firstDayOfWeek = 0,\n selectsRange = false,\n minDate,\n maxDate,\n startDate,\n endDate,\n selectedDate,\n selectingRange,\n onDayPress,\n testID,\n themeMode,\n themeProductContext,\n}) => {\n const { theme } = useResolvedTheme({ themeMode, themeProductContext });\n const localeObj = (locales as any)[locale] || locales.enUS;\n\n const monthStart = startOfMonth(currentMonth);\n const monthEnd = endOfMonth(currentMonth);\n const weekStartsOn = (firstDayOfWeek ?? 0) as any;\n const calendarStart = startOfWeek(monthStart, { weekStartsOn });\n const calendarEnd = endOfWeek(monthEnd, { weekStartsOn });\n\n const days = eachDayOfInterval({ start: calendarStart, end: calendarEnd });\n\n const weekDays = useMemo(() => {\n return Array.from({ length: 7 }, (_, i) => {\n const day = addDays(calendarStart, i);\n return format(day, \"EEEEEE\", { locale: localeObj });\n });\n }, [calendarStart, localeObj]);\n\n const weeks = useMemo(() => {\n const weekArray: Date[][] = [];\n for (let i = 0; i < days.length; i += 7) {\n weekArray.push(days.slice(i, i + 7));\n }\n return weekArray;\n }, [days]);\n\n const isDateDisabled = useCallback(\n (date: Date) => {\n if (minDate && isBefore(date, startOfDay(minDate))) return true;\n if (maxDate && isAfter(date, endOfDay(maxDate))) return true;\n return false;\n },\n [minDate, maxDate]\n );\n\n const isDateInRange = useCallback(\n (date: Date) => {\n if (!selectsRange || !startDate) return false;\n const rangeEnd = endDate || selectingRange;\n if (!rangeEnd) return false;\n const start = startDate < rangeEnd ? startDate : rangeEnd;\n const end = startDate < rangeEnd ? rangeEnd : startDate;\n return isWithinInterval(date, {\n start: startOfDay(start),\n end: endOfDay(end),\n });\n },\n [selectsRange, startDate, endDate, selectingRange]\n );\n\n return (\n <Box testID={testID}>\n <Box flexDirection=\"row\" justifyContent=\"space-between\" marginBottom={8}>\n {weekDays.map((day, i) => (\n <Box key={i} width={40} alignItems=\"center\">\n <Text\n fontSize={12}\n fontWeight=\"600\"\n color={theme.colors.content.tertiary}\n >\n {day.toUpperCase()}\n </Text>\n </Box>\n ))}\n </Box>\n\n <Box gap={2}>\n {weeks.map((week, i) => (\n <Box key={i} flexDirection=\"row\" justifyContent=\"space-between\">\n {week.map((day, j) => {\n const isOutsideMonth = !isSameMonth(day, currentMonth);\n const isSelected =\n (!selectsRange &&\n selectedDate &&\n isSameDay(day, selectedDate)) ||\n (selectsRange &&\n startDate &&\n endDate &&\n isSameDay(day, startDate) &&\n isSameDay(day, endDate));\n const isRangeStart =\n selectsRange && startDate && isSameDay(day, startDate);\n const isRangeEnd =\n selectsRange && endDate && isSameDay(day, endDate);\n const inRange = isDateInRange(day);\n const today = isToday(day);\n const disabled = isDateDisabled(day);\n\n let bgColor = \"transparent\";\n let textColor = theme.colors.content.primary;\n\n if (isSelected || isRangeStart || isRangeEnd) {\n bgColor = theme.colors.background.brand.primary;\n textColor = theme.colors.content.on.brand;\n } else if (inRange) {\n bgColor = theme.colors.overlay.brand;\n } else if (today) {\n bgColor = theme.colors.overlay.mono;\n }\n\n if (isOutsideMonth || disabled) {\n textColor = theme.colors.content.tertiary;\n }\n\n return (\n <Box\n key={j}\n width={40}\n height={32}\n alignItems=\"center\"\n justifyContent=\"center\"\n borderRadius={\n isSelected || isRangeStart || isRangeEnd ? 4 : 0\n }\n backgroundColor={bgColor}\n cursor={disabled || isOutsideMonth ? \"default\" : \"pointer\"}\n onPress={() =>\n !disabled && !isOutsideMonth && onDayPress?.(day)\n }\n hoverStyle={\n !disabled && !isOutsideMonth && !isSelected\n ? { backgroundColor: theme.colors.overlay.mono }\n : undefined\n }\n >\n <Text\n color={textColor}\n fontSize={14}\n fontWeight={\n isSelected || isRangeStart || isRangeEnd ? \"600\" : \"400\"\n }\n >\n {format(day, \"d\")}\n </Text>\n </Box>\n );\n })}\n </Box>\n ))}\n </Box>\n </Box>\n );\n};\n","import React from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box } from \"@xsolla/xui-primitives\";\nimport { Tag } from \"@xsolla/xui-tag\";\nimport type { CalendarChipsProps } from \"./types\";\n\nexport const CalendarChips: React.FC<CalendarChipsProps> = ({\n chips,\n activeChip,\n onChipSelect,\n testID,\n}) => {\n if (!chips || chips.length === 0) return null;\n\n return (\n <Box\n testID={testID}\n flexDirection=\"row\"\n flexWrap=\"wrap\"\n gap={8}\n marginBottom={16}\n >\n {chips.map((chip) => {\n const isActive = activeChip === chip.value;\n return (\n <Box\n key={chip.value}\n onPress={() => onChipSelect?.(chip.value)}\n cursor=\"pointer\"\n >\n <Tag\n size=\"sm\"\n tone={isActive ? \"brand\" : \"primary\"}\n type={isActive ? \"solid\" : \"outlined\"}\n >\n {chip.label}\n </Tag>\n </Box>\n );\n })}\n </Box>\n );\n};\n","import { forwardRef, useCallback, useEffect, useState } from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box } from \"@xsolla/xui-primitives\";\nimport { useResolvedTheme } from \"@xsolla/xui-core\";\nimport { addMonths, subDays, subMonths, startOfDay } from \"date-fns\";\nimport { CalendarHeader } from \"./CalendarHeader\";\nimport { CalendarGrid } from \"./CalendarGrid\";\nimport { CalendarChips } from \"./CalendarChips\";\nimport type { DualCalendarProps } from \"./types\";\n\nexport const DualCalendar = forwardRef<any, DualCalendarProps>(\n (\n {\n locale = \"enUS\",\n onChange,\n startDate,\n endDate,\n contextMenuMaxHeight,\n topContent,\n bottomContent,\n chips,\n activeChip,\n onChipSelect,\n testID,\n minDate,\n maxDate,\n firstDayOfWeek = 0,\n month,\n initialMonth,\n themeMode,\n themeProductContext,\n },\n ref\n ) => {\n const { theme } = useResolvedTheme({ themeMode, themeProductContext });\n\n const [leftMonth, setLeftMonth] = useState<Date>(\n (month || initialMonth || startDate || new Date()) as Date\n );\n const [selectedStartDate, setSelectedStartDate] = useState<\n Date | null | undefined\n >(startDate);\n const [selectedEndDate, setSelectedEndDate] = useState<\n Date | null | undefined\n >(endDate);\n const [selectingRange, setSelectingRange] = useState<Date | null>(null);\n\n const rightMonth = addMonths(leftMonth, 1);\n\n useEffect(() => {\n setSelectedStartDate(startDate);\n setSelectedEndDate(endDate);\n if (month !== undefined) {\n setLeftMonth(month);\n }\n }, [startDate, endDate, month]);\n\n const handleDayPress = useCallback(\n (date: Date) => {\n const newDate = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n );\n\n if (!selectedStartDate || (selectedStartDate && selectedEndDate)) {\n setSelectedStartDate(newDate);\n setSelectedEndDate(null);\n setSelectingRange(newDate);\n onChange?.([newDate, null]);\n } else {\n const start =\n selectedStartDate < newDate ? selectedStartDate : newDate;\n const end = selectedStartDate < newDate ? newDate : selectedStartDate;\n setSelectedStartDate(start);\n setSelectedEndDate(end);\n setSelectingRange(null);\n onChange?.([start, end]);\n }\n },\n [onChange, selectedStartDate, selectedEndDate]\n );\n\n const decreaseLeftMonth = useCallback(\n () => setLeftMonth((prev) => subMonths(prev, 1)),\n []\n );\n const increaseLeftMonth = useCallback(\n () => setLeftMonth((prev) => addMonths(prev, 1)),\n []\n );\n const changeLeftMonth = useCallback(\n (m: number) => setLeftMonth((prev) => new Date(prev.getFullYear(), m, 1)),\n []\n );\n const changeLeftYear = useCallback(\n (y: number) => setLeftMonth((prev) => new Date(y, prev.getMonth(), 1)),\n []\n );\n\n const decreaseRightMonth = useCallback(\n () => setLeftMonth((prev) => subMonths(prev, 1)),\n []\n );\n const increaseRightMonth = useCallback(\n () => setLeftMonth((prev) => addMonths(prev, 1)),\n []\n );\n const changeRightMonth = useCallback(\n (m: number) => setLeftMonth(new Date(rightMonth.getFullYear(), m - 1, 1)),\n [rightMonth]\n );\n const changeRightYear = useCallback(\n (y: number) => setLeftMonth(new Date(y, rightMonth.getMonth() - 1, 1)),\n [rightMonth]\n );\n\n const handleChipSelect = useCallback(\n (value: string) => {\n onChipSelect?.(value);\n\n const chip = chips?.find((c) => c.value === value);\n if (!chip || chip.days === undefined) return;\n\n const today = startOfDay(new Date());\n\n if (chip.days === 0) {\n setSelectedStartDate(today);\n setSelectedEndDate(today);\n setSelectingRange(null);\n setLeftMonth(today);\n onChange?.([today, today]);\n return;\n }\n\n const start = subDays(today, chip.days);\n setSelectedStartDate(start);\n setSelectedEndDate(today);\n setSelectingRange(null);\n setLeftMonth(start);\n onChange?.([start, today]);\n },\n [chips, onChange, onChipSelect]\n );\n\n return (\n <Box\n ref={ref}\n testID={testID}\n backgroundColor={theme.colors.background.secondary}\n borderRadius={8}\n padding={16}\n overflow=\"hidden\"\n style={{\n boxShadow:\n \"0px 2px 3px 0px rgba(7, 7, 8, 0.2), 0px 6px 10px 4px rgba(7, 7, 8, 0.1)\",\n width: 624,\n }}\n >\n {topContent?.({ close: () => {} })}\n\n {chips && chips.length > 0 && (\n <CalendarChips\n chips={chips}\n activeChip={activeChip}\n onChipSelect={handleChipSelect}\n />\n )}\n\n <Box flexDirection=\"row\" gap={16}>\n <Box flex={1}>\n <CalendarHeader\n monthDate={leftMonth}\n decreaseMonth={decreaseLeftMonth}\n increaseMonth={increaseLeftMonth}\n changeYear={changeLeftYear}\n changeMonth={changeLeftMonth}\n locale={locale}\n minDate={minDate}\n maxDate={maxDate}\n contextMenuMaxHeight={contextMenuMaxHeight}\n />\n\n <CalendarGrid\n currentMonth={leftMonth}\n locale={locale}\n firstDayOfWeek={firstDayOfWeek}\n selectsRange\n minDate={minDate}\n maxDate={maxDate}\n startDate={selectedStartDate}\n endDate={selectedEndDate}\n selectingRange={selectingRange}\n onDayPress={handleDayPress}\n />\n </Box>\n\n <Box flex={1}>\n <CalendarHeader\n monthDate={rightMonth}\n decreaseMonth={decreaseRightMonth}\n increaseMonth={increaseRightMonth}\n changeYear={changeRightYear}\n changeMonth={changeRightMonth}\n locale={locale}\n minDate={minDate}\n maxDate={maxDate}\n contextMenuMaxHeight={contextMenuMaxHeight}\n />\n\n <CalendarGrid\n currentMonth={rightMonth}\n locale={locale}\n firstDayOfWeek={firstDayOfWeek}\n selectsRange\n minDate={minDate}\n maxDate={maxDate}\n startDate={selectedStartDate}\n endDate={selectedEndDate}\n selectingRange={selectingRange}\n onDayPress={handleDayPress}\n />\n </Box>\n </Box>\n\n {bottomContent?.({ close: () => {} })}\n </Box>\n );\n }\n);\n\nDualCalendar.displayName = \"DualCalendar\";\n"],"mappings":"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","names":["import_react","import_react_native","import_jsx_runtime","RNText","import_xui_core","import_date_fns","import_jsx_runtime","import_react","import_date_fns","locales","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_xui_core","import_date_fns","import_jsx_runtime"]}
|
package/native/index.mjs
CHANGED
|
@@ -48,6 +48,10 @@ var Box = ({
|
|
|
48
48
|
left,
|
|
49
49
|
right,
|
|
50
50
|
width,
|
|
51
|
+
minWidth,
|
|
52
|
+
minHeight,
|
|
53
|
+
maxWidth,
|
|
54
|
+
maxHeight,
|
|
51
55
|
flex,
|
|
52
56
|
overflow,
|
|
53
57
|
zIndex,
|
|
@@ -79,6 +83,10 @@ var Box = ({
|
|
|
79
83
|
zIndex,
|
|
80
84
|
height,
|
|
81
85
|
width,
|
|
86
|
+
minWidth,
|
|
87
|
+
minHeight,
|
|
88
|
+
maxWidth,
|
|
89
|
+
maxHeight,
|
|
82
90
|
padding,
|
|
83
91
|
paddingHorizontal,
|
|
84
92
|
paddingVertical,
|
|
@@ -210,7 +218,7 @@ var Text = ({
|
|
|
210
218
|
}
|
|
211
219
|
const incomingStyle = StyleSheet.flatten(styleProp);
|
|
212
220
|
const baseStyle = {
|
|
213
|
-
color,
|
|
221
|
+
color: color ?? incomingStyle?.color,
|
|
214
222
|
fontSize: typeof fontSize === "number" ? fontSize : void 0,
|
|
215
223
|
fontWeight,
|
|
216
224
|
fontFamily: resolvedFontFamily,
|
|
@@ -238,7 +246,7 @@ var Text = ({
|
|
|
238
246
|
};
|
|
239
247
|
|
|
240
248
|
// src/Calendar.tsx
|
|
241
|
-
import {
|
|
249
|
+
import { useResolvedTheme as useResolvedTheme2 } from "@xsolla/xui-core";
|
|
242
250
|
import { addMonths, subDays, subMonths, startOfDay as startOfDay2 } from "date-fns";
|
|
243
251
|
|
|
244
252
|
// src/CalendarHeader.tsx
|
|
@@ -377,7 +385,7 @@ var CalendarHeader = ({
|
|
|
377
385
|
|
|
378
386
|
// src/CalendarGrid.tsx
|
|
379
387
|
import { useMemo as useMemo2, useCallback as useCallback2 } from "react";
|
|
380
|
-
import {
|
|
388
|
+
import { useResolvedTheme } from "@xsolla/xui-core";
|
|
381
389
|
import {
|
|
382
390
|
addDays,
|
|
383
391
|
eachDayOfInterval,
|
|
@@ -409,9 +417,11 @@ var CalendarGrid = ({
|
|
|
409
417
|
selectedDate,
|
|
410
418
|
selectingRange,
|
|
411
419
|
onDayPress,
|
|
412
|
-
testID
|
|
420
|
+
testID,
|
|
421
|
+
themeMode,
|
|
422
|
+
themeProductContext
|
|
413
423
|
}) => {
|
|
414
|
-
const { theme } =
|
|
424
|
+
const { theme } = useResolvedTheme({ themeMode, themeProductContext });
|
|
415
425
|
const localeObj = locales2[locale] || locales2.enUS;
|
|
416
426
|
const monthStart = startOfMonth(currentMonth);
|
|
417
427
|
const monthEnd = endOfMonth(currentMonth);
|
|
@@ -576,9 +586,11 @@ var Calendar = forwardRef(
|
|
|
576
586
|
maxDate,
|
|
577
587
|
firstDayOfWeek = 0,
|
|
578
588
|
month,
|
|
579
|
-
initialMonth
|
|
589
|
+
initialMonth,
|
|
590
|
+
themeMode,
|
|
591
|
+
themeProductContext
|
|
580
592
|
}, ref) => {
|
|
581
|
-
const { theme } =
|
|
593
|
+
const { theme } = useResolvedTheme2({ themeMode, themeProductContext });
|
|
582
594
|
const [currentMonth, setCurrentMonth] = useState(
|
|
583
595
|
month || initialMonth || selectedDate || startDate || /* @__PURE__ */ new Date()
|
|
584
596
|
);
|
|
@@ -736,7 +748,7 @@ Calendar.displayName = "Calendar";
|
|
|
736
748
|
|
|
737
749
|
// src/DualCalendar.tsx
|
|
738
750
|
import { forwardRef as forwardRef2, useCallback as useCallback4, useEffect as useEffect2, useState as useState2 } from "react";
|
|
739
|
-
import {
|
|
751
|
+
import { useResolvedTheme as useResolvedTheme3 } from "@xsolla/xui-core";
|
|
740
752
|
import { addMonths as addMonths2, subDays as subDays2, subMonths as subMonths2, startOfDay as startOfDay3 } from "date-fns";
|
|
741
753
|
import { jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
742
754
|
var DualCalendar = forwardRef2(
|
|
@@ -756,9 +768,11 @@ var DualCalendar = forwardRef2(
|
|
|
756
768
|
maxDate,
|
|
757
769
|
firstDayOfWeek = 0,
|
|
758
770
|
month,
|
|
759
|
-
initialMonth
|
|
771
|
+
initialMonth,
|
|
772
|
+
themeMode,
|
|
773
|
+
themeProductContext
|
|
760
774
|
}, ref) => {
|
|
761
|
-
const { theme } =
|
|
775
|
+
const { theme } = useResolvedTheme3({ themeMode, themeProductContext });
|
|
762
776
|
const [leftMonth, setLeftMonth] = useState2(
|
|
763
777
|
month || initialMonth || startDate || /* @__PURE__ */ new Date()
|
|
764
778
|
);
|