@design.estate/dees-catalog 1.11.6 → 1.11.7
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_bundle/bundle.js +1 -1
- package/dist_bundle/bundle.js.map +1 -1
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/package.json +1 -1
- package/readme.md +1238 -275
- package/ts_web/00_commitinfo_data.ts +1 -1
package/readme.md
CHANGED
|
@@ -1,432 +1,1395 @@
|
|
|
1
|
-
# @design.estate/dees-catalog
|
|
2
|
-
|
|
3
|
-
> 75+ Production-ready UI components for building modern web applications with consistent design and behavior
|
|
1
|
+
# @design.estate/dees-catalog
|
|
2
|
+
A comprehensive web components library built with TypeScript and LitElement, providing 75+ UI components for building modern web applications with consistent design and behavior.
|
|
4
3
|
|
|
5
|
-
|
|
6
|
-
[
|
|
7
|
-
[](https://www.webcomponents.org/)
|
|
8
|
-
[](https://opensource.org/licenses/MIT)
|
|
4
|
+
## Development Guide
|
|
5
|
+
For developers working on this library, please refer to the [UI Components Playbook](readme.playbook.md) for comprehensive patterns, best practices, and architectural guidelines.
|
|
9
6
|
|
|
10
|
-
##
|
|
7
|
+
## Install
|
|
8
|
+
To install the `@design.estate/dees-catalog` library, you can use npm or any other compatible JavaScript package manager:
|
|
11
9
|
|
|
12
10
|
```bash
|
|
13
|
-
# Install with npm
|
|
14
11
|
npm install @design.estate/dees-catalog
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Components Overview
|
|
15
|
+
|
|
16
|
+
| Category | Components |
|
|
17
|
+
|----------|------------|
|
|
18
|
+
| Core UI | [`DeesButton`](#deesbutton), [`DeesButtonExit`](#deesbuttonexit), [`DeesButtonGroup`](#deesbuttongroup), [`DeesBadge`](#deesbadge), [`DeesChips`](#deeschips), [`DeesHeading`](#deesheading), [`DeesHint`](#deeshint), [`DeesIcon`](#deesicon), [`DeesLabel`](#deeslabel), [`DeesPanel`](#deespanel), [`DeesSearchbar`](#deessearchbar), [`DeesSpinner`](#deesspinner), [`DeesToast`](#deestoast), [`DeesWindowcontrols`](#deeswindowcontrols) |
|
|
19
|
+
| Forms | [`DeesForm`](#deesform), [`DeesInputText`](#deesinputtext), [`DeesInputCheckbox`](#deesinputcheckbox), [`DeesInputDropdown`](#deesinputdropdown), [`DeesInputRadiogroup`](#deesinputradiogroup), [`DeesInputFileupload`](#deesinputfileupload), [`DeesInputIban`](#deesinputiban), [`DeesInputPhone`](#deesinputphone), [`DeesInputQuantitySelector`](#deesinputquantityselector), [`DeesInputMultitoggle`](#deesinputmultitoggle), [`DeesInputTags`](#deesinputtags), [`DeesInputTypelist`](#deesinputtypelist), [`DeesInputRichtext`](#deesinputrichtext), [`DeesInputWysiwyg`](#deesinputwysiwyg), [`DeesInputDatepicker`](#deesinputdatepicker), [`DeesInputSearchselect`](#deesinputsearchselect), [`DeesFormSubmit`](#deesformsubmit) |
|
|
20
|
+
| Layout | [`DeesAppuiBase`](#deesappuibase), [`DeesAppuiMainmenu`](#deesappuimainmenu), [`DeesAppuiMainselector`](#deesappuimainselector), [`DeesAppuiMaincontent`](#deesappuimaincontent), [`DeesAppuiAppbar`](#deesappuiappbar), [`DeesAppuiActivitylog`](#deesappuiactivitylog), [`DeesAppuiProfiledropdown`](#deesappuiprofiledropdown), [`DeesAppuiTabs`](#deesappuitabs), [`DeesAppuiView`](#deesappuiview), [`DeesMobileNavigation`](#deesmobilenavigation), [`DeesDashboardGrid`](#deesdashboardgrid) |
|
|
21
|
+
| Data Display | [`DeesTable`](#deestable), [`DeesDataviewCodebox`](#deesdataviewcodebox), [`DeesDataviewStatusobject`](#deesdataviewstatusobject), [`DeesPdf`](#deespdf), [`DeesStatsGrid`](#deesstatsgrid), [`DeesPagination`](#deespagination) |
|
|
22
|
+
| Visualization | [`DeesChartArea`](#deeschartarea), [`DeesChartLog`](#deeschartlog) |
|
|
23
|
+
| Dialogs & Overlays | [`DeesModal`](#deesmodal), [`DeesContextmenu`](#deescontextmenu), [`DeesSpeechbubble`](#deesspeechbubble), [`DeesWindowlayer`](#deeswindowlayer) |
|
|
24
|
+
| Navigation | [`DeesStepper`](#deesstepper), [`DeesProgressbar`](#deesprogressbar) |
|
|
25
|
+
| Development | [`DeesEditor`](#deeseditor), [`DeesEditorMarkdown`](#deeseditormarkdown), [`DeesEditorMarkdownoutlet`](#deeseditormarkdownoutlet), [`DeesTerminal`](#deesterminal), [`DeesUpdater`](#deesupdater) |
|
|
26
|
+
| Auth & Utilities | [`DeesSimpleAppdash`](#deessimpleappdash), [`DeesSimpleLogin`](#deessimplelogin) |
|
|
27
|
+
| Shopping | [`DeesShoppingProductcard`](#deesshoppingproductcard) |
|
|
28
|
+
|
|
29
|
+
## Detailed Component Documentation
|
|
30
|
+
|
|
31
|
+
### Core UI Components
|
|
15
32
|
|
|
16
|
-
|
|
17
|
-
|
|
33
|
+
#### `DeesButton`
|
|
34
|
+
A versatile button component supporting multiple styles and states.
|
|
18
35
|
|
|
19
|
-
|
|
20
|
-
|
|
36
|
+
```typescript
|
|
37
|
+
// Basic usage
|
|
38
|
+
const button = document.createElement('dees-button');
|
|
39
|
+
button.text = 'Click me';
|
|
40
|
+
|
|
41
|
+
// With options
|
|
42
|
+
<dees-button
|
|
43
|
+
type="highlighted" // Options: normal, highlighted, discreet
|
|
44
|
+
status="pending" // Options: normal, pending, success, error
|
|
45
|
+
disabled={false} // Optional: disables the button
|
|
46
|
+
@click=${handleClick}
|
|
47
|
+
>Click me</dees-button>
|
|
21
48
|
```
|
|
22
49
|
|
|
23
|
-
|
|
50
|
+
#### `DeesBadge`
|
|
51
|
+
Display status indicators or counts with customizable styles.
|
|
24
52
|
|
|
25
53
|
```typescript
|
|
26
|
-
|
|
27
|
-
|
|
54
|
+
<dees-badge
|
|
55
|
+
type="success" // Options: default, primary, success, warning, error
|
|
56
|
+
text="New" // Text to display
|
|
57
|
+
rounded // Optional: applies rounded corners
|
|
58
|
+
></dees-badge>
|
|
59
|
+
```
|
|
28
60
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
61
|
+
#### `DeesChips`
|
|
62
|
+
Interactive chips/tags with selection capabilities.
|
|
63
|
+
|
|
64
|
+
```typescript
|
|
65
|
+
<dees-chips
|
|
66
|
+
selectionMode="multiple" // Options: none, single, multiple
|
|
67
|
+
chipsAreRemovable // Optional: allows removing chips
|
|
68
|
+
.selectableChips=${[
|
|
69
|
+
{ key: 'tag1', value: 'Important' },
|
|
70
|
+
{ key: 'tag2', value: 'Urgent' }
|
|
71
|
+
]}
|
|
72
|
+
@selection-change=${handleSelection}
|
|
73
|
+
></dees-chips>
|
|
39
74
|
```
|
|
40
75
|
|
|
41
|
-
|
|
76
|
+
#### `DeesIcon`
|
|
77
|
+
Display icons from FontAwesome and Lucide icon libraries with library prefixes.
|
|
42
78
|
|
|
43
|
-
|
|
79
|
+
```typescript
|
|
80
|
+
// FontAwesome icons - use 'fa:' prefix
|
|
81
|
+
<dees-icon
|
|
82
|
+
icon="fa:check" // FontAwesome icon with fa: prefix
|
|
83
|
+
iconSize="24" // Size in pixels
|
|
84
|
+
color="#22c55e" // Optional: custom color
|
|
85
|
+
></dees-icon>
|
|
86
|
+
|
|
87
|
+
// Lucide icons - use 'lucide:' prefix
|
|
88
|
+
<dees-icon
|
|
89
|
+
icon="lucide:menu" // Lucide icon with lucide: prefix
|
|
90
|
+
iconSize="24" // Size in pixels
|
|
91
|
+
color="#007bff" // Optional: custom color
|
|
92
|
+
strokeWidth="2" // Optional: stroke width for Lucide icons
|
|
93
|
+
></dees-icon>
|
|
94
|
+
|
|
95
|
+
// Legacy API (deprecated but still supported)
|
|
96
|
+
<dees-icon
|
|
97
|
+
iconFA="check" // Without prefix - assumes FontAwesome
|
|
98
|
+
></dees-icon>
|
|
99
|
+
```
|
|
44
100
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
| **Core UI** | 15+ | Buttons, Icons, Badges, Labels, Panels |
|
|
48
|
-
| **Forms** | 20+ | Text Input, Dropdown, Date Picker, WYSIWYG Editor |
|
|
49
|
-
| **Layout** | 12+ | App Shell, Navigation, Dashboard Grid |
|
|
50
|
-
| **Data Display** | 8+ | Tables, Charts, Stats Grid, Pagination |
|
|
51
|
-
| **Overlays** | 5+ | Modals, Context Menus, Toasts |
|
|
52
|
-
| **Development** | 6+ | Code Editor, Terminal, Markdown Editor |
|
|
101
|
+
#### `DeesLabel`
|
|
102
|
+
Text label component with optional icon and status indicators.
|
|
53
103
|
|
|
54
|
-
|
|
104
|
+
```typescript
|
|
105
|
+
<dees-label
|
|
106
|
+
text="Status" // Label text
|
|
107
|
+
icon="info-circle" // Optional: icon name
|
|
108
|
+
type="info" // Options: default, info, success, warning, error
|
|
109
|
+
size="medium" // Options: small, medium, large
|
|
110
|
+
></dees-label>
|
|
111
|
+
```
|
|
55
112
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
- 📱 **Responsive** - Mobile-first design approach
|
|
59
|
-
- ♿ **Accessible** - ARIA compliant with keyboard navigation
|
|
60
|
-
- 🚀 **Performance** - Lazy loading and optimized rendering
|
|
61
|
-
- 🔧 **Customizable** - CSS variables and property APIs
|
|
62
|
-
- 🧩 **Framework Agnostic** - Works with any framework or vanilla JS
|
|
63
|
-
- 📖 **Well Documented** - Comprehensive demos and examples
|
|
113
|
+
#### `DeesSpinner`
|
|
114
|
+
Loading indicator with customizable appearance.
|
|
64
115
|
|
|
65
|
-
|
|
116
|
+
```typescript
|
|
117
|
+
<dees-spinner
|
|
118
|
+
size="medium" // Options: small, medium, large
|
|
119
|
+
type="primary" // Options: primary, secondary, light, dark
|
|
120
|
+
overlay // Optional: adds a full-screen overlay
|
|
121
|
+
></dees-spinner>
|
|
122
|
+
```
|
|
66
123
|
|
|
67
|
-
|
|
124
|
+
#### `DeesToast`
|
|
125
|
+
Notification toast messages with various styles, positions, and auto-dismiss functionality.
|
|
68
126
|
|
|
69
|
-
#### Buttons & Actions
|
|
70
127
|
```typescript
|
|
71
|
-
//
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
128
|
+
// Programmatic usage
|
|
129
|
+
DeesToast.show({
|
|
130
|
+
message: 'Operation successful',
|
|
131
|
+
type: 'success', // Options: info, success, warning, error
|
|
132
|
+
duration: 3000, // Time in milliseconds before auto-dismiss
|
|
133
|
+
position: 'top-right' // Options: top-right, top-left, bottom-right, bottom-left, top-center, bottom-center
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
// Convenience methods
|
|
137
|
+
DeesToast.info('Information message');
|
|
138
|
+
DeesToast.success('Success message');
|
|
139
|
+
DeesToast.warning('Warning message');
|
|
140
|
+
DeesToast.error('Error message');
|
|
141
|
+
|
|
142
|
+
// Advanced control
|
|
143
|
+
const toast = await DeesToast.show({
|
|
144
|
+
message: 'Processing...',
|
|
145
|
+
type: 'info',
|
|
146
|
+
duration: 0 // No auto-dismiss
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
// Later dismiss programmatically
|
|
150
|
+
toast.dismiss();
|
|
151
|
+
|
|
152
|
+
// Component usage (not typically used directly)
|
|
153
|
+
<dees-toast
|
|
154
|
+
message="Changes saved"
|
|
155
|
+
type="success"
|
|
156
|
+
duration="3000"
|
|
157
|
+
></dees-toast>
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Key Features:
|
|
161
|
+
- Multiple toast types with distinct icons and colors
|
|
162
|
+
- 6 position options for flexible placement
|
|
163
|
+
- Auto-dismiss with visual progress indicator
|
|
164
|
+
- Manual dismiss by clicking
|
|
165
|
+
- Smooth animations and transitions
|
|
166
|
+
- Automatic stacking of multiple toasts
|
|
167
|
+
- Theme-aware styling
|
|
168
|
+
- Programmatic control
|
|
169
|
+
|
|
170
|
+
#### `DeesButtonExit`
|
|
171
|
+
Exit/close button component with consistent styling.
|
|
79
172
|
|
|
80
|
-
|
|
173
|
+
```typescript
|
|
174
|
+
<dees-button-exit
|
|
175
|
+
@click=${handleClose}
|
|
176
|
+
></dees-button-exit>
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
#### `DeesButtonGroup`
|
|
180
|
+
Container for grouping related buttons together.
|
|
181
|
+
|
|
182
|
+
```typescript
|
|
81
183
|
<dees-button-group
|
|
82
184
|
.buttons=${[
|
|
83
|
-
{ text: 'Save', type: 'highlighted', action:
|
|
84
|
-
{ text: 'Cancel', type: 'normal', action:
|
|
185
|
+
{ text: 'Save', type: 'highlighted', action: handleSave },
|
|
186
|
+
{ text: 'Cancel', type: 'normal', action: handleCancel }
|
|
85
187
|
]}
|
|
188
|
+
spacing="medium" // Options: small, medium, large
|
|
86
189
|
></dees-button-group>
|
|
87
190
|
```
|
|
88
191
|
|
|
89
|
-
####
|
|
192
|
+
#### `DeesHeading`
|
|
193
|
+
Consistent heading component with level and styling options.
|
|
194
|
+
|
|
90
195
|
```typescript
|
|
91
|
-
|
|
92
|
-
|
|
196
|
+
<dees-heading
|
|
197
|
+
level={1} // 1-6 for H1-H6
|
|
198
|
+
text="Page Title"
|
|
199
|
+
.subheading=${'Optional subtitle'}
|
|
200
|
+
centered // Optional: center alignment
|
|
201
|
+
></dees-heading>
|
|
202
|
+
```
|
|
93
203
|
|
|
94
|
-
|
|
95
|
-
|
|
204
|
+
#### `DeesHint`
|
|
205
|
+
Hint/tooltip component for providing contextual help.
|
|
206
|
+
|
|
207
|
+
```typescript
|
|
208
|
+
<dees-hint
|
|
209
|
+
text="This field is required"
|
|
210
|
+
type="info" // Options: info, warning, error, success
|
|
211
|
+
position="top" // Options: top, bottom, left, right
|
|
212
|
+
></dees-hint>
|
|
96
213
|
```
|
|
97
214
|
|
|
98
|
-
####
|
|
215
|
+
#### `DeesPanel`
|
|
216
|
+
Container component for grouping related content with optional title and actions.
|
|
217
|
+
|
|
99
218
|
```typescript
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
219
|
+
<dees-panel
|
|
220
|
+
.title=${'Panel Title'}
|
|
221
|
+
.subtitle=${'Optional subtitle'}
|
|
222
|
+
collapsible // Optional: allow collapse/expand
|
|
223
|
+
collapsed={false} // Initial collapsed state
|
|
224
|
+
.actions=${[
|
|
225
|
+
{ icon: 'settings', action: handleSettings }
|
|
226
|
+
]}
|
|
227
|
+
>
|
|
228
|
+
<!-- Panel content -->
|
|
229
|
+
</dees-panel>
|
|
230
|
+
```
|
|
104
231
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
232
|
+
#### `DeesSearchbar`
|
|
233
|
+
Search input component with suggestions and search handling.
|
|
234
|
+
|
|
235
|
+
```typescript
|
|
236
|
+
<dees-searchbar
|
|
237
|
+
placeholder="Search..."
|
|
238
|
+
.suggestions=${['item1', 'item2', 'item3']}
|
|
239
|
+
showClearButton // Show clear button when has value
|
|
240
|
+
@search=${handleSearch}
|
|
241
|
+
@suggestion-select=${handleSuggestionSelect}
|
|
242
|
+
></dees-searchbar>
|
|
113
243
|
```
|
|
114
244
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
```typescript
|
|
119
|
-
<dees-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
label="Event Date"
|
|
132
|
-
minDate="2025-01-01"
|
|
133
|
-
enableTime
|
|
134
|
-
></dees-input-datepicker>
|
|
135
|
-
|
|
136
|
-
<!-- List management (NEW!) -->
|
|
137
|
-
<dees-input-list
|
|
138
|
-
key="features"
|
|
139
|
-
label="Product Features"
|
|
140
|
-
placeholder="Add feature..."
|
|
141
|
-
sortable
|
|
142
|
-
minItems={3}
|
|
143
|
-
maxItems={10}
|
|
144
|
-
></dees-input-list>
|
|
145
|
-
|
|
146
|
-
<!-- Rich text editor -->
|
|
147
|
-
<dees-input-wysiwyg
|
|
148
|
-
key="description"
|
|
149
|
-
label="Description"
|
|
150
|
-
></dees-input-wysiwyg>
|
|
245
|
+
#### `DeesWindowcontrols`
|
|
246
|
+
Window control buttons (minimize, maximize, close) for desktop-like applications.
|
|
247
|
+
|
|
248
|
+
```typescript
|
|
249
|
+
<dees-windowcontrols
|
|
250
|
+
.controls=${['minimize', 'maximize', 'close']}
|
|
251
|
+
@minimize=${handleMinimize}
|
|
252
|
+
@maximize=${handleMaximize}
|
|
253
|
+
@close=${handleClose}
|
|
254
|
+
></dees-windowcontrols>
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
### Form Components
|
|
258
|
+
|
|
259
|
+
#### `DeesForm`
|
|
260
|
+
Container component for form elements with built-in validation and data handling.
|
|
151
261
|
|
|
262
|
+
```typescript
|
|
263
|
+
<dees-form
|
|
264
|
+
@formData=${(e) => handleFormData(e.detail)} // Emitted when form is submitted
|
|
265
|
+
@formValidation=${(e) => handleValidation(e.detail)} // Emitted during validation
|
|
266
|
+
>
|
|
267
|
+
<dees-input-text required></dees-input-text>
|
|
152
268
|
<dees-form-submit>Submit</dees-form-submit>
|
|
153
269
|
</dees-form>
|
|
154
270
|
```
|
|
155
271
|
|
|
156
|
-
|
|
272
|
+
#### `DeesInputText`
|
|
273
|
+
Text input field with validation and formatting options.
|
|
274
|
+
|
|
275
|
+
```typescript
|
|
276
|
+
<dees-input-text
|
|
277
|
+
key="email" // Unique identifier for form data
|
|
278
|
+
label="Email" // Input label
|
|
279
|
+
value="initial@value.com" // Initial value
|
|
280
|
+
required // Makes the field required
|
|
281
|
+
disabled // Disables the input
|
|
282
|
+
placeholder="Enter your email"
|
|
283
|
+
></dees-input-text>
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
#### `DeesInputCheckbox`
|
|
287
|
+
Checkbox input component for boolean values.
|
|
288
|
+
|
|
289
|
+
```typescript
|
|
290
|
+
<dees-input-checkbox
|
|
291
|
+
key="terms"
|
|
292
|
+
label="Accept Terms"
|
|
293
|
+
checked // Initial checked state
|
|
294
|
+
required
|
|
295
|
+
@change=${handleChange}
|
|
296
|
+
></dees-input-checkbox>
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
#### `DeesInputDropdown`
|
|
300
|
+
Dropdown selection component with search and filtering capabilities.
|
|
301
|
+
|
|
302
|
+
```typescript
|
|
303
|
+
<dees-input-dropdown
|
|
304
|
+
key="country"
|
|
305
|
+
label="Select Country"
|
|
306
|
+
.options=${[
|
|
307
|
+
{ key: 'us', option: 'United States' },
|
|
308
|
+
{ key: 'uk', option: 'United Kingdom' }
|
|
309
|
+
]}
|
|
310
|
+
searchable // Enables search functionality
|
|
311
|
+
multiple // Allows multiple selections
|
|
312
|
+
></dees-input-dropdown>
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
#### `DeesInputFileupload`
|
|
316
|
+
File upload component with drag-and-drop support.
|
|
317
|
+
|
|
318
|
+
```typescript
|
|
319
|
+
<dees-input-fileupload
|
|
320
|
+
key="documents"
|
|
321
|
+
label="Upload Files"
|
|
322
|
+
multiple // Allow multiple file selection
|
|
323
|
+
accept=".pdf,.doc" // Accepted file types
|
|
324
|
+
maxSize="5MB" // Maximum file size
|
|
325
|
+
@upload=${handleUpload}
|
|
326
|
+
></dees-input-fileupload>
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
#### `DeesInputIban`
|
|
330
|
+
Specialized input for IBAN (International Bank Account Number) with validation.
|
|
331
|
+
|
|
332
|
+
```typescript
|
|
333
|
+
<dees-input-iban
|
|
334
|
+
key="bankAccount"
|
|
335
|
+
label="IBAN"
|
|
336
|
+
country="DE" // Default country format
|
|
337
|
+
required
|
|
338
|
+
@validate=${handleIbanValidation}
|
|
339
|
+
></dees-input-iban>
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
#### `DeesInputPhone`
|
|
343
|
+
Phone number input with country code selection and formatting.
|
|
344
|
+
|
|
345
|
+
```typescript
|
|
346
|
+
<dees-input-phone
|
|
347
|
+
key="phone"
|
|
348
|
+
label="Phone Number"
|
|
349
|
+
defaultCountry="US" // Default country code
|
|
350
|
+
required
|
|
351
|
+
@validate=${handlePhoneValidation}
|
|
352
|
+
></dees-input-phone>
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
#### `DeesInputQuantitySelector`
|
|
356
|
+
Numeric input with increment/decrement controls.
|
|
357
|
+
|
|
358
|
+
```typescript
|
|
359
|
+
<dees-input-quantity-selector
|
|
360
|
+
key="quantity"
|
|
361
|
+
label="Quantity"
|
|
362
|
+
min="0" // Minimum value
|
|
363
|
+
max="100" // Maximum value
|
|
364
|
+
step="1" // Increment/decrement step
|
|
365
|
+
value="1" // Initial value
|
|
366
|
+
></dees-input-quantity-selector>
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
#### `DeesInputMultitoggle`
|
|
370
|
+
Multi-state toggle button group.
|
|
371
|
+
|
|
372
|
+
```typescript
|
|
373
|
+
<dees-input-multitoggle
|
|
374
|
+
key="status"
|
|
375
|
+
label="Status"
|
|
376
|
+
.options=${[
|
|
377
|
+
{ key: 'active', label: 'Active' },
|
|
378
|
+
{ key: 'pending', label: 'Pending' },
|
|
379
|
+
{ key: 'inactive', label: 'Inactive' }
|
|
380
|
+
]}
|
|
381
|
+
value="active" // Initial selected value
|
|
382
|
+
></dees-input-multitoggle>
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
#### `DeesInputRadiogroup`
|
|
386
|
+
Radio button group for single-choice selections with internal state management.
|
|
387
|
+
|
|
388
|
+
```typescript
|
|
389
|
+
<dees-input-radiogroup
|
|
390
|
+
key="plan"
|
|
391
|
+
label="Select Plan"
|
|
392
|
+
.options=${['Free', 'Pro', 'Enterprise']}
|
|
393
|
+
selectedOption="Pro"
|
|
394
|
+
required
|
|
395
|
+
@change=${handlePlanChange}
|
|
396
|
+
></dees-input-radiogroup>
|
|
397
|
+
|
|
398
|
+
// With custom option objects
|
|
399
|
+
<dees-input-radiogroup
|
|
400
|
+
key="priority"
|
|
401
|
+
label="Priority Level"
|
|
402
|
+
.options=${[
|
|
403
|
+
{ key: 'low', label: 'Low Priority' },
|
|
404
|
+
{ key: 'medium', label: 'Medium Priority' },
|
|
405
|
+
{ key: 'high', label: 'High Priority' }
|
|
406
|
+
]}
|
|
407
|
+
selectedOption="medium"
|
|
408
|
+
></dees-input-radiogroup>
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
#### `DeesInputTags`
|
|
412
|
+
Tag input component for managing lists of tags with auto-complete and validation.
|
|
413
|
+
|
|
414
|
+
```typescript
|
|
415
|
+
<dees-input-tags
|
|
416
|
+
key="skills"
|
|
417
|
+
label="Skills"
|
|
418
|
+
.value=${['JavaScript', 'TypeScript', 'CSS']}
|
|
419
|
+
placeholder="Add a skill..."
|
|
420
|
+
.suggestions=${[
|
|
421
|
+
'JavaScript', 'TypeScript', 'Python', 'Go', 'Rust',
|
|
422
|
+
'React', 'Vue', 'Angular', 'Node.js', 'Docker'
|
|
423
|
+
]}
|
|
424
|
+
maxTags={10} // Optional: limit number of tags
|
|
425
|
+
required
|
|
426
|
+
@change=${handleTagsChange}
|
|
427
|
+
></dees-input-tags>
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
Key Features:
|
|
431
|
+
- Add tags by pressing Enter or typing comma/semicolon
|
|
432
|
+
- Remove tags with click or backspace
|
|
433
|
+
- Auto-complete suggestions with keyboard navigation
|
|
434
|
+
- Maximum tag limit support
|
|
435
|
+
- Full theme support
|
|
436
|
+
- Form validation integration
|
|
437
|
+
|
|
438
|
+
#### `DeesInputTypelist`
|
|
439
|
+
Dynamic list input for managing arrays of typed values.
|
|
440
|
+
|
|
441
|
+
```typescript
|
|
442
|
+
<dees-input-typelist
|
|
443
|
+
key="features"
|
|
444
|
+
label="Product Features"
|
|
445
|
+
placeholder="Add a feature..."
|
|
446
|
+
.value=${['Feature 1', 'Feature 2']}
|
|
447
|
+
@change=${handleFeaturesChange}
|
|
448
|
+
></dees-input-typelist>
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
#### `DeesInputDatepicker`
|
|
452
|
+
Date and time picker component with calendar interface and manual typing support.
|
|
453
|
+
|
|
454
|
+
```typescript
|
|
455
|
+
<dees-input-datepicker
|
|
456
|
+
key="eventDate"
|
|
457
|
+
label="Event Date"
|
|
458
|
+
placeholder="YYYY-MM-DD"
|
|
459
|
+
value="2025-01-15T14:30:00Z" // ISO string format
|
|
460
|
+
dateFormat="YYYY-MM-DD" // Display format (default: YYYY-MM-DD)
|
|
461
|
+
enableTime={true} // Enable time selection
|
|
462
|
+
timeFormat="24h" // Options: 24h, 12h
|
|
463
|
+
minuteIncrement={15} // Time step in minutes
|
|
464
|
+
minDate="2025-01-01" // Minimum selectable date
|
|
465
|
+
maxDate="2025-12-31" // Maximum selectable date
|
|
466
|
+
.disabledDates=${[ // Array of disabled dates
|
|
467
|
+
'2025-01-10',
|
|
468
|
+
'2025-01-11'
|
|
469
|
+
]}
|
|
470
|
+
weekStartsOn={1} // 0 = Sunday, 1 = Monday
|
|
471
|
+
required
|
|
472
|
+
@change=${handleDateChange}
|
|
473
|
+
></dees-input-datepicker>
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
Key Features:
|
|
477
|
+
- Interactive calendar popup
|
|
478
|
+
- Manual date typing with multiple formats
|
|
479
|
+
- Optional time selection
|
|
480
|
+
- Configurable date format
|
|
481
|
+
- Min/max date constraints
|
|
482
|
+
- Disable specific dates
|
|
483
|
+
- Keyboard navigation
|
|
484
|
+
- Today button
|
|
485
|
+
- Clear functionality
|
|
486
|
+
- 12/24 hour time formats
|
|
487
|
+
- Theme-aware styling
|
|
488
|
+
- Live parsing and validation
|
|
489
|
+
|
|
490
|
+
Manual Input Formats:
|
|
491
|
+
```typescript
|
|
492
|
+
// Date formats supported
|
|
493
|
+
"2023-12-20" // ISO format (YYYY-MM-DD)
|
|
494
|
+
"20.12.2023" // European format (DD.MM.YYYY)
|
|
495
|
+
"12/20/2023" // US format (MM/DD/YYYY)
|
|
496
|
+
|
|
497
|
+
// Date with time (add space and time after any date format)
|
|
498
|
+
"2023-12-20 14:30"
|
|
499
|
+
"20.12.2023 9:45"
|
|
500
|
+
"12/20/2023 16:00"
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
The component automatically parses and validates input as you type, updating the internal date value when a valid date is recognized.
|
|
504
|
+
|
|
505
|
+
#### `DeesInputSearchselect`
|
|
506
|
+
Search-enabled dropdown selection component.
|
|
507
|
+
|
|
508
|
+
```typescript
|
|
509
|
+
<dees-input-searchselect
|
|
510
|
+
key="category"
|
|
511
|
+
label="Select Category"
|
|
512
|
+
placeholder="Search categories..."
|
|
513
|
+
.options=${[
|
|
514
|
+
{ key: 'tech', label: 'Technology' },
|
|
515
|
+
{ key: 'health', label: 'Healthcare' },
|
|
516
|
+
{ key: 'finance', label: 'Finance' }
|
|
517
|
+
]}
|
|
518
|
+
required
|
|
519
|
+
@change=${handleCategoryChange}
|
|
520
|
+
></dees-input-searchselect>
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
#### `DeesInputRichtext`
|
|
524
|
+
Rich text editor with formatting toolbar powered by TipTap.
|
|
525
|
+
|
|
526
|
+
```typescript
|
|
527
|
+
<dees-input-richtext
|
|
528
|
+
key="content"
|
|
529
|
+
label="Article Content"
|
|
530
|
+
.value=${htmlContent}
|
|
531
|
+
placeholder="Start writing..."
|
|
532
|
+
minHeight={300} // Minimum editor height
|
|
533
|
+
showWordCount={true} // Show word/character count
|
|
534
|
+
@change=${handleContentChange}
|
|
535
|
+
></dees-input-richtext>
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
Key Features:
|
|
539
|
+
- Full formatting toolbar (bold, italic, underline, strike, etc.)
|
|
540
|
+
- Heading levels (H1-H6)
|
|
541
|
+
- Lists (bullet, ordered)
|
|
542
|
+
- Links with URL editing
|
|
543
|
+
- Code blocks and inline code
|
|
544
|
+
- Blockquotes
|
|
545
|
+
- Horizontal rules
|
|
546
|
+
- Undo/redo support
|
|
547
|
+
- Word and character count
|
|
548
|
+
- HTML output
|
|
549
|
+
|
|
550
|
+
#### `DeesInputWysiwyg`
|
|
551
|
+
Advanced block-based editor with slash commands and rich content blocks.
|
|
552
|
+
|
|
553
|
+
```typescript
|
|
554
|
+
<dees-input-wysiwyg
|
|
555
|
+
key="document"
|
|
556
|
+
label="Document Editor"
|
|
557
|
+
.value=${documentContent}
|
|
558
|
+
outputFormat="html" // Options: html, markdown, json
|
|
559
|
+
@change=${handleDocumentChange}
|
|
560
|
+
></dees-input-wysiwyg>
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
Key Features:
|
|
564
|
+
- Slash commands for quick formatting
|
|
565
|
+
- Block-based editing (paragraphs, headings, lists, etc.)
|
|
566
|
+
- Drag and drop block reordering
|
|
567
|
+
- Multiple output formats
|
|
568
|
+
- Keyboard shortcuts
|
|
569
|
+
- Collaborative editing ready
|
|
570
|
+
- Extensible block types
|
|
571
|
+
|
|
572
|
+
#### `DeesFormSubmit`
|
|
573
|
+
Submit button component specifically designed for `DeesForm`.
|
|
574
|
+
|
|
575
|
+
```typescript
|
|
576
|
+
<dees-form-submit
|
|
577
|
+
disabled // Optional: disable submit button
|
|
578
|
+
status="normal" // Options: normal, pending, success, error
|
|
579
|
+
>Submit Form</dees-form-submit>
|
|
580
|
+
```
|
|
581
|
+
|
|
582
|
+
### Layout Components
|
|
583
|
+
|
|
584
|
+
#### `DeesAppuiBase`
|
|
585
|
+
Base container component for application layout structure with integrated appbar, menu system, and content areas.
|
|
157
586
|
|
|
158
|
-
#### Application Shell
|
|
159
587
|
```typescript
|
|
160
|
-
// Complete application layout with one component
|
|
161
588
|
<dees-appui-base
|
|
162
|
-
|
|
163
|
-
.
|
|
164
|
-
|
|
165
|
-
|
|
589
|
+
// Appbar configuration
|
|
590
|
+
.appbarMenuItems=${[
|
|
591
|
+
{
|
|
592
|
+
name: 'File',
|
|
593
|
+
action: async () => {}, // No-op for parent menu items
|
|
594
|
+
submenu: [
|
|
595
|
+
{ name: 'New File', shortcut: 'Cmd+N', iconName: 'file-plus', action: async () => {} },
|
|
596
|
+
{ name: 'Open...', shortcut: 'Cmd+O', iconName: 'folder-open', action: async () => {} },
|
|
597
|
+
{ divider: true },
|
|
598
|
+
{ name: 'Save', shortcut: 'Cmd+S', iconName: 'save', action: async () => {} }
|
|
599
|
+
]
|
|
600
|
+
},
|
|
601
|
+
{
|
|
602
|
+
name: 'Edit',
|
|
603
|
+
action: async () => {},
|
|
604
|
+
submenu: [
|
|
605
|
+
{ name: 'Undo', shortcut: 'Cmd+Z', iconName: 'undo', action: async () => {} },
|
|
606
|
+
{ name: 'Redo', shortcut: 'Cmd+Shift+Z', iconName: 'redo', action: async () => {} }
|
|
607
|
+
]
|
|
608
|
+
}
|
|
609
|
+
]}
|
|
610
|
+
.appbarBreadcrumbs=${'Dashboard > Overview'}
|
|
611
|
+
.appbarTheme=${'dark'}
|
|
612
|
+
.appbarUser=${{ name: 'John Doe', status: 'online' }}
|
|
613
|
+
.appbarShowSearch=${true}
|
|
614
|
+
.appbarShowWindowControls=${true}
|
|
615
|
+
|
|
616
|
+
// Main menu configuration (left sidebar)
|
|
617
|
+
.mainmenuTabs=${[
|
|
618
|
+
{ key: 'dashboard', iconName: 'lucide:home', action: () => {} },
|
|
619
|
+
{ key: 'projects', iconName: 'lucide:folder', action: () => {} },
|
|
620
|
+
{ key: 'settings', iconName: 'lucide:settings', action: () => {} }
|
|
621
|
+
]}
|
|
622
|
+
.mainmenuSelectedTab=${selectedTab}
|
|
623
|
+
|
|
624
|
+
// Selector configuration (second sidebar)
|
|
625
|
+
.mainselectorOptions=${[
|
|
626
|
+
{ key: 'Overview', action: () => {} },
|
|
627
|
+
{ key: 'Components', action: () => {} },
|
|
628
|
+
{ key: 'Services', action: () => {} }
|
|
629
|
+
]}
|
|
630
|
+
.mainselectorSelectedOption=${selectedOption}
|
|
631
|
+
|
|
632
|
+
// Main content tabs
|
|
633
|
+
.maincontentTabs=${[
|
|
634
|
+
{ key: 'tab1', iconName: 'lucide:file', action: () => {} }
|
|
635
|
+
]}
|
|
636
|
+
|
|
637
|
+
// Event handlers
|
|
638
|
+
@appbar-menu-select=${(e) => handleMenuSelect(e.detail)}
|
|
639
|
+
@appbar-breadcrumb-navigate=${(e) => handleBreadcrumbNav(e.detail)}
|
|
640
|
+
@appbar-search-click=${() => handleSearch()}
|
|
641
|
+
@appbar-user-menu-open=${() => handleUserMenu()}
|
|
642
|
+
@mainmenu-tab-select=${(e) => handleTabSelect(e.detail)}
|
|
643
|
+
@mainselector-option-select=${(e) => handleOptionSelect(e.detail)}
|
|
166
644
|
>
|
|
167
645
|
<div slot="maincontent">
|
|
168
|
-
<!-- Your
|
|
646
|
+
<!-- Your main application content goes here -->
|
|
169
647
|
</div>
|
|
170
648
|
</dees-appui-base>
|
|
171
649
|
```
|
|
172
650
|
|
|
173
|
-
|
|
651
|
+
Key Features:
|
|
652
|
+
- **Integrated Layout System**: Automatically arranges appbar, sidebars, and content area
|
|
653
|
+
- **Centralized Configuration**: Pass properties to all child components from one place
|
|
654
|
+
- **Event Propagation**: All child component events are re-emitted for easy handling
|
|
655
|
+
- **Responsive Grid**: Uses CSS Grid for flexible, responsive layout
|
|
656
|
+
- **Slot Support**: Main content area supports custom content via slots
|
|
657
|
+
|
|
658
|
+
#### `DeesAppuiMainmenu`
|
|
659
|
+
Main navigation menu component for application-wide navigation.
|
|
660
|
+
|
|
174
661
|
```typescript
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
.widgets=${[
|
|
662
|
+
<dees-appui-mainmenu
|
|
663
|
+
.menuItems=${[
|
|
178
664
|
{
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
665
|
+
key: 'dashboard',
|
|
666
|
+
label: 'Dashboard',
|
|
667
|
+
icon: 'home',
|
|
668
|
+
action: () => handleNavigation('dashboard')
|
|
183
669
|
},
|
|
184
670
|
{
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
671
|
+
key: 'settings',
|
|
672
|
+
label: 'Settings',
|
|
673
|
+
icon: 'cog',
|
|
674
|
+
action: () => handleNavigation('settings')
|
|
675
|
+
}
|
|
676
|
+
]}
|
|
677
|
+
collapsed // Optional: show collapsed version
|
|
678
|
+
position="left" // Options: left, right
|
|
679
|
+
></dees-appui-mainmenu>
|
|
680
|
+
```
|
|
681
|
+
|
|
682
|
+
#### `DeesAppuiMainselector`
|
|
683
|
+
Secondary navigation component for sub-section selection.
|
|
684
|
+
|
|
685
|
+
```typescript
|
|
686
|
+
<dees-appui-mainselector
|
|
687
|
+
.items=${[
|
|
688
|
+
{
|
|
689
|
+
key: 'section1',
|
|
690
|
+
label: 'Section 1',
|
|
691
|
+
icon: 'folder',
|
|
692
|
+
action: () => selectSection('section1')
|
|
189
693
|
}
|
|
190
694
|
]}
|
|
191
|
-
|
|
192
|
-
|
|
695
|
+
selectedKey="section1" // Currently selected section
|
|
696
|
+
@selection-change=${handleSectionChange}
|
|
697
|
+
></dees-appui-mainselector>
|
|
193
698
|
```
|
|
194
699
|
|
|
195
|
-
|
|
700
|
+
#### `DeesAppuiMaincontent`
|
|
701
|
+
Main content area with tab management support.
|
|
702
|
+
|
|
703
|
+
```typescript
|
|
704
|
+
<dees-appui-maincontent
|
|
705
|
+
.tabs=${[
|
|
706
|
+
{
|
|
707
|
+
key: 'tab1',
|
|
708
|
+
label: 'Tab 1',
|
|
709
|
+
content: html`<div>Tab 1 Content</div>`,
|
|
710
|
+
action: () => handleTabAction('tab1')
|
|
711
|
+
}
|
|
712
|
+
]}
|
|
713
|
+
selectedTab="tab1" // Currently active tab
|
|
714
|
+
@tab-change=${handleTabChange}
|
|
715
|
+
></dees-appui-maincontent>
|
|
716
|
+
```
|
|
717
|
+
|
|
718
|
+
#### `DeesAppuiAppbar`
|
|
719
|
+
Professional application bar component with hierarchical menus, breadcrumb navigation, and user account management.
|
|
720
|
+
|
|
721
|
+
```typescript
|
|
722
|
+
<dees-appui-appbar
|
|
723
|
+
.menuItems=${[
|
|
724
|
+
{
|
|
725
|
+
name: 'File',
|
|
726
|
+
action: async () => {}, // No-op for parent menu items
|
|
727
|
+
submenu: [
|
|
728
|
+
{
|
|
729
|
+
name: 'New File',
|
|
730
|
+
shortcut: 'Cmd+N',
|
|
731
|
+
iconName: 'file-plus',
|
|
732
|
+
action: async () => handleNewFile()
|
|
733
|
+
},
|
|
734
|
+
{
|
|
735
|
+
name: 'Open...',
|
|
736
|
+
shortcut: 'Cmd+O',
|
|
737
|
+
iconName: 'folder-open',
|
|
738
|
+
action: async () => handleOpen()
|
|
739
|
+
},
|
|
740
|
+
{ divider: true }, // Menu separator
|
|
741
|
+
{
|
|
742
|
+
name: 'Save',
|
|
743
|
+
shortcut: 'Cmd+S',
|
|
744
|
+
iconName: 'save',
|
|
745
|
+
action: async () => handleSave(),
|
|
746
|
+
disabled: true // Disabled state
|
|
747
|
+
}
|
|
748
|
+
]
|
|
749
|
+
},
|
|
750
|
+
{
|
|
751
|
+
name: 'Edit',
|
|
752
|
+
action: async () => {},
|
|
753
|
+
submenu: [
|
|
754
|
+
{ name: 'Undo', shortcut: 'Cmd+Z', iconName: 'undo', action: async () => handleUndo() },
|
|
755
|
+
{ name: 'Redo', shortcut: 'Cmd+Shift+Z', iconName: 'redo', action: async () => handleRedo() }
|
|
756
|
+
]
|
|
757
|
+
}
|
|
758
|
+
]}
|
|
759
|
+
.breadcrumbs=${'Project > src > components > AppBar.ts'}
|
|
760
|
+
.breadcrumbSeparator=${' > '}
|
|
761
|
+
.showWindowControls=${true}
|
|
762
|
+
.showSearch=${true}
|
|
763
|
+
.theme=${'dark'} // Options: 'light' | 'dark'
|
|
764
|
+
.user=${{
|
|
765
|
+
name: 'John Doe',
|
|
766
|
+
avatar: '/path/to/avatar.jpg', // Optional
|
|
767
|
+
status: 'online' // Options: 'online' | 'offline' | 'busy' | 'away'
|
|
768
|
+
}}
|
|
769
|
+
@menu-select=${(e) => handleMenuSelect(e.detail.item)}
|
|
770
|
+
@breadcrumb-navigate=${(e) => handleBreadcrumbClick(e.detail)}
|
|
771
|
+
@search-click=${() => handleSearchClick()}
|
|
772
|
+
@user-menu-open=${() => handleUserMenuOpen()}
|
|
773
|
+
></dees-appui-appbar>
|
|
774
|
+
```
|
|
775
|
+
|
|
776
|
+
Key Features:
|
|
777
|
+
- **Hierarchical Menu System**
|
|
778
|
+
- Top-level text-only menus (following desktop UI standards)
|
|
779
|
+
- Dropdown submenus with icons and keyboard shortcuts
|
|
780
|
+
- Support for nested submenus
|
|
781
|
+
- Menu dividers for visual grouping
|
|
782
|
+
- Disabled state support
|
|
783
|
+
|
|
784
|
+
- **Keyboard Navigation**
|
|
785
|
+
- Tab navigation between top-level items
|
|
786
|
+
- Arrow keys for dropdown navigation (Up/Down in dropdowns, Left/Right between top items)
|
|
787
|
+
- Enter to select items
|
|
788
|
+
- Escape to close dropdowns
|
|
789
|
+
- Home/End keys for first/last item
|
|
790
|
+
|
|
791
|
+
- **Breadcrumb Navigation**
|
|
792
|
+
- Customizable breadcrumb trail
|
|
793
|
+
- Configurable separator
|
|
794
|
+
- Click events for navigation
|
|
795
|
+
|
|
796
|
+
- **User Account Section**
|
|
797
|
+
- User avatar with fallback to initials
|
|
798
|
+
- Status indicator (online, offline, busy, away)
|
|
799
|
+
- Click handler for user menu
|
|
800
|
+
|
|
801
|
+
- **Visual Features**
|
|
802
|
+
- Light and dark theme support
|
|
803
|
+
- Smooth animations and transitions
|
|
804
|
+
- Window controls integration
|
|
805
|
+
- Search icon with click handler
|
|
806
|
+
- Responsive layout using CSS Grid
|
|
807
|
+
|
|
808
|
+
- **Accessibility**
|
|
809
|
+
- Full ARIA support (menubar, menuitem roles)
|
|
810
|
+
- Keyboard navigation
|
|
811
|
+
- Focus management
|
|
812
|
+
- Screen reader compatible
|
|
813
|
+
|
|
814
|
+
### Data Display Components
|
|
815
|
+
|
|
816
|
+
#### `DeesTable`
|
|
817
|
+
Advanced table component with sorting, filtering, and action support.
|
|
196
818
|
|
|
197
|
-
#### Advanced Tables
|
|
198
819
|
```typescript
|
|
199
820
|
<dees-table
|
|
200
|
-
.data=${
|
|
201
|
-
.displayFunction=${(
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
${user.active ? 'Active' : 'Inactive'}
|
|
207
|
-
</dees-badge>`
|
|
821
|
+
.data=${tableData}
|
|
822
|
+
.displayFunction=${(item) => ({
|
|
823
|
+
name: item.name,
|
|
824
|
+
date: item.date,
|
|
825
|
+
amount: item.amount,
|
|
826
|
+
description: item.description
|
|
208
827
|
})}
|
|
209
828
|
.dataActions=${[
|
|
210
|
-
{
|
|
211
|
-
|
|
829
|
+
{
|
|
830
|
+
name: 'Edit',
|
|
831
|
+
icon: 'edit',
|
|
832
|
+
action: (item) => handleEdit(item)
|
|
833
|
+
},
|
|
834
|
+
{
|
|
835
|
+
name: 'Delete',
|
|
836
|
+
icon: 'trash',
|
|
837
|
+
action: (item) => handleDelete(item)
|
|
838
|
+
}
|
|
212
839
|
]}
|
|
213
|
-
|
|
840
|
+
heading1="Transactions"
|
|
841
|
+
heading2="Recent Activity"
|
|
842
|
+
searchable // Enable search functionality
|
|
843
|
+
dataName="transaction" // Name for single data item
|
|
844
|
+
@selection-change=${handleSelectionChange}
|
|
214
845
|
></dees-table>
|
|
215
846
|
```
|
|
216
847
|
|
|
217
|
-
|
|
848
|
+
##### DeesTable (Updated)
|
|
849
|
+
|
|
850
|
+
Newer features available in `dees-table`:
|
|
851
|
+
- Schema-first columns or `displayFunction` rendering
|
|
852
|
+
- Sorting via header clicks with `aria-sort` + `sortChange`
|
|
853
|
+
- Global search with Lucene-like syntax; modes: `table`, `data`, `server`
|
|
854
|
+
- Per-column quick filters row; `showColumnFilters` and `column.filterable=false`
|
|
855
|
+
- Selection: `none` | `single` | `multi`, with select-all and `selectionChange`
|
|
856
|
+
- Sticky header + internal scroll (`stickyHeader`, `--table-max-height`)
|
|
857
|
+
- Rich actions: header/in-row/contextmenu/footer/doubleClick; pinned Actions column
|
|
858
|
+
- Editable cells via `editableFields`
|
|
859
|
+
- Drag & drop files onto rows
|
|
860
|
+
|
|
861
|
+
#### `DeesDataviewCodebox`
|
|
862
|
+
Code display component with syntax highlighting and line numbers.
|
|
863
|
+
|
|
864
|
+
```typescript
|
|
865
|
+
<dees-dataview-codebox
|
|
866
|
+
progLang="typescript" // Programming language for syntax highlighting
|
|
867
|
+
.codeToDisplay=${`
|
|
868
|
+
import { html } from '@design.estate/dees-element';
|
|
869
|
+
|
|
870
|
+
export const myComponent = () => {
|
|
871
|
+
return html`<div>Hello World</div>`;
|
|
872
|
+
};
|
|
873
|
+
`}
|
|
874
|
+
></dees-dataview-codebox>
|
|
875
|
+
```
|
|
876
|
+
|
|
877
|
+
#### `DeesDataviewStatusobject`
|
|
878
|
+
Status display component for complex objects with nested status indicators.
|
|
879
|
+
|
|
880
|
+
```typescript
|
|
881
|
+
<dees-dataview-statusobject
|
|
882
|
+
.statusObject=${{
|
|
883
|
+
id: '1',
|
|
884
|
+
name: 'System Status',
|
|
885
|
+
combinedStatus: 'partly_ok',
|
|
886
|
+
combinedStatusText: 'Partially OK',
|
|
887
|
+
details: [
|
|
888
|
+
{
|
|
889
|
+
name: 'Database',
|
|
890
|
+
value: 'Connected',
|
|
891
|
+
status: 'ok',
|
|
892
|
+
statusText: 'OK'
|
|
893
|
+
},
|
|
894
|
+
{
|
|
895
|
+
name: 'API Service',
|
|
896
|
+
value: 'Degraded',
|
|
897
|
+
status: 'partly_ok',
|
|
898
|
+
statusText: 'Partially OK'
|
|
899
|
+
}
|
|
900
|
+
]
|
|
901
|
+
}}
|
|
902
|
+
></dees-dataview-statusobject>
|
|
903
|
+
```
|
|
904
|
+
|
|
905
|
+
#### `DeesPdf`
|
|
906
|
+
PDF viewer component with navigation and zoom controls.
|
|
907
|
+
|
|
908
|
+
```typescript
|
|
909
|
+
<dees-pdf
|
|
910
|
+
source="path/to/document.pdf" // URL or base64 encoded PDF
|
|
911
|
+
page={1} // Current page number
|
|
912
|
+
scale={1.0} // Zoom level
|
|
913
|
+
.controls=${[ // Optional: customize available controls
|
|
914
|
+
'zoom',
|
|
915
|
+
'download',
|
|
916
|
+
'print',
|
|
917
|
+
'navigation'
|
|
918
|
+
]}
|
|
919
|
+
@page-change=${handlePageChange}
|
|
920
|
+
@document-loaded=${handleDocumentLoaded}
|
|
921
|
+
></dees-pdf>
|
|
922
|
+
```
|
|
923
|
+
|
|
924
|
+
#### `DeesStatsGrid`
|
|
925
|
+
A responsive grid component for displaying statistical data with various visualization types including numbers, gauges, percentages, and trends.
|
|
926
|
+
|
|
218
927
|
```typescript
|
|
219
928
|
<dees-statsgrid
|
|
220
929
|
.tiles=${[
|
|
221
930
|
{
|
|
222
|
-
|
|
931
|
+
id: 'revenue',
|
|
932
|
+
title: 'Total Revenue',
|
|
223
933
|
value: 125420,
|
|
224
934
|
unit: '$',
|
|
225
935
|
type: 'number',
|
|
226
|
-
|
|
936
|
+
icon: 'faDollarSign',
|
|
937
|
+
description: '+12.5% from last month',
|
|
938
|
+
color: '#22c55e',
|
|
939
|
+
actions: [
|
|
940
|
+
{
|
|
941
|
+
name: 'View Details',
|
|
942
|
+
iconName: 'faChartLine',
|
|
943
|
+
action: async () => {
|
|
944
|
+
console.log('Viewing revenue details');
|
|
945
|
+
}
|
|
946
|
+
},
|
|
947
|
+
{
|
|
948
|
+
name: 'Export Data',
|
|
949
|
+
iconName: 'faFileExport',
|
|
950
|
+
action: async () => {
|
|
951
|
+
console.log('Exporting revenue data');
|
|
952
|
+
}
|
|
953
|
+
}
|
|
954
|
+
]
|
|
227
955
|
},
|
|
228
956
|
{
|
|
957
|
+
id: 'cpu',
|
|
229
958
|
title: 'CPU Usage',
|
|
230
959
|
value: 73,
|
|
231
960
|
type: 'gauge',
|
|
961
|
+
icon: 'faMicrochip',
|
|
232
962
|
gaugeOptions: {
|
|
963
|
+
min: 0,
|
|
964
|
+
max: 100,
|
|
233
965
|
thresholds: [
|
|
234
966
|
{ value: 0, color: '#22c55e' },
|
|
967
|
+
{ value: 60, color: '#f59e0b' },
|
|
235
968
|
{ value: 80, color: '#ef4444' }
|
|
236
969
|
]
|
|
237
970
|
}
|
|
971
|
+
},
|
|
972
|
+
{
|
|
973
|
+
id: 'storage',
|
|
974
|
+
title: 'Storage Used',
|
|
975
|
+
value: 65,
|
|
976
|
+
type: 'percentage',
|
|
977
|
+
icon: 'faHardDrive',
|
|
978
|
+
description: '650 GB of 1 TB',
|
|
979
|
+
color: '#3b82f6'
|
|
980
|
+
},
|
|
981
|
+
{
|
|
982
|
+
id: 'requests',
|
|
983
|
+
title: 'API Requests',
|
|
984
|
+
value: '1.2k',
|
|
985
|
+
unit: '/min',
|
|
986
|
+
type: 'trend',
|
|
987
|
+
icon: 'faServer',
|
|
988
|
+
trendData: [45, 52, 38, 65, 72, 68, 75, 82, 79, 85, 88, 92]
|
|
989
|
+
},
|
|
990
|
+
{
|
|
991
|
+
id: 'uptime',
|
|
992
|
+
title: 'System Uptime',
|
|
993
|
+
value: '99.95%',
|
|
994
|
+
type: 'text',
|
|
995
|
+
icon: 'faCheckCircle',
|
|
996
|
+
color: '#22c55e',
|
|
997
|
+
description: 'Last 30 days'
|
|
238
998
|
}
|
|
239
999
|
]}
|
|
1000
|
+
.gridActions=${[
|
|
1001
|
+
{
|
|
1002
|
+
name: 'Refresh',
|
|
1003
|
+
iconName: 'faSync',
|
|
1004
|
+
action: async () => {
|
|
1005
|
+
console.log('Refreshing stats...');
|
|
1006
|
+
}
|
|
1007
|
+
},
|
|
1008
|
+
{
|
|
1009
|
+
name: 'Export Report',
|
|
1010
|
+
iconName: 'faFileExport',
|
|
1011
|
+
action: async () => {
|
|
1012
|
+
console.log('Exporting stats report...');
|
|
1013
|
+
}
|
|
1014
|
+
}
|
|
1015
|
+
]}
|
|
1016
|
+
.minTileWidth=${250} // Minimum tile width in pixels
|
|
1017
|
+
.gap=${16} // Gap between tiles in pixels
|
|
240
1018
|
></dees-statsgrid>
|
|
241
1019
|
```
|
|
242
1020
|
|
|
243
|
-
|
|
1021
|
+
#### `DeesPagination`
|
|
1022
|
+
Pagination component for navigating through large datasets.
|
|
1023
|
+
|
|
1024
|
+
```typescript
|
|
1025
|
+
<dees-pagination
|
|
1026
|
+
totalItems={500}
|
|
1027
|
+
itemsPerPage={20}
|
|
1028
|
+
currentPage={1}
|
|
1029
|
+
maxVisiblePages={7} // Maximum page numbers to display
|
|
1030
|
+
@page-change=${handlePageChange}
|
|
1031
|
+
></dees-pagination>
|
|
1032
|
+
```
|
|
1033
|
+
|
|
1034
|
+
### Visualization Components
|
|
1035
|
+
|
|
1036
|
+
#### `DeesChartArea`
|
|
1037
|
+
Area chart component built on ApexCharts for visualizing time-series data.
|
|
1038
|
+
|
|
1039
|
+
```typescript
|
|
1040
|
+
<dees-chart-area
|
|
1041
|
+
label="System Usage" // Chart title
|
|
1042
|
+
.series=${[
|
|
1043
|
+
{
|
|
1044
|
+
name: 'CPU',
|
|
1045
|
+
data: [
|
|
1046
|
+
{ x: '2025-01-15T03:00:00', y: 25 },
|
|
1047
|
+
{ x: '2025-01-15T07:00:00', y: 30 },
|
|
1048
|
+
{ x: '2025-01-15T11:00:00', y: 20 }
|
|
1049
|
+
]
|
|
1050
|
+
},
|
|
1051
|
+
{
|
|
1052
|
+
name: 'Memory',
|
|
1053
|
+
data: [
|
|
1054
|
+
{ x: '2025-01-15T03:00:00', y: 10 },
|
|
1055
|
+
{ x: '2025-01-15T07:00:00', y: 12 },
|
|
1056
|
+
{ x: '2025-01-15T11:00:00', y: 10 }
|
|
1057
|
+
]
|
|
1058
|
+
}
|
|
1059
|
+
]}
|
|
1060
|
+
></dees-chart-area>
|
|
1061
|
+
```
|
|
1062
|
+
|
|
1063
|
+
#### `DeesChartLog`
|
|
1064
|
+
Specialized chart component for visualizing log data and events.
|
|
244
1065
|
|
|
245
|
-
#### Modal Dialogs
|
|
246
1066
|
```typescript
|
|
1067
|
+
<dees-chart-log
|
|
1068
|
+
label="System Events"
|
|
1069
|
+
.data=${[
|
|
1070
|
+
{
|
|
1071
|
+
timestamp: '2025-01-15T03:00:00',
|
|
1072
|
+
event: 'Server Start',
|
|
1073
|
+
type: 'info'
|
|
1074
|
+
},
|
|
1075
|
+
{
|
|
1076
|
+
timestamp: '2025-01-15T03:15:00',
|
|
1077
|
+
event: 'Error Detected',
|
|
1078
|
+
type: 'error'
|
|
1079
|
+
}
|
|
1080
|
+
]}
|
|
1081
|
+
.filters=${['info', 'warning', 'error']} // Event types to display
|
|
1082
|
+
@event-click=${handleEventClick}
|
|
1083
|
+
></dees-chart-log>
|
|
1084
|
+
```
|
|
1085
|
+
|
|
1086
|
+
### Dialogs & Overlays Components
|
|
1087
|
+
|
|
1088
|
+
#### `DeesModal`
|
|
1089
|
+
Modal dialog component with customizable content and actions.
|
|
1090
|
+
|
|
1091
|
+
```typescript
|
|
1092
|
+
// Programmatic usage
|
|
247
1093
|
DeesModal.createAndShow({
|
|
248
1094
|
heading: 'Confirm Action',
|
|
249
1095
|
content: html`
|
|
250
|
-
<
|
|
1096
|
+
<dees-form>
|
|
1097
|
+
<dees-input-text
|
|
1098
|
+
.label=${'Enter reason'}
|
|
1099
|
+
></dees-input-text>
|
|
1100
|
+
</dees-form>
|
|
251
1101
|
`,
|
|
252
1102
|
menuOptions: [
|
|
253
1103
|
{
|
|
254
1104
|
name: 'Cancel',
|
|
255
|
-
action: async (modal) =>
|
|
1105
|
+
action: async (modal) => {
|
|
1106
|
+
modal.destroy();
|
|
1107
|
+
return null;
|
|
1108
|
+
}
|
|
256
1109
|
},
|
|
257
1110
|
{
|
|
258
1111
|
name: 'Confirm',
|
|
259
1112
|
action: async (modal) => {
|
|
260
|
-
|
|
1113
|
+
// Handle confirmation
|
|
261
1114
|
modal.destroy();
|
|
1115
|
+
return null;
|
|
262
1116
|
}
|
|
263
1117
|
}
|
|
264
1118
|
]
|
|
265
1119
|
});
|
|
266
|
-
```
|
|
267
1120
|
|
|
268
|
-
|
|
1121
|
+
// Component usage
|
|
1122
|
+
<dees-modal
|
|
1123
|
+
heading="Settings"
|
|
1124
|
+
.content=${settingsContent}
|
|
1125
|
+
.menuOptions=${actions}
|
|
1126
|
+
></dees-modal>
|
|
1127
|
+
```
|
|
269
1128
|
|
|
270
|
-
|
|
1129
|
+
#### `DeesContextmenu`
|
|
1130
|
+
Context menu component for right-click actions.
|
|
271
1131
|
|
|
272
1132
|
```typescript
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
1133
|
+
<dees-contextmenu
|
|
1134
|
+
.items=${[
|
|
1135
|
+
{
|
|
1136
|
+
label: 'Edit',
|
|
1137
|
+
icon: 'edit',
|
|
1138
|
+
action: () => handleEdit()
|
|
1139
|
+
},
|
|
1140
|
+
{
|
|
1141
|
+
label: 'Delete',
|
|
1142
|
+
icon: 'trash',
|
|
1143
|
+
action: () => handleDelete()
|
|
1144
|
+
}
|
|
1145
|
+
]}
|
|
1146
|
+
position="right" // Options: right, left, auto
|
|
1147
|
+
@item-click=${handleMenuItemClick}
|
|
1148
|
+
></dees-contextmenu>
|
|
283
1149
|
```
|
|
284
1150
|
|
|
285
|
-
|
|
1151
|
+
#### `DeesSpeechbubble`
|
|
1152
|
+
Tooltip-style speech bubble component for contextual information.
|
|
1153
|
+
|
|
1154
|
+
```typescript
|
|
1155
|
+
// Programmatic usage
|
|
1156
|
+
const bubble = await DeesSpeechbubble.createAndShow(
|
|
1157
|
+
referenceElement, // Element to attach to
|
|
1158
|
+
'Helpful information about this feature'
|
|
1159
|
+
);
|
|
1160
|
+
|
|
1161
|
+
// Component usage
|
|
1162
|
+
<dees-speechbubble
|
|
1163
|
+
.reffedElement=${targetElement}
|
|
1164
|
+
text="Click here to continue"
|
|
1165
|
+
></dees-speechbubble>
|
|
1166
|
+
```
|
|
286
1167
|
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
- pnpm (recommended) or npm
|
|
1168
|
+
#### `DeesWindowlayer`
|
|
1169
|
+
Base overlay component used by modal dialogs and other overlay components.
|
|
290
1170
|
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
1171
|
+
```typescript
|
|
1172
|
+
// Programmatic usage
|
|
1173
|
+
const layer = await DeesWindowLayer.createAndShow({
|
|
1174
|
+
blur: true, // Enable backdrop blur
|
|
1175
|
+
});
|
|
295
1176
|
|
|
296
|
-
|
|
297
|
-
|
|
1177
|
+
// Component usage
|
|
1178
|
+
<dees-windowlayer
|
|
1179
|
+
.options=${{
|
|
1180
|
+
blur: true
|
|
1181
|
+
}}
|
|
1182
|
+
@clicked=${handleOverlayClick}
|
|
1183
|
+
>
|
|
1184
|
+
<div class="content">
|
|
1185
|
+
<!-- Overlay content -->
|
|
1186
|
+
</div>
|
|
1187
|
+
</dees-windowlayer>
|
|
1188
|
+
```
|
|
298
1189
|
|
|
299
|
-
|
|
300
|
-
pnpm run build
|
|
1190
|
+
### Navigation Components
|
|
301
1191
|
|
|
302
|
-
|
|
303
|
-
|
|
1192
|
+
#### `DeesStepper`
|
|
1193
|
+
Multi-step navigation component for guided user flows.
|
|
304
1194
|
|
|
305
|
-
|
|
306
|
-
|
|
1195
|
+
```typescript
|
|
1196
|
+
<dees-stepper
|
|
1197
|
+
.steps=${[
|
|
1198
|
+
{
|
|
1199
|
+
key: 'personal',
|
|
1200
|
+
label: 'Personal Info',
|
|
1201
|
+
content: html`<div>Personal Information Form</div>`,
|
|
1202
|
+
validation: () => validatePersonalInfo()
|
|
1203
|
+
},
|
|
1204
|
+
{
|
|
1205
|
+
key: 'address',
|
|
1206
|
+
label: 'Address',
|
|
1207
|
+
content: html`<div>Address Form</div>`,
|
|
1208
|
+
validation: () => validateAddress()
|
|
1209
|
+
},
|
|
1210
|
+
{
|
|
1211
|
+
key: 'confirm',
|
|
1212
|
+
label: 'Confirmation',
|
|
1213
|
+
content: html`<div>Review and Confirm</div>`
|
|
1214
|
+
}
|
|
1215
|
+
]}
|
|
1216
|
+
currentStep="personal"
|
|
1217
|
+
@step-change=${handleStepChange}
|
|
1218
|
+
@complete=${handleComplete}
|
|
1219
|
+
></dees-stepper>
|
|
307
1220
|
```
|
|
308
1221
|
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
1222
|
+
#### `DeesProgressbar`
|
|
1223
|
+
Progress indicator component for tracking completion status.
|
|
1224
|
+
|
|
1225
|
+
```typescript
|
|
1226
|
+
<dees-progressbar
|
|
1227
|
+
value={75} // Current progress (0-100)
|
|
1228
|
+
label="Uploading" // Optional label
|
|
1229
|
+
showPercentage // Display percentage
|
|
1230
|
+
type="determinate" // Options: determinate, indeterminate
|
|
1231
|
+
status="normal" // Options: normal, success, warning, error
|
|
1232
|
+
@progress=${handleProgress}
|
|
1233
|
+
></dees-progressbar>
|
|
320
1234
|
```
|
|
321
1235
|
|
|
322
|
-
|
|
1236
|
+
### Development Components
|
|
323
1237
|
|
|
324
|
-
|
|
325
|
-
|
|
1238
|
+
#### `DeesEditor`
|
|
1239
|
+
Code editor component with syntax highlighting and code completion, powered by Monaco Editor.
|
|
326
1240
|
|
|
327
1241
|
```typescript
|
|
328
|
-
|
|
1242
|
+
<dees-editor
|
|
1243
|
+
.value=${code}
|
|
1244
|
+
@change=${handleCodeChange}
|
|
1245
|
+
.language=${'typescript'}
|
|
1246
|
+
.theme=${'vs-dark'}
|
|
1247
|
+
.options=${{
|
|
1248
|
+
lineNumbers: true,
|
|
1249
|
+
minimap: { enabled: true },
|
|
1250
|
+
autoClosingBrackets: 'always'
|
|
1251
|
+
}}
|
|
1252
|
+
></dees-editor>
|
|
1253
|
+
```
|
|
1254
|
+
|
|
1255
|
+
#### `DeesEditorMarkdown`
|
|
1256
|
+
Markdown editor component with live preview.
|
|
329
1257
|
|
|
330
|
-
|
|
331
|
-
|
|
1258
|
+
```typescript
|
|
1259
|
+
<dees-editor-markdown
|
|
1260
|
+
.value=${markdown}
|
|
1261
|
+
@change=${handleMarkdownChange}
|
|
1262
|
+
.options=${{
|
|
1263
|
+
preview: true,
|
|
1264
|
+
toolbar: true,
|
|
1265
|
+
spellcheck: true,
|
|
1266
|
+
autosave: true
|
|
1267
|
+
}}
|
|
1268
|
+
></dees-editor-markdown>
|
|
332
1269
|
```
|
|
333
1270
|
|
|
334
|
-
|
|
335
|
-
|
|
1271
|
+
#### `DeesEditorMarkdownoutlet`
|
|
1272
|
+
Markdown preview component for rendering markdown content.
|
|
336
1273
|
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
1274
|
+
```typescript
|
|
1275
|
+
<dees-editor-markdownoutlet
|
|
1276
|
+
.markdown=${markdownContent}
|
|
1277
|
+
.theme=${'github'} // Options: github, dark, custom
|
|
1278
|
+
.plugins=${['mermaid', 'highlight']} // Optional plugins
|
|
1279
|
+
allowHtml={false} // Security: disable raw HTML
|
|
1280
|
+
></dees-editor-markdownoutlet>
|
|
1281
|
+
```
|
|
340
1282
|
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
- 🔍 IntelliSense for all properties and methods
|
|
344
|
-
- 📝 JSDoc comments with usage examples
|
|
345
|
-
- ✅ Type checking for component properties
|
|
346
|
-
- 🎯 Auto-imports and code completion
|
|
1283
|
+
#### `DeesTerminal`
|
|
1284
|
+
Terminal emulator component for command-line interface.
|
|
347
1285
|
|
|
348
|
-
|
|
1286
|
+
```typescript
|
|
1287
|
+
<dees-terminal
|
|
1288
|
+
.commands=${{
|
|
1289
|
+
'echo': (args) => `Echo: ${args.join(' ')}`,
|
|
1290
|
+
'help': () => 'Available commands: echo, help'
|
|
1291
|
+
}}
|
|
1292
|
+
.prompt=${'$'}
|
|
1293
|
+
.welcomeMessage=${'Welcome! Type "help" for available commands.'}
|
|
1294
|
+
.historySize=${100}
|
|
1295
|
+
.autoFocus={true}
|
|
1296
|
+
></dees-terminal>
|
|
1297
|
+
```
|
|
349
1298
|
|
|
350
|
-
|
|
1299
|
+
#### `DeesUpdater`
|
|
1300
|
+
Component for managing application updates and version control.
|
|
351
1301
|
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
2
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
1302
|
+
```typescript
|
|
1303
|
+
<dees-updater
|
|
1304
|
+
.currentVersion=${'1.5.2'}
|
|
1305
|
+
.checkInterval=${3600000} // Check every hour
|
|
1306
|
+
.autoUpdate=${false}
|
|
1307
|
+
@update-available=${handleUpdateAvailable}
|
|
1308
|
+
@update-progress=${handleUpdateProgress}
|
|
1309
|
+
></dees-updater>
|
|
1310
|
+
```
|
|
359
1311
|
|
|
360
|
-
|
|
1312
|
+
### Auth & Utilities Components
|
|
361
1313
|
|
|
362
|
-
|
|
1314
|
+
#### `DeesSimpleAppdash`
|
|
1315
|
+
Simple application dashboard component for quick prototyping.
|
|
363
1316
|
|
|
364
|
-
**Issue: Components not rendering**
|
|
365
1317
|
```typescript
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
1318
|
+
<dees-simple-appdash
|
|
1319
|
+
.appTitle=${'My Application'}
|
|
1320
|
+
.menuItems=${[
|
|
1321
|
+
{ name: 'Dashboard', icon: 'home', route: '/dashboard' },
|
|
1322
|
+
{ name: 'Settings', icon: 'settings', route: '/settings' }
|
|
1323
|
+
]}
|
|
1324
|
+
.user=${{
|
|
1325
|
+
name: 'John Doe',
|
|
1326
|
+
role: 'Administrator'
|
|
1327
|
+
}}
|
|
1328
|
+
@menu-select=${handleMenuSelect}
|
|
1329
|
+
>
|
|
1330
|
+
<!-- Dashboard content -->
|
|
1331
|
+
</dees-simple-appdash>
|
|
370
1332
|
```
|
|
371
1333
|
|
|
372
|
-
|
|
1334
|
+
#### `DeesSimpleLogin`
|
|
1335
|
+
Simple login form component with validation and customization.
|
|
1336
|
+
|
|
373
1337
|
```typescript
|
|
374
|
-
|
|
375
|
-
{
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
}
|
|
1338
|
+
<dees-simple-login
|
|
1339
|
+
.appName=${'My Application'}
|
|
1340
|
+
.logo=${'./assets/logo.png'}
|
|
1341
|
+
.backgroundImage=${'./assets/background.jpg'}
|
|
1342
|
+
.fields=${['username', 'password']} // Options: username, email, password
|
|
1343
|
+
showForgotPassword
|
|
1344
|
+
showRememberMe
|
|
1345
|
+
@login=${handleLogin}
|
|
1346
|
+
@forgot-password=${handleForgotPassword}
|
|
1347
|
+
></dees-simple-login>
|
|
382
1348
|
```
|
|
383
1349
|
|
|
384
|
-
|
|
385
|
-
```html
|
|
386
|
-
<!-- Components use Shadow DOM, styles are encapsulated -->
|
|
387
|
-
<!-- Use CSS custom properties for theming -->
|
|
388
|
-
<style>
|
|
389
|
-
dees-button {
|
|
390
|
-
--button-background: #007bff;
|
|
391
|
-
--button-color: white;
|
|
392
|
-
}
|
|
393
|
-
</style>
|
|
394
|
-
```
|
|
1350
|
+
### Shopping Components
|
|
395
1351
|
|
|
396
|
-
|
|
1352
|
+
#### `DeesShoppingProductcard`
|
|
1353
|
+
Product card component for e-commerce applications.
|
|
397
1354
|
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
1355
|
+
```typescript
|
|
1356
|
+
<dees-shopping-productcard
|
|
1357
|
+
.productData=${{
|
|
1358
|
+
name: 'Premium Headphones',
|
|
1359
|
+
category: 'Electronics',
|
|
1360
|
+
description: 'High-quality wireless headphones with noise cancellation',
|
|
1361
|
+
price: 199.99,
|
|
1362
|
+
originalPrice: 249.99, // Shows strikethrough price
|
|
1363
|
+
currency: '$',
|
|
1364
|
+
inStock: true,
|
|
1365
|
+
stockText: 'In Stock', // Custom stock text
|
|
1366
|
+
imageUrl: '/images/headphones.jpg',
|
|
1367
|
+
iconName: 'lucide:headphones' // Fallback icon if no image
|
|
1368
|
+
}}
|
|
1369
|
+
quantity={1} // Current quantity
|
|
1370
|
+
showQuantitySelector={true} // Show quantity selector
|
|
1371
|
+
selectable={false} // Enable selection mode
|
|
1372
|
+
selected={false} // Selection state
|
|
1373
|
+
@quantityChange=${(e) => handleQuantityChange(e.detail)}
|
|
1374
|
+
@selectionChange=${(e) => handleSelectionChange(e.detail)}
|
|
1375
|
+
></dees-shopping-productcard>
|
|
1376
|
+
```
|
|
403
1377
|
|
|
404
|
-
##
|
|
1378
|
+
## License and Legal Information
|
|
405
1379
|
|
|
406
|
-
This repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the
|
|
1380
|
+
This repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the license file within this repository.
|
|
407
1381
|
|
|
408
|
-
|
|
1382
|
+
Please note: The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.
|
|
409
1383
|
|
|
410
|
-
|
|
1384
|
+
### Trademarks
|
|
411
1385
|
|
|
412
|
-
This project is owned and maintained by
|
|
1386
|
+
This project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH.
|
|
413
1387
|
|
|
414
|
-
|
|
1388
|
+
### Company Information
|
|
415
1389
|
|
|
416
|
-
|
|
417
|
-
Registered at District
|
|
1390
|
+
Task Venture Capital GmbH
|
|
1391
|
+
Registered at District court Bremen HRB 35230 HB, Germany
|
|
418
1392
|
|
|
419
|
-
For any legal inquiries or if you require further information, please contact us via email at
|
|
1393
|
+
For any legal inquiries or if you require further information, please contact us via email at hello@task.vc.
|
|
420
1394
|
|
|
421
1395
|
By using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.
|
|
422
|
-
|
|
423
|
-
---
|
|
424
|
-
|
|
425
|
-
<div align="center">
|
|
426
|
-
<p>Built with ❤️ by <a href="https://task.vc">Task Venture Capital GmbH</a></p>
|
|
427
|
-
<p>
|
|
428
|
-
<a href="https://github.com/design-estate/dees-catalog/stargazers">⭐ Star us on GitHub</a> •
|
|
429
|
-
<a href="https://twitter.com/taskventure">🐦 Follow on Twitter</a> •
|
|
430
|
-
<a href="https://www.linkedin.com/company/task-venture-capital">💼 LinkedIn</a>
|
|
431
|
-
</p>
|
|
432
|
-
</div>
|