@aspect-ops/exon-ui 0.0.3 → 0.2.0

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 (79) hide show
  1. package/README.md +929 -54
  2. package/dist/components/Accordion/Accordion.svelte +79 -0
  3. package/dist/components/Accordion/Accordion.svelte.d.ts +10 -0
  4. package/dist/components/Accordion/AccordionItem.svelte +198 -0
  5. package/dist/components/Accordion/AccordionItem.svelte.d.ts +10 -0
  6. package/dist/components/Accordion/index.d.ts +2 -0
  7. package/dist/components/Accordion/index.js +2 -0
  8. package/dist/components/Carousel/Carousel.svelte +454 -0
  9. package/dist/components/Carousel/Carousel.svelte.d.ts +14 -0
  10. package/dist/components/Carousel/CarouselSlide.svelte +22 -0
  11. package/dist/components/Carousel/CarouselSlide.svelte.d.ts +7 -0
  12. package/dist/components/Carousel/index.d.ts +2 -0
  13. package/dist/components/Carousel/index.js +2 -0
  14. package/dist/components/Chip/Chip.svelte +461 -0
  15. package/dist/components/Chip/Chip.svelte.d.ts +17 -0
  16. package/dist/components/Chip/ChipGroup.svelte +76 -0
  17. package/dist/components/Chip/ChipGroup.svelte.d.ts +9 -0
  18. package/dist/components/Chip/index.d.ts +2 -0
  19. package/dist/components/Chip/index.js +2 -0
  20. package/dist/components/DatePicker/DatePicker.svelte +746 -0
  21. package/dist/components/DatePicker/DatePicker.svelte.d.ts +19 -0
  22. package/dist/components/DatePicker/index.d.ts +1 -0
  23. package/dist/components/DatePicker/index.js +1 -0
  24. package/dist/components/FileUpload/FileUpload.svelte +484 -0
  25. package/dist/components/FileUpload/FileUpload.svelte.d.ts +16 -0
  26. package/dist/components/FileUpload/index.d.ts +1 -0
  27. package/dist/components/FileUpload/index.js +1 -0
  28. package/dist/components/Image/Image.svelte +223 -0
  29. package/dist/components/Image/Image.svelte.d.ts +19 -0
  30. package/dist/components/Image/index.d.ts +1 -0
  31. package/dist/components/Image/index.js +1 -0
  32. package/dist/components/NumberInput/NumberInput.svelte +293 -0
  33. package/dist/components/NumberInput/NumberInput.svelte.d.ts +16 -0
  34. package/dist/components/NumberInput/index.d.ts +1 -0
  35. package/dist/components/NumberInput/index.js +1 -0
  36. package/dist/components/OTPInput/OTPInput.svelte +312 -0
  37. package/dist/components/OTPInput/OTPInput.svelte.d.ts +57 -0
  38. package/dist/components/OTPInput/index.d.ts +1 -0
  39. package/dist/components/OTPInput/index.js +1 -0
  40. package/dist/components/Pagination/Pagination.svelte +243 -0
  41. package/dist/components/Pagination/Pagination.svelte.d.ts +10 -0
  42. package/dist/components/Pagination/index.d.ts +1 -0
  43. package/dist/components/Pagination/index.js +1 -0
  44. package/dist/components/Rating/Rating.svelte +316 -0
  45. package/dist/components/Rating/Rating.svelte.d.ts +16 -0
  46. package/dist/components/Rating/index.d.ts +1 -0
  47. package/dist/components/Rating/index.js +1 -0
  48. package/dist/components/SearchInput/SearchInput.svelte +480 -0
  49. package/dist/components/SearchInput/SearchInput.svelte.d.ts +22 -0
  50. package/dist/components/SearchInput/index.d.ts +1 -0
  51. package/dist/components/SearchInput/index.js +1 -0
  52. package/dist/components/Slider/Slider.svelte +324 -0
  53. package/dist/components/Slider/Slider.svelte.d.ts +14 -0
  54. package/dist/components/Slider/index.d.ts +1 -0
  55. package/dist/components/Slider/index.js +1 -0
  56. package/dist/components/Stepper/Stepper.svelte +100 -0
  57. package/dist/components/Stepper/Stepper.svelte.d.ts +11 -0
  58. package/dist/components/Stepper/StepperStep.svelte +391 -0
  59. package/dist/components/Stepper/StepperStep.svelte.d.ts +13 -0
  60. package/dist/components/Stepper/index.d.ts +2 -0
  61. package/dist/components/Stepper/index.js +2 -0
  62. package/dist/components/TimePicker/TimePicker.svelte +803 -0
  63. package/dist/components/TimePicker/TimePicker.svelte.d.ts +17 -0
  64. package/dist/components/TimePicker/index.d.ts +1 -0
  65. package/dist/components/TimePicker/index.js +1 -0
  66. package/dist/components/ToggleGroup/ToggleGroup.svelte +91 -0
  67. package/dist/components/ToggleGroup/ToggleGroup.svelte.d.ts +13 -0
  68. package/dist/components/ToggleGroup/ToggleGroupItem.svelte +158 -0
  69. package/dist/components/ToggleGroup/ToggleGroupItem.svelte.d.ts +9 -0
  70. package/dist/components/ToggleGroup/index.d.ts +3 -0
  71. package/dist/components/ToggleGroup/index.js +2 -0
  72. package/dist/index.d.ts +13 -1
  73. package/dist/index.js +12 -0
  74. package/dist/types/data-display.d.ts +68 -0
  75. package/dist/types/index.d.ts +3 -2
  76. package/dist/types/input.d.ts +82 -0
  77. package/dist/types/input.js +2 -0
  78. package/dist/types/navigation.d.ts +15 -0
  79. package/package.json +1 -1
