@vertexvis/viewer-toolkit-react 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/dist/bundle.cjs.js +2525 -0
  2. package/dist/bundle.cjs.js.map +1 -0
  3. package/dist/bundle.esm.js +2479 -0
  4. package/dist/bundle.esm.js.map +1 -0
  5. package/dist/components/box-selection/__tests__/box-selection-button.spec.d.ts +1 -0
  6. package/dist/components/box-selection/__tests__/box-selection-tool.spec.d.ts +1 -0
  7. package/dist/components/box-selection/box-selection-button.d.ts +1 -0
  8. package/dist/components/box-selection/box-selection-tool.d.ts +1 -0
  9. package/dist/components/common/__tests__/slider.spec.d.ts +1 -0
  10. package/dist/components/common/popup-button.d.ts +14 -0
  11. package/dist/components/common/slider.d.ts +10 -0
  12. package/dist/components/context-menu/__tests__/scene-tree-context-menu.spec.d.ts +1 -0
  13. package/dist/components/context-menu/__tests__/viewer-context-menu.spec.d.ts +1 -0
  14. package/dist/components/context-menu/context-menu.d.ts +13 -0
  15. package/dist/components/context-menu/default-scene-tree-context-menu.d.ts +1 -0
  16. package/dist/components/context-menu/default-viewer-context-menu.d.ts +1 -0
  17. package/dist/components/context-menu/menu-items/fit-selected-menu-item.d.ts +1 -0
  18. package/dist/components/context-menu/menu-items/fly-to-menu-item.d.ts +1 -0
  19. package/dist/components/context-menu/menu-items/hide-all-menu-item.d.ts +1 -0
  20. package/dist/components/context-menu/menu-items/hide-part-menu-item.d.ts +1 -0
  21. package/dist/components/context-menu/menu-items/hide-selected-menu-item.d.ts +1 -0
  22. package/dist/components/context-menu/menu-items/show-all-menu-item.d.ts +1 -0
  23. package/dist/components/context-menu/menu-items/show-only-menu-item.d.ts +1 -0
  24. package/dist/components/context-menu/menu-items/show-only-selected-menu-item.d.ts +1 -0
  25. package/dist/components/context-menu/scene-tree-context-menu.d.ts +5 -0
  26. package/dist/components/context-menu/viewer-context-menu.d.ts +5 -0
  27. package/dist/components/scene-tree/__tests__/vertex-scene-tree-table-layout.spec.d.ts +1 -0
  28. package/dist/components/scene-tree/__tests__/vertex-scene-tree.spec.d.ts +1 -0
  29. package/dist/components/scene-tree/vertex-scene-tree-table-layout.d.ts +3 -0
  30. package/dist/components/scene-tree/vertex-scene-tree.d.ts +14 -0
  31. package/dist/components/toolbar/__tests__/toolbar.spec.d.ts +1 -0
  32. package/dist/components/toolbar/cross-section/__tests__/cross-section-alignment-popover-menu.spec.d.ts +1 -0
  33. package/dist/components/toolbar/cross-section/__tests__/cross-section-axis-popover-menu.spec.d.ts +1 -0
  34. package/dist/components/toolbar/cross-section/__tests__/cross-section-offset-stepper.spec.d.ts +1 -0
  35. package/dist/components/toolbar/cross-section/__tests__/cross-section.spec.d.ts +1 -0
  36. package/dist/components/toolbar/cross-section/cross-section-alignment-popover-menu.d.ts +1 -0
  37. package/dist/components/toolbar/cross-section/cross-section-axis-popover-menu.d.ts +1 -0
  38. package/dist/components/toolbar/cross-section/cross-section-offset-stepper.d.ts +9 -0
  39. package/dist/components/toolbar/cross-section/cross-section-popup-menu.d.ts +6 -0
  40. package/dist/components/toolbar/cross-section/cross-section.d.ts +8 -0
  41. package/dist/components/toolbar/default-toolbar.d.ts +1 -0
  42. package/dist/components/toolbar/fit-all.d.ts +1 -0
  43. package/dist/components/toolbar/pan.d.ts +1 -0
  44. package/dist/components/toolbar/rotate.d.ts +1 -0
  45. package/dist/components/toolbar/toolbar-divider.d.ts +1 -0
  46. package/dist/components/toolbar/toolbar.d.ts +5 -0
  47. package/dist/components/toolbar/zoom.d.ts +1 -0
  48. package/dist/components/viewer/__tests__/vertex-viewer-view-cube.spec.d.ts +1 -0
  49. package/dist/components/viewer/__tests__/vertex-viewer.spec.d.ts +1 -0
  50. package/dist/components/viewer/vertex-viewer-view-cube.d.ts +7 -0
  51. package/dist/components/viewer/vertex-viewer.d.ts +9 -0
  52. package/dist/events-listener.d.ts +7 -0
  53. package/dist/index.css +7 -0
  54. package/dist/index.d.ts +28 -0
  55. package/dist/root.d.ts +9 -0
  56. package/dist/state/box-selection/actions.d.ts +7 -0
  57. package/dist/state/box-selection/box-selection.d.ts +3 -0
  58. package/dist/state/box-selection/index.d.ts +2 -0
  59. package/dist/state/config/config.d.ts +2 -0
  60. package/dist/state/config/index.d.ts +1 -0
  61. package/dist/state/context-menu/actions.d.ts +13 -0
  62. package/dist/state/context-menu/backdrop.d.ts +2 -0
  63. package/dist/state/context-menu/context-menu.d.ts +13 -0
  64. package/dist/state/context-menu/index.d.ts +3 -0
  65. package/dist/state/cross-section/__tests__/actions.spec.d.ts +1 -0
  66. package/dist/state/cross-section/actions.d.ts +24 -0
  67. package/dist/state/cross-section/cross-section.d.ts +30 -0
  68. package/dist/state/cross-section/index.d.ts +2 -0
  69. package/dist/state/hits/__tests__/hits.spec.d.ts +1 -0
  70. package/dist/state/hits/actions.d.ts +6 -0
  71. package/dist/state/hits/event-state.d.ts +9 -0
  72. package/dist/state/hits/hits.d.ts +17 -0
  73. package/dist/state/hits/index.d.ts +3 -0
  74. package/dist/state/keybinding/__tests__/long-press.spec.d.ts +1 -0
  75. package/dist/state/keybinding/index.d.ts +3 -0
  76. package/dist/state/keybinding/keybinding.d.ts +151 -0
  77. package/dist/state/keybinding/long-press.d.ts +7 -0
  78. package/dist/state/keybinding/targets.d.ts +2 -0
  79. package/dist/state/performance/index.d.ts +1 -0
  80. package/dist/state/performance/types.d.ts +37 -0
  81. package/dist/state/scene-tree/columns/columns.d.ts +16 -0
  82. package/dist/state/scene-tree/columns/index.d.ts +1 -0
  83. package/dist/state/scene-tree/core/__tests__/actions.spec.d.ts +1 -0
  84. package/dist/state/scene-tree/core/actions.d.ts +9 -0
  85. package/dist/state/scene-tree/core/core.d.ts +5 -0
  86. package/dist/state/scene-tree/core/index.d.ts +2 -0
  87. package/dist/state/scene-tree/index.d.ts +1 -0
  88. package/dist/state/scene-tree/types.d.ts +14 -0
  89. package/dist/state/selection/__tests__/actions.spec.d.ts +1 -0
  90. package/dist/state/selection/actions.d.ts +25 -0
  91. package/dist/state/selection/event-state.d.ts +8 -0
  92. package/dist/state/selection/index.d.ts +3 -0
  93. package/dist/state/selection/selection.d.ts +16 -0
  94. package/dist/state/viewer/camera/actions.d.ts +7 -0
  95. package/dist/state/viewer/camera/index.d.ts +1 -0
  96. package/dist/state/viewer/core/core.d.ts +5 -0
  97. package/dist/state/viewer/core/index.d.ts +1 -0
  98. package/dist/state/viewer/frame/actions.d.ts +5 -0
  99. package/dist/state/viewer/index.d.ts +3 -0
  100. package/dist/state/viewer/scene/actions.d.ts +14 -0
  101. package/dist/state/viewer/scene/index.d.ts +2 -0
  102. package/dist/state/viewer/scene/item-operations.d.ts +11 -0
  103. package/dist/state/viewer/scene/scene.d.ts +6 -0
  104. package/dist/testing/__setup__/mocks.d.ts +4 -0
  105. package/dist/testing/additional-hooks-wrapper.d.ts +19 -0
  106. package/dist/testing/react.d.ts +13 -0
  107. package/dist/testing/recoil-observer.d.ts +6 -0
  108. package/dist/testing/recoil-state.d.ts +5 -0
  109. package/dist/testing/recoil-wrapper.d.ts +21 -0
  110. package/dist/testing/viewer.d.ts +72 -0
  111. package/dist/util/camera/__tests__/camera.spec.d.ts +1 -0
  112. package/dist/util/camera/camera.d.ts +3 -0
  113. package/dist/util/cross-section/__tests__/interaction-handler.spec.d.ts +1 -0
  114. package/dist/util/cross-section/__tests__/section-plane.spec.d.ts +1 -0
  115. package/dist/util/cross-section/interaction-handler.d.ts +10 -0
  116. package/dist/util/cross-section/section-plane.d.ts +61 -0
  117. package/dist/util/dom/elements.d.ts +1 -0
  118. package/dist/util/geometry/__tests__/bounding-box.spec.d.ts +1 -0
  119. package/dist/util/geometry/__tests__/vector3.spec.d.ts +1 -0
  120. package/dist/util/geometry/bounding-box.d.ts +4 -0
  121. package/dist/util/geometry/vector3.d.ts +2 -0
  122. package/dist/util/logging/__tests__/logger.spec.d.ts +1 -0
  123. package/dist/util/logging/logger.d.ts +8 -0
  124. package/dist/util/measurement/units.d.ts +57 -0
  125. package/dist/util/recoil/__tests__/actions.spec.d.ts +1 -0
  126. package/dist/util/recoil/actions.d.ts +86 -0
  127. package/dist/util/recoil/reducer.d.ts +9 -0
  128. package/dist/util/recoil/synchronized-prop.d.ts +2 -0
  129. package/dist/util/refs/callback-ref.d.ts +10 -0
  130. package/dist/util/refs/recoil-ref.d.ts +6 -0
  131. package/dist/util/scene-tree/customization.d.ts +3 -0
  132. package/dist/util/sdk-mapping/__tests__/config.spec.d.ts +1 -0
  133. package/dist/util/sdk-mapping/config.d.ts +2 -0
  134. package/package.json +80 -0
