@aspect-ops/exon-ui 0.3.0 → 0.4.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 (37) hide show
  1. package/README.md +0 -45
  2. package/dist/components/BottomNav/BottomNavItem.svelte +4 -3
  3. package/dist/components/BottomNav/BottomNavItem.svelte.d.ts +2 -1
  4. package/dist/components/DoughnutChart/DoughnutChart.svelte +4 -4
  5. package/dist/components/FlexibleGrid/FlexibleGrid.svelte +118 -0
  6. package/dist/components/FlexibleGrid/FlexibleGrid.svelte.d.ts +7 -0
  7. package/dist/components/FlexibleGrid/README.md +212 -0
  8. package/dist/components/FlexibleGrid/index.d.ts +2 -0
  9. package/dist/components/FlexibleGrid/index.js +1 -0
  10. package/dist/components/GlobalHeader/GlobalHeader.svelte +201 -87
  11. package/dist/components/HeroLeftAligned/HeroLeftAligned.svelte +182 -0
  12. package/dist/components/HeroLeftAligned/HeroLeftAligned.svelte.d.ts +8 -0
  13. package/dist/components/HeroLeftAligned/README.md +168 -0
  14. package/dist/components/HeroLeftAligned/index.d.ts +2 -0
  15. package/dist/components/HeroLeftAligned/index.js +1 -0
  16. package/dist/components/IconFeatureCard/IconFeatureCard.svelte +173 -0
  17. package/dist/components/IconFeatureCard/IconFeatureCard.svelte.d.ts +4 -0
  18. package/dist/components/IconFeatureCard/README.md +234 -0
  19. package/dist/components/IconFeatureCard/index.d.ts +2 -0
  20. package/dist/components/IconFeatureCard/index.js +1 -0
  21. package/dist/components/ImageTextCard/ImageTextCard.svelte +149 -0
  22. package/dist/components/ImageTextCard/ImageTextCard.svelte.d.ts +22 -0
  23. package/dist/components/ImageTextCard/README.md +177 -0
  24. package/dist/components/ImageTextCard/index.d.ts +2 -0
  25. package/dist/components/ImageTextCard/index.js +1 -0
  26. package/dist/components/Sidebar/SidebarGroup.svelte +1 -4
  27. package/dist/index.d.ts +7 -1
  28. package/dist/index.js +4 -1
  29. package/dist/types/index.d.ts +49 -1
  30. package/dist/types/layout.d.ts +20 -0
  31. package/dist/types/navigation.d.ts +2 -1
  32. package/package.json +9 -2
  33. package/dist/components/Mermaid/Mermaid.svelte +0 -320
  34. package/dist/components/Mermaid/Mermaid.svelte.d.ts +0 -38
  35. package/dist/components/Mermaid/index.d.ts +0 -1
  36. package/dist/components/Mermaid/index.js +0 -1
  37. package/dist/components/Mermaid/mermaid.d.ts +0 -21
