@tachui/data 0.8.0-alpha

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.
@@ -0,0 +1,213 @@
1
+ /**
2
+ * Enhanced List Components (Phase 5.5)
3
+ *
4
+ * SwiftUI-inspired List components with virtual scrolling, ForEach patterns,
5
+ * and high-performance rendering for large datasets.
6
+ */
7
+ import type { ModifiableComponent, ModifierBuilder } from '@tachui/core';
8
+ import type { Signal } from '@tachui/core';
9
+ import type { ComponentInstance } from '@tachui/core';
10
+ import { type ScrollViewProps } from '@tachui/mobile';
11
+ /**
12
+ * List item selection mode
13
+ */
14
+ export type SelectionMode = 'none' | 'single' | 'multiple';
15
+ /**
16
+ * List style
17
+ */
18
+ export type ListStyle = 'plain' | 'grouped' | 'inset' | 'sidebar';
19
+ /**
20
+ * List item swipe action
21
+ */
22
+ export interface SwipeAction {
23
+ id: string;
24
+ title: string;
25
+ backgroundColor?: string;
26
+ foregroundColor?: string;
27
+ icon?: string;
28
+ destructive?: boolean;
29
+ onTap: () => void;
30
+ }
31
+ /**
32
+ * List section header/footer
33
+ */
34
+ export interface ListSection<T = any> {
35
+ id: string;
36
+ header?: string | ComponentInstance;
37
+ footer?: string | ComponentInstance;
38
+ items: T[];
39
+ }
40
+ /**
41
+ * Virtual scrolling configuration
42
+ */
43
+ export interface VirtualScrollConfig {
44
+ enabled: boolean;
45
+ itemHeight?: number | ((index: number, item: any) => number);
46
+ estimatedItemHeight?: number;
47
+ overscan?: number;
48
+ threshold?: number;
49
+ }
50
+ /**
51
+ * List component properties
52
+ */
53
+ export interface ListProps<T = any> extends Omit<ScrollViewProps, 'children'> {
54
+ data?: T[] | Signal<T[]>;
55
+ sections?: ListSection<T>[] | Signal<ListSection<T>[]>;
56
+ renderItem: (item: T, index: number) => ComponentInstance;
57
+ renderSectionHeader?: (section: ListSection<T>, index: number) => ComponentInstance;
58
+ renderSectionFooter?: (section: ListSection<T>, index: number) => ComponentInstance;
59
+ style?: ListStyle;
60
+ separator?: boolean | ComponentInstance;
61
+ selectionMode?: SelectionMode;
62
+ selectedItems?: Signal<Set<string | number>>;
63
+ onSelectionChange?: (selectedItems: Set<string | number>) => void;
64
+ leadingSwipeActions?: (item: T, index: number) => SwipeAction[];
65
+ trailingSwipeActions?: (item: T, index: number) => SwipeAction[];
66
+ onItemTap?: (item: T, index: number) => void;
67
+ onItemLongPress?: (item: T, index: number) => void;
68
+ virtualScrolling?: VirtualScrollConfig;
69
+ getItemId?: (item: T, index: number) => string | number;
70
+ emptyState?: ComponentInstance;
71
+ isLoading?: boolean | Signal<boolean>;
72
+ loadingIndicator?: ComponentInstance;
73
+ onRefresh?: () => Promise<void>;
74
+ onLoadMore?: () => Promise<void>;
75
+ hasMore?: boolean | Signal<boolean>;
76
+ }
77
+ /**
78
+ * Enhanced List component class
79
+ */
80
+ export declare class EnhancedList<T = any> implements ComponentInstance<ListProps<T>> {
81
+ props: ListProps<T>;
82
+ readonly type: "component";
83
+ readonly id: string;
84
+ mounted: boolean;
85
+ cleanup: (() => void)[];
86
+ private dataSignal;
87
+ private setData;
88
+ private sectionsSignal;
89
+ private setSections;
90
+ private selectedItemsSignal;
91
+ private setSelectedItems;
92
+ private isLoadingSignal;
93
+ private setIsLoading;
94
+ private virtualItems;
95
+ private visibleStartIndex;
96
+ private visibleEndIndex;
97
+ private scrollOffset;
98
+ private containerHeight;
99
+ private totalHeight;
100
+ constructor(props: ListProps<T>);
101
+ /**
102
+ * Helper to flatten render results
103
+ */
104
+ private flattenRenderResult;
105
+ /**
106
+ * Resolve data from various input types
107
+ */
108
+ private resolveData;
109
+ /**
110
+ * Resolve sections from various input types
111
+ */
112
+ private resolveSections;
113
+ /**
114
+ * Resolve loading state
115
+ */
116
+ private resolveIsLoading;
117
+ /**
118
+ * Set up reactive updates for data and state
119
+ */
120
+ private setupReactiveUpdates;
121
+ /**
122
+ * Initialize virtual scrolling calculations
123
+ */
124
+ private initializeVirtualScrolling;
125
+ /**
126
+ * Update virtual scrolling calculations
127
+ */
128
+ private updateVirtualScrolling;
129
+ /**
130
+ * Calculate visible item range for virtual scrolling
131
+ */
132
+ private calculateVisibleRange;
133
+ /**
134
+ * Handle item selection
135
+ */
136
+ private handleItemSelection;
137
+ /**
138
+ * Create list item component
139
+ */
140
+ private createListItem;
141
+ /**
142
+ * Create list separator
143
+ */
144
+ private createSeparator;
145
+ /**
146
+ * Create section header
147
+ */
148
+ private createSectionHeader;
149
+ /**
150
+ * Create section footer
151
+ */
152
+ private createSectionFooter;
153
+ /**
154
+ * Create empty state component
155
+ */
156
+ private createEmptyState;
157
+ /**
158
+ * Create loading indicator
159
+ */
160
+ private createLoadingIndicator;
161
+ /**
162
+ * Render virtual scrolling content
163
+ */
164
+ private renderVirtualContent;
165
+ /**
166
+ * Render regular (non-virtual) content
167
+ */
168
+ private renderRegularContent;
169
+ /**
170
+ * Handle scroll events for virtual scrolling and infinite scroll
171
+ */
172
+ private handleListScroll;
173
+ /**
174
+ * Render the list component
175
+ */
176
+ render(): any;
177
+ }
178
+ /**
179
+ * Create enhanced List component with modifier support
180
+ */
181
+ export declare function List<T = any>(props: ListProps<T>): ModifiableComponent<ListProps<T>> & {
182
+ modifier: ModifierBuilder<ModifiableComponent<ListProps<T>>>;
183
+ };
184
+ /**
185
+ * List utility functions
186
+ */
187
+ export declare const ListUtils: {
188
+ /**
189
+ * Create a simple list from array
190
+ */
191
+ simple<T>(data: T[] | Signal<T[]>, renderItem: (item: T, index: number) => ComponentInstance, props?: Omit<ListProps<T>, "data" | "renderItem">): ModifiableComponent<ListProps<T>> & {
192
+ modifier: ModifierBuilder<ModifiableComponent<ListProps<T>>>;
193
+ };
194
+ /**
195
+ * Create a sectioned list
196
+ */
197
+ sectioned<T>(sections: ListSection<T>[] | Signal<ListSection<T>[]>, renderItem: (item: T, index: number) => ComponentInstance, props?: Omit<ListProps<T>, "sections" | "renderItem">): ModifiableComponent<ListProps<T>> & {
198
+ modifier: ModifierBuilder<ModifiableComponent<ListProps<T>>>;
199
+ };
200
+ /**
201
+ * Create a virtual scrolling list for large datasets
202
+ */
203
+ virtual<T>(data: T[] | Signal<T[]>, renderItem: (item: T, index: number) => ComponentInstance, virtualConfig: VirtualScrollConfig, props?: Omit<ListProps<T>, "data" | "renderItem" | "virtualScrolling">): ModifiableComponent<ListProps<T>> & {
204
+ modifier: ModifierBuilder<ModifiableComponent<ListProps<T>>>;
205
+ };
206
+ /**
207
+ * Create an infinite scrolling list
208
+ */
209
+ infinite<T>(data: T[] | Signal<T[]>, renderItem: (item: T, index: number) => ComponentInstance, onLoadMore: () => Promise<void>, hasMore: boolean | Signal<boolean>, props?: Omit<ListProps<T>, "data" | "renderItem" | "onLoadMore" | "hasMore">): ModifiableComponent<ListProps<T>> & {
210
+ modifier: ModifierBuilder<ModifiableComponent<ListProps<T>>>;
211
+ };
212
+ };
213
+ //# sourceMappingURL=List.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../src/list/List.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAExE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAE1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAGjE;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAA;AAE1D;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAA;AAEjE;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAA;IACnC,MAAM,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAA;IACnC,KAAK,EAAE,CAAC,EAAE,CAAA;CACX;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,MAAM,CAAC,CAAA;IAC5D,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC;IAE3E,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAA;IACxB,QAAQ,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IAGtD,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,iBAAiB,CAAA;IACzD,mBAAmB,CAAC,EAAE,CACpB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EACvB,KAAK,EAAE,MAAM,KACV,iBAAiB,CAAA;IACtB,mBAAmB,CAAC,EAAE,CACpB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EACvB,KAAK,EAAE,MAAM,KACV,iBAAiB,CAAA;IAGtB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,GAAG,iBAAiB,CAAA;IAGvC,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAA;IAC5C,iBAAiB,CAAC,EAAE,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,CAAA;IAGjE,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,WAAW,EAAE,CAAA;IAC/D,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,WAAW,EAAE,CAAA;IAChE,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAGlD,gBAAgB,CAAC,EAAE,mBAAmB,CAAA;IAGtC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAAA;IAGvD,UAAU,CAAC,EAAE,iBAAiB,CAAA;IAG9B,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;IACrC,gBAAgB,CAAC,EAAE,iBAAiB,CAAA;IAGpC,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAG/B,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAChC,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;CACpC;AAcD;;GAEG;AACH,qBAAa,YAAY,CAAC,CAAC,GAAG,GAAG,CAAE,YAAW,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAuBxD,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;IAtBtC,SAAgB,IAAI,EAAG,WAAW,CAAS;IAC3C,SAAgB,EAAE,EAAE,MAAM,CAAA;IACnB,OAAO,UAAQ;IACf,OAAO,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAK;IAEnC,OAAO,CAAC,UAAU,CAAW;IAC7B,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,mBAAmB,CAA4B;IACvD,OAAO,CAAC,gBAAgB,CAAuC;IAC/D,OAAO,CAAC,eAAe,CAAe;IACtC,OAAO,CAAC,YAAY,CAA4B;IAGhD,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,iBAAiB,CAAI;IAC7B,OAAO,CAAC,eAAe,CAAI;IAC3B,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,eAAe,CAAI;IAC3B,OAAO,CAAC,WAAW,CAAI;gBAEJ,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;IAmCtC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACH,OAAO,CAAC,WAAW;IAYnB;;OAEG;IACH,OAAO,CAAC,eAAe;IAYvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAYxB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAsC5B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAelC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAO9B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAmC7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA0B3B;;OAEG;IACH,OAAO,CAAC,cAAc;IAkFtB;;OAEG;IACH,OAAO,CAAC,eAAe;IA4BvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAuC3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAmC3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkCxB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAgC9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAoE5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAqD5B;;OAEG;IACH,OAAO,CAAC,gBAAgB,CA0BvB;IAED;;OAEG;IACH,MAAM;CAwCP;AAID;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,GAAG,GAAG,EAC1B,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,GAClB,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG;IACrC,QAAQ,EAAE,eAAe,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;CAC7D,CAGA;AAID;;GAEG;AACH,eAAO,MAAM,SAAS;IACpB;;OAEG;WACI,CAAC,QACA,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,cACX,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,iBAAiB,UAClD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC,GAC/C,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG;QACrC,QAAQ,EAAE,eAAe,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAC7D;IAQD;;OAEG;cACO,CAAC,YACC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,cACzC,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,iBAAiB,UAClD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC,GACnD,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG;QACrC,QAAQ,EAAE,eAAe,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAC7D;IAQD;;OAEG;YACK,CAAC,QACD,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,cACX,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,iBAAiB,iBAC1C,mBAAmB,UAC3B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,kBAAkB,CAAC,GACpE,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG;QACrC,QAAQ,EAAE,eAAe,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAC7D;IASD;;OAEG;aACM,CAAC,QACF,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,cACX,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,iBAAiB,cAC7C,MAAM,OAAO,CAAC,IAAI,CAAC,WACtB,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,UAC3B,IAAI,CACT,SAAS,CAAC,CAAC,CAAC,EACZ,MAAM,GAAG,YAAY,GAAG,YAAY,GAAG,SAAS,CACjD,GACA,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG;QACrC,QAAQ,EAAE,eAAe,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAC7D;CASF,CAAA"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * List Components Export
3
+ */
4
+ export * from './List';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/list/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,QAAQ,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { E as t, L as i, a as L } from "../List.js";
2
+ export {
3
+ t as EnhancedList,
4
+ i as List,
5
+ L as ListUtils
6
+ };
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Menu Component
3
+ *
4
+ * SwiftUI-inspired Menu component with dropdowns, context menus,
5
+ * positioning, and keyboard navigation support.
6
+ */
7
+ import type { ModifiableComponent, ModifierBuilder } from '@tachui/core';
8
+ import type { Signal } from '@tachui/core';
9
+ import type { ComponentInstance, ComponentProps, DOMNode } from '@tachui/core';
10
+ /**
11
+ * Menu item configuration
12
+ */
13
+ export interface MenuItem {
14
+ id?: string;
15
+ title: string | Signal<string>;
16
+ systemImage?: string;
17
+ shortcut?: string;
18
+ disabled?: boolean | Signal<boolean>;
19
+ destructive?: boolean;
20
+ role?: 'default' | 'destructive' | 'cancel';
21
+ action?: () => void | Promise<void>;
22
+ submenu?: MenuItem[];
23
+ }
24
+ /**
25
+ * Menu positioning options
26
+ */
27
+ export type MenuPlacement = 'bottom' | 'bottom-start' | 'bottom-end' | 'top' | 'top-start' | 'top-end' | 'right' | 'right-start' | 'right-end' | 'left' | 'left-start' | 'left-end';
28
+ /**
29
+ * Menu component properties
30
+ */
31
+ export interface MenuProps extends ComponentProps {
32
+ items: MenuItem[];
33
+ trigger: ComponentInstance | HTMLElement | (() => ComponentInstance | HTMLElement);
34
+ isOpen?: Signal<boolean>;
35
+ placement?: MenuPlacement;
36
+ closeOnSelect?: boolean;
37
+ closeOnClickOutside?: boolean;
38
+ escapeKeyCloses?: boolean;
39
+ offset?: {
40
+ x: number;
41
+ y: number;
42
+ };
43
+ flip?: boolean;
44
+ shift?: boolean;
45
+ animationDuration?: number;
46
+ accessibilityLabel?: string;
47
+ }
48
+ /**
49
+ * Menu theme configuration
50
+ */
51
+ export interface MenuTheme {
52
+ colors: {
53
+ background: string;
54
+ surface: string;
55
+ text: string;
56
+ textSecondary: string;
57
+ textDisabled: string;
58
+ textDestructive: string;
59
+ border: string;
60
+ hover: string;
61
+ active: string;
62
+ separator: string;
63
+ shortcut: string;
64
+ backdrop: string;
65
+ };
66
+ spacing: {
67
+ padding: number;
68
+ itemPadding: number;
69
+ gap: number;
70
+ };
71
+ borderRadius: number;
72
+ minWidth: number;
73
+ maxWidth: number;
74
+ itemHeight: number;
75
+ shadow: string;
76
+ backdropBlur: string;
77
+ }
78
+ /**
79
+ * Default menu theme
80
+ */
81
+ export declare const defaultMenuTheme: MenuTheme;
82
+ /**
83
+ * Menu component implementation
84
+ */
85
+ export declare class MenuComponent implements ComponentInstance<MenuProps> {
86
+ readonly type: "component";
87
+ readonly id: string;
88
+ readonly props: MenuProps;
89
+ cleanup: (() => void)[];
90
+ private theme;
91
+ private isOpenSignal;
92
+ private get isOpen();
93
+ private get setIsOpen();
94
+ private focusedIndex;
95
+ private menuElement;
96
+ private triggerElement;
97
+ constructor(props: MenuProps);
98
+ private resolveValue;
99
+ /**
100
+ * Set up menu positioning using enhanced lifecycle (ENHANCED Phase 3)
101
+ */
102
+ private setupMenuPositioning;
103
+ /**
104
+ * Set up menu animations using enhanced lifecycle (ENHANCED Phase 3)
105
+ */
106
+ private setupMenuAnimations;
107
+ private getVisibleItems;
108
+ private createMenuItem;
109
+ private updateItemFocus;
110
+ private handleKeyDown;
111
+ private calculatePosition;
112
+ private createMenuContent;
113
+ private setupTrigger;
114
+ render(): DOMNode;
115
+ private handleClickOutside;
116
+ private setIsOpenValue;
117
+ }
118
+ /**
119
+ * Create a Menu component
120
+ */
121
+ export declare function Menu(props: MenuProps): ModifiableComponent<MenuProps> & {
122
+ modifier: ModifierBuilder<ModifiableComponent<MenuProps>>;
123
+ };
124
+ /**
125
+ * Menu utility functions and presets
126
+ */
127
+ export declare const MenuUtils: {
128
+ /**
129
+ * Create a separator item
130
+ */
131
+ separator(): MenuItem;
132
+ /**
133
+ * Create a destructive menu item
134
+ */
135
+ destructive(title: string, action: () => void, systemImage?: string): MenuItem;
136
+ /**
137
+ * Create a menu item with keyboard shortcut
138
+ */
139
+ withShortcut(title: string, shortcut: string, action: () => void, systemImage?: string): MenuItem;
140
+ /**
141
+ * Create a context menu for right-click interactions
142
+ */
143
+ contextMenu(target: HTMLElement, items: MenuItem[]): void;
144
+ };
145
+ /**
146
+ * Menu styles and theming
147
+ */
148
+ export declare const MenuStyles: {
149
+ theme: MenuTheme;
150
+ /**
151
+ * Create a custom menu theme
152
+ */
153
+ createTheme(overrides: Partial<MenuTheme>): MenuTheme;
154
+ /**
155
+ * Dark theme preset
156
+ */
157
+ darkTheme(): MenuTheme;
158
+ };
159
+ //# sourceMappingURL=Menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../src/menu/Menu.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAExE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAE1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAS9E;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;IACpC,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,IAAI,CAAC,EAAE,SAAS,GAAG,aAAa,GAAG,QAAQ,CAAA;IAC3C,MAAM,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACnC,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,QAAQ,GACR,cAAc,GACd,YAAY,GACZ,KAAK,GACL,WAAW,GACX,SAAS,GACT,OAAO,GACP,aAAa,GACb,WAAW,GACX,MAAM,GACN,YAAY,GACZ,UAAU,CAAA;AAEd;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,cAAc;IAE/C,KAAK,EAAE,QAAQ,EAAE,CAAA;IAGjB,OAAO,EACH,iBAAiB,GACjB,WAAW,GACX,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAC,CAAA;IAG3C,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;IAGxB,SAAS,CAAC,EAAE,aAAa,CAAA;IACzB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAA;IAGzB,MAAM,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACjC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;IAGf,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAG1B,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAA;QAClB,OAAO,EAAE,MAAM,CAAA;QACf,IAAI,EAAE,MAAM,CAAA;QACZ,aAAa,EAAE,MAAM,CAAA;QACrB,YAAY,EAAE,MAAM,CAAA;QACpB,eAAe,EAAE,MAAM,CAAA;QACvB,MAAM,EAAE,MAAM,CAAA;QACd,KAAK,EAAE,MAAM,CAAA;QACb,MAAM,EAAE,MAAM,CAAA;QACd,SAAS,EAAE,MAAM,CAAA;QACjB,QAAQ,EAAE,MAAM,CAAA;QAChB,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAA;QACf,WAAW,EAAE,MAAM,CAAA;QACnB,GAAG,EAAE,MAAM,CAAA;KACZ,CAAA;IACD,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;CACrB;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,SA0B9B,CAAA;AAED;;GAEG;AACH,qBAAa,aAAc,YAAW,iBAAiB,CAAC,SAAS,CAAC;IAChE,SAAgB,IAAI,EAAG,WAAW,CAAS;IAC3C,SAAgB,EAAE,EAAE,MAAM,CAAA;IAC1B,SAAgB,KAAK,EAAE,SAAS,CAAA;IACzB,OAAO,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAK;IACnC,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,KAAK,MAAM,GAEjB;IACD,OAAO,KAAK,SAAS,GAEpB;IACD,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,cAAc,CAA2B;gBAErC,KAAK,EAAE,SAAS;IAkC5B,OAAO,CAAC,YAAY;IAIpB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAe5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,cAAc;IA4ItB,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,aAAa,CAsDpB;IAED,OAAO,CAAC,iBAAiB;IA4FzB,OAAO,CAAC,iBAAiB;IAqCzB,OAAO,CAAC,YAAY;IA+CpB,MAAM,IAAI,OAAO;IAgHjB,OAAO,CAAC,kBAAkB,CAUzB;IAED,OAAO,CAAC,cAAc,CASrB;CACF;AAED;;GAEG;AACH,wBAAgB,IAAI,CAClB,KAAK,EAAE,SAAS,GACf,mBAAmB,CAAC,SAAS,CAAC,GAAG;IAClC,QAAQ,EAAE,eAAe,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAA;CAC1D,CAEA;AAED;;GAEG;AACH,eAAO,MAAM,SAAS;IACpB;;OAEG;iBACU,QAAQ;IAIrB;;OAEG;uBAEM,MAAM,UACL,MAAM,IAAI,gBACJ,MAAM,GACnB,QAAQ;IASX;;OAEG;wBAEM,MAAM,YACH,MAAM,UACR,MAAM,IAAI,gBACJ,MAAM,GACnB,QAAQ;IASX;;OAEG;wBACiB,WAAW,SAAS,QAAQ,EAAE,GAAG,IAAI;CAkB1D,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,UAAU;;IAGrB;;OAEG;2BACoB,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS;IAIrD;;OAEG;iBACU,SAAS;CAevB,CAAA"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Menu Components Export
3
+ */
4
+ export * from './Menu';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/menu/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,QAAQ,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { a as n, M as s, c as u, b as M, d as t } from "../Menu.js";
2
+ export {
3
+ n as Menu,
4
+ s as MenuComponent,
5
+ u as MenuStyles,
6
+ M as MenuUtils,
7
+ t as defaultMenuTheme
8
+ };
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
package/package.json ADDED
@@ -0,0 +1,77 @@
1
+ {
2
+ "name": "@tachui/data",
3
+ "version": "0.8.0-alpha",
4
+ "description": "Data display and organization components for tachUI framework",
5
+ "homepage": "https://tachui.dev/",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "module": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.js"
14
+ },
15
+ "./list": {
16
+ "types": "./dist/list/index.d.ts",
17
+ "import": "./dist/list/index.js"
18
+ },
19
+ "./menu": {
20
+ "types": "./dist/menu/index.d.ts",
21
+ "import": "./dist/menu/index.js"
22
+ }
23
+ },
24
+ "files": [
25
+ "dist"
26
+ ],
27
+ "dependencies": {
28
+ "@tachui/flow-control": "0.8.0-alpha",
29
+ "@tachui/mobile": "0.8.0-alpha",
30
+ "@tachui/core": "0.8.0-alpha"
31
+ },
32
+ "devDependencies": {
33
+ "@types/node": "^20.0.0",
34
+ "@types/jsdom": "^21.1.6",
35
+ "@vitest/coverage-v8": "^1.0.0",
36
+ "jsdom": "^23.2.0",
37
+ "typescript": "^5.2.0",
38
+ "vite": "^7.1.1",
39
+ "vitest": "^3.2.4"
40
+ },
41
+ "peerDependencies": {
42
+ "typescript": ">=5.0.0"
43
+ },
44
+ "peerDependenciesMeta": {
45
+ "typescript": {
46
+ "optional": true
47
+ }
48
+ },
49
+ "keywords": [
50
+ "ui",
51
+ "components",
52
+ "data",
53
+ "list",
54
+ "menu",
55
+ "tachui",
56
+ "typescript"
57
+ ],
58
+ "author": "tachUI Team",
59
+ "license": "MPL-2.0",
60
+ "repository": {
61
+ "type": "git",
62
+ "url": "https://github.com/tach-UI/tachUI",
63
+ "directory": "packages/data"
64
+ },
65
+ "scripts": {
66
+ "build": "rm -rf dist && vite build && tsc --project tsconfig.build.json",
67
+ "dev": "vite build --watch",
68
+ "test": "vitest run",
69
+ "valid": "clear && vitest run && pnpm type-check && pnpm lint && pnpm build",
70
+ "test:coverage": "vitest run --coverage",
71
+ "test:watch": "vitest",
72
+ "test:ci": "npm run test:run",
73
+ "type-check": "tsc --project tsconfig.type-check.json",
74
+ "clean": "rm -rf dist",
75
+ "lint": "oxlint src"
76
+ }
77
+ }