@@ -0,0 +1 @@
1
+ export declare const targetIsElement: <T extends HTMLElement = HTMLElement>(target: EventTarget, tagName: string) => target is T;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ import { BoundingBox, Vector3 } from '@vertexvis/geometry';
2
+ export declare function corners(box: BoundingBox.BoundingBox): Vector3.Vector3[];
3
+ export declare function minLength(box: BoundingBox.BoundingBox): number;
4
+ export declare function equals(box1: BoundingBox.BoundingBox, box2: BoundingBox.BoundingBox): boolean;
@@ -0,0 +1,2 @@
1
+ import { Vector3 } from '@vertexvis/geometry';
2
+ export declare function isParallelTo(a: Vector3.Vector3, b: Vector3.Vector3): boolean;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ interface Logger {
2
+ error: (message: string, err?: any) => void;
3
+ warn: (message: string, err?: any) => void;
4
+ info: (message: string, obj?: any) => void;
5
+ debug: (message: string, obj?: any) => void;
6
+ }
7
+ export declare const logger: Logger;
8
+ export {};
@@ -0,0 +1,57 @@
1
+ import type { DistanceUnitType as SdkDistanceUnitType } from '@vertexvis/viewer/dist/types/lib/types';
2
+ /**
3
+ * Types of distance units
4
+ */
5
+ declare enum DistanceUnit {
6
+ mm = "millimeters",
7
+ cm = "centimeters",
8
+ m = "meters",
9
+ in = "inches",
10
+ ft = "feet"
11
+ }
12
+ /**
13
+ * This is equivalent to:
14
+ * type DistanceUnitType = 'mm' | 'cm' | 'm' | 'in' | 'ft';
15
+ */
16
+ export type DistanceUnitType = keyof typeof DistanceUnit;
17
+ export type NumberFormatter = (value: number) => string;
18
+ /**
19
+ * Converts a value from non-system units (in) to base system units (mm) using supplied conversion factor.
20
+ *
21
+ * @param value Value to convert.
22
+ * @param fromUnit Unit converting from (to base system units)
23
+ */
24
+ export declare const convertFrom: (value: number, fromUnit: DistanceUnitType) => number;
25
+ /**
26
+ * Converts a value from base system units (mm) to another unit based on supplied conversion factor.
27
+ *
28
+ * @param value Value to convert.
29
+ * @param toUnit Unit to convert to (from base system units)
30
+ */
31
+ export declare const convertTo: (value: number, toUnit: DistanceUnitType) => number;
32
+ /**
33
+ * Formats a numeric value as a string with supplied unit and decimal places.
34
+ *
35
+ * @param value
36
+ * @param unit
37
+ * @param decimalPlaces
38
+ */
39
+ export declare const formatWithUnit: (value: number, unit: string, decimalPlaces: number) => string;
40
+ /**
41
+ * Formats a (millimeter based) numeric distance value
42
+ * for display, as converted to specificied units.
43
+ *
44
+ * @param value
45
+ * @param unit
46
+ * @param decimalPlaces
47
+ */
48
+ export declare const formatDistance: (value: number, unit: DistanceUnitType, decimalPlaces: number) => string;
49
+ /**
50
+ * Returns a distance formatter function for a given pair of unit and decimal place params.
51
+ *
52
+ * @param unit
53
+ * @param decimalPlaces
54
+ */
55
+ export declare const createDistanceFormatter: (unit: DistanceUnitType, decimalPlaces: number) => NumberFormatter;
56
+ export declare function toUnitType(s: DistanceUnitType): SdkDistanceUnitType;
57
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,86 @@
1
+ import { CallbackInterface, RecoilValue, Snapshot } from 'recoil';
2
+ export interface TryGetPromiseResult<T> {
3
+ value?: T;
4
+ error?: Error;
5
+ }
6
+ /**
7
+ * A Recoil Snapshot with an additional `tryGetPromise` method that wraps the
8
+ * `getPromise` method in a try/catch and returns an object with either the
9
+ * value of the Recoil atom or selector, or the error encountered.
10
+ */
11
+ export interface SnapshotWithErrorHandling extends Snapshot {
12
+ /**
13
+ * Attempts to retrieve the value of this Recoil atom or selector, and returns
14
+ * the value if one is present. If the value received is `undefined`, the provided
15
+ * `error` or a generic error will be thrown.
16
+ *
17
+ * @param value - the Recoil atom or selector with a potentially undefined value
18
+ * @param error - an optional custom Error to throw if no value is present
19
+ * @throws the provided `error` or a generic Error if no value is present
20
+ * @returns the value of the Recoil atom or selector
21
+ */
22
+ getPromiseRequired: <T>(value: RecoilValue<T | undefined>, error?: Error) => Promise<T>;
23
+ /**
24
+ * Attempts to retrieve the value of this Recoil atom or selector, and returns
25
+ * a `TryGetPromiseResult` with the value or the error encountered when attempting
26
+ * to retrieve the value.
27
+ *
28
+ * @param value - the Recoil atom or selector
29
+ * @returns a `TryGetPromiseResult` wrapper containing the value or error
30
+ */
31
+ tryGetPromise: <T>(value: RecoilValue<T>) => Promise<TryGetPromiseResult<T>>;
32
+ }
33
+ export interface CallbackInterfaceWithErrorHandling extends CallbackInterface {
34
+ snapshot: SnapshotWithErrorHandling;
35
+ }
36
+ declare class DefaultRecoilDeps {
37
+ }
38
+ export declare const DefaultRecoilCallbackDepsBehavior: DefaultRecoilDeps;
39
+ /**
40
+ * Returns a Recoil callback that can be used for action hooks.
41
+ *
42
+ * This uses `useRecoilCallback` but the deps implementation differs from
43
+ * Recoil. If no deps are provided, then it will always return the same function
44
+ * vs returning a new function.
45
+ *
46
+ * If you want to use the original Recoil callback behavior, pass
47
+ * `DefaultRecoilCallbackDepsBehavior`.
48
+ *
49
+ * @param fn The callback.
50
+ * @param deps The deps to memoize over. Defaults to `[]`.
51
+ * @returns A callback function
52
+ * @see https://recoiljs.org/docs/api-reference/core/useRecoilCallback
53
+ */
54
+ export declare function useActionCallback<Args extends ReadonlyArray<unknown>, Return>(fn: (cb: CallbackInterfaceWithErrorHandling) => (...args: Args) => Return, deps?: ReadonlyArray<unknown> | DefaultRecoilDeps): (...args: Args) => Return;
55
+ /**
56
+ * Returns a callback that can be used with `useActionCallback` or `useRecoilCallback`,
57
+ * and automatically handles retention of the `snapshot` object for use with asynchronous
58
+ * selectors.
59
+ *
60
+ * This function expects a callback that would ordinarily be passed to `useActionCallback`
61
+ * or `useRecoilCallback`, but that returns an asynchronous action where the `snapshot` is
62
+ * used.
63
+ *
64
+ * @example
65
+ *
66
+ * const asyncSelector = selector({
67
+ * key: 'asyncSelector',
68
+ * get: async ({ get }) => {
69
+ * return await fetch('/api/item');
70
+ * }
71
+ * })
72
+ *
73
+ * useActionCallback(
74
+ * retainSnapshot(
75
+ * ({ snapshot }) => async () => {
76
+ * const asyncValue = await snapshot.getPromise(asyncSelector);
77
+ * }
78
+ * )
79
+ * )
80
+ *
81
+ * @param fn The callback.
82
+ * @returns The callback wrapped with a retain/release of the underlying snapshot.
83
+ */
84
+ export declare function retainSnapshot<Args extends ReadonlyArray<unknown>, Return>(fn: (cb: CallbackInterfaceWithErrorHandling) => (...args: Args) => Promise<Return>): (cb: CallbackInterfaceWithErrorHandling) => (...args: Args) => Promise<Return>;
85
+ export declare function createGetPromiseRequiredWrapper(snapshot: Snapshot): <T>(recoilValue: RecoilValue<T | undefined>, error?: Error) => Promise<T>;
86
+ export {};
@@ -0,0 +1,9 @@
1
+ import { RecoilState } from 'recoil';
2
+ export interface UseRecoilReducerProps<S, A> {
3
+ reducer: (state: S, action: A) => S;
4
+ atom: RecoilState<S>;
5
+ }
6
+ export type UseRecoilReducer<S, A> = [state: S, dispatch: (action: A) => void];
7
+ export type UseRecoilReducerDispatch<A> = (action: A) => void;
8
+ export declare const useRecoilReducer: <S, A>({ reducer, atom, }: UseRecoilReducerProps<S, A>) => UseRecoilReducer<S, A>;
9
+ export declare const useRecoilReducerDispatch: <S, A>({ reducer, atom, }: UseRecoilReducerProps<S, A>) => UseRecoilReducerDispatch<A>;
@@ -0,0 +1,2 @@
1
+ import { RecoilState } from 'recoil';
2
+ export declare const useSynchronizedProp: <T>(state: RecoilState<T>, value: T) => void;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ export interface UseCallbackRefProps<T> {
3
+ initial?: T | null;
4
+ }
5
+ interface UseCallbackRef<T> {
6
+ element: T | null;
7
+ callback: React.RefCallback<T>;
8
+ }
9
+ export declare function useCallbackRef<T>(props?: UseCallbackRefProps<T>): UseCallbackRef<T>;
10
+ export {};
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { RecoilState } from 'recoil';
3
+ export interface UseRecoilRefProps<T> {
4
+ state: RecoilState<T | null | undefined>;
5
+ }
6
+ export declare function useRecoilRef<T>({ state, }: UseRecoilRefProps<T>): React.RefCallback<T>;
@@ -0,0 +1,3 @@
1
+ import { AssemblyBackgroundColors, AssemblyFont } from '@state/scene-tree/types';
2
+ export declare function styleFromOptionalFont(font?: Partial<AssemblyFont>): Record<string, string | undefined>;
3
+ export declare function styleFromOptionalBackgroundColors(backgroundColors?: Partial<AssemblyBackgroundColors>): Record<string, string | undefined>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ import { PartialConfig } from '@vertexvis/viewer/dist/types/lib/config';
2
+ export declare function toSdkConfig(config: PartialConfig['network'] | PartialConfig): PartialConfig;
package/package.json ADDED
@@ -0,0 +1,80 @@
1
+ {
2
+ "name": "@vertexvis/viewer-toolkit-react",
3
+ "version": "0.0.1",
4
+ "description": "Components for common Vertex viewer usage patterns.",
5
+ "author": "Vertex Developers <support@vertexvis.com> (https://developer.vertexvis.com)",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/Vertexvis/vertex-web-toolkit.git"
9
+ },
10
+ "publishConfig": {
11
+ "registry": "https://registry.npmjs.org",
12
+ "access": "public"
13
+ },
14
+ "main": "dist/bundle.cjs.js",
15
+ "module": "dist/bundle.cjs.js",
16
+ "es2015": "dist/bundle.esm.js",
17
+ "es2017": "dist/bundle.esm.js",
18
+ "types": "dist/index.d.ts",
19
+ "files": [
20
+ "dist/"
21
+ ],
22
+ "scripts": {
23
+ "start": "rollup --config ./rollup.config.mjs --watch",
24
+ "dev": "yarn start",
25
+ "build": "rollup --config ./rollup.config.mjs",
26
+ "test": "jest",
27
+ "test:ci": "yarn test:coverage",
28
+ "test:coverage": "yarn test --coverage",
29
+ "clean": "rm -fr ./dist && mkdir ./dist",
30
+ "format": "yarn lint --fix",
31
+ "lint": "eslint --ext .ts,.tsx,.js,.jsx --ignore-path .gitignore",
32
+ "prebuild": "yarn clean"
33
+ },
34
+ "dependencies": {
35
+ "@types/classnames": "^2.3.1",
36
+ "@vertexvis/utils": "^0.23.0",
37
+ "@vertexvis/viewer-react": "^0.23.0",
38
+ "camel-case": "^4.1.2",
39
+ "classnames": "^2.3.1",
40
+ "pino": "^9.6.0",
41
+ "react": "^18.3.0",
42
+ "react-dom": "^18.3.0",
43
+ "recoil": "^0.7.7",
44
+ "tslib": "^2.1.0"
45
+ },
46
+ "devDependencies": {
47
+ "@babel/core": "7.24.5",
48
+ "@babel/preset-typescript": "7.24.1",
49
+ "@swc/core": "^1.11.9",
50
+ "@swc/jest": "^0.2.37",
51
+ "@tailwindcss/postcss": "^4.0.12",
52
+ "@testing-library/react": "^16.2.0",
53
+ "@testing-library/user-event": "^14.6.1",
54
+ "@types/jest": "^27.5.1",
55
+ "@types/react": "^18.3.0",
56
+ "@types/react-dom": "^18.3.0",
57
+ "@vertexvis/build-tools": "^0.10.1",
58
+ "@vertexvis/eslint-config-vertexvis-typescript": "^0.5.1",
59
+ "@vertexvis/jest-config-vertexvis": "^0.5.5",
60
+ "@vertexvis/ui-react": "0.1.1-canary.2",
61
+ "@vertexvis/viewer-react": "^0.23.0-canary.9",
62
+ "autoprefixer": "^10.4.20",
63
+ "eslint": "8.49.0",
64
+ "eslint-plugin-react-hooks": "^5.2.0",
65
+ "eslint-plugin-storybook": "0.6.15",
66
+ "identity-obj-proxy": "^3.0.0",
67
+ "jest": "^29.7.0",
68
+ "jest-environment-jsdom": "^29.7.0",
69
+ "postcss": "^8.5.3",
70
+ "prettier": "^3.5.3",
71
+ "rollup": "^4.34.9",
72
+ "rollup-plugin-livereload": "^2.0.5",
73
+ "rollup-plugin-postcss": "^4.0.2",
74
+ "rollup-plugin-serve": "^3.0.0",
75
+ "storybook": "8.6.4",
76
+ "tailwindcss": "^4.0.12",
77
+ "ts-jest": "^29.2.6"
78
+ },
79
+ "gitHead": "b5e9a4111675a558ee5f642a7b376d040aa120b7"
80
+ }