@@ -0,0 +1,149 @@
1
+ <script lang="ts">
2
+ interface ImageTextCardProps {
3
+ image: string;
4
+ imageAlt?: string;
5
+ title: string;
6
+ description: string;
7
+ bgColor?: string;
8
+ textColor?: string;
9
+ titleColor?: string;
10
+ descColor?: string;
11
+ imageSize?: string;
12
+ imageShape?: 'circle' | 'square' | 'rounded';
13
+ reverseLayout?: boolean;
14
+ cardHeight?: string;
15
+ padding?: string;
16
+ gap?: string;
17
+ titleFontSize?: string;
18
+ descFontSize?: string;
19
+ class?: string;
20
+ }
21
+
22
+ let {
23
+ image,
24
+ imageAlt = '',
25
+ title,
26
+ description,
27
+ bgColor = '#B85C5C',
28
+ textColor = 'white',
29
+ titleColor,
30
+ descColor,
31
+ imageSize = '140px',
32
+ imageShape = 'circle',
33
+ reverseLayout = false,
34
+ cardHeight = 'auto',
35
+ padding = '3rem 4rem',
36
+ gap = '2.5rem',
37
+ titleFontSize = '2.25rem',
38
+ descFontSize = '1.25rem',
39
+ class: className = ''
40
+ }: ImageTextCardProps = $props();
41
+
42
+ const finalTitleColor = $derived(titleColor || textColor);
43
+ const finalDescColor = $derived(descColor || textColor);
44
+ </script>
45
+
46
+ <div
47
+ class="image-text-card {className}"
48
+ class:reverse={reverseLayout}
49
+ style="
50
+ background-color: {bgColor};
51
+ height: {cardHeight};
52
+ padding: {padding};
53
+ gap: {gap};
54
+ color: {textColor};
55
+ "
56
+ >
57
+ <div class="image-container" style="width: {imageSize}; height: {imageSize};">
58
+ <img
59
+ src={image}
60
+ alt={imageAlt}
61
+ class="card-image"
62
+ class:circle={imageShape === 'circle'}
63
+ class:rounded={imageShape === 'rounded'}
64
+ class:square={imageShape === 'square'}
65
+ />
66
+ </div>
67
+
68
+ <div class="text-content">
69
+ <h3 class="card-title" style="color: {finalTitleColor}; font-size: {titleFontSize};">
70
+ {title}
71
+ </h3>
72
+ <p class="card-description" style="color: {finalDescColor}; font-size: {descFontSize};">
73
+ {description}
74
+ </p>
75
+ </div>
76
+ </div>
77
+
78
+ <style>
79
+ .image-text-card {
80
+ display: flex;
81
+ align-items: center;
82
+ border-radius: 1.75rem;
83
+ transition: all 0.3s ease;
84
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
85
+ font-family: inherit;
86
+ }
87
+
88
+ .image-text-card:hover {
89
+ transform: translateY(-2px);
90
+ box-shadow: 0 8px 12px rgba(0, 0, 0, 0.15);
91
+ }
92
+
93
+ .image-text-card.reverse {
94
+ flex-direction: row-reverse;
95
+ }
96
+
97
+ .image-container {
98
+ flex-shrink: 0;
99
+ }
100
+
101
+ .card-image {
102
+ width: 100%;
103
+ height: 100%;
104
+ object-fit: cover;
105
+ }
106
+
107
+ .card-image.circle {
108
+ border-radius: 50%;
109
+ }
110
+
111
+ .card-image.rounded {
112
+ border-radius: 1rem;
113
+ }
114
+
115
+ .card-image.square {
116
+ border-radius: 0;
117
+ }
118
+
119
+ .text-content {
120
+ flex: 1;
121
+ min-width: 0;
122
+ }
123
+
124
+ .card-title {
125
+ margin: 0 0 1rem 0;
126
+ font-weight: 700;
127
+ line-height: 1.2;
128
+ }
129
+
130
+ .card-description {
131
+ margin: 0;
132
+ line-height: 1.7;
133
+ font-weight: 400;
134
+ }
135
+
136
+ /* Mobile: Stack vertically on tablets and below */
137
+ @media (max-width: 768px) {
138
+ .image-text-card {
139
+ flex-direction: column;
140
+ text-align: center;
141
+ gap: 2rem !important;
142
+ padding: 2rem !important;
143
+ }
144
+
145
+ .image-text-card.reverse {
146
+ flex-direction: column;
147
+ }
148
+ }
149
+ </style>
@@ -0,0 +1,22 @@
1
+ interface ImageTextCardProps {
2
+ image: string;
3
+ imageAlt?: string;
4
+ title: string;
5
+ description: string;
6
+ bgColor?: string;
7
+ textColor?: string;
8
+ titleColor?: string;
9
+ descColor?: string;
10
+ imageSize?: string;
11
+ imageShape?: 'circle' | 'square' | 'rounded';
12
+ reverseLayout?: boolean;
13
+ cardHeight?: string;
14
+ padding?: string;
15
+ gap?: string;
16
+ titleFontSize?: string;
17
+ descFontSize?: string;
18
+ class?: string;
19
+ }
20
+ declare const ImageTextCard: import("svelte").Component<ImageTextCardProps, {}, "">;
21
+ type ImageTextCard = ReturnType<typeof ImageTextCard>;
22
+ export default ImageTextCard;
@@ -0,0 +1,177 @@
1
+ # ImageTextCard
2
+
3
+ A horizontal card component featuring an icon/image on the left and title/description text on the right, all on a colored background. Perfect for showcasing features, services, or benefits with visual icons.
4
+
5
+ ## Features
6
+
7
+ - Horizontal layout with icon and text content
8
+ - Three image shape options (circle, square, rounded)
9
+ - Reverse layout support (image on right)
10
+ - Fully customizable colors and sizing
11
+ - Responsive design (stacks vertically on mobile)
12
+ - Hover effects with smooth transitions
13
+ - Accessibility support
14
+
15
+ ## Usage
16
+
17
+ ### Basic Example
18
+
19
+ ```svelte
20
+ <script>
21
+ import { ImageTextCard } from '@aspect-ops/exon-ui';
22
+ </script>
23
+
24
+ <ImageTextCard
25
+ image="/icon-process.svg"
26
+ imageAlt="Process icon"
27
+ title="Process Harmonization"
28
+ description="Align processes across your organization for improved efficiency and consistency."
29
+ bgColor="#B85C5C"
30
+ />
31
+ ```
32
+
33
+ ### With Custom Colors
34
+
35
+ ```svelte
36
+ <ImageTextCard
37
+ image="/icon-digital.svg"
38
+ imageAlt="Digital transformation icon"
39
+ title="Digital Transformation"
40
+ description="Drive seamless digital transformation with expert solutions and strategic guidance."
41
+ bgColor="#3B5998"
42
+ textColor="white"
43
+ />
44
+ ```
45
+
46
+ ### Rounded Image
47
+
48
+ ```svelte
49
+ <ImageTextCard
50
+ image="/product-photo.jpg"
51
+ imageAlt="Product"
52
+ title="Our Product"
53
+ description="Discover the features that make our product stand out."
54
+ imageShape="rounded"
55
+ bgColor="#10B981"
56
+ />
57
+ ```
58
+
59
+ ### Reverse Layout
60
+
61
+ ```svelte
62
+ <ImageTextCard
63
+ image="/icon-support.svg"
64
+ imageAlt="Support icon"
65
+ title="24/7 Support"
66
+ description="Get help whenever you need it with our round-the-clock support team."
67
+ reverseLayout={true}
68
+ bgColor="#6366F1"
69
+ />
70
+ ```
71
+
72
+ ## Props
73
+
74
+ | Prop | Type | Default | Description |
75
+ | --------------- | ----------------------------------- | ------------- | --------------------------------------- |
76
+ | `image` | `string` | **required** | Image URL or path |
77
+ | `imageAlt` | `string` | `''` | Alt text for accessibility |
78
+ | `title` | `string` | **required** | Card title |
79
+ | `description` | `string` | **required** | Card description text |
80
+ | `bgColor` | `string` | `'#B85C5C'` | Background color |
81
+ | `textColor` | `string` | `'white'` | Default text color |
82
+ | `titleColor` | `string` | `undefined` | Title color (overrides textColor) |
83
+ | `descColor` | `string` | `undefined` | Description color (overrides textColor) |
84
+ | `imageSize` | `string` | `'140px'` | Size of the image (width and height) |
85
+ | `imageShape` | `'circle' \| 'square' \| 'rounded'` | `'circle'` | Image shape style |
86
+ | `reverseLayout` | `boolean` | `false` | Flip image and text positions |
87
+ | `cardHeight` | `string` | `'auto'` | Card height |
88
+ | `padding` | `string` | `'3rem 4rem'` | Card padding |
89
+ | `gap` | `string` | `'2.5rem'` | Gap between image and text |
90
+ | `titleFontSize` | `string` | `'2.25rem'` | Title font size |
91
+ | `descFontSize` | `string` | `'1.25rem'` | Description font size |
92
+ | `class` | `string` | `''` | Additional CSS classes |
93
+
94
+ ## Styling
95
+
96
+ The component uses inline styles for theming but also responds to the parent's font-family.
97
+
98
+ ### Hover Effect
99
+
100
+ The card has a built-in hover effect that lifts the card slightly and enhances the shadow:
101
+
102
+ - Transform: `translateY(-2px)`
103
+ - Shadow increases from `0 4px 6px` to `0 8px 12px`
104
+
105
+ ## Accessibility
106
+
107
+ - Image `alt` text supported via `imageAlt` prop
108
+ - Semantic HTML with `<h3>` for title and `<p>` for description
109
+ - Sufficient color contrast (white text on colored backgrounds)
110
+ - Inherits font-family for consistent typography
111
+
112
+ ## Responsive Design
113
+
114
+ - **Desktop (769px+):** Horizontal layout with image on left/right
115
+ - **Tablet & Mobile (≤768px):** Stacks vertically with centered text
116
+ - **Mobile adjustments:** Reduced padding (2rem) and gap (2rem)
117
+
118
+ ## Examples
119
+
120
+ ### Feature Showcase
121
+
122
+ ```svelte
123
+ <div class="features-grid">
124
+ <ImageTextCard
125
+ image="/icons/speed.svg"
126
+ imageAlt="Speed icon"
127
+ title="Lightning Fast"
128
+ description="Optimized performance for the best user experience."
129
+ bgColor="#EF4444"
130
+ />
131
+ <ImageTextCard
132
+ image="/icons/secure.svg"
133
+ imageAlt="Security icon"
134
+ title="Secure by Default"
135
+ description="Built-in security features to protect your data."
136
+ bgColor="#3B82F6"
137
+ />
138
+ <ImageTextCard
139
+ image="/icons/scalable.svg"
140
+ imageAlt="Scalability icon"
141
+ title="Infinitely Scalable"
142
+ description="Grows with your business, from startup to enterprise."
143
+ bgColor="#10B981"
144
+ />
145
+ </div>
146
+ ```
147
+
148
+ ### Service Cards
149
+
150
+ ```svelte
151
+ <ImageTextCard
152
+ image="/services/consulting.jpg"
153
+ imageAlt="Consulting"
154
+ title="Expert Consulting"
155
+ description="Get personalized guidance from our team of industry experts."
156
+ imageShape="rounded"
157
+ bgColor="#8B5CF6"
158
+ imageSize="140px"
159
+ padding="2.5rem"
160
+ />
161
+ ```
162
+
163
+ ### Custom Typography
164
+
165
+ ```svelte
166
+ <ImageTextCard
167
+ image="/icon-analytics.svg"
168
+ imageAlt="Analytics icon"
169
+ title="Data Analytics"
170
+ description="Transform raw data into actionable insights with our advanced analytics platform."
171
+ bgColor="#059669"
172
+ titleFontSize="2rem"
173
+ descFontSize="1.25rem"
174
+ titleColor="#F0FDF4"
175
+ descColor="#D1FAE5"
176
+ />
177
+ ```
@@ -0,0 +1,2 @@
1
+ export { default as ImageTextCard } from './ImageTextCard.svelte';
2
+ export type { ImageTextCardProps } from '../../types/index.js';
@@ -0,0 +1 @@
1
+ export { default as ImageTextCard } from './ImageTextCard.svelte';
@@ -13,10 +13,7 @@
13
13
  children
