@vobs/ui 0.1.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 (48) hide show
  1. package/LICENSE +21 -0
  2. package/dist/app-shell-dom.d.ts +24 -0
  3. package/dist/app-shell-dom.js +573 -0
  4. package/dist/app-shell.d.ts +199 -0
  5. package/dist/app-shell.js +370 -0
  6. package/dist/base.css +52 -0
  7. package/dist/calendar-picker.d.ts +45 -0
  8. package/dist/calendar-picker.js +217 -0
  9. package/dist/calendar.d.ts +95 -0
  10. package/dist/calendar.js +194 -0
  11. package/dist/complex-inputs.d.ts +300 -0
  12. package/dist/complex-inputs.js +862 -0
  13. package/dist/components.css +4568 -0
  14. package/dist/data-display.d.ts +1063 -0
  15. package/dist/data-display.js +2298 -0
  16. package/dist/feedback.d.ts +88 -0
  17. package/dist/feedback.js +281 -0
  18. package/dist/forms.d.ts +378 -0
  19. package/dist/forms.js +1015 -0
  20. package/dist/icons-config.d.ts +25 -0
  21. package/dist/icons-config.js +14 -0
  22. package/dist/icons.d.ts +41 -0
  23. package/dist/icons.js +185 -0
  24. package/dist/index.d.ts +22 -0
  25. package/dist/index.js +32 -0
  26. package/dist/locale/en-US.d.ts +31 -0
  27. package/dist/locale/en-US.js +20 -0
  28. package/dist/locale/zh-CN.d.ts +31 -0
  29. package/dist/locale/zh-CN.js +20 -0
  30. package/dist/navigation.d.ts +609 -0
  31. package/dist/navigation.js +1707 -0
  32. package/dist/overlay.d.ts +304 -0
  33. package/dist/overlay.js +969 -0
  34. package/dist/primitives.d.ts +268 -0
  35. package/dist/primitives.js +764 -0
  36. package/dist/styles.css +3 -0
  37. package/dist/theme-data.d.ts +363 -0
  38. package/dist/theme-data.js +374 -0
  39. package/dist/theme.d.ts +79 -0
  40. package/dist/theme.js +262 -0
  41. package/dist/tokens.css +449 -0
  42. package/dist/tree.d.ts +144 -0
  43. package/dist/tree.js +469 -0
  44. package/dist/virtual-list.d.ts +190 -0
  45. package/dist/virtual-list.js +521 -0
  46. package/dist/workbench.d.ts +136 -0
  47. package/dist/workbench.js +156 -0
  48. package/package.json +113 -0
