/* * Copyright 2026 Hypergiant Galactic Systems Inc. All rights reserved. * This file is licensed to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. You may obtain a copy * of the License at https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS * OF ANY KIND, either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ import { OptionsDataItem, OptionsItemProps } from "../options/types.js"; import { SelectFieldProps } from "../select-field/types.js"; import { HTMLAttributes, PropsWithChildren } from "react"; import { UniqueId } from "@accelint/core"; //#region src/components/carousel/types.d.ts /** * Props for the root Carousel component. */ type CarouselProps = PropsWithChildren> & { /** The carousel data items to display. */ items: CarouselData[]; /** Zero-based index of the currently active item. */ currentPosition: number; /** Callback invoked when the active item changes. */ setCurrentPosition: (index: number) => void; }; /** * Data describing a single carousel item. */ type CarouselData = { /** The media type of the item. */ dataType: 'image' | 'video' | 'audio'; /** URL for the full-size media displayed in the viewer. */ dataUrl: string; /** Original file name of the media asset. */ fileName: string; /** Optional metadata associated with the item. */ metadata?: Record; /** Display title shown in the gallery and select. */ title: string; /** URL for the thumbnail image shown in the gallery. */ thumbnailUrl: string; /** Unique identifier for the item. */ id: UniqueId; }; /** * Props for the CarouselViewer component. */ type CarouselViewerProps = PropsWithChildren & { /** Custom class names for viewer elements. */ classNames?: { /** Class name for the viewer container. */ container?: string; /** Class name for the displayed media element (img, video, or audio). */ media?: string; }; }; /** * Props for the CarouselSelect dropdown component. */ type CarouselSelectProps = Omit & { /** Custom class names for select elements. */ classNames?: { /** Class names passed to the SelectField. */ select?: SelectFieldProps['classNames']; /** Class names passed to each OptionsItem. */ optionItem?: OptionsItemProps['classNames']; }; }; /** * Props for the CarouselGallery thumbnail strip component. */ type CarouselGalleryProps = HTMLAttributes & { /** Custom class names for gallery elements. */ classNames?: { /** Class name for the gallery container. */ container?: string; /** Class name for individual gallery items. */ item?: string; }; }; //#endregion export { CarouselData, CarouselGalleryProps, CarouselProps, CarouselSelectProps, CarouselViewerProps }; //# sourceMappingURL=types.d.ts.map