@dmitriikapustin/ui 0.2.0 → 0.2.6

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/dist/index.d.cts CHANGED
@@ -1,8 +1,8 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import React$1, { ButtonHTMLAttributes, ReactNode, InputHTMLAttributes, ImgHTMLAttributes, TextareaHTMLAttributes, SelectHTMLAttributes, AnchorHTMLAttributes } from 'react';
3
3
 
4
- type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost';
5
- type ButtonSize = 'sm' | 'md';
4
+ type ButtonVariant = 'primary' | 'ghost' | 'secondary' | 'outline';
5
+ type ButtonSize = 'sm' | 'md' | 'hero';
6
6
  interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
7
7
  variant?: ButtonVariant;
8
8
  size?: ButtonSize;
@@ -76,8 +76,10 @@ interface MenuItemProps {
76
76
  active?: boolean;
77
77
  onClick?: () => void;
78
78
  className?: string;
79
+ /** Optional icon rendered before the text label */
80
+ icon?: React.ReactNode;
79
81
  }
80
- declare function MenuItem({ text, active, onClick, className }: MenuItemProps): react_jsx_runtime.JSX.Element;
82
+ declare function MenuItem({ text, active, onClick, className, icon }: MenuItemProps): react_jsx_runtime.JSX.Element;
81
83
 
82
84
  type IconButtonVariant = 'primary' | 'secondary' | 'clear' | 'disabled' | 'contrast';
83
85
  interface IconButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
@@ -173,56 +175,83 @@ interface TicketButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
173
175
  declare function TicketButton({ children, icon, variant, className, ...props }: TicketButtonProps): react_jsx_runtime.JSX.Element;
174
176
 
175
177
  /**
176
- * Iconly Pro Icons
178
+ * Iconly Pro Icons (Light style)
177
179
  * Source: https://iconly.collaboo.co/
178
- * Copy SVG code directly from the icon page into JSX.
179
180
  *
180
- * All icons below are placeholders using IconlyActivity.
181
- * Replace each with the correct Iconly Pro icon SVG.
181
+ * All icons share the same API: { size?, color?, className? }.
182
+ * Style conventions: viewBox="0 0 24 24", stroke=currentColor,
183
+ * strokeWidth=1.5, round line caps and joins.
182
184
  */
183
185
  interface IconProps {
184
186
  size?: number;
185
187
  color?: string;
188
+ className?: string;
189
+ }
190
+ declare const IconlyActivity: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
191
+ declare const IconlyCheck: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
192
+ declare const IconlyStar: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
193
+ declare const IconlyLock: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
194
+ declare const IconlyHeart: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
195
+ declare const IconlyClock: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
196
+ declare const IconlySend: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
197
+ declare const IconlySearch: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
198
+ declare const IconlyMail: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
199
+ declare const IconlyChevronDown: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
200
+ declare const IconlyChevronRight: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
201
+ declare const IconlyChevronLeft: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
202
+ declare const IconlyEye: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
203
+ declare const IconlyEyeOff: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
204
+ declare const IconlyClose: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
205
+ declare const IconlyMenu: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
206
+ declare const IconlyShield: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
207
+ declare const IconlySmile: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
208
+ declare const IconlyAttach: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
209
+ declare const IconlyInfo: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
210
+ declare const IconlySun: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
211
+ declare const IconlyMoon: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
212
+ declare const IconlyRoadmap: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
213
+ declare const IconlyBook: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
214
+ declare const IconlySandbox: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
215
+ declare const IconlyQuote: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
216
+ declare const IconlyInfoCircle: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
217
+ declare const IconlySuccess: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
218
+ declare const IconlyWarning: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
219
+ declare const IconlyError: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
220
+ declare const IconlyLink: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
221
+
222
+ type CardActionVariant = 'primary' | 'ghost' | 'secondary' | 'outline';
223
+ interface CardAction {
224
+ label: string;
225
+ onClick?: () => void;
226
+ href?: string;
227
+ variant?: CardActionVariant;
186
228
  }