@@ -0,0 +1,300 @@
1
+ /** @license MIT
2
+ * Copyright (c) 2026 vobsjs
3
+ * @vobs/ui
4
+ */
5
+ import { type UiAttributes, type UiControlSize, type UiDensity, type UiDomPlan } from './primitives.js';
6
+ export interface ComboboxOption {
7
+ readonly id: string;
8
+ readonly value: string;
9
+ readonly label: string;
10
+ readonly disabled?: boolean;
11
+ }
12
+ export interface ComboboxPlanOptions {
13
+ readonly id: string;
14
+ readonly options: readonly ComboboxOption[];
15
+ readonly inputValue: string;
16
+ readonly activeId?: string;
17
+ readonly selectedValue?: string;
18
+ readonly open?: boolean;
19
+ readonly disabled?: boolean;
20
+ readonly required?: boolean;
21
+ readonly invalid?: boolean;
22
+ readonly labelId?: string;
23
+ readonly describedBy?: string;
24
+ readonly placeholder?: string;
25
+ readonly className?: string;
26
+ readonly attrs?: UiAttributes;
27
+ }
28
+ export interface ComboboxPlans {
29
+ readonly root: UiDomPlan<'div'>;
30
+ readonly input: UiDomPlan<'input'>;
31
+ readonly listbox: UiDomPlan<'ul'>;
32
+ readonly options: readonly UiDomPlan<'li'>[];
33
+ }
34
+ export interface CascaderOption {
35
+ readonly id: string;
36
+ readonly value: string;
37
+ readonly label: string;
38
+ readonly disabled?: boolean;
39
+ readonly children?: readonly CascaderOption[];
40
+ }
41
+ export interface CascaderPlanOptions {
42
+ readonly id: string;
43
+ readonly options: readonly CascaderOption[];
44
+ readonly open?: boolean;
45
+ readonly activePath?: readonly string[];
46
+ readonly selectedValue?: string;
47
+ readonly disabled?: boolean;
48
+ readonly required?: boolean;
49
+ readonly invalid?: boolean;
50
+ readonly labelId?: string;
51
+ readonly describedBy?: string;
52
+ readonly placeholder?: string;
53
+ readonly className?: string;
54
+ readonly attrs?: UiAttributes;
55
+ }
56
+ export interface CascaderPlans {
57
+ readonly root: UiDomPlan<'div'>;
58
+ readonly trigger: UiDomPlan<'button'>;
59
+ readonly popup: UiDomPlan<'div'>;
60
+ readonly columns: readonly UiDomPlan<'div'>[];
61
+ readonly options: readonly UiDomPlan<'button'>[];
62
+ }
63
+ export type CascaderRemoteState = 'empty' | 'error' | 'filtered' | 'loading' | 'ready';
64
+ export type CascaderPermissionState = 'allowed' | 'restricted';
65
+ export type CascaderVirtualState = 'full' | 'windowed';
66
+ export type CascaderPersistenceState = 'dirty' | 'restored' | 'synced' | 'unbound';
67
+ export interface CascaderAdvancedStateContractOptions {
68
+ readonly options: readonly CascaderOption[];
69
+ readonly query?: string;
70
+ readonly loading?: boolean;
71
+ readonly error?: string;
72
+ readonly resultCount?: number;
73
+ readonly allowedIds?: readonly string[];
74
+ readonly deniedIds?: readonly string[];
75
+ readonly disabledReasons?: Readonly<Record<string, string>>;
76
+ readonly visibleIds?: readonly string[];
77
+ readonly totalNodeCount?: number;
78
+ readonly virtualStart?: number;
79
+ readonly virtualEnd?: number;
80
+ readonly estimatedRowHeight?: number;
81
+ readonly currentValue?: string;
82
+ readonly persistedValue?: string;
83
+ readonly dirty?: boolean;
84
+ readonly restored?: boolean;
85
+ }
86
+ export interface CascaderOptionStateContract {
87
+ readonly id: string;
88
+ readonly visible: boolean;
89
+ readonly allowed: boolean;
90
+ readonly reason: string;
91
+ readonly attrs: UiAttributes;
92
+ }
93
+ export interface CascaderAdvancedStateContract {
94
+ readonly remoteState: CascaderRemoteState;
95
+ readonly permissionState: CascaderPermissionState;
96
+ readonly virtualState: CascaderVirtualState;
97
+ readonly persistenceState: CascaderPersistenceState;
98
+ readonly query: string;
99
+ readonly resultCount: number | undefined;
100
+ readonly deniedIds: readonly string[];
101
+ readonly visibleIds: readonly string[];
102
+ readonly totalNodeCount: number;
103
+ readonly virtualStart: number;
104
+ readonly virtualEnd: number;
105
+ readonly currentValue: string;
106
+ readonly persistedValue: string;
107
+ readonly optionContracts: readonly CascaderOptionStateContract[];
108
+ readonly attrs: UiAttributes;
109
+ }
110
+ export type DateTimeFieldKind = 'date' | 'datetime' | 'time';
111
+ export interface DateTimeFieldPlanOptions {
112
+ readonly id: string;
113
+ readonly kind: DateTimeFieldKind;
114
+ readonly value?: string;
115
+ readonly name?: string;
116
+ readonly min?: string;
117
+ readonly max?: string;
118
+ readonly step?: number;
119
+ readonly disabled?: boolean;
120
+ readonly readonly?: boolean;
121
+ readonly required?: boolean;
122
+ readonly invalid?: boolean;
123
+ readonly labelId?: string;
124
+ readonly describedBy?: string;
125
+ readonly placeholder?: string;
126
+ readonly density?: UiDensity;
127
+ readonly size?: UiControlSize;
128
+ readonly className?: string;
129
+ readonly attrs?: UiAttributes;
130
+ }
131
+ export interface DateTimeFieldPlans {
132
+ readonly root: UiDomPlan<'div'>;
133
+ readonly input: UiDomPlan<'input'>;
134
+ }
135
+ export type UploadFileState = 'done' | 'error' | 'pending' | 'uploading';
136
+ export type UploadTransportState = 'complete' | 'disabled' | 'empty' | 'error' | 'partial' | 'pending' | 'retrying' | 'uploading';
137
+ export interface UploadFileItem {
138
+ readonly id: string;
139
+ readonly name: string;
140
+ readonly size?: number;
141
+ readonly type?: string;
142
+ readonly state?: UploadFileState;
143
+ readonly message?: string;
144
+ readonly progress?: number;
145
+ readonly retryCount?: number;
146
+ readonly retryable?: boolean;
147
+ readonly serverError?: string;
148
+ }
149
+ export interface UploadCandidateFile {
150
+ readonly name: string;
151
+ readonly type?: string;
152
+ }
153
+ export interface UploadPlanOptions {
154
+ readonly id: string;
155
+ readonly files?: readonly UploadFileItem[];
156
+ readonly name?: string;
157
+ readonly accept?: string;
158
+ readonly multiple?: boolean;
159
+ readonly disabled?: boolean;
160
+ readonly required?: boolean;
161
+ readonly invalid?: boolean;
162
+ readonly dragActive?: boolean;
163
+ readonly label?: string;
164
+ readonly labelId?: string;
165
+ readonly describedBy?: string;
166
+ readonly className?: string;
167
+ readonly attrs?: UiAttributes;
168
+ }
169
+ export interface UploadPlans {
170
+ readonly root: UiDomPlan<'div'>;
171
+ readonly input: UiDomPlan<'input'>;
172
+ readonly dropzone: UiDomPlan<'label'>;
173
+ readonly fileList: UiDomPlan<'ul'>;
174
+ readonly files: readonly UiDomPlan<'li'>[];
175
+ }
176
+ export interface UploadTransportStateContractOptions {
177
+ readonly files?: readonly UploadFileItem[];
178
+ readonly disabled?: boolean;
179
+ readonly maxRetries?: number;
180
+ readonly retryingIds?: ReadonlySet<string> | readonly string[];
181
+ readonly serverErrors?: Readonly<Record<string, string | readonly string[] | undefined>>;
182
+ }
183
+ export interface UploadTransportFileContract {
184
+ readonly id: string;
185
+ readonly state: UploadFileState;
186
+ readonly progress: number;
187
+ readonly retryCount: number;
188
+ readonly retrying: boolean;
189
+ readonly retryable: boolean;
190
+ readonly canRetry: boolean;
191
+ readonly serverErrors: readonly string[];
192
+ readonly attrs: UiAttributes;
193
+ }
194
+ export interface UploadTransportStateContract {
195
+ readonly state: UploadTransportState;
196
+ readonly disabled: boolean;
197
+ readonly fileCount: number;
198
+ readonly pendingCount: number;
199
+ readonly uploadingCount: number;
200
+ readonly doneCount: number;
201
+ readonly errorCount: number;
202
+ readonly retryableCount: number;
203
+ readonly serverErrorCount: number;
204
+ readonly retryingIds: readonly string[];
205
+ readonly progress: number;
206
+ readonly files: readonly UploadTransportFileContract[];
207
+ readonly attrs: UiAttributes;
208
+ }
209
+ export declare function createComboboxPlans(options: ComboboxPlanOptions): ComboboxPlans;
210
+ export declare function createUploadPlans(options: UploadPlanOptions): UploadPlans;
211
+ export declare function createUploadTransportStateContract(options?: UploadTransportStateContractOptions): UploadTransportStateContract;
212
+ export declare function createCascaderPlans(options: CascaderPlanOptions): CascaderPlans;
213
+ export declare function createCascaderAdvancedStateContract(options: CascaderAdvancedStateContractOptions): CascaderAdvancedStateContract;
214
+ export declare function createDateTimeFieldPlans(options: DateTimeFieldPlanOptions): DateTimeFieldPlans;
215
+ export declare function formatDateInputValue(value: Date): string;
216
+ export declare function formatTimeInputValue(value: Date, includeSeconds?: boolean): string;
217
+ export declare function formatDateTimeInputValue(value: Date, includeSeconds?: boolean): string;
218
+ export declare function parseDateInputValue(value: string): Date | undefined;
219
+ export declare function parseTimeInputValue(value: string): Date | undefined;
220
+ export declare function parseDateTimeInputValue(value: string): Date | undefined;
221
+ export declare function clampDateTimeInputValue(value: string, min: string | undefined, max: string | undefined): string;
222
+ export declare function formatUploadFileSize(bytes: number): string;
223
+ export declare function isUploadFileAccepted(file: UploadCandidateFile, accept: string | undefined): boolean;
224
+ export declare function filterAutocompleteOptions(options: readonly ComboboxOption[], query: string, limit?: number): readonly ComboboxOption[];
225
+ export declare function getNextComboboxOptionId(options: readonly ComboboxOption[], activeId: string | undefined, key: string): string | undefined;
226
+ export declare function getCascaderColumns(options: readonly CascaderOption[], activePath?: readonly string[]): readonly (readonly CascaderOption[])[];
227
+ export declare function findCascaderPathByValue(options: readonly CascaderOption[], value: string | undefined): readonly CascaderOption[];
228
+ export declare function findCascaderPathById(options: readonly CascaderOption[], id: string | undefined): readonly CascaderOption[];
229
+ export declare function getNextCascaderOptionId(options: readonly CascaderOption[], activeId: string | undefined, key: string): string | undefined;
230
+ export declare function shouldOpenCascaderForKey(key: string): boolean;
231
+ export declare function shouldSelectCascaderOption(key: string): boolean;
232
+ export declare function shouldCloseCascaderForKey(key: string): boolean;
233
+ export declare function shouldOpenComboboxForKey(key: string): boolean;
234
+ export declare function shouldSelectComboboxOption(key: string): boolean;
235
+ export declare function shouldCloseComboboxForKey(key: string): boolean;
236
+ /**
237
+ * Color Picker plans — native color input + swatch preview + value text.
238
+ * Spec source: common enterprise-backend component set (no UIStyle spec, this is an out-of-spec component).
239
+ */
240
+ export interface ColorPickerPlans {
241
+ readonly root: UiDomPlan<'div'>;
242
+ readonly input: UiDomPlan<'input'>;
243
+ readonly preview: UiDomPlan<'span'>;
244
+ readonly value: UiDomPlan<'span'>;
245
+ }
246
+ export interface ColorPickerPlanOptions {
247
+ readonly id: string;
248
+ /** Current color value (#rrggbb). */
249
+ readonly value?: string;
250
+ readonly disabled?: boolean;
251
+ readonly className?: string;
252
+ readonly attrs?: UiAttributes;
253
+ }
254
+ export declare function createColorPickerPlans(options: ColorPickerPlanOptions): ColorPickerPlans;
255
+ /**
256
+ * Transfer plans — source list / direction actions / target list.
257
+ * Spec source: common enterprise-backend component set (permission/allocation scenarios; no UIStyle spec, this is an out-of-spec component).
258
+ */
259
+ export interface TransferPlans {
260
+ readonly root: UiDomPlan<'div'>;
261
+ readonly source: UiDomPlan<'div'>;
262
+ readonly sourceList: UiDomPlan<'ul'>;
263
+ readonly actions: UiDomPlan<'div'>;
264
+ readonly toRight: UiDomPlan<'button'>;
265
+ readonly toLeft: UiDomPlan<'button'>;
266
+ readonly target: UiDomPlan<'div'>;
267
+ readonly targetList: UiDomPlan<'ul'>;
268
+ }
269
+ export interface TransferPlanOptions {
270
+ readonly id: string;
271
+ readonly className?: string;
272
+ readonly attrs?: UiAttributes;
273
+ }
274
+ export declare function createTransferPlans(options: TransferPlanOptions): TransferPlans;
275
+ /**
276
+ * Mask Input plans — a text field constrained by a format placeholder (phone/date/amount/custom).
277
+ * Spec source: user-defined requirement (high-frequency formatted input in enterprise backends).
278
+ * Mask semantics: # = digit placeholder, other characters = literal separators (e.g. '###-####' with input 1381234 → 138-1234).
279
+ */
280
+ export type MaskInputKind = 'amount' | 'custom' | 'date' | 'phone';
281
+ export interface MaskInputPlans {
282
+ readonly root: UiDomPlan<'div'>;
283
+ readonly input: UiDomPlan<'input'>;
284
+ }
285
+ export interface MaskInputPlanOptions {
286
+ readonly id: string;
287
+ /** Mask kind (phone/date/amount have built-in formats; custom uses the mask option). */
288
+ readonly kind?: MaskInputKind;
289
+ /** Custom mask: '###-####' style. */
290
+ readonly mask?: string;
291
+ readonly value?: string;
292
+ readonly placeholder?: string;
293
+ readonly disabled?: boolean;
294
+ readonly readonly?: boolean;
295
+ readonly invalid?: boolean;
296
+ readonly className?: string;
297
+ readonly attrs?: UiAttributes;
298
+ }
299
+ export declare function resolveMaskInputMask(kind: MaskInputKind | undefined, mask: string | undefined): string;
300
+ export declare function createMaskInputPlans(options: MaskInputPlanOptions): MaskInputPlans;