platform-calendar-seatmap 2.0.0 → 2.0.2

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 (113) hide show
  1. package/dist/9ff54b1cefde15da74a9.svg +198 -0
  2. package/dist/components/actionsHandler/ActionsHandler.d.ts +11 -0
  3. package/dist/components/alignmentGuides/AlignmentGuides.d.ts +6 -0
  4. package/dist/components/app/App.d.ts +18 -0
  5. package/dist/components/background/Background.d.ts +7 -0
  6. package/dist/components/deleteModal/DeleteModal.d.ts +4 -0
  7. package/dist/components/draggable/Draggable.d.ts +14 -0
  8. package/dist/components/elementSelector/ElementSelector.d.ts +10 -0
  9. package/dist/components/elementSelector/dropdown/Dropdown.d.ts +7 -0
  10. package/dist/components/elementSelector/dropdown/sections/aisles/Aisles.d.ts +7 -0
  11. package/dist/components/elementSelector/dropdown/sections/info/Info.d.ts +3 -0
  12. package/dist/components/elementSelector/dropdown/sections/objects/Objects.d.ts +7 -0
  13. package/dist/components/elementSelector/dropdown/sections/seatEditor/SeatEditor.d.ts +3 -0
  14. package/dist/components/elementSelector/dropdown/sections/seatingGroup/SeatingGroup.d.ts +7 -0
  15. package/dist/components/elementSelector/dropdown/sections/settings/Settings.d.ts +3 -0
  16. package/dist/components/elementSelector/dropdown/sections/standingArea/StandingArea.d.ts +7 -0
  17. package/dist/components/elementSelector/dropdown/sections/stats/Statistics.d.ts +3 -0
  18. package/dist/components/elementSelector/dropdown/sections/tables/Tables.d.ts +7 -0
  19. package/dist/components/elementSelector/dropdown/sections/text/Text.d.ts +7 -0
  20. package/dist/components/elementTitle/ElementTitle.d.ts +15 -0
  21. package/dist/components/elementWrapper/ElementWrapper.d.ts +19 -0
  22. package/dist/components/elements/aisle/Aisle.d.ts +12 -0
  23. package/dist/components/elements/object/Object.d.ts +7 -0
  24. package/dist/components/elements/seatingGroup/SeatingGroup.d.ts +7 -0
  25. package/dist/components/elements/stage/Stage.d.ts +28 -0
  26. package/dist/components/elements/standingArea/StandingArea.d.ts +7 -0
  27. package/dist/components/elements/table/Table.d.ts +7 -0
  28. package/dist/components/elements/table/round/Round.d.ts +20 -0
  29. package/dist/components/elements/table/square/Square.d.ts +20 -0
  30. package/dist/components/elements/text/Text.d.ts +7 -0
  31. package/dist/components/mouseSeatSelector/MouseSeatSelector.d.ts +6 -0
  32. package/dist/components/numberingSettings/NumberingSettings.d.ts +12 -0
  33. package/dist/components/onboarding/Onboarding.d.ts +31 -0
  34. package/dist/components/previewMode/PreviewMode.d.ts +24 -0
  35. package/dist/components/resizer/Resizer.d.ts +18 -0
  36. package/dist/components/rotate/Rotate.d.ts +9 -0
  37. package/dist/components/scene3d/InteractionController3D.d.ts +18 -0
  38. package/dist/components/scene3d/Scene3D.d.ts +13 -0
  39. package/dist/components/scene3d/builders/Object3D.d.ts +3 -0
  40. package/dist/components/scene3d/builders/SeatingGroup3D.d.ts +3 -0
  41. package/dist/components/scene3d/builders/StandingArea3D.d.ts +3 -0
  42. package/dist/components/scene3d/builders/Table3D.d.ts +3 -0
  43. package/dist/components/scene3d/builders/Text3D.d.ts +3 -0
  44. package/dist/components/scene3d/builders/materials.d.ts +11 -0
  45. package/dist/components/scene3d/builders/types.d.ts +36 -0
  46. package/dist/components/sceneContainer/SceneContainer.d.ts +10 -0
  47. package/dist/components/seat/Seat.d.ts +39 -0
  48. package/dist/components/seat/seatIcons/index.d.ts +46 -0
  49. package/dist/components/seatTooltip/SeatTooltip.d.ts +30 -0
  50. package/dist/helpers/constants/commons.d.ts +10 -0
  51. package/dist/helpers/constants/numberingStyles.d.ts +55 -0
  52. package/dist/helpers/constants/seatColors.d.ts +35 -0
  53. package/dist/helpers/constants/seatMap.d.ts +12 -0
  54. package/dist/helpers/constants/standingAreaStyles.d.ts +51 -0
  55. package/dist/helpers/functions/commons.d.ts +9 -0
  56. package/dist/helpers/functions/export.d.ts +30 -0
  57. package/dist/helpers/functions/rowLabels.d.ts +7 -0
  58. package/dist/helpers/functions/seat.d.ts +16 -0
  59. package/dist/helpers/functions/seatMap.d.ts +38 -0
  60. package/dist/helpers/functions/seatSelectionUtils.d.ts +33 -0
  61. package/dist/helpers/functions/seatStatus.d.ts +20 -0
  62. package/dist/helpers/functions/seatingGroup.d.ts +4 -0
  63. package/dist/helpers/functions/statistics.d.ts +116 -0
  64. package/dist/helpers/functions/zoomToFit.d.ts +20 -0
  65. package/dist/helpers/types/aisle.d.ts +25 -0
  66. package/dist/helpers/types/commons.d.ts +10 -0
  67. package/dist/hooks/useCopyPaste.d.ts +1 -0
  68. package/dist/hooks/useElementWrapperActionHandlers.d.ts +21 -0
  69. package/dist/hooks/useIsViewOnly.d.ts +2 -0
  70. package/dist/hooks/useKeyboardSeatNavigation.d.ts +22 -0
  71. package/dist/hooks/useKeyboardShortcuts.d.ts +1 -0
  72. package/dist/hooks/useScaleTracker.d.ts +2 -0
  73. package/dist/hooks/useSmoothZoom.d.ts +18 -0
  74. package/dist/hooks/useUndoRedo.d.ts +4 -0
  75. package/dist/index.d.ts +2 -0
  76. package/dist/index.html +1 -0
  77. package/dist/index.js +2 -0
  78. package/dist/index.js.LICENSE.txt +66 -0
  79. package/dist/lib/numberInputWithSlider/NumberInputWithSlider.d.ts +11 -0
  80. package/dist/store/middleware/historyMiddleware.d.ts +3 -0
  81. package/dist/store/reducers/actionHandlers/actionCreators.d.ts +3 -0
  82. package/dist/store/reducers/actionHandlers/actionTypes.d.ts +2 -0
  83. package/dist/store/reducers/actionHandlers/reducer.d.ts +3 -0
  84. package/dist/store/reducers/actionHandlers/selectors.d.ts +8 -0
  85. package/dist/store/reducers/actionHandlers/types.d.ts +20 -0
  86. package/dist/store/reducers/clipboard/actionCreators.d.ts +6 -0
  87. package/dist/store/reducers/clipboard/actionTypes.d.ts +3 -0
  88. package/dist/store/reducers/clipboard/reducer.d.ts +3 -0
  89. package/dist/store/reducers/clipboard/selectors.d.ts +6 -0
  90. package/dist/store/reducers/clipboard/types.d.ts +19 -0
  91. package/dist/store/reducers/elementSelector/actionCreators.d.ts +7 -0
  92. package/dist/store/reducers/elementSelector/actionTypes.d.ts +5 -0
  93. package/dist/store/reducers/elementSelector/reducer.d.ts +3 -0
  94. package/dist/store/reducers/elementSelector/selectors.d.ts +8 -0
  95. package/dist/store/reducers/elementSelector/types.d.ts +45 -0
  96. package/dist/store/reducers/history/actionCreators.d.ts +10 -0
  97. package/dist/store/reducers/history/actionTypes.d.ts +4 -0
  98. package/dist/store/reducers/history/reducer.d.ts +21 -0
  99. package/dist/store/reducers/history/selectors.d.ts +5 -0
  100. package/dist/store/reducers/history/types.d.ts +18 -0
  101. package/dist/store/reducers/main/actionCreators.d.ts +15 -0
  102. package/dist/store/reducers/main/actionTypes.d.ts +12 -0
  103. package/dist/store/reducers/main/reducer.d.ts +3 -0
  104. package/dist/store/reducers/main/selectors.d.ts +65 -0
  105. package/dist/store/reducers/main/types.d.ts +89 -0
  106. package/dist/store/reducers/rootReducer.d.ts +28 -0
  107. package/dist/store/reducers/seatMap/actionCreators.d.ts +11 -0
  108. package/dist/store/reducers/seatMap/actionTypes.d.ts +9 -0
  109. package/dist/store/reducers/seatMap/reducer.d.ts +3 -0
  110. package/dist/store/reducers/seatMap/selectors.d.ts +474 -0
  111. package/dist/store/reducers/seatMap/types.d.ts +70 -0
  112. package/dist/store/store.d.ts +19 -0
  113. package/package.json +1 -1