187
- declare const IconlyActivity: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
188
- declare const IconlySmile: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
189
- declare const IconlyAttach: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
190
- declare const IconlyInfo: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
191
- declare const IconlySend: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
192
- declare const IconlySearch: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
193
- declare const IconlyMail: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
194
- declare const IconlyLock: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
195
- declare const IconlyStar: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
196
- declare const IconlySun: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
197
- declare const IconlyMoon: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
198
- declare const IconlyRoadmap: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
199
- declare const IconlyBook: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
200
- declare const IconlySandbox: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
201
- declare const IconlyHeart: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
202
- declare const IconlyClose: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
203
- declare const IconlyMenu: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
204
- declare const IconlyCheck: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
205
- declare const IconlyQuote: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
206
- declare const IconlyInfoCircle: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
207
- declare const IconlySuccess: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
208
- declare const IconlyWarning: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
209
- declare const IconlyError: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
210
- declare const IconlyChevronDown: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
211
- declare const IconlyLink: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
212
- declare const IconlyEye: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
213
- declare const IconlyEyeOff: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
214
- declare const IconlyChevronRight: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
215
- declare const IconlyChevronLeft: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
216
-
217
229
  interface CardProps {
218
- image?: string;
230
+ image?: string | ReactNode;
219
231
  title?: string;
220
232
  description?: string;
233
+ badges?: ReactNode[];
234
+ action?: CardAction;
221
235
  footer?: ReactNode;
222
236
  children?: ReactNode;
223
237
  className?: string;
224
238
  }
225
- declare function Card({ image, title, description, footer, children, className }: CardProps): react_jsx_runtime.JSX.Element;
239
+ declare function Card({ image, title, description, badges, action, footer, children, className, }: CardProps): react_jsx_runtime.JSX.Element;
240
+
241
+ interface IconBadgeProps {
242
+ icon: ReactNode;
243
+ className?: string;
244
+ }
245
+ declare function IconBadge({ icon, className }: IconBadgeProps): react_jsx_runtime.JSX.Element;
246
+
247
+ type GalleryVariant = 'grid' | 'masonry';
248
+ interface GalleryProps {
249
+ variant?: GalleryVariant;
250
+ images: string[];
251
+ title?: string;
252
+ className?: string;
253
+ }
254
+ declare function Gallery({ variant, images, title, className, }: GalleryProps): react_jsx_runtime.JSX.Element | null;
226
255
 
