@moul-dev/ui 2026.8.18 → 2026.8.20
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/assets/stylex.css +172 -8
- package/dist/moul-ui.js +4014 -2502
- package/dist/src/components/Button/Button.d.ts +1 -0
- package/dist/src/components/Button/Button.styles.d.ts +16 -0
- package/dist/src/components/LogsViewer/Logs.d.ts +29 -0
- package/dist/src/components/LogsViewer/Logs.styles.d.ts +478 -0
- package/dist/src/components/LogsViewer/Logs.types.d.ts +208 -0
- package/dist/src/components/LogsViewer/exampleLogs.d.ts +3 -0
- package/dist/src/components/LogsViewer/index.d.ts +4 -0
- package/dist/src/components/LogsViewer/parseLogs.d.ts +21 -0
- package/dist/src/components/Sidebar/Sidebar.d.ts +3 -1
- package/dist/src/components/Sidebar/Sidebar.styles.d.ts +9 -5
- package/dist/src/components/ToggleButton/ToggleButton.d.ts +1 -1
- package/dist/src/components/ToggleButton/ToggleButton.styles.d.ts +4 -3
- package/dist/src/index.d.ts +3 -1
- package/package.json +2 -1
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { StyleXStyles } from '@stylexjs/stylex';
|
|
2
|
+
import { Key } from 'react-aria-components';
|
|
3
|
+
import type * as React from 'react';
|
|
4
|
+
export type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal';
|
|
5
|
+
export interface LogItem {
|
|
6
|
+
id: string | number;
|
|
7
|
+
timestamp?: string;
|
|
8
|
+
level?: LogLevel | string;
|
|
9
|
+
message: string;
|
|
10
|
+
attributes?: Record<string, string | number | boolean | null | undefined>;
|
|
11
|
+
raw?: string;
|
|
12
|
+
lineNumber?: number;
|
|
13
|
+
}
|
|
14
|
+
export type LogFilterLevel = LogLevel | 'all';
|
|
15
|
+
export interface LogsProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'style' | 'title' | 'onCopy'> {
|
|
16
|
+
/**
|
|
17
|
+
* Array of parsed log items or raw log strings.
|
|
18
|
+
*/
|
|
19
|
+
data?: (LogItem | string)[];
|
|
20
|
+
/**
|
|
21
|
+
* Raw multiline text containing log lines (e.g. from server.log).
|
|
22
|
+
*/
|
|
23
|
+
text?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Optional title shown in the log header toolbar.
|
|
26
|
+
*/
|
|
27
|
+
title?: React.ReactNode;
|
|
28
|
+
/**
|
|
29
|
+
* Whether to show the top toolbar with search, filters, and actions.
|
|
30
|
+
* @default true
|
|
31
|
+
*/
|
|
32
|
+
showToolbar?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Whether to show line numbers in the table.
|
|
35
|
+
* @default true
|
|
36
|
+
*/
|
|
37
|
+
showLineNumbers?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Whether to show timestamps.
|
|
40
|
+
* @default true
|
|
41
|
+
*/
|
|
42
|
+
showTimestamps?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Whether to show severity level badges.
|
|
45
|
+
* @default true
|
|
46
|
+
*/
|
|
47
|
+
showLevels?: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Whether to render structured attribute chips in the message cell.
|
|
50
|
+
* @default true
|
|
51
|
+
*/
|
|
52
|
+
showAttributes?: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* How the inspector panel is displayed when a log row is selected.
|
|
55
|
+
* - 'drawer': opens a slide-out drawer from the side/bottom
|
|
56
|
+
* - 'inline': renders an inline details panel beneath the table
|
|
57
|
+
* - 'none': disables the inspector
|
|
58
|
+
* @default 'drawer'
|
|
59
|
+
*/
|
|
60
|
+
inspectorMode?: 'drawer' | 'inline' | 'none';
|
|
61
|
+
/**
|
|
62
|
+
* Whether to show an inspector / details panel for selected log rows.
|
|
63
|
+
* @deprecated Use `inspectorMode` instead.
|
|
64
|
+
*/
|
|
65
|
+
showInspector?: boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Controlled open state for the drawer inspector.
|
|
68
|
+
*/
|
|
69
|
+
isInspectorOpen?: boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Default open state for the drawer inspector (initial uncontrolled state).
|
|
72
|
+
* Note: Changing this prop post-mount does not reset internal state; use `isInspectorOpen` for controlled state.
|
|
73
|
+
* @default false
|
|
74
|
+
*/
|
|
75
|
+
defaultInspectorOpen?: boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Callback fired when the drawer inspector opens or closes.
|
|
78
|
+
*/
|
|
79
|
+
onInspectorOpenChange?: (isOpen: boolean) => void;
|
|
80
|
+
/**
|
|
81
|
+
* Drawer placement direction when inspectorMode is 'drawer'.
|
|
82
|
+
* @default 'right'
|
|
83
|
+
*/
|
|
84
|
+
drawerPlacement?: 'top' | 'bottom' | 'left' | 'right';
|
|
85
|
+
/**
|
|
86
|
+
* Drawer size when inspectorMode is 'drawer'.
|
|
87
|
+
* @default 'md'
|
|
88
|
+
*/
|
|
89
|
+
drawerSize?: 'sm' | 'md' | 'lg' | 'full';
|
|
90
|
+
/**
|
|
91
|
+
* Callback fired when a log row is clicked.
|
|
92
|
+
*/
|
|
93
|
+
onRowClick?: (log: LogItem) => void;
|
|
94
|
+
/**
|
|
95
|
+
* Display logs in a compact table density.
|
|
96
|
+
* @default false
|
|
97
|
+
*/
|
|
98
|
+
compact?: boolean;
|
|
99
|
+
/**
|
|
100
|
+
* Wrap long log message lines instead of truncating with ellipsis.
|
|
101
|
+
* @default true
|
|
102
|
+
*/
|
|
103
|
+
wrapLines?: boolean;
|
|
104
|
+
/**
|
|
105
|
+
* Search input placeholder.
|
|
106
|
+
* @default 'Filter logs...'
|
|
107
|
+
*/
|
|
108
|
+
searchPlaceholder?: string;
|
|
109
|
+
/**
|
|
110
|
+
* Maximum height of the scrollable logs container.
|
|
111
|
+
*/
|
|
112
|
+
maxHeight?: string | number;
|
|
113
|
+
/**
|
|
114
|
+
* React Aria Table selection mode.
|
|
115
|
+
* @default 'single'
|
|
116
|
+
*/
|
|
117
|
+
selectionMode?: 'none' | 'single' | 'multiple';
|
|
118
|
+
/**
|
|
119
|
+
* Currently selected log keys.
|
|
120
|
+
*/
|
|
121
|
+
selectedKeys?: 'all' | Iterable<Key>;
|
|
122
|
+
/**
|
|
123
|
+
* Default selected log keys (initial uncontrolled state).
|
|
124
|
+
* Note: Changing this prop post-mount does not reset internal state; use `selectedKeys` for controlled state.
|
|
125
|
+
*/
|
|
126
|
+
defaultSelectedKeys?: 'all' | Iterable<Key>;
|
|
127
|
+
/**
|
|
128
|
+
* Handler fired when row selection changes.
|
|
129
|
+
*/
|
|
130
|
+
onSelectionChange?: (keys: 'all' | Set<Key>) => void;
|
|
131
|
+
/**
|
|
132
|
+
* Controlled filter level.
|
|
133
|
+
*/
|
|
134
|
+
filterLevel?: LogFilterLevel;
|
|
135
|
+
/**
|
|
136
|
+
* Default filter level (initial uncontrolled state).
|
|
137
|
+
* Note: Changing this prop post-mount does not reset internal state; use `filterLevel` for controlled state.
|
|
138
|
+
* @default 'all'
|
|
139
|
+
*/
|
|
140
|
+
defaultFilterLevel?: LogFilterLevel;
|
|
141
|
+
/**
|
|
142
|
+
* Callback fired when active filter level changes.
|
|
143
|
+
*/
|
|
144
|
+
onFilterLevelChange?: (level: LogFilterLevel) => void;
|
|
145
|
+
/**
|
|
146
|
+
* Controlled search query.
|
|
147
|
+
*/
|
|
148
|
+
searchQuery?: string;
|
|
149
|
+
/**
|
|
150
|
+
* Default search query (initial uncontrolled state).
|
|
151
|
+
* Note: Changing this prop post-mount does not reset internal state; use `searchQuery` for controlled state.
|
|
152
|
+
*/
|
|
153
|
+
defaultSearchQuery?: string;
|
|
154
|
+
/**
|
|
155
|
+
* Callback fired when search query changes.
|
|
156
|
+
*/
|
|
157
|
+
onSearchQueryChange?: (query: string) => void;
|
|
158
|
+
/**
|
|
159
|
+
* Callback fired when the clear button is pressed.
|
|
160
|
+
*/
|
|
161
|
+
onClear?: () => void;
|
|
162
|
+
/**
|
|
163
|
+
* Callback fired when download logs button is pressed.
|
|
164
|
+
*/
|
|
165
|
+
onDownload?: () => void;
|
|
166
|
+
/**
|
|
167
|
+
* Callback fired when copy button is pressed.
|
|
168
|
+
*/
|
|
169
|
+
onCopy?: (text: string) => void;
|
|
170
|
+
/**
|
|
171
|
+
* Controlled follow / auto-scroll mode to tail the latest logs.
|
|
172
|
+
*/
|
|
173
|
+
follow?: boolean;
|
|
174
|
+
/**
|
|
175
|
+
* Default follow / auto-scroll state (initial uncontrolled state).
|
|
176
|
+
* Note: Changing this prop post-mount does not reset internal state; use `follow` for controlled state.
|
|
177
|
+
* @default false
|
|
178
|
+
*/
|
|
179
|
+
defaultFollow?: boolean;
|
|
180
|
+
/**
|
|
181
|
+
* Callback fired when follow / auto-scroll state changes (e.g. paused when scrolled up).
|
|
182
|
+
*/
|
|
183
|
+
onFollowChange?: (follow: boolean) => void;
|
|
184
|
+
/**
|
|
185
|
+
* Whether to show the Follow toggle button in the top toolbar.
|
|
186
|
+
* @default true
|
|
187
|
+
*/
|
|
188
|
+
showFollowButton?: boolean;
|
|
189
|
+
/**
|
|
190
|
+
* Whether to highlight search term matches in log messages and inspector.
|
|
191
|
+
* @default true
|
|
192
|
+
*/
|
|
193
|
+
highlightMatches?: boolean;
|
|
194
|
+
/**
|
|
195
|
+
* Custom StyleX styles.
|
|
196
|
+
*/
|
|
197
|
+
style?: StyleXStyles;
|
|
198
|
+
/**
|
|
199
|
+
* Custom CSS class name.
|
|
200
|
+
*/
|
|
201
|
+
className?: string;
|
|
202
|
+
/**
|
|
203
|
+
* Accessible label for the table.
|
|
204
|
+
* @default 'Server Logs'
|
|
205
|
+
*/
|
|
206
|
+
'aria-label'?: string;
|
|
207
|
+
}
|
|
208
|
+
export type LogsViewerProps = LogsProps;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { LogItem } from './Logs.types';
|
|
2
|
+
export declare const SERVER_LOG_RAW = "2026/08/19 11:16:49 INFO Starting mould engine server addr=\"http://localhost:8090\" env=\"development\" version=\"dev\"\n2026/08/19 11:16:49 INFO Request tracking flusher started component=\"analytics\"\n2026/08/19 11:16:50 DEBU Flushed request records component=\"analytics\" count=12\n2026/08/19 11:16:52 INFO HTTP request bytes_sent=48 ip=\"127.0.0.1\" latency=\"182.4\u00B5s\" method=\"GET\" path=\"/api/health\" status=200\n2026/08/19 11:16:55 INFO HTTP request bytes_sent=1420 email=\"alex@example.com\" ip=\"192.168.1.45\" latency=\"3.12ms\" method=\"GET\" path=\"/api/mouls/posts/records\" status=200 user_id=\"usr_01j7k9p2\"\n2026/08/19 11:17:02 WARN HTTP request bytes_sent=68 ip=\"192.168.1.45\" latency=\"410.5\u00B5s\" method=\"GET\" path=\"/api/mouls/nonexistent/records\" status=404 error=\"moul 'nonexistent' not found\"\n2026/08/19 11:17:08 WARN Request tracking channel full, dropping request component=\"analytics\" path=\"/api/events\"\n2026/08/19 11:17:15 WARN Background job failed, scheduled for retry error=\"dial tcp: lookup smtp.mailgun.org: no such host\" jobID=\"job_01j7k8a\" nextAttemptAt=\"2026-08-19 11:18:15\" worker=\"SendEmail\"\n2026/08/19 11:17:21 ERRO HTTP request bytes_sent=112 email=\"alex@example.com\" ip=\"192.168.1.80\" latency=\"14.85ms\" method=\"POST\" path=\"/api/mouls/orders/records\" status=500 user_id=\"usr_01j7k9p2\" error=\"database locked (sqlite busy)\"\n2026/08/19 11:17:25 ERRO After-webhook execution failed err=\"Post \\\"https://webhook.site/test\\\": context deadline exceeded\" url=\"https://webhook.site/test\"\n2026/08/19 11:17:30 ERRO Failed to start Litestream replication err=\"credentials not set in environment (AWS_ACCESS_KEY_ID)\"\n2026/08/19 11:17:40 INFO Cleaned up old requests count=42\n2026/08/19 11:17:40 INFO Cleaned up old visits count=15\n2026/08/19 11:17:40 INFO Cleaned up expired revoked tokens count=0\n2026/08/19 11:17:55 INFO Stopping Litestream replication...\n2026/08/19 11:17:55 INFO Server stopped gracefully\n2026/08/19 11:18:02 FATA Server failed to run err=\"listen tcp :8090: bind: address already in use\"";
|
|
3
|
+
export declare const SERVER_LOGS: LogItem[];
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { SERVER_LOG_RAW, SERVER_LOGS } from './exampleLogs';
|
|
2
|
+
export { HighlightText, type HighlightTextProps, LogAttributeChip, type LogAttributeChipProps, LogCopyIconButton, type LogCopyIconButtonProps, LogLevelBadge, type LogLevelBadgeProps, Logs, LogsViewer, } from './Logs';
|
|
3
|
+
export type { LogFilterLevel, LogItem, LogLevel, LogsProps, LogsViewerProps, } from './Logs.types';
|
|
4
|
+
export { normalizeLogLevel, parseAttributes, parseLogLine, parseLogs, stripAttributes, } from './parseLogs';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { LogItem, LogLevel } from './Logs.types';
|
|
2
|
+
/**
|
|
3
|
+
* Normalizes any log level string into standard LogLevel.
|
|
4
|
+
*/
|
|
5
|
+
export declare function normalizeLogLevel(levelStr?: string): LogLevel;
|
|
6
|
+
/**
|
|
7
|
+
* Parses key="value" or key=value key-value pairs from a log string.
|
|
8
|
+
*/
|
|
9
|
+
export declare function parseAttributes(text: string): Record<string, string | number | boolean | null>;
|
|
10
|
+
/**
|
|
11
|
+
* Strips key=value pairs from the string to obtain the clean base message.
|
|
12
|
+
*/
|
|
13
|
+
export declare function stripAttributes(text: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* Parses a single log line into a structured LogItem.
|
|
16
|
+
*/
|
|
17
|
+
export declare function parseLogLine(rawLine: string, index?: number): LogItem;
|
|
18
|
+
/**
|
|
19
|
+
* Parses raw text or list of log strings into LogItem[].
|
|
20
|
+
*/
|
|
21
|
+
export declare function parseLogs(input?: string | (LogItem | string)[]): LogItem[];
|
|
@@ -7,6 +7,7 @@ interface SidebarContextValue {
|
|
|
7
7
|
onSelectionChange?: (key: string) => void;
|
|
8
8
|
variant: 'solid' | 'glass';
|
|
9
9
|
onCollapseToggle: () => void;
|
|
10
|
+
showCollapseToggle?: boolean;
|
|
10
11
|
}
|
|
11
12
|
export declare function useSidebar(): SidebarContextValue;
|
|
12
13
|
export interface SidebarProps {
|
|
@@ -62,12 +63,13 @@ export interface SidebarDividerProps {
|
|
|
62
63
|
}
|
|
63
64
|
export declare const SidebarDivider: React.ForwardRefExoticComponent<SidebarDividerProps & React.RefAttributes<HTMLDivElement>>;
|
|
64
65
|
export interface SidebarAsideProps {
|
|
66
|
+
'aria-label'?: string;
|
|
65
67
|
style?: React.CSSProperties;
|
|
66
68
|
className?: string;
|
|
67
69
|
children?: React.ReactNode;
|
|
68
70
|
showCollapseToggle?: boolean;
|
|
69
71
|
}
|
|
70
|
-
export declare const SidebarAside: React.ForwardRefExoticComponent<SidebarAsideProps & React.RefAttributes<
|
|
72
|
+
export declare const SidebarAside: React.ForwardRefExoticComponent<SidebarAsideProps & React.RefAttributes<HTMLElement>>;
|
|
71
73
|
export interface SidebarMainProps {
|
|
72
74
|
style?: StyleXStyles;
|
|
73
75
|
className?: string;
|
|
@@ -33,8 +33,12 @@ export declare const styles: Readonly<{
|
|
|
33
33
|
readonly glass: Readonly<{
|
|
34
34
|
readonly backgroundColor: stylex.StyleXClassNameFor<"backgroundColor", string>;
|
|
35
35
|
readonly borderColor: stylex.StyleXClassNameFor<"borderColor", string>;
|
|
36
|
-
readonly
|
|
37
|
-
|
|
36
|
+
readonly '@supports (backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))': stylex.StyleXClassNameFor<"@supports (backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))", {
|
|
37
|
+
readonly backgroundColor: stylex.StyleXVar<string>;
|
|
38
|
+
readonly borderColor: stylex.StyleXVar<string>;
|
|
39
|
+
readonly backdropFilter: "blur(20px)";
|
|
40
|
+
readonly WebkitBackdropFilter: "blur(20px)";
|
|
41
|
+
}>;
|
|
38
42
|
}>;
|
|
39
43
|
readonly header: Readonly<{
|
|
40
44
|
readonly display: stylex.StyleXClassNameFor<"display", "flex">;
|
|
@@ -303,9 +307,9 @@ export declare const styles: Readonly<{
|
|
|
303
307
|
}>;
|
|
304
308
|
readonly layout: Readonly<{
|
|
305
309
|
readonly display: stylex.StyleXClassNameFor<"display", "flex">;
|
|
306
|
-
readonly height: stylex.StyleXClassNameFor<"height", "
|
|
307
|
-
readonly maxHeight: stylex.StyleXClassNameFor<"maxHeight", "
|
|
308
|
-
readonly width: stylex.StyleXClassNameFor<"width", "
|
|
310
|
+
readonly height: stylex.StyleXClassNameFor<"height", "100%">;
|
|
311
|
+
readonly maxHeight: stylex.StyleXClassNameFor<"maxHeight", "100%">;
|
|
312
|
+
readonly width: stylex.StyleXClassNameFor<"width", "100%">;
|
|
309
313
|
readonly backgroundColor: stylex.StyleXClassNameFor<"backgroundColor", string>;
|
|
310
314
|
readonly color: stylex.StyleXClassNameFor<"color", string>;
|
|
311
315
|
readonly fontFamily: stylex.StyleXClassNameFor<"fontFamily", string>;
|
|
@@ -6,6 +6,6 @@ export interface ToggleButtonProps extends Omit<AriaToggleButtonProps, 'style'>
|
|
|
6
6
|
className?: string;
|
|
7
7
|
size?: 'sm' | 'md' | 'lg';
|
|
8
8
|
variant?: 'primary' | 'secondary';
|
|
9
|
-
|
|
9
|
+
isIcon?: boolean;
|
|
10
10
|
}
|
|
11
11
|
export declare const ToggleButton: React.ForwardRefExoticComponent<ToggleButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
@@ -4,6 +4,7 @@ export declare const styles: Readonly<{
|
|
|
4
4
|
readonly display: stylex.StyleXClassNameFor<"display", "inline-flex">;
|
|
5
5
|
readonly alignItems: stylex.StyleXClassNameFor<"alignItems", "center">;
|
|
6
6
|
readonly justifyContent: stylex.StyleXClassNameFor<"justifyContent", "center">;
|
|
7
|
+
readonly gap: stylex.StyleXClassNameFor<"gap", string>;
|
|
7
8
|
readonly fontWeight: stylex.StyleXClassNameFor<"fontWeight", string>;
|
|
8
9
|
readonly cursor: stylex.StyleXClassNameFor<"cursor", "pointer">;
|
|
9
10
|
readonly transitionProperty: stylex.StyleXClassNameFor<"transitionProperty", "background-color, border-color, color, transform">;
|
|
@@ -208,15 +209,15 @@ export declare const styles: Readonly<{
|
|
|
208
209
|
readonly selectionIndicatorSecondary: Readonly<{
|
|
209
210
|
readonly backgroundColor: stylex.StyleXClassNameFor<"backgroundColor", string>;
|
|
210
211
|
}>;
|
|
211
|
-
readonly
|
|
212
|
+
readonly iconSm: Readonly<{
|
|
212
213
|
readonly paddingInline: stylex.StyleXClassNameFor<"paddingInline", string>;
|
|
213
214
|
readonly aspectRatio: stylex.StyleXClassNameFor<"aspectRatio", "1/1">;
|
|
214
215
|
}>;
|
|
215
|
-
readonly
|
|
216
|
+
readonly iconMd: Readonly<{
|
|
216
217
|
readonly paddingInline: stylex.StyleXClassNameFor<"paddingInline", string>;
|
|
217
218
|
readonly aspectRatio: stylex.StyleXClassNameFor<"aspectRatio", "1/1">;
|
|
218
219
|
}>;
|
|
219
|
-
readonly
|
|
220
|
+
readonly iconLg: Readonly<{
|
|
220
221
|
readonly paddingInline: stylex.StyleXClassNameFor<"paddingInline", string>;
|
|
221
222
|
readonly aspectRatio: stylex.StyleXClassNameFor<"aspectRatio", "1/1">;
|
|
222
223
|
}>;
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const version = "2026.08.
|
|
1
|
+
export declare const version = "2026.08.20";
|
|
2
2
|
export { Alert } from './components/Alert';
|
|
3
3
|
export type { AlertProps, AlertVariant } from './components/Alert/Alert';
|
|
4
4
|
export { AlertDialog, AlertDialogBody, AlertDialogFooter, AlertDialogHeader, } from './components/AlertDialog';
|
|
@@ -49,6 +49,8 @@ export type { LineChartProps } from './components/LineChart';
|
|
|
49
49
|
export { LineChart } from './components/LineChart';
|
|
50
50
|
export { Link } from './components/Link';
|
|
51
51
|
export type { LinkProps } from './components/Link/Link';
|
|
52
|
+
export type { HighlightTextProps, LogAttributeChipProps, LogFilterLevel, LogItem, LogLevel, LogLevelBadgeProps, LogsProps, LogsViewerProps, } from './components/LogsViewer';
|
|
53
|
+
export { HighlightText, LogAttributeChip, LogLevelBadge, Logs, LogsViewer, normalizeLogLevel, parseAttributes, parseLogLine, parseLogs, SERVER_LOG_RAW, SERVER_LOGS, stripAttributes, } from './components/LogsViewer';
|
|
52
54
|
export { Modal, ModalBody, ModalDialog, ModalFooter, ModalHeader, ModalOverlay, } from './components/Modal';
|
|
53
55
|
export type { ModalBodyProps, ModalDialogProps, ModalFooterProps, ModalHeaderProps, ModalOverlayProps, ModalProps, } from './components/Modal/Modal';
|
|
54
56
|
export { NumberField } from './components/NumberField';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@moul-dev/ui",
|
|
3
|
-
"version": "2026.08.
|
|
3
|
+
"version": "2026.08.20",
|
|
4
4
|
"description": "Accessible, zero-runtime React component library built on React Aria and StyleX",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -61,6 +61,7 @@
|
|
|
61
61
|
"react-dom": "^18.0.0 || ^19.0.0"
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
|
+
"@phosphor-icons/react": "^2.1.10",
|
|
64
65
|
"@stylexjs/stylex": "^0.19.0",
|
|
65
66
|
"input-otp": "^1.4.2",
|
|
66
67
|
"react-aria": "^3.50.0",
|