@@ -0,0 +1,7 @@
1
+ import { T_Element_StandingArea } from 'platform-calendar-helpers';
2
+ import { FC } from 'react';
3
+ type T_Props = {
4
+ standingArea: T_Element_StandingArea;
5
+ };
6
+ declare const StandingArea: FC<T_Props>;
7
+ export { StandingArea };
@@ -0,0 +1,7 @@
1
+ import { FC } from 'react';
2
+ import { T_Element_Table } from 'platform-calendar-helpers';
3
+ type T_Props = {
4
+ table: T_Element_Table;
5
+ };
6
+ declare const Table: FC<T_Props>;
7
+ export { Table };
@@ -0,0 +1,20 @@
1
+ import { T_Element_Table, T_Seat, T_Ticket } from 'platform-calendar-helpers';
2
+ import { FC } from 'react';
3
+ import { selectSelectedSeatsObj } from "../../../../store/reducers/seatMap/selectors";
4
+ import { selectTicketByIds } from "../../../../store/reducers/main/selectors";
5
+ import { T_SeatColors } from "../../../../helpers/constants/seatColors";
6
+ type T_Props = {
7
+ table: T_Element_Table;
8
+ selectedSeatsObj: ReturnType<typeof selectSelectedSeatsObj>;
9
+ ticketIds: ReturnType<typeof selectTicketByIds>['ticketIds'];
10
+ ticketsByIds?: {
11
+ [key: number]: T_Ticket;
12
+ };
13
+ isViewOnly: boolean;
14
+ selectSeatForMobile: (seat: T_Seat) => void;
15
+ seatColors: T_SeatColors;
16
+ soldSeatIds: Set<string | number>;
17
+ currencySymbol?: string;
18
+ };
19
+ declare const Round: FC<T_Props>;
20
+ export { Round };
@@ -0,0 +1,20 @@
1
+ import { T_Element_Table, T_Seat, T_Ticket } from 'platform-calendar-helpers';
2
+ import { FC } from 'react';
3
+ import { selectSelectedSeatsObj } from "../../../../store/reducers/seatMap/selectors";
4
+ import { selectTicketByIds } from "../../../../store/reducers/main/selectors";
5
+ import { T_SeatColors } from "../../../../helpers/constants/seatColors";
6
+ type T_Props = {
7
+ table: T_Element_Table;
8
+ selectedSeatsObj: ReturnType<typeof selectSelectedSeatsObj>;
9
+ ticketIds: ReturnType<typeof selectTicketByIds>['ticketIds'];
10
+ ticketsByIds?: {
11
+ [key: number]: T_Ticket;
12
+ };
13
+ isViewOnly: boolean;
14
+ selectSeatForMobile: (seat: T_Seat) => void;
15
+ seatColors: T_SeatColors;
16
+ soldSeatIds: Set<string | number>;
17
+ currencySymbol?: string;
18
+ };
19
+ declare const Square: FC<T_Props>;
20
+ export { Square };
@@ -0,0 +1,7 @@
1
+ import { T_Element_Text } from 'platform-calendar-helpers';
2
+ import { FC } from 'react';
3
+ type T_Props = {
4
+ text: T_Element_Text;
5
+ };
6
+ declare const Text: FC<T_Props>;
7
+ export { Text };
@@ -0,0 +1,6 @@
1
+ import { FC } from 'react';
2
+ type T_Props = {
3
+ wrapperRef: React.MutableRefObject<HTMLDivElement>;
4
+ };
5
+ declare const MouseSeatSelector: FC<T_Props>;
6
+ export { MouseSeatSelector };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * NUMBERING SETTINGS COMPONENT
3
+ * Configure row and seat numbering styles
4
+ */
5
+ import { FC } from 'react';
6
+ import { T_NumberingConfig } from "../../helpers/constants/numberingStyles";
7
+ type T_Props = {
8
+ config: Partial<T_NumberingConfig>;
9
+ onChange: (config: Partial<T_NumberingConfig>) => void;
10
+ };
11
+ declare const NumberingSettings: FC<T_Props>;
12
+ export { NumberingSettings };
@@ -0,0 +1,31 @@
1
+ /**
2
+ * ONBOARDING TOOLTIPS
3
+ * First-time editor guidance with dismissible tooltips
4
+ */
5
+ import { FC } from 'react';
6
+ interface OnboardingStep {
7
+ id: string;
8
+ target: string;
9
+ title: string;
10
+ description: string;
11
+ position: 'top' | 'bottom' | 'left' | 'right' | 'center';
12
+ spotlightPadding?: number;
13
+ /** If true, skip this step if target element doesn't exist */
14
+ skipIfMissing?: boolean;
15
+ }
16
+ /** Custom event to show onboarding again without page reload (e.g. from "Take the tour again" button) */
17
+ export declare const SHOW_ONBOARDING_EVENT = "seatmap-show-onboarding";
18
+ type T_Props = {
19
+ /** Force show onboarding even if previously completed */
20
+ forceShow?: boolean;
21
+ /** Callback when onboarding is completed or skipped */
22
+ onComplete?: () => void;
23
+ /** Custom steps (overrides default) */
24
+ steps?: OnboardingStep[];
25
+ };
26
+ declare const Onboarding: FC<T_Props>;
27
+ /**
28
+ * Hook to reset onboarding (useful for testing or settings)
29
+ */
30
+ export declare const useResetOnboarding: () => () => void;
31
+ export { Onboarding, type OnboardingStep };
@@ -0,0 +1,24 @@
1
+ /**
2
+ * PREVIEW MODE POLISH
3
+ * Applies cleaner styling when in preview mode:
4
+ * - Hides editor chrome (resize handles, element titles if desired)
5
+ * - Cleaner background
6
+ * - Higher contrast for seats
7
+ */
8
+ import { FC } from 'react';
9
+ type T_Props = {
10
+ /** Hide element titles in preview mode */
11
+ hideElementTitles?: boolean;
12
+ /** Hide resize handles in preview mode */
13
+ hideResizeHandles?: boolean;
14
+ /** Apply high-contrast seat styling */
15
+ highContrastSeats?: boolean;
16
+ /** Clean background (remove patterns) */
17
+ cleanBackground?: boolean;
18
+ };
19
+ /**
20
+ * PreviewMode Component
21
+ * Injects CSS classes onto the document body when preview mode is active
22
+ */
23
+ declare const PreviewMode: FC<T_Props>;
24
+ export { PreviewMode };
@@ -0,0 +1,18 @@
1
+ import { FC, RefObject } from 'react';
2
+ import { T_Element } from 'platform-calendar-helpers';
3
+ type T_UpdatedSizes = {
4
+ top: number;
5
+ left: number;
6
+ height: number;
7
+ width: number;
8
+ };
9
+ type T_Props = {
10
+ resizeContainer: RefObject<HTMLElement>;
11
+ positionAdjustContainer: RefObject<HTMLElement>;
12
+ elementPosition: T_Element['position'];
13
+ elementheight: number;
14
+ elementWidth: number;
15
+ onResizeEnd: (updatedSizes: T_UpdatedSizes) => void;
16
+ };
17
+ declare const Resizer: FC<T_Props>;
18
+ export { Resizer };
@@ -0,0 +1,9 @@
1
+ import { FC, MutableRefObject, PropsWithChildren } from 'react';
2
+ type T_Props = {
3
+ rotateContainer: MutableRefObject<HTMLElement | null>;
4
+ onRotateEnd: (angle: number) => void;
5
+ initialAngle?: number;
6
+ dataHook?: string;
7
+ };
8
+ declare const Rotate: FC<PropsWithChildren<T_Props>>;
9
+ export { Rotate };
@@ -0,0 +1,18 @@
1
+ import * as THREE from 'three';
2
+ import { Dispatch } from 'redux';
3
+ type T_Deps = {
4
+ dispatch: Dispatch;
5
+ camera: THREE.Camera;
6
+ domElement: HTMLElement;
7
+ root: THREE.Object3D;
8
+ scale: number;
9
+ isViewOnly: boolean;
10
+ };
11
+ /**
12
+ * Hybrid interaction model:
13
+ * - Raycast to meshes to identify element/seat IDs (via userData)
14
+ * - Raycast to ground plane to compute 2D seatmap coordinates (left/top)
15
+ * - Dispatch existing Redux actions (same as 2D)
16
+ */
17
+ export declare const attachInteractionController3D: (deps: T_Deps) => () => void;
18
+ export {};
@@ -0,0 +1,13 @@
1
+ import { T_SceneTransform } from "../../helpers/types/commons";
2
+ type T_Scene3DRef = {
3
+ zoomToFit: () => void;
4
+ };
5
+ type T_Props = {
6
+ wrapperRef: React.MutableRefObject<HTMLDivElement>;
7
+ sceneTransform: T_SceneTransform;
8
+ };
9
+ /**
10
+ * 3D scene container with Three.js renderer, OrbitControls, and mesh builders.
11
+ */
12
+ declare const Scene3D: import("react").ForwardRefExoticComponent<T_Props & import("react").RefAttributes<T_Scene3DRef>>;
13
+ export { Scene3D, type T_Scene3DRef };
@@ -0,0 +1,3 @@
1
+ import { T_Element_Object } from 'platform-calendar-helpers';
2
+ import { T_BuildContext, T_BuiltObject } from './types';
3
+ export declare const buildObject3D: (object: T_Element_Object, ctx: T_BuildContext) => T_BuiltObject;
@@ -0,0 +1,3 @@
1
+ import { T_Element_SeatingGroup } from 'platform-calendar-helpers';
2
+ import { T_BuildContext, T_BuiltObject } from './types';
3
+ export declare const buildSeatingGroup3D: (seatingGroup: T_Element_SeatingGroup, ctx: T_BuildContext) => T_BuiltObject;
@@ -0,0 +1,3 @@
1
+ import { T_Element_StandingArea } from 'platform-calendar-helpers';
2
+ import { T_BuildContext, T_BuiltObject } from './types';
3
+ export declare const buildStandingArea3D: (standingArea: T_Element_StandingArea, ctx: T_BuildContext) => T_BuiltObject;
@@ -0,0 +1,3 @@
1
+ import { T_Element_Table } from 'platform-calendar-helpers';
2
+ import { T_BuildContext, T_BuiltObject } from './types';
3
+ export declare const buildTable3D: (table: T_Element_Table, ctx: T_BuildContext) => T_BuiltObject;
@@ -0,0 +1,3 @@
1
+ import { T_Element_Text } from 'platform-calendar-helpers';
2
+ import { T_BuildContext, T_BuiltObject } from './types';
3
+ export declare const buildText3D: (text: T_Element_Text, ctx: T_BuildContext) => T_BuiltObject;
@@ -0,0 +1,11 @@
1
+ import * as THREE from 'three';
2
+ export declare const makeMat: (color: string | number, opts?: Partial<THREE.MeshStandardMaterialParameters>) => THREE.MeshStandardMaterial;
3
+ export declare const makeTextSprite: (text: string, options?: {
4
+ fontSize?: number;
5
+ paddingX?: number;
6
+ paddingY?: number;
7
+ textColor?: string;
8
+ backgroundColor?: string;
9
+ borderColor?: string;
10
+ borderWidth?: number;
11
+ }) => THREE.Sprite;
@@ -0,0 +1,36 @@
1
+ import * as THREE from 'three';
2
+ import { T_ElementType, T_Seat } from 'platform-calendar-helpers';
3
+ export type T_BuildContext = {
4
+ /** 2D px -> world units multiplier */
5
+ scale: number;
6
+ /** Set of sold seat IDs for status-based coloring */
7
+ soldSeatIds: Set<string | number>;
8
+ /** Map of available ticket IDs for checking if seat has assigned ticket */
9
+ ticketIds?: {
10
+ [key: string | number]: boolean;
11
+ };
12
+ };
13
+ export type T_BuiltObject = {
14
+ object: THREE.Object3D;
15
+ /**
16
+ * Optional list of selectable meshes (for raycasting). If omitted, caller can traverse `object`.
17
+ */
18
+ selectables?: THREE.Object3D[];
19
+ };
20
+ export type T_UserDataSeat = {
21
+ kind: 'seat';
22
+ seatId: T_Seat['id'];
23
+ elementId: string;
24
+ elementType: T_ElementType;
25
+ };
26
+ export type T_UserDataElement = {
27
+ kind: 'element';
28
+ elementId: string;
29
+ elementType: T_ElementType;
30
+ };
31
+ export type T_UserDataAny = T_UserDataSeat | T_UserDataElement | {
32
+ kind: 'other';
33
+ };
34
+ export declare const setUserData: (obj: THREE.Object3D, data: T_UserDataAny) => void;
35
+ export declare const isElement: (data: any) => data is T_UserDataElement;
36
+ export declare const isSeat: (data: any) => data is T_UserDataSeat;
@@ -0,0 +1,10 @@
1
+ import { T_SceneTransform } from "../../helpers/types/commons";
2
+ type T_SceneContainerRef = {
3
+ zoomToFit: () => void;
4
+ };
5
+ type T_Props = {
6
+ wrapperRef: React.MutableRefObject<HTMLDivElement>;
7
+ sceneTransform: T_SceneTransform;
8
+ };
9
+ declare const SceneContainer: import("react").ForwardRefExoticComponent<T_Props & import("react").RefAttributes<T_SceneContainerRef>>;
10
+ export { SceneContainer, type T_SceneContainerRef };
@@ -0,0 +1,39 @@
1
+ import { T_Seat, T_Ticket } from 'platform-calendar-helpers';
2
+ import { FC } from 'react';
3
+ import { selectTicketByIds } from "../../store/reducers/main/selectors";
4
+ import { T_SeatColors } from "../../helpers/constants/seatColors";
5
+ type T_Props = {
6
+ seat: T_Seat;
7
+ selected: boolean;
8
+ seatColors: T_SeatColors;
9
+ soldSeatIds: Set<string | number>;
10
+ iconType?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10;
11
+ absolutePosition?: {
12
+ top?: number;
13
+ left?: number;
14
+ };
15
+ /**
16
+ * Optional data attributes for hit-testing / selection algorithms.
17
+ * (Used by seating groups to expose row/col coordinates.)
18
+ */
19
+ dataAttributes?: Record<string, string | number | undefined>;
20
+ ticketIds: ReturnType<typeof selectTicketByIds>['ticketIds'];
21
+ /** Ticket lookup by ID for enhanced tooltip */
22
+ ticketsByIds?: {
23
+ [key: number]: T_Ticket;
24
+ };
25
+ isViewOnly: boolean;
26
+ select: (seat: T_Seat) => void;
27
+ /** Show seat number inside the seat */
28
+ showNumber?: boolean;
29
+ /** Custom seat number to display (defaults to extracting from label or using index) */
30
+ seatNumber?: string | number;
31
+ /** Row label for enhanced tooltip */
32
+ rowLabel?: string;
33
+ /** Section/element name for enhanced tooltip */
34
+ sectionName?: string;
35
+ /** Currency symbol for price display in tooltip */
36
+ currencySymbol?: string;
37
+ };
38
+ declare const Seat: FC<T_Props>;
39
+ export { Seat };
@@ -0,0 +1,46 @@
1
+ /**
2
+ * SEAT ICON COMPONENTS
3
+ * SVG-based seat icons for different venue types
4
+ */
5
+ import React from 'react';
6
+ interface IconProps {
7
+ color?: string;
8
+ size?: number;
9
+ className?: string;
10
+ }
11
+ type SeatIconComponent = React.FC<IconProps> | null;
12
+ /**
13
+ * Theater Seat - Plush armchair shape for classical venues
14
+ */
15
+ export declare const TheaterSeatIcon: React.FC<IconProps>;
16
+ /**
17
+ * Stadium Seat - Flip-up plastic seat for sports venues
18
+ */
19
+ export declare const StadiumSeatIcon: React.FC<IconProps>;
20
+ /**
21
+ * Bench Segment - For churches, bleachers, communal seating
22
+ */
23
+ export declare const BenchSeatIcon: React.FC<IconProps>;
24
+ /**
25
+ * Bar Stool - For bars, high tables, counter seating
26
+ */
27
+ export declare const BarStoolIcon: React.FC<IconProps>;
28
+ /**
29
+ * Premium/VIP Seat - Luxury seat with star indicator
30
+ */
31
+ export declare const PremiumSeatIcon: React.FC<IconProps>;
32
+ /**
33
+ * Accessible Seat - Wheelchair accessible seating
34
+ */
35
+ export declare const AccessibleSeatIcon: React.FC<IconProps>;
36
+ /**
37
+ * Floor Cushion - For casual/meditation venues
38
+ */
39
+ export declare const FloorCushionIcon: React.FC<IconProps>;
40
+ /**
41
+ * Booth Seat - Restaurant/club booth seating
42
+ */
43
+ export declare const BoothSeatIcon: React.FC<IconProps>;
44
+ export declare const SEAT_ICONS: Record<number, SeatIconComponent>;
45
+ export declare const SEAT_ICON_NAMES: Record<number, string>;
46
+ export {};
@@ -0,0 +1,30 @@
1
+ /**
2
+ * ENHANCED SEAT TOOLTIP
3
+ * Shows comprehensive seat information: row, seat number, price, ticket name, accessible badge, notes
4
+ */
5
+ import { FC, ReactNode } from 'react';
6
+ import { T_Seat, T_Ticket } from 'platform-calendar-helpers';
7
+ export interface T_SeatTooltipData {
8
+ seat: T_Seat;
9
+ rowLabel?: string;
10
+ seatNumber?: string | number;
11
+ sectionName?: string;
12
+ ticket?: T_Ticket | null;
13
+ price?: number | string;
14
+ isAccessible?: boolean;
15
+ isSold?: boolean;
16
+ isLocked?: boolean;
17
+ customNote?: string;
18
+ currencySymbol?: string;
19
+ }
20
+ type T_Props = {
21
+ data: T_SeatTooltipData;
22
+ children: ReactNode;
23
+ disabled?: boolean;
24
+ };
25
+ /**
26
+ * Enhanced Seat Tooltip Component
27
+ * Displays rich seat information on hover
28
+ */
29
+ declare const SeatTooltip: FC<T_Props>;
30
+ export { SeatTooltip };
@@ -0,0 +1,10 @@
1
+ declare const ALPHABET: string[];
2
+ declare const CURVE_UPDATED_EVENT_NAME = "CUSTOM_EVENTS/CURVE_UPDATED_EVENT";
3
+ declare const STRETCH_UPDATED_EVENT_NAME = "CUSTOM_EVENTS/STRETCH_UPDATED_EVENT_NAME";
4
+ declare const IS_MOBILE: boolean;
5
+ declare const MODES: {
6
+ readonly edit: "edit";
7
+ readonly view: "view";
8
+ readonly preview: "preview";
9
+ };
10
+ export { ALPHABET, CURVE_UPDATED_EVENT_NAME, STRETCH_UPDATED_EVENT_NAME, MODES, IS_MOBILE };
@@ -0,0 +1,55 @@
1
+ /**
2
+ * ROW/SEAT NUMBERING STYLES
3
+ * Configuration options for how rows and seats are labeled
4
+ */
5
+ export type T_NumberingStyle = 'default' | 'compact' | 'full' | 'letter-number';
6
+ export interface T_NumberingConfig {
7
+ /** Style for row labels */
8
+ rowStyle: T_NumberingStyle;
9
+ /** Style for seat numbers */
10
+ seatStyle: T_NumberingStyle;
11
+ /** Show row labels */
12
+ showRowLabels: boolean;
13
+ /** Show seat numbers on seats */
14
+ showSeatNumbers: boolean;
15
+ /** Starting row number/letter */
16
+ startRow: string | number;
17
+ /** Starting seat number */
18
+ startSeat: number;
19
+ /** Row numbering direction (1,2,3 or A,B,C) */
20
+ rowNumberingType: 'numeric' | 'alphabetic';
21
+ /** Seat numbering direction */
22
+ seatNumberingDirection: 'left-to-right' | 'right-to-left' | 'center-out';
23
+ /** Include row prefix in labels (e.g., "Row A" vs just "A") */
24
+ includeRowPrefix: boolean;
25
+ /** Include seat prefix in labels (e.g., "Seat 1" vs just "1") */
26
+ includeSeatPrefix: boolean;
27
+ }
28
+ export declare const DEFAULT_NUMBERING_CONFIG: T_NumberingConfig;
29
+ export declare const NUMBERING_STYLE_OPTIONS: {
30
+ id: string;
31
+ label: string;
32
+ description: string;
33
+ }[];
34
+ export declare const ROW_NUMBERING_TYPES: {
35
+ id: string;
36
+ label: string;
37
+ example: string;
38
+ }[];
39
+ export declare const SEAT_DIRECTION_OPTIONS: {
40
+ id: string;
41
+ label: string;
42
+ description: string;
43
+ }[];
44
+ /**
45
+ * Generate row label based on index and config
46
+ */
47
+ export declare const generateRowLabel: (rowIndex: number, config: T_NumberingConfig) => string;
48
+ /**
49
+ * Generate seat number based on column index and config
50
+ */
51
+ export declare const generateSeatNumber: (colIndex: number, totalCols: number, config: T_NumberingConfig) => number | string;
52
+ /**
53
+ * Format seat label based on row and seat
54
+ */
55
+ export declare const formatSeatLabel: (rowLabel: string, seatNumber: number | string, config: T_NumberingConfig) => string;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * SEAT COLOR SYSTEM
3
+ * Premium, sophisticated color palette for professional venue maps
4
+ */
5
+ export declare const DEFAULT_AVAILABLE_COLOR = "#4A9B7F";
6
+ export declare const DEFAULT_LOCKED_COLOR = "#D4915D";
7
+ export declare const DEFAULT_UNASSIGNED_COLOR = "#B8C4CE";
8
+ export declare const DEFAULT_SOLD_COLOR = "#9CA3AF";
9
+ export declare const DEFAULT_SEAT_COLORS: {
10
+ available: string;
11
+ locked: string;
12
+ unassigned: string;
13
+ sold: string;
14
+ };
15
+ export type T_SeatColors = {
16
+ available: string;
17
+ locked: string;
18
+ unassigned: string;
19
+ sold: string;
20
+ };
21
+ export declare const ZONE_COLORS: {
22
+ premium: string;
23
+ standard: string;
24
+ economy: string;
25
+ balcony: string;
26
+ orchestra: string;
27
+ mezzanine: string;
28
+ box: string;
29
+ accessible: string;
30
+ };
31
+ export declare const SEAT_SELECTION_COLOR = "#3B82F6";
32
+ export declare const SEAT_SELECTION_GLOW = "rgba(59, 130, 246, 0.4)";
33
+ export declare const VIEW_SELECTION_COLOR = "#10B981";
34
+ export declare const VIEW_SELECTION_GLOW = "rgba(16, 185, 129, 0.4)";
35
+ export declare const SEAT_SIZE = 22;
@@ -0,0 +1,12 @@
1
+ declare const ELEMENT_DRAG_STEPS_BY_SCALE: {
2
+ [key: number]: number;
3
+ };
4
+ declare const D_SEAT: {
5
+ id: string;
6
+ label: string;
7
+ ticketId: number;
8
+ locked: boolean;
9
+ hide: boolean;
10
+ };
11
+ declare const CORRECT_SCENE_POSITION_EVENT_NAME = "correct_scene_position_event_name";
12
+ export { ELEMENT_DRAG_STEPS_BY_SCALE, D_SEAT, CORRECT_SCENE_POSITION_EVENT_NAME };
@@ -0,0 +1,51 @@
1
+ /**
2
+ * STANDING AREA VISUAL STYLES
3
+ * Premium visual presets and gradient configurations
4
+ */
5
+ export type T_GradientType = 'solid' | 'linear' | 'radial';
6
+ export type T_GradientConfig = {
7
+ type: T_GradientType;
8
+ color1: string;
9
+ color2?: string;
10
+ angle?: number;
11
+ position?: 'center' | 'top' | 'bottom' | 'left' | 'right';
12
+ };
13
+ export type T_StandingAreaType = 'general' | 'dancefloor' | 'moshpit' | 'vip' | 'bar' | 'lounge';
14
+ export type T_CapacityDisplay = 'none' | 'dots' | 'fill' | 'badge';
15
+ export type T_PatternType = 'none' | 'dots' | 'grid' | 'diagonal' | 'waves';
16
+ export interface T_StandingAreaPreset {
17
+ name: string;
18
+ gradient: T_GradientConfig;
19
+ pattern: T_PatternType;
20
+ borderWidth: number;
21
+ borderColor: string;
22
+ borderStyle: 'solid' | 'dashed' | 'dotted';
23
+ shadowEnabled: boolean;
24
+ capacityDisplay: T_CapacityDisplay;
25
+ }
26
+ export declare const STANDING_AREA_PRESETS: Record<T_StandingAreaType, T_StandingAreaPreset>;
27
+ /**
28
+ * Generate CSS background from gradient config
29
+ */
30
+ export declare const generateGradientCSS: (gradient: T_GradientConfig) => string;
31
+ /**
32
+ * Generate pattern CSS overlay
33
+ */
34
+ export declare const generatePatternCSS: (pattern: T_PatternType, opacity?: number) => string;
35
+ /**
36
+ * Generate pattern background size
37
+ */
38
+ export declare const getPatternSize: (pattern: T_PatternType) => string;
39
+ export declare const DEFAULT_STANDING_AREA_STYLE: {
40
+ areaType: T_StandingAreaType;
41
+ gradient: {
42
+ type: T_GradientType;
43
+ color1: string;
44
+ };
45
+ pattern: T_PatternType;
46
+ borderWidth: number;
47
+ borderColor: string;
48
+ borderStyle: "solid";
49
+ shadowEnabled: boolean;
50
+ capacityDisplay: T_CapacityDisplay;
51
+ };
@@ -0,0 +1,9 @@
1
+ declare const getElementStyles: (element: HTMLElement) => {
2
+ top: number;
3
+ left: number;
4
+ height: number;
5
+ width: number;
6
+ };
7
+ declare const debounce: (func: any, delay: number) => (...args: any) => void;
8
+ declare const islementCornarRadiusesSame: (element: any) => boolean;
9
+ export { getElementStyles, debounce, islementCornarRadiusesSame };
@@ -0,0 +1,30 @@
1
+ /**
2
+ * EXPORT FUNCTIONALITY
3
+ * CSV export for statistics data
4
+ */
5
+ import { T_SeatMap, T_Ticket } from 'platform-calendar-helpers';
6
+ import { T_SeatIndex } from './statistics';
7
+ import { T_SelectedSeats } from "../../store/reducers/elementSelector/types";
8
+ /** Filters for CSV export (Statistics) */
9
+ export interface T_ExportFilters {
10
+ elementId?: string;
11
+ ticketId?: number;
12
+ }
13
+ export type T_CSVExportRow = Record<string, string | number>;
14
+ /**
15
+ * Build rows for CSV export from sold seats, optionally filtered by element/ticket
16
+ * Only includes seats that belong to the current seatmap
17
+ */
18
+ export declare const prepareExportData: (seatIndex: T_SeatIndex, soldSeats: T_SelectedSeats[keyof T_SelectedSeats][], tickets: T_Ticket[] | undefined, filters: T_ExportFilters, seatMap: T_SeatMap) => T_CSVExportRow[];
19
+ /**
20
+ * Convert array of row objects to CSV string
21
+ */
22
+ export declare const convertToCSV: (rows: T_CSVExportRow[]) => string;
23
+ /**
24
+ * Trigger download of a blob
25
+ */
26
+ export declare const downloadBlob: (blob: Blob, filename: string) => void;
27
+ /**
28
+ * Trigger download of a CSV file
29
+ */
30
+ export declare const downloadCSV: (csv: string, filename: string) => void;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Get row letter from row index, matching the same logic used for seat labels
3
+ * Row 0 = A, Row 1 = B, ..., Row 25 = Z, Row 26 = AA, etc.
4
+ * @param rowIndex Zero-based row index
5
+ * @returns Row letter(s) (e.g., "A", "B", "AA")
6
+ */
7
+ export declare const getRowLetter: (rowIndex: number) => string;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Seat layout configuration
3
+ * Premium seat sizing for realistic venue appearance
4
+ */
5
+ declare const SEAT_CONFIG: {
6
+ diameter: number;
7
+ spaceBetweenSeats: number;
8
+ spaceBetweenSeatAndTable: number;
9
+ };
10
+ declare const calculateRoundTable: (seatCount: number) => {
11
+ tableSize: number;
12
+ angleIncrement: number;
13
+ seatRadius: number;
14
+ seatDiameter: number;
15
+ };
16
+ export { calculateRoundTable, SEAT_CONFIG };