1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
// SPDX-FileCopyrightText: Copyright (c) 2026 Mike Li/Mikewolfli/Wei Li(mikewolfli@163.com)
// SPDX-License-Identifier: MIT
//! Widget kind enum — discrete categories supported by the widget model layer.
#[cfg(all(feature = "serde", widgets_unstripped))]
use serde::{Deserialize, Serialize};
/// Discrete widget categories supported by the widget model layer.
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(all(feature = "serde", widgets_unstripped), derive(Serialize, Deserialize))]
pub enum WidgetKind {
/// Top-level window.
Window,
/// Secondary window, usually modal, that hosts its own child widgets.
#[cfg(widgets_unstripped)]
Dialog,
/// Modal alert that shows a short message and a fixed set of response buttons.
#[cfg(widgets_unstripped)]
MessageBox,
/// Modal dialog for browsing the filesystem and picking a file.
#[cfg(widgets_unstripped)]
FileDialog,
/// Modal dialog with a color wheel, swatches and RGBA value entry for picking a color.
#[cfg(widgets_unstripped)]
ColorDialog,
/// Modal dialog for browsing installed typefaces and picking a font.
#[cfg(widgets_unstripped)]
FontDialog,
/// Modal prompt that collects a single line of text from the user.
#[cfg(widgets_unstripped)]
InputDialog,
/// Modal dialog with a progress bar and a cancel button for long-running work.
#[cfg(widgets_unstripped)]
ProgressDialog,
/// Borderless window that floats above other windows.
#[cfg(widgets_unstripped)]
PopupWindow,
/// Push button that fires its clicked signal when activated.
Button,
/// Label with an independent on/off box, used for multi-choice settings.
CheckBox,
/// Round choice control, mutually exclusive with the other radio buttons in its group.
RadioButton,
/// Non-interactive text display.
Label,
/// Single-line text input field.
LineEdit,
/// Framed multi-line plain-text editor.
#[cfg(widgets_unstripped)]
TextEdit,
/// Multi-line editor with character and paragraph formatting attributes.
#[cfg(widgets_unstripped)]
RichEdit,
/// Text field with a drop-down list of selectable items.
ComboBox,
/// Numeric entry with increment/decrement arrows and a range constraint.
SpinBox,
/// Scrollable list from which one or more items can be selected.
ListBox,
/// Item view backed by a model with a customizable item delegate.
#[cfg(widgets_unstripped)]
ListView,
/// Item view that presents a model as expandable hierarchical rows.
#[cfg(widgets_unstripped)]
TreeView,
/// Visual fill indicator for the progress of a bounded operation.
ProgressBar,
/// Handle dragged along a groove to pick a value from a continuous range.
Slider,
/// Thumb on a rail that scrolls a related viewport.
ScrollBar,
/// Scrollable container that clips and offsets a larger child widget.
ScrollArea,
/// Plain rectangular container used for grouping child widgets.
Panel,
/// Container that draws a border or 3D frame around its child.
Frame,
/// Dockable container that arranges child panels into docked regions.
#[cfg(widgets_unstripped)]
DockPanel,
/// Frame with a title label drawn over its top border, grouping related controls.
GroupBox,
/// Container of tabbed pages in which only the selected page is visible.
#[cfg(widgets_unstripped)]
TabWidget,
/// Draggable divider that splits a container into resizable panes.
#[cfg(widgets_unstripped)]
Splitter,
/// Workspace that hosts multiple independent child windows.
#[cfg(widgets_unstripped)]
MdiArea,
/// Horizontal strip of top-level menu titles.
#[cfg(widgets_unstripped)]
MenuBar,
/// Drop-down list of commands or submenus.
#[cfg(widgets_unstripped)]
Menu,
/// Individual item inside a menu.
#[cfg(widgets_unstripped)]
MenuItem,
/// Menu opened at the pointer position in response to a secondary click.
#[cfg(widgets_unstripped)]
ContextMenu,
/// Strip of icon buttons and other controls for quick actions.
#[cfg(widgets_unstripped)]
ToolBar,
/// Strip at the bottom of a window that shows transient status messages.
#[cfg(widgets_unstripped)]
StatusBar,
/// Free-form surface that draws user-supplied shapes.
#[cfg(widgets_unstripped)]
Canvas,
/// Cell-based view that arranges its model into rows and columns.
#[cfg(widgets_unstripped)]
Table,
/// Rectangular layout container that arranges children into cells.
#[cfg(widgets_unstripped)]
Grid,
/// Chart surface widget.
#[cfg(widgets_unstripped)]
Chart,
/// Button that latches between checked and unchecked states when clicked.
#[cfg(widgets_unstripped)]
ToggleButton,
/// List box whose rows carry independent check boxes.
#[cfg(widgets_unstripped)]
CheckListBox,
/// Spin box that edits a floating-point value.
#[cfg(widgets_unstripped)]
DoubleSpinBox,
/// Rotary knob that maps its angle to a bounded value.
#[cfg(widgets_unstripped)]
Dial,
/// Multi-page dialog that walks the user through ordered steps.
#[cfg(widgets_unstripped)]
Wizard,
/// Field that opens a calendar popup for selecting a date.
#[cfg(widgets_unstripped)]
DatePicker,
/// Field that opens a popup for selecting a time of day.
#[cfg(widgets_unstripped)]
TimePicker,
/// Field for selecting a combined date and time value.
#[cfg(widgets_unstripped)]
DateTimePicker,
/// Modal dialog for choosing a directory from the filesystem.
#[cfg(widgets_unstripped)]
DirectoryDialog,
/// View that renders model items using one of several switchable display modes.
#[cfg(widgets_unstripped)]
DataView,
/// Two-column editor that lists named properties with an editable value cell.
#[cfg(widgets_unstripped)]
PropertyGrid,
/// Side panel of expandable grouped commands, typically shown alongside a design surface.
#[cfg(widgets_unstripped)]
Toolbox,
/// Container that shows one child page at a time, selected programmatically.
#[cfg(widgets_unstripped)]
StackedWidget,
/// Collapsible section with a clickable header that expands or hides its content.
#[cfg(widgets_unstripped)]
CollapsiblePane,
/// Individual panel that can be detached and re-docked inside a DockPanel.
#[cfg(widgets_unstripped)]
DockWidget,
/// Animated indicator shown while a background operation is running.
#[cfg(widgets_unstripped)]
ActivityIndicator,
/// Month grid for browsing and selecting calendar dates.
#[cfg(widgets_unstripped)]
Calendar,
/// Hierarchical view that lists one column of children per selected branch.
#[cfg(widgets_unstripped)]
ColumnView,
/// Read-only list of the edit commands available in the current undo stack.
#[cfg(widgets_unstripped)]
UndoView,
/// Button styled as a key command link, optionally with an explanatory subtitle.
#[cfg(widgets_unstripped)]
CommandLink,
/// Seven-segment display that renders a numeric string as digit segments.
#[cfg(widgets_unstripped)]
LCDNumber,
/// Combo box populated with the installed typefaces and rendered in each font.
#[cfg(widgets_unstripped)]
FontComboBox,
/// Web engine view widget for displaying web content.
#[cfg(widgets_unstripped)]
WebEngineView,
/// Web engine page widget for managing web content.
#[cfg(widgets_unstripped)]
WebEnginePage,
/// Web engine settings widget for configuring web engine behavior.
#[cfg(widgets_unstripped)]
WebEngineSettings,
/// Web engine download item widget for managing downloads.
#[cfg(widgets_unstripped)]
WebEngineDownloadItem,
/// Web engine cookie store widget for managing cookies.
#[cfg(widgets_unstripped)]
WebEngineCookieStore,
/// Web engine web channel widget for JavaScript communication.
#[cfg(widgets_unstripped)]
WebEngineWebChannel,
/// Web engine find text result widget for text search results.
#[cfg(widgets_unstripped)]
WebEngineFindTextResult,
/// Web engine notification widget for web notifications.
#[cfg(widgets_unstripped)]
WebEngineNotification,
/// Web engine script dialog widget for JavaScript dialogs.
#[cfg(widgets_unstripped)]
WebEngineScriptDialog,
/// Web engine context menu request widget for context menu handling.
#[cfg(widgets_unstripped)]
WebEngineContextMenuRequest,
/// Action widget for menu and toolbar actions.
#[cfg(widgets_unstripped)]
Action,
/// Compact button with an icon and optional caption, used on toolbars.
#[cfg(widgets_unstripped)]
ToolButton,
/// Freeform shape widget — a path-based non-rectangular clickable shape.
#[cfg(widgets_unstripped)]
FreeformShape,
/// Standalone tab bar widget (decoupled from TabWidget).
#[cfg(widgets_unstripped)]
TabBar,
/// Pie menu / radial menu widget.
#[cfg(widgets_unstripped)]
PieMenu,
/// RibbonBar (Office-style ribbon) widget.
#[cfg(widgets_unstripped)]
RibbonBar,
/// TileView widget — swipeable tiled page view (BLUE13 R2.8).
TileView,
/// Line widget — horizontal or vertical divider line (BLUE13 R2.13).
Line,
/// Meter widget — gauge with arc and needle (BLUE13 R2.14).
Meter,
/// MiniChart widget — simplified line/bar chart (BLUE13 R2.10).
MiniChart,
/// ImageView widget — displays an Image as a widget (BLUE13 R2.12).
ImageView,
/// MiniCanvas widget — simplified drawing surface (BLUE13 R2.11).
MiniCanvas,
/// Arc widget — circular progress/indicator (BLUE13 R2.1).
Arc,
/// Spinner widget — rotating loading indicator (BLUE13 R2.2).
Spinner,
/// Roller widget — scroll-wheel style selector (BLUE13 R2.3).
Roller,
/// Dropdown widget — standalone dropdown list selector (BLUE13 R2.4).
Dropdown,
/// TextArea widget — multi-line text input (BLUE13 R2.5).
TextArea,
/// Keyboard widget — on-screen virtual keyboard (BLUE13 R2.6).
Keyboard,
/// Switch/Toggle widget for on/off binary state.
Switch,
/// Text field with a leading search icon and a trailing clear button.
#[cfg(widgets_unstripped)]
SearchBox,
/// Compact rounded label that carries a short tag or token, optionally removable.
#[cfg(widgets_unstripped)]
Chip,
/// Small overlay marker carrying a count or status dot, anchored to another widget.
#[cfg(widgets_unstripped)]
Badge,
/// Grey placeholder block shown while the real content is still loading.
#[cfg(widgets_unstripped)]
SkeletonLoader,
/// Round, elevated button that floats over content for the primary page action.
#[cfg(widgets_unstripped)]
FAB,
/// Modal panel that slides up from the bottom edge and can be dragged back down.
#[cfg(widgets_unstripped)]
BottomSheet,
/// Row of tabs fixed along the bottom edge, as used by mobile apps.
#[cfg(widgets_unstripped)]
BottomNavigationBar,
/// Sidebar that slides in from the edge to hold primary navigation entries.
#[cfg(widgets_unstripped)]
NavigationDrawer,
/// Bar pinned to the top of a window that holds the title and primary actions.
#[cfg(widgets_unstripped)]
AppBar,
/// Date picker laid out for touch input rather than a desktop calendar grid.
#[cfg(widgets_unstripped)]
MobileDatePicker,
/// Thin rule that separates adjacent sections of content.
#[cfg(widgets_unstripped)]
Divider,
/// Numeric field flanked by plus and minus buttons that nudge the value by fixed steps.
#[cfg(widgets_unstripped)]
Stepper,
/// Row of selectable stars or icons that records a discrete rating value.
#[cfg(widgets_unstripped)]
Rating,
/// Avatar widget — circular/square user image placeholder with initials fallback.
#[cfg(widgets_unstripped)]
Avatar,
/// EmptyState widget — placeholder shown when a view has no content.
#[cfg(widgets_unstripped)]
EmptyState,
/// Carousel/SwipeView widget — horizontal swipeable page carousel with dot indicators.
#[cfg(widgets_unstripped)]
Carousel,
/// ColorHistory widget — a color history picker with a swatch grid.
#[cfg(widgets_unstripped)]
ColorHistory,
/// ColorWell widget — compact color swatch that shows the current color and emits a signal when clicked.
#[cfg(widgets_unstripped)]
ColorWell,
/// TagInput widget — text input that creates tags/chips on Enter or comma, with removable tags.
#[cfg(widgets_unstripped)]
TagInput,
/// IME preedit text overlay widget for composition text input.
#[cfg(widgets_unstripped)]
ImePreedit,
/// InplaceEditor — an in-place text editing control for table/cell editing.
#[cfg(widgets_unstripped)]
InplaceEditor,
/// QRCode widget — displays a deterministic QR code pattern from a data string.
#[cfg(widgets_unstripped)]
QRCode,
/// MasonryLayout widget — a Pinterest-style waterfall grid layout.
#[cfg(widgets_unstripped)]
MasonryLayout,
/// CupertinoSwitch — iOS-style switch (alias for Switch with iOS coloring).
#[cfg(widgets_unstripped)]
CupertinoSwitch,
/// MaterialSnackbar — Material Design snackbar notification.
#[cfg(widgets_unstripped)]
MaterialSnackbar,
/// AdaptiveScaffold — cross-platform adaptive scaffold with AppBar + content + bottom nav.
#[cfg(widgets_unstripped)]
AdaptiveScaffold,
/// WizardDialog — step-by-step wizard control with back/next/finish navigation.
#[cfg(widgets_unstripped)]
WizardDialog,
/// SafeArea — mobile safe area widget that insets content to avoid notches, status bars, and home indicators.
#[cfg(widgets_unstripped)]
SafeArea,
/// CupertinoAlertDialog — iOS-style alert dialog with title, message, and buttons.
#[cfg(widgets_unstripped)]
CupertinoAlertDialog,
/// CupertinoSlider — iOS-style slider with rounded track and circular knob.
#[cfg(widgets_unstripped)]
CupertinoSlider,
/// MaterialNavigationRail — Material Design side navigation rail for tablets.
#[cfg(widgets_unstripped)]
MaterialNavigationRail,
/// Tooltip — a popup label that appears on hover for context info.
#[cfg(widgets_unstripped)]
Tooltip,
/// SegmentedButton — a horizontal group of selectable segments (Material 3 style).
#[cfg(widgets_unstripped)]
SegmentedButton,
/// NavigationStack — a push/pop page navigation container.
#[cfg(widgets_unstripped)]
NavigationStack,
/// ProgressCircle — a circular progress indicator.
#[cfg(widgets_unstripped)]
ProgressCircle,
/// Icon — a widget for rendering simple geometric icon representations.
#[cfg(widgets_unstripped)]
Icon,
/// DropdownMenu — a cascading/linked dropdown selector with item list.
#[cfg(widgets_unstripped)]
DropdownMenu,
/// MaskedEdit — a formatted text input with mask-based input constraints.
#[cfg(widgets_unstripped)]
MaskedEdit,
/// MenuButton — a button that opens a dropdown menu when clicked.
#[cfg(widgets_unstripped)]
MenuButton,
/// Popover — a floating bubble card with an anchor arrow.
#[cfg(widgets_unstripped)]
Popover,
/// AutoCompleteEdit — a text input with auto-completion dropdown.
#[cfg(widgets_unstripped)]
AutoCompleteEdit,
/// MultiSelectComboBox — a combo box that allows multiple selections.
#[cfg(widgets_unstripped)]
MultiSelectComboBox,
/// RangeSlider — a dual-handle range slider for min-max selection.
#[cfg(widgets_unstripped)]
RangeSlider,
/// FloatingLabel — a text input with a floating label (Material Design style).
#[cfg(widgets_unstripped)]
FloatingLabel,
/// FontPreview — a font preview panel for font selection dialogs.
#[cfg(widgets_unstripped)]
FontPreview,
/// CupertinoNavigationBar — iOS-style large title navigation bar.
#[cfg(widgets_unstripped)]
CupertinoNavigationBar,
/// CupertinoSegmentedControl — iOS-style pill-shaped segmented control.
#[cfg(widgets_unstripped)]
CupertinoSegmentedControl,
/// SwipeToDismiss — swipe-to-dismiss/delete gesture container.
#[cfg(widgets_unstripped)]
SwipeToDismiss,
/// PagerPageView — horizontal page view with dot indicators.
#[cfg(widgets_unstripped)]
PagerPageView,
/// TabView — iOS-style segmented tab page view.
#[cfg(widgets_unstripped)]
TabView,
/// SearchBar — iOS-style search bar with cancel button.
#[cfg(widgets_unstripped)]
SearchBar,
/// ShortcutEditor — a keyboard shortcut editor widget.
#[cfg(widgets_unstripped)]
ShortcutEditor,
/// RefreshControl — pull-to-refresh control for scrollable views.
#[cfg(widgets_unstripped)]
RefreshControl,
/// ModalBottomSheet — Material-style modal bottom sheet with drag-to-dismiss.
#[cfg(widgets_unstripped)]
ModalBottomSheet,
/// LineChart — a 2D line chart for visualizing data series.
#[cfg(widgets_unstripped)]
LineChart,
/// Sparkline — a compact inline sparkline chart without axes.
#[cfg(widgets_unstripped)]
Sparkline,
/// BarChart — a vertical bar chart for categorical data visualization.
#[cfg(widgets_unstripped)]
BarChart,
/// FindReplaceDialog — a find/replace dialog with text input, toggles, and action buttons.
#[cfg(widgets_unstripped)]
FindReplaceDialog,
/// PropertiesPanel — a categorized property editor panel with grid layout.
#[cfg(widgets_unstripped)]
PropertiesPanel,
/// PieChart — a circular statistical chart with colored sectors.
#[cfg(widgets_unstripped)]
PieChart,
/// CupertinoDatePicker — iOS UIPickerView-style scrolling wheel date picker.
#[cfg(widgets_unstripped)]
CupertinoDatePicker,
/// EditableComboBox — a combo box that allows typing custom values.
#[cfg(widgets_unstripped)]
EditableComboBox,
/// DateRangePicker — a calendar-based date range selection widget.
#[cfg(widgets_unstripped)]
DateRangePicker,
/// AnimatedImage — plays animated images (GIF/APNG/WebP frame sequences).
#[cfg(widgets_unstripped)]
AnimatedImage,
/// HeroAnimation — shared element transition with interpolated position/size/opacity.
#[cfg(widgets_unstripped)]
HeroAnimation,
/// BezierCurveEditor — interactive cubic bezier curve editor for custom easing curves.
#[cfg(widgets_unstripped)]
BezierCurveEditor,
/// LottieWidget — Lottie JSON animation player.
#[cfg(widgets_unstripped)]
LottieWidget,
/// RiveWidget — Rive animation runtime widget.
#[cfg(widgets_unstripped)]
RiveWidget,
/// VideoPlayer — video player widget with playback controls.
#[cfg(widgets_unstripped)]
VideoPlayer,
/// ImageGallery — image gallery/browser with thumbnails.
#[cfg(widgets_unstripped)]
ImageGallery,
/// AudioVisualizer — real-time audio waveform/spectrum visualization.
#[cfg(widgets_unstripped)]
AudioVisualizer,
/// CameraPreview — camera viewfinder preview area with controls.
#[cfg(widgets_unstripped)]
CameraPreview,
/// BarcodeScanner — barcode/QR code scanner viewfinder with detection.
#[cfg(widgets_unstripped)]
BarcodeScanner,
/// GridTable — feature-rich virtualized table with grid lines, headers, sorting, and selection.
#[cfg(widgets_unstripped)]
GridTable,
}