227
256
  interface FormFieldProps extends InputHTMLAttributes<HTMLInputElement> {
228
257
  label: string;
@@ -464,13 +493,37 @@ interface FeatureGridProps {
464
493
  declare function FeatureGrid({ features, columns, className }: FeatureGridProps): react_jsx_runtime.JSX.Element;
465
494
 
466
495
  type SidebarType = 'menu' | 'courseSubmenu';
496
+ /** Rich menu item with string ID, label, and optional icon. */
497
+ interface SidebarItem {
498
+ id: string;
499
+ label: string;
500
+ icon?: ReactNode;
501
+ }
467
502
  interface SidebarProps {
468
503
  type?: SidebarType;
469
- menuItems?: string[];
470
- footer?: React.ReactNode;
504
+ /** Plain strings (backward-compat) or rich SidebarItem objects. */
505
+ menuItems?: string[] | SidebarItem[];
506
+ footer?: ReactNode;
471
507
  className?: string;
472
- }
473
- declare function Sidebar({ type, menuItems, footer, className }: SidebarProps): react_jsx_runtime.JSX.Element;
508
+ /** Externally-controlled active item id. When provided, bypasses internal useState. */
509
+ activeId?: string;
510
+ /** Callback when a menu item is clicked. Receives the item id (or index-string for plain strings). */
511
+ onItemClick?: (id: string) => void;
512
+ /** Custom logo rendered above the nav area. */
513
+ logo?: ReactNode;
514
+ /**
515
+ * Legal text at the bottom.
516
+ * - `undefined` → shows default Russian legal text
517
+ * - `null` → hides legal text entirely
518
+ * - `string` → shows the provided text
519
+ */
520
+ legalText?: string | null;
521
+ /** When true, the sidebar is hidden (collapsed off-screen). On mobile (<768px) this is the default state. */
522
+ collapsed?: boolean;
523
+ /** Called when the user requests toggling the sidebar (e.g. clicking the overlay backdrop). */
524
+ onToggle?: () => void;
525
+ }
526
+ declare function Sidebar({ type, menuItems, footer, className, activeId, onItemClick, logo, legalText, collapsed, onToggle, }: SidebarProps): react_jsx_runtime.JSX.Element;
474
527
 
475
528
  type AppCardVariant = 'default' | 'stamp' | 'stamp-padded';
476
529
  interface AppCardProps {
@@ -700,6 +753,24 @@ interface PromoHeroProps {
700
753
  }
701
754
  declare function PromoHero({ title, subtitle, cta, secondaryCta, media, variant, className, }: PromoHeroProps): react_jsx_runtime.JSX.Element;
702
755
 
756
+ type PromoHeroFormVariant = 'light' | 'dark';
757
+ type PromoHeroFormInputType = 'url' | 'text' | 'email';
758
+ interface PromoHeroFormProps {
759
+ title: string | ReactNode;
760
+ subtitle?: string;
761
+ inputPlaceholder?: string;
762
+ inputType?: PromoHeroFormInputType;
763
+ inputAriaLabel?: string;
764
+ buttonLabel: string;
765
+ onSubmit?: (value: string) => void | Promise<void>;
766
+ loading?: boolean;
767
+ error?: string;
768
+ hint?: string;
769
+ variant?: PromoHeroFormVariant;
770
+ className?: string;
771
+ }
772
+ declare function PromoHeroForm({ title, subtitle, inputPlaceholder, inputType, inputAriaLabel, buttonLabel, onSubmit, loading, error, hint, variant: _variant, className, }: PromoHeroFormProps): react_jsx_runtime.JSX.Element;
773
+
703
774
  interface PromoPricingTier {
704
775
  name: string;
705
776
  price: string;
@@ -938,4 +1009,4 @@ interface LandingLayoutProps {
938
1009
  }
939
1010
  declare function LandingLayout({ mode, nav, children, className, }: LandingLayoutProps): react_jsx_runtime.JSX.Element;
940
1011
 
941
- export { Alert, AppCard, AppTopLine, ArticleBarChart, type ArticleBarChartProps, ArticleBody, type ArticleBodyProps, ArticleChatBlock, type ArticleChatBlockProps, ArticleFigure, type ArticleFigureProps, ArticleFooter, type ArticleFooterProps, ArticleHeading, type ArticleHeadingProps, ArticleHero, type ArticleHeroProps, ArticleLayout, type ArticleLayoutProps, ArticleLineChart, type ArticleLineChartProps, ArticleLinkButton, type ArticleLinkButtonProps, ArticleList, type ArticleListProps, ArticleNarrow, ArticleNote, type ArticleNoteProps, ArticleScatterChart, type ArticleScatterChartProps, ArticleTable, type ArticleTableColumn, type ArticleTableProps, type ArticleTableRow, ArticleWide, Avatar, Badge, BentoGrid, Breadcrumbs, Button, CTASection, Card, type ChartSeries, ChatInput, ChatMessage, Checkbox, CodeInput, ComparisonTable, Divider, DropdownMenu, EmptyState, FAQSection, FeatureGrid, Footer, FormField, Header, HeroSection, IconButton, IconWithText, IconlyActivity, IconlyAttach, IconlyBook, IconlyCheck, IconlyChevronDown, IconlyChevronLeft, IconlyChevronRight, IconlyClose, IconlyError, IconlyEye, IconlyEyeOff, IconlyHeart, IconlyInfo, IconlyInfoCircle, IconlyLink, IconlyLock, IconlyMail, IconlyMenu, IconlyMoon, IconlyQuote, IconlyRoadmap, IconlySandbox, IconlySearch, IconlySend, IconlySmile, IconlyStar, IconlySuccess, IconlySun, IconlyWarning, Input, LandingLayout, Logo, LogoCloud, MenuItem, Modal, Pagination, PasswordInput, PricingCard, ProfileNav, PromoActionCards, PromoBento, PromoDevicesCTA, PromoHero, PromoPricing, PromoShowcase, PromoSplit, PromoTestimonials, PromoTrustGrid, Radio, type ScatterPoint, SearchBar, Select, Sidebar, Skeleton, Spinner, StampCard, Stat, StatBadge, StatsBar, Link as StyledLink, Tabs, Tag, TestimonialCard, Textarea, TicketButton, Toast, Toggle, Tooltip, TopPromo };
1012
+ export { Alert, AppCard, AppTopLine, ArticleBarChart, type ArticleBarChartProps, ArticleBody, type ArticleBodyProps, ArticleChatBlock, type ArticleChatBlockProps, ArticleFigure, type ArticleFigureProps, ArticleFooter, type ArticleFooterProps, ArticleHeading, type ArticleHeadingProps, ArticleHero, type ArticleHeroProps, ArticleLayout, type ArticleLayoutProps, ArticleLineChart, type ArticleLineChartProps, ArticleLinkButton, type ArticleLinkButtonProps, ArticleList, type ArticleListProps, ArticleNarrow, ArticleNote, type ArticleNoteProps, ArticleScatterChart, type ArticleScatterChartProps, ArticleTable, type ArticleTableColumn, type ArticleTableProps, type ArticleTableRow, ArticleWide, Avatar, Badge, BentoGrid, Breadcrumbs, Button, CTASection, Card, type ChartSeries, ChatInput, ChatMessage, Checkbox, CodeInput, ComparisonTable, Divider, DropdownMenu, EmptyState, FAQSection, FeatureGrid, Footer, FormField, Gallery, Header, HeroSection, IconBadge, IconButton, IconWithText, IconlyActivity, IconlyAttach, IconlyBook, IconlyCheck, IconlyChevronDown, IconlyChevronLeft, IconlyChevronRight, IconlyClock, IconlyClose, IconlyError, IconlyEye, IconlyEyeOff, IconlyHeart, IconlyInfo, IconlyInfoCircle, IconlyLink, IconlyLock, IconlyMail, IconlyMenu, IconlyMoon, IconlyQuote, IconlyRoadmap, IconlySandbox, IconlySearch, IconlySend, IconlyShield, IconlySmile, IconlyStar, IconlySuccess, IconlySun, IconlyWarning, Input, LandingLayout, Logo, LogoCloud, MenuItem, Modal, Pagination, PasswordInput, PricingCard, ProfileNav, PromoActionCards, PromoBento, PromoDevicesCTA, PromoHero, PromoHeroForm, PromoPricing, PromoShowcase, PromoSplit, PromoTestimonials, PromoTrustGrid, Radio, type ScatterPoint, SearchBar, Select, Sidebar, type SidebarItem, Skeleton, Spinner, StampCard, Stat, StatBadge, StatsBar, Link as StyledLink, Tabs, Tag, TestimonialCard, Textarea, TicketButton, Toast, Toggle, Tooltip, TopPromo };
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import React$1, { ButtonHTMLAttributes, ReactNode, InputHTMLAttributes, ImgHTMLAttributes, TextareaHTMLAttributes, SelectHTMLAttributes, AnchorHTMLAttributes } from 'react';
3
3
 
4
- type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost';
5
- type ButtonSize = 'sm' | 'md';
4
+ type ButtonVariant = 'primary' | 'ghost' | 'secondary' | 'outline';
5
+ type ButtonSize = 'sm' | 'md' | 'hero';
6
6
  interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
7
7
  variant?: ButtonVariant;
8
8
  size?: ButtonSize;
@@ -76,8 +76,10 @@ interface MenuItemProps {
76
76
  active?: boolean;
77
77
  onClick?: () => void;
78
78
  className?: string;
79
+ /** Optional icon rendered before the text label */
80
+ icon?: React.ReactNode;
79
81
  }
80
- declare function MenuItem({ text, active, onClick, className }: MenuItemProps): react_jsx_runtime.JSX.Element;
82
+ declare function MenuItem({ text, active, onClick, className, icon }: MenuItemProps): react_jsx_runtime.JSX.Element;
81
83
 
82
84
  type IconButtonVariant = 'primary' | 'secondary' | 'clear' | 'disabled' | 'contrast';
83
85
  interface IconButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
@@ -173,56 +175,83 @@ interface TicketButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
173
175
  declare function TicketButton({ children, icon, variant, className, ...props }: TicketButtonProps): react_jsx_runtime.JSX.Element;
174
176
 
175
177
  /**
176
- * Iconly Pro Icons
178
+ * Iconly Pro Icons (Light style)
177
179
  * Source: https://iconly.collaboo.co/
178
- * Copy SVG code directly from the icon page into JSX.
179
180
  *
180
- * All icons below are placeholders using IconlyActivity.
181
- * Replace each with the correct Iconly Pro icon SVG.
181
+ * All icons share the same API: { size?, color?, className? }.
182
+ * Style conventions: viewBox="0 0 24 24", stroke=currentColor,
183
+ * strokeWidth=1.5, round line caps and joins.
182
184
  */
183
185
  interface IconProps {
184
186
  size?: number;
185
187
  color?: string;
188
+ className?: string;
189
+ }
190
+ declare const IconlyActivity: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
191
+ declare const IconlyCheck: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
192
+ declare const IconlyStar: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
193
+ declare const IconlyLock: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
194
+ declare const IconlyHeart: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
195
+ declare const IconlyClock: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
196
+ declare const IconlySend: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
197
+ declare const IconlySearch: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
198
+ declare const IconlyMail: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
199
+ declare const IconlyChevronDown: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
200
+ declare const IconlyChevronRight: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
201
+ declare const IconlyChevronLeft: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
202
+ declare const IconlyEye: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
203
+ declare const IconlyEyeOff: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
204
+ declare const IconlyClose: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
205
+ declare const IconlyMenu: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
206
+ declare const IconlyShield: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
207
+ declare const IconlySmile: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
208
+ declare const IconlyAttach: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
209
+ declare const IconlyInfo: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
210
+ declare const IconlySun: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
211
+ declare const IconlyMoon: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
212
+ declare const IconlyRoadmap: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
213
+ declare const IconlyBook: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
214
+ declare const IconlySandbox: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
215
+ declare const IconlyQuote: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
216
+ declare const IconlyInfoCircle: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
217
+ declare const IconlySuccess: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
218
+ declare const IconlyWarning: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
219
+ declare const IconlyError: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
220
+ declare const IconlyLink: ({ size, color, className }: IconProps) => react_jsx_runtime.JSX.Element;
221
+
222
+ type CardActionVariant = 'primary' | 'ghost' | 'secondary' | 'outline';
223
+ interface CardAction {
224
+ label: string;
225
+ onClick?: () => void;
226
+ href?: string;
227
+ variant?: CardActionVariant;
186
228
  }
187
- declare const IconlyActivity: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
188
- declare const IconlySmile: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
189
- declare const IconlyAttach: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
190
- declare const IconlyInfo: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
191
- declare const IconlySend: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
192
- declare const IconlySearch: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
193
- declare const IconlyMail: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
194
- declare const IconlyLock: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
195
- declare const IconlyStar: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
196
- declare const IconlySun: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
197
- declare const IconlyMoon: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
198
- declare const IconlyRoadmap: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
199
- declare const IconlyBook: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
200
- declare const IconlySandbox: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
201
- declare const IconlyHeart: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
202
- declare const IconlyClose: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
203
- declare const IconlyMenu: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
204
- declare const IconlyCheck: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
205
- declare const IconlyQuote: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
206
- declare const IconlyInfoCircle: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
207
- declare const IconlySuccess: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
208
- declare const IconlyWarning: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
209
- declare const IconlyError: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
210
- declare const IconlyChevronDown: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
211
- declare const IconlyLink: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
212
- declare const IconlyEye: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
213
- declare const IconlyEyeOff: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
214
- declare const IconlyChevronRight: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
215
- declare const IconlyChevronLeft: ({ size, color }: IconProps) => react_jsx_runtime.JSX.Element;
216
-
217
229
  interface CardProps {
218
- image?: string;
230
+ image?: string | ReactNode;
219
231
  title?: string;
220
232
  description?: string;
233
+ badges?: ReactNode[];
234
+ action?: CardAction;
221
235
  footer?: ReactNode;
222
236
  children?: ReactNode;
223
237
  className?: string;
224
238
  }
225
- declare function Card({ image, title, description, footer, children, className }: CardProps): react_jsx_runtime.JSX.Element;
239
+ declare function Card({ image, title, description, badges, action, footer, children, className, }: CardProps): react_jsx_runtime.JSX.Element;
240
+
241
+ interface IconBadgeProps {
242
+ icon: ReactNode;
243
+ className?: string;
244
+ }
245
+ declare function IconBadge({ icon, className }: IconBadgeProps): react_jsx_runtime.JSX.Element;
246
+
247
+ type GalleryVariant = 'grid' | 'masonry';
248
+ interface GalleryProps {
249
+ variant?: GalleryVariant;
250
+ images: string[];
251
+ title?: string;
252
+ className?: string;
253
+ }
254
+ declare function Gallery({ variant, images, title, className, }: GalleryProps): react_jsx_runtime.JSX.Element | null;
226
255
 
227
256
  interface FormFieldProps extends InputHTMLAttributes<HTMLInputElement> {
228
257
  label: string;
@@ -464,13 +493,37 @@ interface FeatureGridProps {
464
493
  declare function FeatureGrid({ features, columns, className }: FeatureGridProps): react_jsx_runtime.JSX.Element;
465
494
 
466
495
  type SidebarType = 'menu' | 'courseSubmenu';
496
+ /** Rich menu item with string ID, label, and optional icon. */
497
+ interface SidebarItem {
498
+ id: string;
499
+ label: string;
500
+ icon?: ReactNode;
501
+ }
467
502
  interface SidebarProps {
468
503
  type?: SidebarType;
469
- menuItems?: string[];
470
- footer?: React.ReactNode;
504
+ /** Plain strings (backward-compat) or rich SidebarItem objects. */
505
+ menuItems?: string[] | SidebarItem[];
506
+ footer?: ReactNode;
471
507
  className?: string;
472
- }
473
- declare function Sidebar({ type, menuItems, footer, className }: SidebarProps): react_jsx_runtime.JSX.Element;
508
+ /** Externally-controlled active item id. When provided, bypasses internal useState. */
509
+ activeId?: string;
510
+ /** Callback when a menu item is clicked. Receives the item id (or index-string for plain strings). */
511
+ onItemClick?: (id: string) => void;
512
+ /** Custom logo rendered above the nav area. */
513
+ logo?: ReactNode;
514
+ /**
515
+ * Legal text at the bottom.
516
+ * - `undefined` → shows default Russian legal text
517
+ * - `null` → hides legal text entirely
518
+ * - `string` → shows the provided text
519
+ */
520
+ legalText?: string | null;
521
+ /** When true, the sidebar is hidden (collapsed off-screen). On mobile (<768px) this is the default state. */
522
+ collapsed?: boolean;
523
+ /** Called when the user requests toggling the sidebar (e.g. clicking the overlay backdrop). */
524
+ onToggle?: () => void;
525
+ }
526
+ declare function Sidebar({ type, menuItems, footer, className, activeId, onItemClick, logo, legalText, collapsed, onToggle, }: SidebarProps): react_jsx_runtime.JSX.Element;
474
527
 
475
528
  type AppCardVariant = 'default' | 'stamp' | 'stamp-padded';
476
529
  interface AppCardProps {
@@ -700,6 +753,24 @@ interface PromoHeroProps {
700
753
  }
701
754
  declare function PromoHero({ title, subtitle, cta, secondaryCta, media, variant, className, }: PromoHeroProps): react_jsx_runtime.JSX.Element;
702
755
 
756
+ type PromoHeroFormVariant = 'light' | 'dark';
757
+ type PromoHeroFormInputType = 'url' | 'text' | 'email';
758
+ interface PromoHeroFormProps {
759
+ title: string | ReactNode;
760
+ subtitle?: string;
761
+ inputPlaceholder?: string;
762
+ inputType?: PromoHeroFormInputType;
763
+ inputAriaLabel?: string;
764
+ buttonLabel: string;
765
+ onSubmit?: (value: string) => void | Promise<void>;
766
+ loading?: boolean;
767
+ error?: string;
768
+ hint?: string;
769
+ variant?: PromoHeroFormVariant;
770
+ className?: string;
771
+ }
772
+ declare function PromoHeroForm({ title, subtitle, inputPlaceholder, inputType, inputAriaLabel, buttonLabel, onSubmit, loading, error, hint, variant: _variant, className, }: PromoHeroFormProps): react_jsx_runtime.JSX.Element;
773
+
703
774
  interface PromoPricingTier {
704
775
  name: string;
705
776
  price: string;
@@ -938,4 +1009,4 @@ interface LandingLayoutProps {
938
1009
  }
939
1010
  declare function LandingLayout({ mode, nav, children, className, }: LandingLayoutProps): react_jsx_runtime.JSX.Element;
940
1011
 
941
- export { Alert, AppCard, AppTopLine, ArticleBarChart, type ArticleBarChartProps, ArticleBody, type ArticleBodyProps, ArticleChatBlock, type ArticleChatBlockProps, ArticleFigure, type ArticleFigureProps, ArticleFooter, type ArticleFooterProps, ArticleHeading, type ArticleHeadingProps, ArticleHero, type ArticleHeroProps, ArticleLayout, type ArticleLayoutProps, ArticleLineChart, type ArticleLineChartProps, ArticleLinkButton, type ArticleLinkButtonProps, ArticleList, type ArticleListProps, ArticleNarrow, ArticleNote, type ArticleNoteProps, ArticleScatterChart, type ArticleScatterChartProps, ArticleTable, type ArticleTableColumn, type ArticleTableProps, type ArticleTableRow, ArticleWide, Avatar, Badge, BentoGrid, Breadcrumbs, Button, CTASection, Card, type ChartSeries, ChatInput, ChatMessage, Checkbox, CodeInput, ComparisonTable, Divider, DropdownMenu, EmptyState, FAQSection, FeatureGrid, Footer, FormField, Header, HeroSection, IconButton, IconWithText, IconlyActivity, IconlyAttach, IconlyBook, IconlyCheck, IconlyChevronDown, IconlyChevronLeft, IconlyChevronRight, IconlyClose, IconlyError, IconlyEye, IconlyEyeOff, IconlyHeart, IconlyInfo, IconlyInfoCircle, IconlyLink, IconlyLock, IconlyMail, IconlyMenu, IconlyMoon, IconlyQuote, IconlyRoadmap, IconlySandbox, IconlySearch, IconlySend, IconlySmile, IconlyStar, IconlySuccess, IconlySun, IconlyWarning, Input, LandingLayout, Logo, LogoCloud, MenuItem, Modal, Pagination, PasswordInput, PricingCard, ProfileNav, PromoActionCards, PromoBento, PromoDevicesCTA, PromoHero, PromoPricing, PromoShowcase, PromoSplit, PromoTestimonials, PromoTrustGrid, Radio, type ScatterPoint, SearchBar, Select, Sidebar, Skeleton, Spinner, StampCard, Stat, StatBadge, StatsBar, Link as StyledLink, Tabs, Tag, TestimonialCard, Textarea, TicketButton, Toast, Toggle, Tooltip, TopPromo };
1012
+ export { Alert, AppCard, AppTopLine, ArticleBarChart, type ArticleBarChartProps, ArticleBody, type ArticleBodyProps, ArticleChatBlock, type ArticleChatBlockProps, ArticleFigure, type ArticleFigureProps, ArticleFooter, type ArticleFooterProps, ArticleHeading, type ArticleHeadingProps, ArticleHero, type ArticleHeroProps, ArticleLayout, type ArticleLayoutProps, ArticleLineChart, type ArticleLineChartProps, ArticleLinkButton, type ArticleLinkButtonProps, ArticleList, type ArticleListProps, ArticleNarrow, ArticleNote, type ArticleNoteProps, ArticleScatterChart, type ArticleScatterChartProps, ArticleTable, type ArticleTableColumn, type ArticleTableProps, type ArticleTableRow, ArticleWide, Avatar, Badge, BentoGrid, Breadcrumbs, Button, CTASection, Card, type ChartSeries, ChatInput, ChatMessage, Checkbox, CodeInput, ComparisonTable, Divider, DropdownMenu, EmptyState, FAQSection, FeatureGrid, Footer, FormField, Gallery, Header, HeroSection, IconBadge, IconButton, IconWithText, IconlyActivity, IconlyAttach, IconlyBook, IconlyCheck, IconlyChevronDown, IconlyChevronLeft, IconlyChevronRight, IconlyClock, IconlyClose, IconlyError, IconlyEye, IconlyEyeOff, IconlyHeart, IconlyInfo, IconlyInfoCircle, IconlyLink, IconlyLock, IconlyMail, IconlyMenu, IconlyMoon, IconlyQuote, IconlyRoadmap, IconlySandbox, IconlySearch, IconlySend, IconlyShield, IconlySmile, IconlyStar, IconlySuccess, IconlySun, IconlyWarning, Input, LandingLayout, Logo, LogoCloud, MenuItem, Modal, Pagination, PasswordInput, PricingCard, ProfileNav, PromoActionCards, PromoBento, PromoDevicesCTA, PromoHero, PromoHeroForm, PromoPricing, PromoShowcase, PromoSplit, PromoTestimonials, PromoTrustGrid, Radio, type ScatterPoint, SearchBar, Select, Sidebar, type SidebarItem, Skeleton, Spinner, StampCard, Stat, StatBadge, StatsBar, Link as StyledLink, Tabs, Tag, TestimonialCard, Textarea, TicketButton, Toast, Toggle, Tooltip, TopPromo };