react-photo-calendar 0.1.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/LICENSE +21 -0
- package/README.md +220 -0
- package/dist/PhotoCalendar.d.ts +98 -0
- package/dist/PhotoCalendar.d.ts.map +1 -0
- package/dist/components/CalendarBanner.d.ts +17 -0
- package/dist/components/CalendarBanner.d.ts.map +1 -0
- package/dist/components/PhotoCalendarScrollView.d.ts +24 -0
- package/dist/components/PhotoCalendarScrollView.d.ts.map +1 -0
- package/dist/context/PhotoCalendarContext.d.ts +9 -0
- package/dist/context/PhotoCalendarContext.d.ts.map +1 -0
- package/dist/hooks/useCalendarActiveMonthTracking.d.ts +14 -0
- package/dist/hooks/useCalendarActiveMonthTracking.d.ts.map +1 -0
- package/dist/hooks/useCalendarMonthVisibility.d.ts +18 -0
- package/dist/hooks/useCalendarMonthVisibility.d.ts.map +1 -0
- package/dist/hooks/useCalendarMonthWindow.d.ts +18 -0
- package/dist/hooks/useCalendarMonthWindow.d.ts.map +1 -0
- package/dist/hooks/useCalendarWindowExpansionObserver.d.ts +17 -0
- package/dist/hooks/useCalendarWindowExpansionObserver.d.ts.map +1 -0
- package/dist/hooks/usePhotoCalendarState.d.ts +73 -0
- package/dist/hooks/usePhotoCalendarState.d.ts.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/photo-calendar.cjs +22 -0
- package/dist/photo-calendar.css +1 -0
- package/dist/photo-calendar.mjs +1099 -0
- package/dist/primitives/PhotoCalendarDay.d.ts +7 -0
- package/dist/primitives/PhotoCalendarDay.d.ts.map +1 -0
- package/dist/primitives/PhotoCalendarMonthGrid.d.ts +17 -0
- package/dist/primitives/PhotoCalendarMonthGrid.d.ts.map +1 -0
- package/dist/primitives/PhotoCalendarNavigation.d.ts +17 -0
- package/dist/primitives/PhotoCalendarNavigation.d.ts.map +1 -0
- package/dist/primitives/PhotoCalendarRoot.d.ts +7 -0
- package/dist/primitives/PhotoCalendarRoot.d.ts.map +1 -0
- package/dist/primitives/PhotoCalendarWeekdays.d.ts +15 -0
- package/dist/primitives/PhotoCalendarWeekdays.d.ts.map +1 -0
- package/dist/types/calendar.d.ts +25 -0
- package/dist/types/calendar.d.ts.map +1 -0
- package/dist/types/photo.d.ts +15 -0
- package/dist/types/photo.d.ts.map +1 -0
- package/dist/utils/calendar.d.ts +15 -0
- package/dist/utils/calendar.d.ts.map +1 -0
- package/dist/utils/photos.d.ts +6 -0
- package/dist/utils/photos.d.ts.map +1 -0
- package/package.json +89 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { DayRenderProps } from '../types/calendar';
|
|
2
|
+
export interface PhotoCalendarDayProps {
|
|
3
|
+
day: DayRenderProps;
|
|
4
|
+
className?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function PhotoCalendarDay({ day, className }: PhotoCalendarDayProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=PhotoCalendarDay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PhotoCalendarDay.d.ts","sourceRoot":"","sources":["../../src/primitives/PhotoCalendarDay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,cAAc,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,qBAAqB,2CAiCzE"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { DayRenderProps } from '../types/calendar';
|
|
3
|
+
import type { PhotoCalendarDayState } from '../hooks/usePhotoCalendarState';
|
|
4
|
+
export type { DayRenderProps } from '../types/calendar';
|
|
5
|
+
export interface PhotoCalendarMonthGridProps {
|
|
6
|
+
className?: string;
|
|
7
|
+
/**
|
|
8
|
+
* Custom render function for the contents inside each day button.
|
|
9
|
+
*/
|
|
10
|
+
renderDay?: (props: DayRenderProps) => ReactNode;
|
|
11
|
+
/**
|
|
12
|
+
* Optional override for day states, enabling multi-month rendering scenarios.
|
|
13
|
+
*/
|
|
14
|
+
dayStates?: PhotoCalendarDayState[];
|
|
15
|
+
}
|
|
16
|
+
export declare function PhotoCalendarMonthGrid({ className, renderDay, dayStates }: PhotoCalendarMonthGridProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
//# sourceMappingURL=PhotoCalendarMonthGrid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PhotoCalendarMonthGrid.d.ts","sourceRoot":"","sources":["../../src/primitives/PhotoCalendarMonthGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAE5E,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,SAAS,CAAC;IACjD;;OAEG;IACH,SAAS,CAAC,EAAE,qBAAqB,EAAE,CAAC;CACrC;AAED,wBAAgB,sBAAsB,CAAC,EAAE,SAA2B,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,2BAA2B,2CAgDxH"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { PhotoCalendarNavigationState } from '../hooks/usePhotoCalendarState';
|
|
3
|
+
export interface NavigationRenderProps extends PhotoCalendarNavigationState {
|
|
4
|
+
currentYear: number;
|
|
5
|
+
currentMonth: number;
|
|
6
|
+
monthLabel: string;
|
|
7
|
+
monthNames: ReadonlyArray<string>;
|
|
8
|
+
}
|
|
9
|
+
export interface PhotoCalendarNavigationProps {
|
|
10
|
+
/**
|
|
11
|
+
* Provide custom navigation markup using render props.
|
|
12
|
+
* The default renders the built-in CalendarBanner.
|
|
13
|
+
*/
|
|
14
|
+
children?: (props: NavigationRenderProps) => ReactNode;
|
|
15
|
+
}
|
|
16
|
+
export declare function PhotoCalendarNavigation({ children }: PhotoCalendarNavigationProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
//# sourceMappingURL=PhotoCalendarNavigation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PhotoCalendarNavigation.d.ts","sourceRoot":"","sources":["../../src/primitives/PhotoCalendarNavigation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAEnF,MAAM,WAAW,qBAAsB,SAAQ,4BAA4B;IACzE,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,4BAA4B;IAC3C;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,SAAS,CAAC;CACxD;AAED,wBAAgB,uBAAuB,CAAC,EAAE,QAAQ,EAAE,EAAE,4BAA4B,2CAejF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { type PhotoCalendarState, type UsePhotoCalendarStateOptions } from '../hooks/usePhotoCalendarState';
|
|
3
|
+
export interface PhotoCalendarRootProps extends UsePhotoCalendarStateOptions {
|
|
4
|
+
children?: ReactNode | ((state: PhotoCalendarState) => ReactNode);
|
|
5
|
+
}
|
|
6
|
+
export declare function PhotoCalendarRoot({ children, ...options }: PhotoCalendarRootProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=PhotoCalendarRoot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PhotoCalendarRoot.d.ts","sourceRoot":"","sources":["../../src/primitives/PhotoCalendarRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAyB,KAAK,kBAAkB,EAAE,KAAK,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAEnI,MAAM,WAAW,sBAAuB,SAAQ,4BAA4B;IAC1E,QAAQ,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,kBAAkB,KAAK,SAAS,CAAC,CAAC;CACnE;AAED,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,EAAE,sBAAsB,2CAKjF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export interface WeekdayRenderProps {
|
|
3
|
+
shortLabels: ReadonlyArray<string>;
|
|
4
|
+
longLabels: ReadonlyArray<string>;
|
|
5
|
+
}
|
|
6
|
+
export interface PhotoCalendarWeekdaysProps {
|
|
7
|
+
className?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Optional render prop to customise weekday header markup.
|
|
10
|
+
* Defaults to rendering span elements matching the current CSS classes.
|
|
11
|
+
*/
|
|
12
|
+
children?: (props: WeekdayRenderProps) => ReactNode;
|
|
13
|
+
}
|
|
14
|
+
export declare function PhotoCalendarWeekdays({ className, children }: PhotoCalendarWeekdaysProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=PhotoCalendarWeekdays.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PhotoCalendarWeekdays.d.ts","sourceRoot":"","sources":["../../src/primitives/PhotoCalendarWeekdays.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACnC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,0BAA0B;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,SAAS,CAAC;CACrD;AAED,wBAAgB,qBAAqB,CAAC,EAAE,SAA+B,EAAE,QAAQ,EAAE,EAAE,0BAA0B,2CAyB9G"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export interface VisibleRange {
|
|
3
|
+
start: Date;
|
|
4
|
+
end: Date;
|
|
5
|
+
startIso: string;
|
|
6
|
+
endIso: string;
|
|
7
|
+
}
|
|
8
|
+
export interface DayRenderContext {
|
|
9
|
+
date: Date;
|
|
10
|
+
isoDate: string;
|
|
11
|
+
day: number;
|
|
12
|
+
isCurrentMonth: boolean;
|
|
13
|
+
isToday: boolean;
|
|
14
|
+
photos: string[];
|
|
15
|
+
visibleThumbnails: string[];
|
|
16
|
+
overflow: number;
|
|
17
|
+
selectDay: () => void;
|
|
18
|
+
defaultContent?: ReactNode;
|
|
19
|
+
}
|
|
20
|
+
export interface DayRenderProps extends DayRenderContext {
|
|
21
|
+
defaultContent: ReactNode;
|
|
22
|
+
ariaLabel: string;
|
|
23
|
+
isSelectable: boolean;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=calendar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../src/types/calendar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,IAAI,CAAC;IACZ,GAAG,EAAE,IAAI,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,cAAc,CAAC,EAAE,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACtD,cAAc,EAAE,SAAS,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;CACvB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents a single photo entry used by the calendar.
|
|
3
|
+
* The first photo URL in the array will be displayed as the day's preview.
|
|
4
|
+
*/
|
|
5
|
+
export interface PhotoEntry {
|
|
6
|
+
/**
|
|
7
|
+
* ISO datetime string indicating when this photo was taken
|
|
8
|
+
*/
|
|
9
|
+
datetime: string;
|
|
10
|
+
/**
|
|
11
|
+
* Array of photo URLs, the first one will be displayed in the calendar
|
|
12
|
+
*/
|
|
13
|
+
photos: string[];
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=photo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"photo.d.ts","sourceRoot":"","sources":["../../src/types/photo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface CalendarCell {
|
|
2
|
+
date: Date;
|
|
3
|
+
isoDate: string;
|
|
4
|
+
day: number;
|
|
5
|
+
inCurrentMonth: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function parseMonthKey(value?: string): Date;
|
|
8
|
+
export declare function createCalendarCells(monthDate: Date, firstDayOfWeek: number): CalendarCell[];
|
|
9
|
+
export declare function formatMonthKey(date: Date): string;
|
|
10
|
+
export declare function addMonths(date: Date, offset: number): Date;
|
|
11
|
+
export declare function getVisibleRange(cells: CalendarCell[]): {
|
|
12
|
+
start: Date;
|
|
13
|
+
end: Date;
|
|
14
|
+
} | null;
|
|
15
|
+
//# sourceMappingURL=calendar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../src/utils/calendar.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAgBlD;AAMD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,GAAG,YAAY,EAAE,CAyB3F;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAGjD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAE1D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,GAAG,IAAI,CAYxF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { PhotoEntry } from '../types/photo';
|
|
2
|
+
/**
|
|
3
|
+
* Converts a list of entries into a quick lookup map keyed by ISO date (yyyy-mm-dd).
|
|
4
|
+
*/
|
|
5
|
+
export declare function createPhotosByDateMap(entries?: PhotoEntry[]): Record<string, string[]>;
|
|
6
|
+
//# sourceMappingURL=photos.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"photos.d.ts","sourceRoot":"","sources":["../../src/utils/photos.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAatF"}
|
package/package.json
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "react-photo-calendar",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Headless, composable React month-view calendar that renders photo thumbnails per day.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"react",
|
|
7
|
+
"calendar",
|
|
8
|
+
"photo",
|
|
9
|
+
"month-view",
|
|
10
|
+
"headless",
|
|
11
|
+
"components",
|
|
12
|
+
"typescript"
|
|
13
|
+
],
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"author": "Leonardo Merza",
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "git+https://github.com/ljmerza/react-photo-calendar.git"
|
|
19
|
+
},
|
|
20
|
+
"homepage": "https://github.com/ljmerza/react-photo-calendar#readme",
|
|
21
|
+
"bugs": {
|
|
22
|
+
"url": "https://github.com/ljmerza/react-photo-calendar/issues"
|
|
23
|
+
},
|
|
24
|
+
"type": "module",
|
|
25
|
+
"main": "./dist/photo-calendar.cjs",
|
|
26
|
+
"module": "./dist/photo-calendar.mjs",
|
|
27
|
+
"types": "./dist/index.d.ts",
|
|
28
|
+
"exports": {
|
|
29
|
+
".": {
|
|
30
|
+
"types": "./dist/index.d.ts",
|
|
31
|
+
"import": "./dist/photo-calendar.mjs",
|
|
32
|
+
"require": "./dist/photo-calendar.cjs"
|
|
33
|
+
},
|
|
34
|
+
"./styles.css": "./dist/photo-calendar.css",
|
|
35
|
+
"./package.json": "./package.json"
|
|
36
|
+
},
|
|
37
|
+
"sideEffects": [
|
|
38
|
+
"**/*.css"
|
|
39
|
+
],
|
|
40
|
+
"files": [
|
|
41
|
+
"dist"
|
|
42
|
+
],
|
|
43
|
+
"engines": {
|
|
44
|
+
"node": ">=20"
|
|
45
|
+
},
|
|
46
|
+
"scripts": {
|
|
47
|
+
"dev": "storybook dev -p 6006",
|
|
48
|
+
"build": "vite build && tsc --project tsconfig.build.json --emitDeclarationOnly",
|
|
49
|
+
"prepublishOnly": "npm run build",
|
|
50
|
+
"preview": "storybook build",
|
|
51
|
+
"lint": "eslint .",
|
|
52
|
+
"typecheck": "tsc --noEmit",
|
|
53
|
+
"test": "vitest run",
|
|
54
|
+
"test:coverage": "vitest run --coverage",
|
|
55
|
+
"storybook": "storybook dev -p 6006",
|
|
56
|
+
"storybook:build": "storybook build"
|
|
57
|
+
},
|
|
58
|
+
"peerDependencies": {
|
|
59
|
+
"react": "^18.2.0 || ^19.0.0",
|
|
60
|
+
"react-dom": "^18.2.0 || ^19.0.0"
|
|
61
|
+
},
|
|
62
|
+
"devDependencies": {
|
|
63
|
+
"@eslint/js": "^9.17.0",
|
|
64
|
+
"@storybook/addon-essentials": "^8.4.11",
|
|
65
|
+
"@storybook/react": "^8.4.11",
|
|
66
|
+
"@storybook/react-vite": "^8.4.11",
|
|
67
|
+
"@storybook/test": "^8.4.11",
|
|
68
|
+
"@tailwindcss/postcss": "^4.1.16",
|
|
69
|
+
"@testing-library/react": "^16.2.0",
|
|
70
|
+
"@types/react": "^19.0.8",
|
|
71
|
+
"@types/react-dom": "^19.0.3",
|
|
72
|
+
"@vitejs/plugin-react": "^4.3.2",
|
|
73
|
+
"@vitest/coverage-v8": "^3.0.5",
|
|
74
|
+
"autoprefixer": "^10.4.21",
|
|
75
|
+
"eslint": "^9.17.0",
|
|
76
|
+
"eslint-plugin-react-hooks": "^5.1.0",
|
|
77
|
+
"globals": "^15.14.0",
|
|
78
|
+
"jsdom": "^27.0.1",
|
|
79
|
+
"postcss": "^8.5.6",
|
|
80
|
+
"react": "^19.0.0",
|
|
81
|
+
"react-dom": "^19.0.0",
|
|
82
|
+
"tailwindcss": "^4.1.16",
|
|
83
|
+
"tslib": "^2.8.1",
|
|
84
|
+
"typescript": "^5.7.2",
|
|
85
|
+
"typescript-eslint": "^8.19.0",
|
|
86
|
+
"vite": "^6.0.0",
|
|
87
|
+
"vitest": "^3.0.5"
|
|
88
|
+
}
|
|
89
|
+
}
|