@@ -0,0 +1,17 @@
1
+ import type { InputSize } from '../../types/index.js';
2
+ interface Props {
3
+ value?: string;
4
+ format?: '12h' | '24h';
5
+ minuteStep?: number;
6
+ min?: string;
7
+ max?: string;
8
+ disabled?: boolean;
9
+ error?: boolean;
10
+ size?: InputSize;
11
+ placeholder?: string;
12
+ class?: string;
13
+ onchange?: (value: string) => void;
14
+ }
15
+ declare const TimePicker: import("svelte").Component<Props, {}, "value">;
16
+ type TimePicker = ReturnType<typeof TimePicker>;
17
+ export default TimePicker;
@@ -0,0 +1 @@
1
+ export { default as TimePicker } from './TimePicker.svelte';
@@ -0,0 +1 @@
1
+ export { default as TimePicker } from './TimePicker.svelte';
@@ -0,0 +1,91 @@
1
+ <script lang="ts">
2
+ import { setContext } from 'svelte';
3
+ import type { ToggleGroupType, ToggleGroupOrientation } from '../../types/index.js';
4
+
5
+ interface Props {
6
+ type?: ToggleGroupType;
7
+ value?: string | string[];
8
+ onValueChange?: (value: string | string[]) => void;
9
+ disabled?: boolean;
10
+ orientation?: ToggleGroupOrientation;
11
+ class?: string;
12
+ children?: import('svelte').Snippet;
13
+ }
14
+
15
+ let {
16
+ type = 'single',
17
+ value = $bindable(type === 'single' ? '' : []),
18
+ onValueChange,
19
+ disabled = false,
20
+ orientation = 'horizontal',
21
+ class: className = '',
22
+ children
23
+ }: Props = $props();
24
+
25
+ const handleToggle = (itemValue: string) => {
26
+ if (disabled) return;
27
+
28
+ let newValue: string | string[];
29
+
30
+ if (type === 'single') {
31
+ // Single mode: toggle or select new value
32
+ newValue = (value as string) === itemValue ? '' : itemValue;
33
+ } else {
34
+ // Multiple mode: toggle item in array
35
+ const currentArray = (value as string[]) || [];
36
+ if (currentArray.includes(itemValue)) {
37
+ newValue = currentArray.filter((v) => v !== itemValue);
38
+ } else {
39
+ newValue = [...currentArray, itemValue];
40
+ }
41
+ }
42
+
43
+ value = newValue;
44
+ onValueChange?.(newValue);
45
+ };
46
+
47
+ const isSelected = (itemValue: string): boolean => {
48
+ if (type === 'single') {
49
+ return (value as string) === itemValue;
50
+ } else {
51
+ return ((value as string[]) || []).includes(itemValue);
52
+ }
53
+ };
54
+
55
+ // Set context for child items
56
+ setContext('toggleGroup', {
57
+ get type() {
58
+ return type;
59
+ },
60
+ get disabled() {
61
+ return disabled;
62
+ },
63
+ onToggle: handleToggle,
64
+ isSelected
65
+ });
66
+ </script>
67
+
68
+ <div
69
+ class="toggle-group toggle-group--{orientation} {className}"
70
+ role={type === 'single' ? 'radiogroup' : 'group'}
71
+ aria-disabled={disabled}
72
+ >
73
+ {#if children}
74
+ {@render children()}
75
+ {/if}
76
+ </div>
77
+
78
+ <style>
79
+ .toggle-group {
80
+ display: inline-flex;
81
+ font-family: inherit;
82
+ }
83
+
84
+ .toggle-group--horizontal {
85
+ flex-direction: row;
86
+ }
87
+
88
+ .toggle-group--vertical {
89
+ flex-direction: column;
90
+ }
91
+ </style>
@@ -0,0 +1,13 @@
1
+ import type { ToggleGroupType, ToggleGroupOrientation } from '../../types/index.js';
2
+ interface Props {
3
+ type?: ToggleGroupType;
4
+ value?: string | string[];
5
+ onValueChange?: (value: string | string[]) => void;
6
+ disabled?: boolean;
7
+ orientation?: ToggleGroupOrientation;
8
+ class?: string;
9
+ children?: import('svelte').Snippet;
10
+ }
11
+ declare const ToggleGroup: import("svelte").Component<Props, {}, "value">;
12
+ type ToggleGroup = ReturnType<typeof ToggleGroup>;
13
+ export default ToggleGroup;
@@ -0,0 +1,158 @@
1
+ <script lang="ts">
2
+ import { getContext } from 'svelte';
3
+
4
+ interface Props {
5
+ value: string;
6
+ disabled?: boolean;
7
+ class?: string;
8
+ children?: import('svelte').Snippet;
9
+ }
10
+
11
+ let { value, disabled = false, class: className = '', children }: Props = $props();
12
+
13
+ const context = getContext<{
14
+ type: 'single' | 'multiple';
15
+ disabled: boolean;
16
+ onToggle: (value: string) => void;
17
+ isSelected: (value: string) => boolean;
18
+ }>('toggleGroup');
19
+
20
+ const isGroupDisabled = context?.disabled ?? false;
21
+ const isDisabled = $derived(disabled || isGroupDisabled);
22
+ const isPressed = $derived(context?.isSelected(value) ?? false);
23
+
24
+ const handleClick = () => {
25
+ if (isDisabled) return;
26
+ context?.onToggle(value);
27
+ };
28
+
29
+ const handleKeydown = (e: KeyboardEvent) => {
30
+ const target = e.currentTarget as HTMLElement;
31
+ const group = target.parentElement;
32
+ if (!group) return;
33
+
34
+ const items = Array.from(group.querySelectorAll('[role="radio"], [role="button"]'));
35
+ const currentIndex = items.indexOf(target);
36
+
37
+ let nextIndex = currentIndex;
38
+
39
+ switch (e.key) {
40
+ case 'ArrowRight':
41
+ case 'ArrowDown':
42
+ e.preventDefault();
43
+ nextIndex = (currentIndex + 1) % items.length;
44
+ break;
45
+ case 'ArrowLeft':
46
+ case 'ArrowUp':
47
+ e.preventDefault();
48
+ nextIndex = currentIndex - 1;
49
+ if (nextIndex < 0) nextIndex = items.length - 1;
50
+ break;
51
+ case ' ':
52
+ case 'Enter':
53
+ e.preventDefault();
54
+ handleClick();
55
+ return;
56
+ default:
57
+ return;
58
+ }
59
+
60
+ (items[nextIndex] as HTMLElement)?.focus();
61
+ };
62
+ </script>
63
+
64
+ <button
65
+ class="toggle-group-item {isPressed ? 'toggle-group-item--pressed' : ''} {className}"
66
+ role={context?.type === 'single' ? 'radio' : 'button'}
67
+ aria-pressed={isPressed}
68
+ aria-checked={context?.type === 'single' ? isPressed : undefined}
69
+ aria-disabled={isDisabled}
70
+ disabled={isDisabled}
71
+ tabindex={isDisabled ? -1 : 0}
72
+ onclick={handleClick}
73
+ onkeydown={handleKeydown}
74
+ >
75
+ {#if children}
76
+ {@render children()}
77
+ {/if}
78
+ </button>
79
+
80
+ <style>
81
+ .toggle-group-item {
82
+ position: relative;
83
+ display: inline-flex;
84
+ align-items: center;
85
+ justify-content: center;
86
+ min-height: var(--touch-target-min, 44px);
87
+ min-width: var(--touch-target-min, 44px);
88
+ padding: var(--space-sm, 0.5rem) var(--space-md, 1rem);
89
+ background: var(--color-bg, #ffffff);
90
+ color: var(--color-text, #1f2937);
91
+ border: 1px solid var(--color-border, #e5e7eb);
92
+ font-family: inherit;
93
+ font-size: var(--text-sm, 0.875rem);
94
+ font-weight: 500;
95
+ cursor: pointer;
96
+ transition: all var(--transition-fast, 150ms ease);
97
+ -webkit-tap-highlight-color: transparent;
98
+ margin-left: -1px;
99
+ }
100
+
101
+ .toggle-group-item:first-child {
102
+ margin-left: 0;
103
+ border-top-left-radius: var(--radius-md, 0.375rem);
104
+ border-bottom-left-radius: var(--radius-md, 0.375rem);
105
+ }
106
+
107
+ .toggle-group-item:last-child {
108
+ border-top-right-radius: var(--radius-md, 0.375rem);
109
+ border-bottom-right-radius: var(--radius-md, 0.375rem);
110
+ }
111
+
112
+ :global(.toggle-group--vertical) .toggle-group-item {
113
+ margin-left: 0;
114
+ margin-top: -1px;
115
+ }
116
+
117
+ :global(.toggle-group--vertical) .toggle-group-item:first-child {
118
+ margin-top: 0;
119
+ border-top-left-radius: var(--radius-md, 0.375rem);
120
+ border-top-right-radius: var(--radius-md, 0.375rem);
121
+ border-bottom-left-radius: 0;
122
+ }
123
+
124
+ :global(.toggle-group--vertical) .toggle-group-item:last-child {
125
+ border-top-right-radius: 0;
126
+ border-bottom-left-radius: var(--radius-md, 0.375rem);
127
+ border-bottom-right-radius: var(--radius-md, 0.375rem);
128
+ }
129
+
130
+ .toggle-group-item:hover:not(:disabled) {
131
+ background: var(--color-bg-muted, #f3f4f6);
132
+ z-index: 1;
133
+ }
134
+
135
+ .toggle-group-item:focus-visible {
136
+ outline: 2px solid var(--color-primary, #3b82f6);
137
+ outline-offset: 2px;
138
+ z-index: 2;
139
+ }
140
+
141
+ .toggle-group-item--pressed {
142
+ background: var(--color-primary, #3b82f6);
143
+ color: var(--color-text-inverse, #ffffff);
144
+ border-color: var(--color-primary, #3b82f6);
145
+ z-index: 1;
146
+ }
147
+
148
+ .toggle-group-item--pressed:hover:not(:disabled) {
149
+ background: var(--color-primary-hover, #2563eb);
150
+ border-color: var(--color-primary-hover, #2563eb);
151
+ }
152
+
153
+ .toggle-group-item:disabled {
154
+ opacity: 0.5;
155
+ cursor: not-allowed;
156
+ pointer-events: none;
157
+ }
158
+ </style>
@@ -0,0 +1,9 @@
1
+ interface Props {
2
+ value: string;
3
+ disabled?: boolean;
4
+ class?: string;
5
+ children?: import('svelte').Snippet;
6
+ }
7
+ declare const ToggleGroupItem: import("svelte").Component<Props, {}, "">;
8
+ type ToggleGroupItem = ReturnType<typeof ToggleGroupItem>;
9
+ export default ToggleGroupItem;
@@ -0,0 +1,3 @@
1
+ export { default as ToggleGroup } from './ToggleGroup.svelte';
2
+ export { default as ToggleGroupItem } from './ToggleGroupItem.svelte';
3
+ export type { ToggleGroupType, ToggleGroupOrientation, ToggleGroupProps, ToggleGroupItemProps } from '../../types/index.js';
@@ -0,0 +1,2 @@
1
+ export { default as ToggleGroup } from './ToggleGroup.svelte';
2
+ export { default as ToggleGroupItem } from './ToggleGroupItem.svelte';
package/dist/index.d.ts CHANGED
@@ -12,6 +12,13 @@ export { default as CheckboxGroup } from './components/Checkbox/CheckboxGroup.sv
12
12
  export { default as Radio } from './components/Radio/Radio.svelte';
13
13
  export { default as RadioGroup } from './components/Radio/RadioGroup.svelte';
14
14
  export { default as Switch } from './components/Switch/Switch.svelte';
15
+ export { SearchInput } from './components/SearchInput/index.js';
16
+ export { DatePicker } from './components/DatePicker/index.js';
17
+ export { FileUpload } from './components/FileUpload/index.js';
18
+ export { OTPInput } from './components/OTPInput/index.js';
19
+ export { TimePicker } from './components/TimePicker/index.js';
20
+ export { Rating } from './components/Rating/index.js';
21
+ export { ToggleGroup, ToggleGroupItem } from './components/ToggleGroup/index.js';
15
22
  export { default as Tabs } from './components/Tabs/Tabs.svelte';
16
23
  export { default as TabList } from './components/Tabs/TabList.svelte';
17
24
  export { default as TabTrigger } from './components/Tabs/TabTrigger.svelte';
@@ -34,6 +41,7 @@ export { default as NavItem } from './components/Navbar/NavItem.svelte';
34
41
  export { default as Sidebar } from './components/Sidebar/Sidebar.svelte';
35
42
  export { default as SidebarItem } from './components/Sidebar/SidebarItem.svelte';
36
43
  export { default as SidebarGroup } from './components/Sidebar/SidebarGroup.svelte';
44
+ export { Stepper, StepperStep } from './components/Stepper/index.js';
37
45
  export { default as Alert } from './components/Alert/Alert.svelte';
38
46
  export { Toast, ToastContainer, toast } from './components/Toast/index.js';
39
47
  export { Modal, ModalHeader, ModalBody, ModalFooter } from './components/Modal/index.js';
@@ -47,6 +55,10 @@ export { Tag } from './components/Tag/index.js';
47
55
  export { EmptyState } from './components/EmptyState/index.js';
48
56
  export { List, ListItem } from './components/List/index.js';
49
57
  export { Table, TableHead, TableHeader, TableBody, TableRow, TableCell } from './components/Table/index.js';
58
+ export { Accordion, AccordionItem } from './components/Accordion/index.js';
59
+ export { Slider } from './components/Slider/index.js';
60
+ export { Carousel, CarouselSlide } from './components/Carousel/index.js';
61
+ export { Image } from './components/Image/index.js';
50
62
  export { Container } from './components/Container/index.js';
51
63
  export { Grid } from './components/Grid/index.js';
52
64
  export { GridItem } from './components/Grid/index.js';
@@ -62,4 +74,4 @@ export { ActionSheet, ActionSheetItem } from './components/ActionSheet/index.js'
62
74
  export { PullToRefresh } from './components/PullToRefresh/index.js';
63
75
  export { SwipeActions, SwipeAction } from './components/SwipeActions/index.js';
64
76
  export { FAB, FABGroup } from './components/FAB/index.js';
65
- export type { ButtonProps, ButtonVariant, ButtonSize, TypographyProps, TypographyVariant, IconProps, IconSize, BadgeProps, BadgeVariant, LinkProps, InputSize, TextInputType, FormFieldProps, TextInputProps, TextareaProps, SelectOption, SelectProps, CheckboxProps, RadioProps, RadioGroupProps, SwitchProps, 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, AlertVariant, AlertProps, ToastVariant, ToastPosition, ToastData, ToastProps, ToastContainerProps, ModalSize, ModalProps, ModalHeaderProps, ModalBodyProps, ModalFooterProps, ProgressSize, ProgressBarProps, ProgressCircleProps, SpinnerProps, TooltipSide, TooltipProps, PopoverSide, PopoverProps, PopoverTriggerProps, PopoverContentProps, SkeletonVariant, SkeletonProps, CardVariant, CardProps, CardHeaderProps, CardBodyProps, CardFooterProps, AvatarSize, AvatarShape, AvatarProps, AvatarGroupProps, TagVariant, TagSize, TagProps, EmptyStateSize, EmptyStateProps, ListProps, ListItemProps, TableProps, TableHeadProps, TableHeaderAlign, TableHeaderSortDirection, TableHeaderProps, TableBodyProps, TableRowProps, TableCellAlign, TableCellProps, ContainerSize, ContainerProps, GridAlign, GridJustify, SpacingToken, GridProps, GridItemProps, StackDirection, StackProps, DividerOrientation, DividerProps, SpacerSize, SpacerProps, AspectRatioPreset, AspectRatioProps, CenterProps, BoxProps, SafeAreaEdge, SafeAreaProps, BottomSheetSnapPoint, BottomSheetProps, BottomSheetHeaderProps, BottomSheetBodyProps, ActionSheetAction, ActionSheetProps, ActionSheetItemProps, PullToRefreshProps, SwipeActionSide, SwipeActionData, SwipeActionsProps, SwipeActionProps, FABSize, FABPosition, FABProps, FABAction, FABGroupProps } from './types/index.js';
77
+ export type { ButtonProps, ButtonVariant, ButtonSize, TypographyProps, TypographyVariant, IconProps, IconSize, BadgeProps, BadgeVariant, LinkProps, InputSize, TextInputType, FormFieldProps, TextInputProps, TextareaProps, SelectOption, SelectProps, CheckboxProps, RadioProps, RadioGroupProps, SwitchProps, SearchInputProps, DatePickerProps, FileUploadProps, OTPInputProps, TimeFormat, TimePickerProps, RatingProps, ToggleGroupType, ToggleGroupOrientation, ToggleGroupProps, ToggleGroupItemProps, 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, AlertVariant, AlertProps, ToastVariant, ToastPosition, ToastData, ToastProps, ToastContainerProps, ModalSize, ModalProps, ModalHeaderProps, ModalBodyProps, ModalFooterProps, ProgressSize, ProgressBarProps, ProgressCircleProps, SpinnerProps, TooltipSide, TooltipProps, PopoverSide, PopoverProps, PopoverTriggerProps, PopoverContentProps, SkeletonVariant, SkeletonProps, CardVariant, CardProps, CardHeaderProps, CardBodyProps, CardFooterProps, AvatarSize, AvatarShape, AvatarProps, AvatarGroupProps, TagVariant, TagSize, TagProps, ChipVariant, ChipColor, ChipSize, ChipProps, ChipGroupProps, EmptyStateSize, EmptyStateProps, ListProps, ListItemProps, TableProps, TableHeadProps, TableHeaderAlign, TableHeaderSortDirection, TableHeaderProps, TableBodyProps, TableRowProps, TableCellAlign, TableCellProps, AccordionProps, AccordionItemProps, SliderProps, CarouselProps, CarouselSlideProps, ImageObjectFit, ImageRounded, ImageProps, ContainerSize, ContainerProps, GridAlign, GridJustify, SpacingToken, GridProps, GridItemProps, StackDirection, StackProps, DividerOrientation, DividerProps, SpacerSize, SpacerProps, AspectRatioPreset, AspectRatioProps, CenterProps, BoxProps, SafeAreaEdge, SafeAreaProps, BottomSheetSnapPoint, BottomSheetProps, BottomSheetHeaderProps, BottomSheetBodyProps, ActionSheetAction, ActionSheetProps, ActionSheetItemProps, PullToRefreshProps, SwipeActionSide, SwipeActionData, SwipeActionsProps, SwipeActionProps, FABSize, FABPosition, FABProps, FABAction, FABGroupProps } from './types/index.js';
package/dist/index.js CHANGED
@@ -16,6 +16,13 @@ export { default as CheckboxGroup } from './components/Checkbox/CheckboxGroup.sv
16
16
  export { default as Radio } from './components/Radio/Radio.svelte';
17
17
  export { default as RadioGroup } from './components/Radio/RadioGroup.svelte';
18
18
  export { default as Switch } from './components/Switch/Switch.svelte';
19
+ export { SearchInput } from './components/SearchInput/index.js';
20
+ export { DatePicker } from './components/DatePicker/index.js';
21
+ export { FileUpload } from './components/FileUpload/index.js';
22
+ export { OTPInput } from './components/OTPInput/index.js';
23
+ export { TimePicker } from './components/TimePicker/index.js';
24
+ export { Rating } from './components/Rating/index.js';
25
+ export { ToggleGroup, ToggleGroupItem } from './components/ToggleGroup/index.js';
19
26
  // Navigation Components
20
27
  export { default as Tabs } from './components/Tabs/Tabs.svelte';
21
28
  export { default as TabList } from './components/Tabs/TabList.svelte';
@@ -39,6 +46,7 @@ export { default as NavItem } from './components/Navbar/NavItem.svelte';
39
46
  export { default as Sidebar } from './components/Sidebar/Sidebar.svelte';
40
47
  export { default as SidebarItem } from './components/Sidebar/SidebarItem.svelte';
41
48
  export { default as SidebarGroup } from './components/Sidebar/SidebarGroup.svelte';
49
+ export { Stepper, StepperStep } from './components/Stepper/index.js';
42
50
  // Feedback Components
43
51
  export { default as Alert } from './components/Alert/Alert.svelte';
44
52
  export { Toast, ToastContainer, toast } from './components/Toast/index.js';
@@ -54,6 +62,10 @@ export { Tag } from './components/Tag/index.js';
54
62
  export { EmptyState } from './components/EmptyState/index.js';
55
63
  export { List, ListItem } from './components/List/index.js';
56
64
  export { Table, TableHead, TableHeader, TableBody, TableRow, TableCell } from './components/Table/index.js';
65
+ export { Accordion, AccordionItem } from './components/Accordion/index.js';
66
+ export { Slider } from './components/Slider/index.js';
67
+ export { Carousel, CarouselSlide } from './components/Carousel/index.js';
68
+ export { Image } from './components/Image/index.js';
57
69
  // Layout Components
58
70
  export { Container } from './components/Container/index.js';
59
71
  export { Grid } from './components/Grid/index.js';
@@ -55,6 +55,25 @@ export interface ListItemProps {
55
55
  disabled?: boolean;
56
56
  class?: string;
57
57
  }
58
+ export type ChipVariant = 'filled' | 'outlined' | 'soft';
59
+ export type ChipColor = 'default' | 'primary' | 'success' | 'warning' | 'error';
60
+ export type ChipSize = 'sm' | 'md' | 'lg';
61
+ export interface ChipProps {
62
+ variant?: ChipVariant;
63
+ color?: ChipColor;
64
+ size?: ChipSize;
65
+ removable?: boolean;
66
+ selected?: boolean;
67
+ disabled?: boolean;
68
+ onclick?: () => void;
69
+ onremove?: () => void;
70
+ class?: string;
71
+ }
72
+ export interface ChipGroupProps {
73
+ value?: string | string[];
74
+ multiple?: boolean;
75
+ class?: string;
76
+ }
58
77
  export interface TableProps {
59
78
  striped?: boolean;
60
79
  bordered?: boolean;
@@ -91,3 +110,52 @@ export interface TableCellProps {
91
110
  nowrap?: boolean;
92
111
  class?: string;
93
112
  }
113
+ export interface AccordionProps {
114
+ value?: string | string[];
115
+ multiple?: boolean;
116
+ disabled?: boolean;
117
+ class?: string;
118
+ }
119
+ export interface AccordionItemProps {
120
+ value: string;
121
+ disabled?: boolean;
122
+ class?: string;
123
+ }
124
+ export interface SliderProps {
125
+ value?: number;
126
+ min?: number;
127
+ max?: number;
128
+ step?: number;
129
+ disabled?: boolean;
130
+ showValue?: boolean;
131
+ showTicks?: boolean;
132
+ class?: string;
133
+ }
134
+ export interface CarouselProps {
135
+ activeIndex?: number;
136
+ autoplay?: boolean;
137
+ autoplayInterval?: number;
138
+ loop?: boolean;
139
+ showIndicators?: boolean;
140
+ showArrows?: boolean;
141
+ class?: string;
142
+ }
143
+ export interface CarouselSlideProps {
144
+ class?: string;
145
+ }
146
+ export type ImageObjectFit = 'contain' | 'cover' | 'fill' | 'none' | 'scale-down';
147
+ export type ImageRounded = boolean | 'sm' | 'md' | 'lg' | 'full';
148
+ export interface ImageProps {
149
+ src: string;
150
+ alt: string;
151
+ width?: number | string;
152
+ height?: number | string;
153
+ loading?: 'lazy' | 'eager';
154
+ objectFit?: ImageObjectFit;
155
+ objectPosition?: string;
156
+ placeholder?: string;
157
+ fallback?: string;
158
+ rounded?: ImageRounded;
159
+ aspectRatio?: string;
160
+ class?: string;
161
+ }
@@ -126,8 +126,9 @@ export interface SwitchProps {
126
126
  disabled?: boolean;
127
127
  class?: string;
128
128
  }
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 } from './navigation.js';
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 } from './feedback.js';
131
- export type { CardVariant, CardProps, CardHeaderProps, CardBodyProps, CardFooterProps, AvatarSize, AvatarShape, AvatarProps, AvatarGroupProps, TagVariant, TagSize, TagProps, EmptyStateSize, EmptyStateProps, ListProps, ListItemProps, TableProps, TableHeadProps, TableHeaderAlign, TableHeaderSortDirection, TableHeaderProps, TableBodyProps, TableRowProps, TableCellAlign, TableCellProps } from './data-display.js';
131
+ export type { CardVariant, CardProps, CardHeaderProps, CardBodyProps, CardFooterProps, AvatarSize, AvatarShape, AvatarProps, AvatarGroupProps, TagVariant, TagSize, TagProps, ChipVariant, ChipColor, ChipSize, ChipProps, ChipGroupProps, EmptyStateSize, EmptyStateProps, ListProps, ListItemProps, TableProps, TableHeadProps, TableHeaderAlign, TableHeaderSortDirection, TableHeaderProps, TableBodyProps, TableRowProps, TableCellAlign, TableCellProps, AccordionProps, AccordionItemProps, SliderProps, CarouselProps, CarouselSlideProps, ImageObjectFit, ImageRounded, ImageProps } from './data-display.js';
132
132
  export type { ContainerSize, ContainerProps, GridAlign, GridJustify, SpacingToken, GridProps, GridItemProps, StackDirection, StackProps, DividerOrientation, DividerProps, SpacerSize, SpacerProps, AspectRatioPreset, AspectRatioProps, CenterProps, BoxProps } 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
+ export type { SearchInputProps, DatePickerProps, FileUploadProps, OTPInputProps, TimeFormat, TimePickerProps, RatingProps, ToggleGroupType, ToggleGroupOrientation, ToggleGroupProps, ToggleGroupItemProps } from './input.js';
@@ -0,0 +1,82 @@
1
+ export interface SearchInputProps {
2
+ value?: string;
3
+ placeholder?: string;
4
+ suggestions?: string[];
5
+ size?: 'sm' | 'md' | 'lg';
6
+ disabled?: boolean;
7
+ loading?: boolean;
8
+ maxSuggestions?: number;
9
+ class?: string;
10
+ }
11
+ export interface DatePickerProps {
12
+ value?: Date | null;
13
+ placeholder?: string;
14
+ min?: Date | null;
15
+ max?: Date | null;
16
+ disabled?: boolean;
17
+ required?: boolean;
18
+ error?: boolean;
19
+ size?: 'sm' | 'md' | 'lg';
20
+ format?: string;
21
+ locale?: string;
22
+ class?: string;
23
+ }
24
+ export interface FileUploadProps {
25
+ files?: File[];
26
+ accept?: string;
27
+ multiple?: boolean;
28
+ maxSize?: number;
29
+ maxFiles?: number;
30
+ disabled?: boolean;
31
+ showPreview?: boolean;
32
+ class?: string;
33
+ }
34
+ export interface OTPInputProps {
35
+ value?: string;
36
+ length?: number;
37
+ type?: 'numeric' | 'alphanumeric';
38
+ masked?: boolean;
39
+ disabled?: boolean;
40
+ error?: boolean;
41
+ size?: 'sm' | 'md' | 'lg';
42
+ autoFocus?: boolean;
43
+ class?: string;
44
+ }
45
+ export type TimeFormat = '12h' | '24h';
46
+ export interface TimePickerProps {
47
+ value?: string;
48
+ format?: TimeFormat;
49
+ minuteStep?: number;
50
+ min?: string;
51
+ max?: string;
52
+ disabled?: boolean;
53
+ error?: boolean;
54
+ size?: 'sm' | 'md' | 'lg';
55
+ placeholder?: string;
56
+ class?: string;
57
+ }
58
+ export interface RatingProps {
59
+ value?: number;
60
+ max?: number;
61
+ allowHalf?: boolean;
62
+ readonly?: boolean;
63
+ disabled?: boolean;
64
+ size?: 'sm' | 'md' | 'lg';
65
+ showValue?: boolean;
66
+ class?: string;
67
+ }
68
+ export type ToggleGroupType = 'single' | 'multiple';
69
+ export type ToggleGroupOrientation = 'horizontal' | 'vertical';
70
+ export interface ToggleGroupProps {
71
+ type?: ToggleGroupType;
72
+ value?: string | string[];
73
+ onValueChange?: (value: string | string[]) => void;
74
+ disabled?: boolean;
75
+ orientation?: ToggleGroupOrientation;
76
+ class?: string;
77
+ }
78
+ export interface ToggleGroupItemProps {
79
+ value: string;
80
+ disabled?: boolean;
81
+ class?: string;
82
+ }
@@ -0,0 +1,2 @@
1
+ // Input-related component types
2
+ export {};
@@ -116,3 +116,18 @@ export interface SidebarGroupProps {
116
116
  defaultCollapsed?: boolean;
117
117
  class?: string;
118
118
  }
119
+ export type StepperOrientation = 'horizontal' | 'vertical';
120
+ export interface StepperProps {
121
+ activeStep?: number;
122
+ orientation?: StepperOrientation;
123
+ linear?: boolean;
124
+ class?: string;
125
+ }
126
+ export interface StepperStepProps {
127
+ label: string;
128
+ description?: string;
129
+ optional?: boolean;
130
+ error?: boolean;
131
+ disabled?: boolean;
132
+ class?: string;
133
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aspect-ops/exon-ui",
3
- "version": "0.0.3",
3
+ "version": "0.2.0",
4
4
  "description": "Reusable Svelte UI components for web and Capacitor mobile apps",
5
5
  "author": "Exon Team",
6
6
  "license": "MIT",