@neuctra/ui 0.2.0 → 0.2.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.
@@ -1,10 +1,10 @@
1
1
  import { default as React } from 'react';
2
- interface AccordionItem {
2
+ interface AccordationItem {
3
3
  title: string;
4
4
  content: React.ReactNode;
5
5
  }
6
- interface AccordionProps {
7
- items: AccordionItem[];
6
+ interface AccordationProps {
7
+ items: AccordationItem[];
8
8
  allowMultiple?: boolean;
9
9
  defaultOpenIndex?: number[];
10
10
  borderColor?: string;
@@ -31,5 +31,5 @@ interface AccordionProps {
31
31
  className?: string;
32
32
  style?: React.CSSProperties;
33
33
  }
34
- export declare const Accordion: React.FC<AccordionProps>;
34
+ export declare const Accordation: React.FC<AccordationProps>;
35
35
  export {};
@@ -1,18 +1,23 @@
1
- import { default as React } from 'react';
2
1
  interface AudioTrack {
3
2
  src: string;
4
3
  title: string;
4
+ artist?: string;
5
5
  thumbnail?: string;
6
+ duration?: string;
6
7
  }
7
8
  interface AudioGalleryProps {
8
- tracks: AudioTrack[];
9
+ tracks?: AudioTrack[];
9
10
  className?: string;
11
+ galleryTitle?: string;
10
12
  primaryColor?: string;
11
13
  backgroundColor?: string;
12
14
  textColor?: string;
13
15
  secondaryColor?: string;
14
16
  autoplay?: boolean;
17
+ borderColor?: string;
18
+ border?: number;
19
+ maxWidth?: number;
15
20
  loop?: boolean;
16
21
  }
17
- export declare const AudioGallery: React.FC<AudioGalleryProps>;
22
+ export declare function AudioGallery({ tracks, className, galleryTitle, primaryColor, backgroundColor, textColor, secondaryColor, border, borderColor, maxWidth, autoplay, loop, }: AudioGalleryProps): import("react/jsx-runtime").JSX.Element;
18
23
  export {};
@@ -1,19 +1,29 @@
1
1
  import { default as React } from 'react';
2
2
  interface AvatarProps {
3
- src: string;
3
+ src?: string;
4
4
  alt?: string;
5
- size?: "small" | "medium" | "large";
5
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
6
+ variant?: "circular" | "rounded" | "square";
6
7
  isOnline?: boolean;
7
8
  isOffline?: boolean;
8
9
  className?: string;
9
10
  style?: React.CSSProperties;
11
+ statusClassName?: string;
12
+ statusStyle?: React.CSSProperties;
13
+ statusPosition?: "top-left" | "top-right" | "bottom-left" | "bottom-right";
14
+ fallback?: string;
15
+ ring?: boolean;
16
+ ringColor?: string;
17
+ onClick?: () => void;
10
18
  }
11
19
  interface AvatarGroupProps {
12
20
  avatars: AvatarProps[];
13
21
  max?: number;
14
- size?: "small" | "medium" | "large";
22
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
15
23
  className?: string;
16
24
  style?: React.CSSProperties;
25
+ spacing?: "tight" | "normal" | "loose";
26
+ direction?: "left" | "right";
17
27
  }
18
28
  export declare const Avatar: React.FC<AvatarProps>;
19
29
  export declare const AvatarGroup: React.FC<AvatarGroupProps>;
@@ -1,25 +1,70 @@
1
- import { default as React, CSSProperties } from 'react';
2
- interface CardProps {
3
- children?: React.ReactNode;
1
+ import { CSSProperties, ReactNode, ElementType, ComponentPropsWithoutRef, ForwardedRef, ReactElement } from 'react';
2
+ type CardOwnProps = {
3
+ children?: ReactNode;
4
4
  className?: string;
5
- style?: CSSProperties;
6
5
  background?: string;
7
6
  backgroundImage?: string;
8
7
  backgroundSize?: CSSProperties["backgroundSize"];
9
8
  backgroundPosition?: CSSProperties["backgroundPosition"];
10
9
  backgroundRepeat?: CSSProperties["backgroundRepeat"];
10
+ backgroundGradient?: string;
11
+ backgroundBlendMode?: CSSProperties["backgroundBlendMode"];
11
12
  textColor?: string;
13
+ hoverStyles?: CSSProperties;
14
+ activeStyles?: CSSProperties;
12
15
  borderRadius?: string | number;
16
+ border?: string;
17
+ borderTop?: string;
18
+ borderRight?: string;
19
+ borderBottom?: string;
20
+ borderLeft?: string;
21
+ boxShadow?: string;
22
+ hoverShadow?: string;
23
+ transition?: string;
13
24
  padding?: string | number;
25
+ paddingX?: string | number;
26
+ paddingY?: string | number;
14
27
  margin?: string | number;
28
+ marginX?: string | number;
29
+ marginY?: string | number;
30
+ width?: string | number;
31
+ minWidth?: string | number;
15
32
  maxWidth?: string | number;
16
- boxShadow?: string;
17
- border?: string;
33
+ height?: string | number;
34
+ minHeight?: string | number;
35
+ maxHeight?: string | number;
18
36
  display?: CSSProperties["display"];
19
37
  flexDirection?: CSSProperties["flexDirection"];
20
38
  justifyContent?: CSSProperties["justifyContent"];
21
39
  alignItems?: CSSProperties["alignItems"];
40
+ alignContent?: CSSProperties["alignContent"];
41
+ flexWrap?: CSSProperties["flexWrap"];
42
+ flex?: CSSProperties["flex"];
22
43
  gap?: string | number;
23
- }
24
- export declare const Card: React.FC<CardProps>;
25
- export {};
44
+ position?: CSSProperties["position"];
45
+ top?: string | number;
46
+ right?: string | number;
47
+ bottom?: string | number;
48
+ left?: string | number;
49
+ zIndex?: number;
50
+ overflow?: CSSProperties["overflow"];
51
+ overflowX?: CSSProperties["overflowX"];
52
+ overflowY?: CSSProperties["overflowY"];
53
+ cursor?: CSSProperties["cursor"];
54
+ pointerEvents?: CSSProperties["pointerEvents"];
55
+ userSelect?: CSSProperties["userSelect"];
56
+ transform?: CSSProperties["transform"];
57
+ transformOrigin?: CSSProperties["transformOrigin"];
58
+ backdropFilter?: CSSProperties["backdropFilter"];
59
+ filter?: CSSProperties["filter"];
60
+ opacity?: number;
61
+ visibility?: CSSProperties["visibility"];
62
+ as?: ElementType;
63
+ };
64
+ type CardProps<T extends ElementType = "div"> = CardOwnProps & Omit<ComponentPropsWithoutRef<T>, keyof CardOwnProps>;
65
+ declare const Card: (<T extends ElementType = "div">(props: CardProps<T> & {
66
+ ref?: ForwardedRef<HTMLDivElement>;
67
+ }) => ReactElement) & {
68
+ displayName: string;
69
+ };
70
+ export { Card };
@@ -3,6 +3,7 @@ interface Option {
3
3
  label: string;
4
4
  value: string;
5
5
  icon?: React.ReactNode;
6
+ disabled?: boolean;
6
7
  }
7
8
  interface DropdownProps {
8
9
  options: Option[];
@@ -11,27 +12,52 @@ interface DropdownProps {
11
12
  onChange?: (value: string) => void;
12
13
  placeholder?: string;
13
14
  disabled?: boolean;
15
+ searchable?: boolean;
16
+ multiSelect?: boolean;
17
+ clearable?: boolean;
18
+ virtualized?: boolean;
19
+ optionHeight?: number;
20
+ visibleOptions?: number;
21
+ width?: string;
22
+ height?: string;
14
23
  borderColor?: string;
24
+ focusBorderColor?: string;
25
+ errorBorderColor?: string;
15
26
  backgroundColor?: string;
16
27
  textColor?: string;
28
+ placeholderColor?: string;
17
29
  hoverColor?: string;
30
+ selectedColor?: string;
31
+ disabledColor?: string;
18
32
  padding?: string;
19
33
  margin?: string;
20
- dropdownWidth?: string;
21
- dropdownHeight?: string;
22
34
  borderRadius?: string;
23
35
  boxShadow?: string;
24
36
  optionPadding?: string;
25
37
  optionGap?: string;
26
38
  transitionDuration?: string;
39
+ dropdownMaxHeight?: string;
40
+ dropdownMinWidth?: string;
27
41
  className?: string;
28
- dropdownStyle?: React.CSSProperties;
29
42
  dropdownClassName?: string;
30
- optionStyle?: React.CSSProperties;
31
43
  optionClassName?: string;
44
+ inputClassName?: string;
45
+ style?: React.CSSProperties;
46
+ dropdownStyle?: React.CSSProperties;
47
+ optionStyle?: React.CSSProperties;
48
+ inputStyle?: React.CSSProperties;
32
49
  iconPrefix?: React.ReactNode;
33
50
  iconSuffix?: React.ReactNode;
34
- openAnimation?: string;
51
+ clearIcon?: React.ReactNode;
52
+ dropdownIcon?: React.ReactNode;
53
+ checkIcon?: React.ReactNode;
54
+ ariaLabel?: string;
55
+ ariaLabelledby?: string;
56
+ ariaDescribedby?: string;
57
+ onFocus?: () => void;
58
+ onBlur?: () => void;
59
+ onOpen?: () => void;
60
+ onClose?: () => void;
35
61
  }
36
62
  export declare const Dropdown: React.FC<DropdownProps>;
37
63
  export {};
@@ -1,10 +1,17 @@
1
1
  import { default as React } from 'react';
2
+ interface BreakpointColumns {
3
+ sm?: number;
4
+ md?: number;
5
+ lg?: number;
6
+ xl?: number;
7
+ default?: number;
8
+ }
2
9
  interface ImageGalleryProps {
3
10
  images: {
4
11
  src: string;
5
12
  alt?: string;
6
13
  }[];
7
- columns?: number;
14
+ columns?: number | BreakpointColumns;
8
15
  gap?: string;
9
16
  layout?: "grid" | "masonry";
10
17
  lightbox?: boolean;
@@ -1,8 +1,14 @@
1
- import { default as React } from 'react';
1
+ import { default as React, ReactNode } from 'react';
2
2
  interface Column {
3
3
  key: string;
4
4
  label: string;
5
5
  sortable?: boolean;
6
+ icon?: ReactNode;
7
+ width?: string | number;
8
+ align?: "left" | "center" | "right";
9
+ headerClassName?: string;
10
+ cellClassName?: string;
11
+ render?: (value: any, row: Record<string, any>) => ReactNode;
6
12
  }
7
13
  interface TableProps {
8
14
  columns: Column[];
@@ -19,7 +25,35 @@ interface TableProps {
19
25
  hoverBg?: string;
20
26
  paginationBg?: string;
21
27
  paginationText?: string;
28
+ evenRowBg?: string;
29
+ selectedRowBg?: string;
22
30
  };
31
+ borderRadius?: {
32
+ table?: string;
33
+ header?: string;
34
+ pagination?: string;
35
+ };
36
+ sortable?: boolean;
37
+ defaultSort?: {
38
+ column: string;
39
+ direction: "asc" | "desc";
40
+ };
41
+ bodyAlign?: "left" | "center" | "right";
42
+ headerAlign?: "left" | "center" | "right";
43
+ rowSelection?: {
44
+ enabled?: boolean;
45
+ onSelect?: (selectedRows: Record<string, any>[]) => void;
46
+ selectionColumnWidth?: string;
47
+ selectionColumnHeader?: ReactNode;
48
+ };
49
+ emptyState?: ReactNode;
50
+ onRowClick?: (row: Record<string, any>, index: number) => void;
51
+ rowClassName?: (row: Record<string, any>, index: number) => string;
52
+ cellPadding?: string;
53
+ headerCellPadding?: string;
54
+ stickyHeader?: boolean;
55
+ maxHeight?: string;
56
+ scrollShadow?: boolean;
23
57
  }
24
58
  export declare const Table: React.FC<TableProps>;
25
59
  export {};
@@ -3,6 +3,8 @@ interface TabItem {
3
3
  label: React.ReactNode;
4
4
  content: React.ReactNode;
5
5
  icon?: React.ReactNode;
6
+ disabled?: boolean;
7
+ ariaLabel?: string;
6
8
  }
7
9
  interface TabsBaseProps {
8
10
  tabs: TabItem[];
@@ -25,10 +27,21 @@ interface TabsBaseProps {
25
27
  textColor?: string;
26
28
  backgroundColor?: string;
27
29
  hoverTextColor?: string;
30
+ disabledColor?: string;
28
31
  responsiveBreakpoint?: number;
29
32
  showDrawerLabel?: string;
33
+ drawerIcon?: React.ReactNode;
34
+ transitionDuration?: number;
35
+ onTabChange?: (index: number) => void;
36
+ role?: string;
37
+ ariaOrientation?: "horizontal" | "vertical";
30
38
  }
31
39
  export declare const LeftTabs: React.FC<TabsBaseProps>;
32
40
  export declare const TopTabs: React.FC<TabsBaseProps>;
33
41
  export declare const RightTabs: React.FC<TabsBaseProps>;
42
+ export declare const Tabs: {
43
+ Left: React.FC<TabsBaseProps>;
44
+ Top: React.FC<TabsBaseProps>;
45
+ Right: React.FC<TabsBaseProps>;
46
+ };
34
47
  export {};
@@ -1,25 +1,136 @@
1
1
  import { default as React } from 'react';
2
- interface Video {
2
+ interface VideoData {
3
+ id: string;
3
4
  src: string;
4
5
  poster?: string;
6
+ title?: string;
7
+ description?: string;
8
+ duration?: number;
9
+ author?: string;
10
+ publishDate?: string;
11
+ tags?: string[];
12
+ views?: number;
13
+ likes?: number;
14
+ category?: string;
15
+ thumbnail?: string;
16
+ quality?: "auto" | "720p" | "1080p" | "4k";
17
+ subtitles?: {
18
+ src: string;
19
+ label: string;
20
+ language: string;
21
+ }[];
22
+ chapters?: {
23
+ time: number;
24
+ title: string;
25
+ }[];
26
+ resolution?: string;
27
+ frameRate?: number;
28
+ license?: string;
29
+ location?: string;
5
30
  }
6
- interface ResponsiveColumns {
7
- mobile?: number;
8
- tablet?: number;
9
- desktop?: number;
31
+ interface ResponsiveConfig {
32
+ xs?: number;
33
+ sm?: number;
34
+ md?: number;
35
+ lg?: number;
36
+ xl?: number;
37
+ "2xl"?: number;
38
+ "3xl"?: number;
10
39
  }
40
+ interface ThemeConfig {
41
+ primary?: string;
42
+ secondary?: string;
43
+ accent?: string;
44
+ background?: string;
45
+ surface?: string;
46
+ text?: string;
47
+ textSecondary?: string;
48
+ textTertiary?: string;
49
+ border?: string;
50
+ shadow?: string;
51
+ hoverShadow?: string;
52
+ gradient?: string;
53
+ borderRadius?: string;
54
+ borderRadiusSmall?: string;
55
+ borderRadiusLarge?: string;
56
+ transitionSpeed?: string;
57
+ transitionEasing?: string;
58
+ fontFamily?: string;
59
+ fontSizeBase?: string;
60
+ fontWeightNormal?: string;
61
+ fontWeightBold?: string;
62
+ spacingUnit?: string;
63
+ backdropBlur?: string;
64
+ overlayOpacity?: string;
65
+ }
66
+ type LayoutType = "grid" | "masonry" | "carousel" | "list" | "mosaic" | "compact" | "highlight";
67
+ type AspectRatio = "16:9" | "4:3" | "1:1" | "3:2" | "21:9" | "auto" | "9:16" | "custom";
68
+ type AnimationType = "fade" | "slide" | "zoom" | "flip" | "none" | "slide-up" | "slide-down";
69
+ type SortOption = "date" | "title" | "views" | "likes" | "duration" | "random" | "trending";
11
70
  interface VideoGalleryProps {
12
- videos: Video[];
13
- columns?: number;
14
- responsiveColumns?: ResponsiveColumns;
15
- gap?: string;
16
- layout?: "grid" | "masonry";
17
- lightbox?: boolean;
71
+ videos: VideoData[];
72
+ layout?: LayoutType;
73
+ columns?: ResponsiveConfig;
74
+ gap?: string | ResponsiveConfig;
75
+ aspectRatio?: AspectRatio;
76
+ theme?: ThemeConfig;
77
+ showThumbnails?: boolean;
78
+ showMetadata?: boolean;
79
+ metadataPosition?: "below" | "overlay" | "hover";
80
+ showControls?: boolean;
81
+ controlsPosition?: "bottom" | "top" | "sides" | "floating";
82
+ showProgress?: boolean;
83
+ showVolume?: boolean;
84
+ showQualityOptions?: boolean;
85
+ showSpeedOptions?: boolean;
18
86
  autoPlay?: boolean;
87
+ autoPlayDelay?: number;
88
+ autoAdvance?: boolean;
89
+ autoAdvanceDelay?: number;
19
90
  loop?: boolean;
20
91
  muted?: boolean;
21
- controls?: boolean;
92
+ preload?: "none" | "metadata" | "auto";
93
+ lazyLoading?: boolean;
94
+ infiniteScroll?: boolean;
95
+ loadMoreThreshold?: number;
96
+ lightbox?: boolean;
97
+ lightboxAnimation?: AnimationType;
98
+ lightboxTransitionSpeed?: number;
99
+ keyboard?: boolean;
100
+ swipeGestures?: boolean;
101
+ title?: string;
102
+ description?: string;
103
+ ariaLabel?: string;
104
+ structured?: boolean;
105
+ search?: boolean;
106
+ searchPlaceholder?: string;
107
+ filter?: boolean;
108
+ sort?: boolean;
109
+ sortOptions?: SortOption[];
110
+ playlist?: boolean;
111
+ fullscreen?: boolean;
112
+ pictureInPicture?: boolean;
113
+ sharing?: boolean;
114
+ download?: boolean;
115
+ favorites?: boolean;
116
+ customLoader?: React.ReactNode;
117
+ customEmptyState?: React.ReactNode;
118
+ customErrorState?: React.ReactNode;
119
+ onVideoClick?: (video: VideoData, index: number) => void;
120
+ onVideoEnd?: (video: VideoData, index: number) => void;
121
+ onVideoPlay?: (video: VideoData, index: number) => void;
122
+ onVideoPause?: (video: VideoData, index: number) => void;
123
+ onVideoLike?: (video: VideoData, liked: boolean) => void;
124
+ onVideoShare?: (video: VideoData) => void;
125
+ onVideoDownload?: (video: VideoData) => void;
126
+ onLayoutChange?: (layout: LayoutType) => void;
127
+ onSearch?: (query: string) => void;
128
+ onFilter?: (category: string) => void;
129
+ onSort?: (sortBy: SortOption) => void;
22
130
  className?: string;
131
+ containerClassName?: string;
132
+ videoItemClassName?: string;
133
+ controlsClassName?: string;
23
134
  }
24
135
  export declare const VideoGallery: React.FC<VideoGalleryProps>;
25
- export {};
136
+ export default VideoGallery;
@@ -2,17 +2,35 @@ import { default as React } from 'react';
2
2
  interface VideoPlayerProps {
3
3
  src: string;
4
4
  poster?: string;
5
+ title?: string;
5
6
  autoPlay?: boolean;
6
7
  loop?: boolean;
7
- controls?: boolean;
8
8
  muted?: boolean;
9
9
  width?: string;
10
10
  height?: string;
11
11
  borderRadius?: string;
12
- backgroundColor?: string;
12
+ theme?: 'dark' | 'light' | 'glass' | 'neon';
13
13
  primaryColor?: string;
14
- padding?: string;
15
14
  className?: string;
15
+ showProgress?: boolean;
16
+ showVolumeSlider?: boolean;
17
+ showSettings?: boolean;
18
+ showDownload?: boolean;
19
+ showShare?: boolean;
20
+ showPiP?: boolean;
21
+ showSubtitles?: boolean;
22
+ showPlaybackSpeed?: boolean;
23
+ showQuality?: boolean;
24
+ previewThumbnails?: boolean;
25
+ customControls?: boolean;
26
+ hideControlsDelay?: number;
27
+ seekStep?: number;
28
+ volumeStep?: number;
29
+ onPlay?: () => void;
30
+ onPause?: () => void;
31
+ onEnded?: () => void;
32
+ onTimeUpdate?: (time: number) => void;
33
+ onVolumeChange?: (volume: number) => void;
16
34
  }
17
35
  export declare const VideoPlayer: React.FC<VideoPlayerProps>;
18
36
  export {};