14
14
  }: Props = $props();
15
15
 
16
- let collapsed = $state<boolean>();
17
- $effect(() => {
18
- collapsed = defaultCollapsed;
19
- });
16
+ let collapsed = $state<boolean>(() => defaultCollapsed);
20
17
 
21
18
  function toggleCollapse() {
22
19
  if (collapsible) {
package/dist/index.d.ts CHANGED
@@ -68,9 +68,14 @@ export { Image } from './components/Image/index.js';
68
68
  export { StatusBadge } from './components/StatusBadge/index.js';
69
69
  export { StatsCard } from './components/StatsCard/index.js';
70
70
  export { DataTable } from './components/DataTable/index.js';
71
+ export { ImageTextCard } from './components/ImageTextCard/index.js';
72
+ export type { ImageTextCardProps } from './components/ImageTextCard/index.js';
73
+ export { IconFeatureCard } from './components/IconFeatureCard/index.js';
74
+ export type { IconFeatureCardProps } from './components/IconFeatureCard/index.js';
71
75
  export { Container } from './components/Container/index.js';
72
76
  export { Grid } from './components/Grid/index.js';
73
77
  export { GridItem } from './components/Grid/index.js';
78
+ export { FlexibleGrid } from './components/FlexibleGrid/index.js';
74
79
  export { Stack } from './components/Stack/index.js';
75
80
  export { Divider } from './components/Divider/index.js';
76
81
  export { Spacer } from './components/Spacer/index.js';
@@ -87,12 +92,13 @@ export { Chatbot, ChatMessage } from './components/Chatbot/index.js';
87
92
  export type { ChatMessage as ChatMessageType, MessageRole, LeadData, ChatbotProps } from './components/Chatbot/types.js';
88
93
  export { ContactForm } from './components/ContactForm/index.js';
89
94
  export { ViewCounter } from './components/ViewCounter/index.js';
90
- export { Mermaid } from './components/Mermaid/index.js';
91
95
  export { DoughnutChart } from './components/DoughnutChart/index.js';
92
96
  export { TestimonialCard } from './components/TestimonialCard/index.js';
93
97
  export type { TestimonialCardProps } from './components/TestimonialCard/index.js';
94
98
  export { Hero } from './components/Hero/index.js';
95
99
  export type { HeroProps } from './components/Hero/index.js';
100
+ export { HeroLeftAligned } from './components/HeroLeftAligned/index.js';
101
+ export type { HeroLeftAlignedProps } from './components/HeroLeftAligned/index.js';
96
102
  export { GlobalHeader } from './components/GlobalHeader/index.js';
97
103
  export type { GlobalHeaderProps, NavItem as GlobalHeaderNavItem } from './components/GlobalHeader/index.js';
98
104
  export { CTASection } from './components/CTASection/index.js';
package/dist/index.js CHANGED
@@ -75,10 +75,13 @@ export { Image } from './components/Image/index.js';
75
75
  export { StatusBadge } from './components/StatusBadge/index.js';
76
76
  export { StatsCard } from './components/StatsCard/index.js';
77
77
  export { DataTable } from './components/DataTable/index.js';
78
+ export { ImageTextCard } from './components/ImageTextCard/index.js';
79
+ export { IconFeatureCard } from './components/IconFeatureCard/index.js';
78
80
  // Layout Components
79
81
  export { Container } from './components/Container/index.js';
80
82
  export { Grid } from './components/Grid/index.js';
81
83
  export { GridItem } from './components/Grid/index.js';
84
+ export { FlexibleGrid } from './components/FlexibleGrid/index.js';
82
85
  export { Stack } from './components/Stack/index.js';
83
86
  export { Divider } from './components/Divider/index.js';
84
87
  export { Spacer } from './components/Spacer/index.js';
@@ -96,11 +99,11 @@ export { FAB, FABGroup } from './components/FAB/index.js';
96
99
  export { Chatbot, ChatMessage } from './components/Chatbot/index.js';
97
100
  export { ContactForm } from './components/ContactForm/index.js';
98
101
  export { ViewCounter } from './components/ViewCounter/index.js';
99
- export { Mermaid } from './components/Mermaid/index.js';
100
102
  export { DoughnutChart } from './components/DoughnutChart/index.js';
101
103
  // Section Components (Website Sections)
102
104
  export { TestimonialCard } from './components/TestimonialCard/index.js';
103
105
  export { Hero } from './components/Hero/index.js';
106
+ export { HeroLeftAligned } from './components/HeroLeftAligned/index.js';
104
107
  export { GlobalHeader } from './components/GlobalHeader/index.js';
105
108
  export { CTASection } from './components/CTASection/index.js';
106
109
  export { LogoCloud } from './components/LogoCloud/index.js';
@@ -129,6 +129,54 @@ export interface SwitchProps {
129
129
  export type { TabsOrientation, TabsProps, TabListProps, TabTriggerProps, TabContentProps, MenuProps, MenuTriggerProps, MenuContentProps, MenuItemProps, MenuSeparatorProps, MenuSubProps, MenuSubTriggerProps, MenuSubContentProps, BreadcrumbItemData, BreadcrumbsProps, BreadcrumbItemProps, BottomNavItemData, BottomNavProps, BottomNavItemProps, NavItemProps, NavbarProps, SidebarItemData, SidebarProps, SidebarItemProps, SidebarGroupProps, StepperOrientation, StepperProps, StepperStepProps } from './navigation.js';
130
130
  export type { AlertVariant, AlertProps, ToastVariant, ToastPosition, ToastData, ToastProps, ToastContainerProps, ModalSize, ModalProps, ModalHeaderProps, ModalBodyProps, ModalFooterProps, ProgressSize, ProgressBarProps, ProgressCircleProps, SpinnerProps, TooltipSide, TooltipProps, PopoverSide, PopoverProps, PopoverTriggerProps, PopoverContentProps, SkeletonVariant, SkeletonProps, StatusBannerStatus, StatusBannerPosition, StatusBannerProps } from './feedback.js';
131
131
  export type { CardVariant, CardProps, CardHeaderProps, CardBodyProps, CardFooterProps, FlipCardProps, AvatarSize, AvatarShape, AvatarProps, AvatarGroupProps, TagVariant, TagSize, TagProps, ChipVariant, ChipColor, ChipSize, ChipProps, ChipGroupProps, EmptyStateSize, EmptyStateProps, PageHeaderProps, StatCircleColor, StatCircleSize, StatCircleProps, ListProps, ListItemProps, TableProps, TableHeadProps, TableHeaderAlign, TableHeaderSortDirection, TableHeaderProps, TableBodyProps, TableRowProps, TableCellAlign, TableCellProps, AccordionProps, AccordionItemProps, SliderProps, CarouselProps, CarouselSlideProps, ImageObjectFit, ImageRounded, ImageProps, StatusBadgeColor, StatusBadgeSize, StatusBadgeProps, StatsCardColor, StatsCardTrend, StatsCardProps, DataTableSortOrder, DataTableColumnAlign, DataTableColumn, DataTableProps } from './data-display.js';
132
- export type { ContainerSize, ContainerProps, GridAlign, GridJustify, SpacingToken, GridProps, GridItemProps, StackDirection, StackProps, DividerOrientation, DividerProps, SpacerSize, SpacerProps, AspectRatioPreset, AspectRatioProps, CenterProps, BoxProps } from './layout.js';
132
+ export type { ContainerSize, ContainerProps, GridAlign, GridJustify, SpacingToken, GridProps, GridItemProps, StackDirection, StackProps, DividerOrientation, DividerProps, SpacerSize, SpacerProps, AspectRatioPreset, AspectRatioProps, CenterProps, BoxProps, FlexibleGridCell, FlexibleGridRow, FlexibleGridProps } from './layout.js';
133
133
  export type { SafeAreaEdge, SafeAreaProps, BottomSheetSnapPoint, BottomSheetProps, BottomSheetHeaderProps, BottomSheetBodyProps, ActionSheetAction, ActionSheetProps, ActionSheetItemProps, PullToRefreshProps, SwipeActionSide, SwipeActionData, SwipeActionsProps, SwipeActionProps, FABSize, FABPosition, FABProps, FABAction, FABGroupProps } from './mobile.js';
134
134
  export type { SearchInputProps, DatePickerProps, FileUploadProps, OTPInputProps, TimeFormat, TimePickerProps, RatingProps, ToggleGroupType, ToggleGroupOrientation, ToggleGroupProps, ToggleGroupItemProps, NumberInputProps, PaginationProps } from './input.js';
135
+ export interface HeroLeftAlignedProps {
136
+ title: string;
137
+ subtitle?: string;
138
+ backgroundImage?: string;
139
+ backgroundColor?: string;
140
+ textColor?: string;
141
+ overlayOpacity?: number;
142
+ height?: string;
143
+ class?: string;
144
+ }
145
+ export interface ImageTextCardProps {
146
+ image: string;
147
+ imageAlt?: string;
148
+ title: string;
149
+ description: string;
150
+ bgColor?: string;
151
+ textColor?: string;
152
+ titleColor?: string;
153
+ descColor?: string;
154
+ imageSize?: string;
155
+ imageShape?: 'circle' | 'square' | 'rounded';
156
+ reverseLayout?: boolean;
157
+ cardHeight?: string;
158
+ padding?: string;
159
+ gap?: string;
160
+ titleFontSize?: string;
161
+ descFontSize?: string;
162
+ class?: string;
163
+ }
164
+ export interface IconFeatureCardProps {
165
+ icon: string;
166
+ iconAlt?: string;
167
+ title: string;
168
+ features: string[];
169
+ topBgColor?: string;
170
+ iconBgColor?: string;
171
+ iconSize?: string;
172
+ iconContainerSize?: string;
173
+ titleColor?: string;
174
+ titleFontSize?: string;
175
+ featureColor?: string;
176
+ featureFontSize?: string;
177
+ borderRadius?: string;
178
+ padding?: string;
179
+ featureGap?: string;
180
+ bulletColor?: string;
181
+ class?: string;
182
+ }
@@ -55,3 +55,23 @@ export interface BoxProps {
55
55
  as?: keyof HTMLElementTagNameMap;
56
56
  class?: string;
57
57
  }
58
+ export interface FlexibleGridCell {
59
+ span: number;
60
+ content: string;
61
+ bgColor?: string;
62
+ textColor?: string;
63
+ class?: string;
64
+ }
65
+ export interface FlexibleGridRow {
66
+ cells: FlexibleGridCell[];
67
+ class?: string;
68
+ }
69
+ export interface FlexibleGridProps {
70
+ rows: FlexibleGridRow[];
71
+ gap?: SpacingToken | string;
72
+ cellHeight?: string;
73
+ defaultBgColor?: string;
74
+ defaultTextColor?: string;
75
+ columns?: number;
76
+ class?: string;
77
+ }
@@ -67,7 +67,8 @@ export interface BottomNavItemData {
67
67
  badge?: number;
68
68
  }
69
69
  export interface BottomNavProps {
70
- items: BottomNavItemData[];
70
+ /** Navigation items (optional if using children/slots) */
71
+ items?: BottomNavItemData[];
71
72
  activeIndex?: number;
72
73
  class?: string;
73
74
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aspect-ops/exon-ui",
3
- "version": "0.3.0",
3
+ "version": "0.4.1",
4
4
  "description": "Reusable Svelte UI components for web and Capacitor mobile apps",
5
5
  "author": "Exon Team",
6
6
  "license": "MIT",
@@ -41,6 +41,14 @@
41
41
  "types": "./dist/components/Link/index.d.ts",
42
42
  "svelte": "./dist/components/Link/index.js"
43
43
  },
44
+ "./FlexibleGrid": {
45
+ "types": "./dist/components/FlexibleGrid/index.d.ts",
46
+ "svelte": "./dist/components/FlexibleGrid/index.js"
47
+ },
48
+ "./HeroLeftAligned": {
49
+ "types": "./dist/components/HeroLeftAligned/index.d.ts",
50
+ "svelte": "./dist/components/HeroLeftAligned/index.js"
51
+ },
44
52
  "./styles": "./dist/styles/tokens.css",
45
53
  "./package.json": "./package.json"
46
54
  },
@@ -98,7 +106,6 @@
98
106
  "husky": "^9.1.7",
99
107
  "jsdom": "^25.0.0",
100
108
  "lint-staged": "^16.2.7",
101
- "mermaid": "^11.12.2",
102
109
  "prettier": "^3.0.0",
103
110
  "prettier-plugin-svelte": "^3.0.0",
104
111
  "publint": "^0.2.0",