@design.estate/dees-catalog 3.37.1 → 3.38.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.
- package/dist_bundle/bundle.js +2 -2
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/package.json +1 -1
- package/readme.md +300 -110
- package/ts_web/00_commitinfo_data.ts +1 -1
package/dist_bundle/bundle.js
CHANGED
|
@@ -143717,7 +143717,7 @@ init_group_runtime();
|
|
|
143717
143717
|
// ts_web/00_commitinfo_data.ts
|
|
143718
143718
|
var commitinfo = {
|
|
143719
143719
|
name: "@design.estate/dees-catalog",
|
|
143720
|
-
version: "3.
|
|
143720
|
+
version: "3.38.0",
|
|
143721
143721
|
description: "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript."
|
|
143722
143722
|
};
|
|
143723
143723
|
export {
|
|
@@ -143950,4 +143950,4 @@ ibantools/jsnext/ibantools.js:
|
|
|
143950
143950
|
* @preferred
|
|
143951
143951
|
*)
|
|
143952
143952
|
*/
|
|
143953
|
-
//# sourceMappingURL=bundle-
|
|
143953
|
+
//# sourceMappingURL=bundle-1769390923195.js.map
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@design.estate/dees-catalog',
|
|
6
|
-
version: '3.
|
|
6
|
+
version: '3.38.0',
|
|
7
7
|
description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUsNkJBQTZCO0lBQ25DLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFdBQVcsRUFBRSxzSkFBc0o7Q0FDcEssQ0FBQSJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@design.estate/dees-catalog",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.38.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.",
|
|
6
6
|
"main": "dist_ts_web/index.js",
|
package/readme.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @design.estate/dees-catalog
|
|
2
2
|
|
|
3
|
-
A comprehensive web components library built with TypeScript and LitElement, providing **
|
|
3
|
+
A comprehensive web components library built with TypeScript and LitElement, providing **70+ production-ready UI components** for building modern web applications with consistent design and behavior. 🚀
|
|
4
4
|
|
|
5
5
|
[](https://www.typescriptlang.org/)
|
|
6
6
|
[](https://lit.dev/)
|
|
@@ -11,12 +11,13 @@ For reporting bugs, issues, or security vulnerabilities, please visit [community
|
|
|
11
11
|
|
|
12
12
|
## ✨ Features
|
|
13
13
|
|
|
14
|
-
- 🎨 **Consistent Design System**
|
|
15
|
-
- 🌙 **Dark/Light Theme Support**
|
|
16
|
-
- ⌨️ **Keyboard Accessible**
|
|
17
|
-
- 📱 **Responsive**
|
|
18
|
-
- 🔧 **TypeScript-First**
|
|
19
|
-
- 🧩 **Modular**
|
|
14
|
+
- 🎨 **Consistent Design System** — Beautiful, cohesive components following modern UI/UX principles
|
|
15
|
+
- 🌙 **Dark/Light Theme Support** — All components automatically adapt to your theme
|
|
16
|
+
- ⌨️ **Keyboard Accessible** — Full keyboard navigation and ARIA support
|
|
17
|
+
- 📱 **Responsive** — Mobile-first design that works across all screen sizes
|
|
18
|
+
- 🔧 **TypeScript-First** — Fully typed APIs with excellent IDE support
|
|
19
|
+
- 🧩 **Modular** — Use only what you need, tree-shakeable architecture
|
|
20
|
+
- 🏗️ **Full App Shell** — `dees-appui` provides a complete application framework with menus, routing, activity log, and bottom bar
|
|
20
21
|
|
|
21
22
|
## 📦 Installation
|
|
22
23
|
|
|
@@ -52,16 +53,16 @@ For developers working on this library, please refer to the [UI Components Playb
|
|
|
52
53
|
|
|
53
54
|
| Category | Components |
|
|
54
55
|
|----------|------------|
|
|
55
|
-
| **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) |
|
|
56
|
-
| **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), [`DeesInputList`](#deesinputlist), [`DeesInputProfilepicture`](#deesinputprofilepicture), [`DeesInputRichtext`](#deesinputrichtext), [`DeesInputWysiwyg`](#deesinputwysiwyg), [`DeesInputDatepicker`](#deesinputdatepicker), [`DeesInputSearchselect`](#deesinputsearchselect), [`DeesFormSubmit`](#deesformsubmit) |
|
|
57
|
-
| **Layout** | [`DeesAppui`](#deesappui), [`DeesAppuiMainmenu`](#deesappuimainmenu), [`DeesAppuiSecondarymenu`](#deesappuisecondarymenu), [`DeesAppuiMaincontent`](#deesappuimaincontent), [`DeesAppuiAppbar`](#deesappuiappbar), [`DeesAppuiActivitylog`](#deesappuiactivitylog), [`DeesAppuiProfiledropdown`](#deesappuiprofiledropdown), [`DeesAppuiTabs`](#deesappuitabs), [`DeesMobileNavigation`](#deesmobilenavigation), [`DeesDashboardGrid`](#deesdashboardgrid) |
|
|
56
|
+
| **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), [`DeesActionbar`](#deesactionbar) |
|
|
57
|
+
| **Forms** | [`DeesForm`](#deesform), [`DeesInputText`](#deesinputtext), [`DeesInputCheckbox`](#deesinputcheckbox), [`DeesInputDropdown`](#deesinputdropdown), [`DeesInputRadiogroup`](#deesinputradiogroup), [`DeesInputFileupload`](#deesinputfileupload), [`DeesInputIban`](#deesinputiban), [`DeesInputPhone`](#deesinputphone), [`DeesInputQuantitySelector`](#deesinputquantityselector), [`DeesInputMultitoggle`](#deesinputmultitoggle), [`DeesInputToggle`](#deesinputtoggle), [`DeesInputTags`](#deesinputtags), [`DeesInputTypelist`](#deesinputtypelist), [`DeesInputList`](#deesinputlist), [`DeesInputProfilepicture`](#deesinputprofilepicture), [`DeesInputRichtext`](#deesinputrichtext), [`DeesInputWysiwyg`](#deesinputwysiwyg), [`DeesInputDatepicker`](#deesinputdatepicker), [`DeesInputSearchselect`](#deesinputsearchselect), [`DeesInputCode`](#deesinputcode), [`DeesFormSubmit`](#deesformsubmit) |
|
|
58
|
+
| **App Shell (Layout)** | [`DeesAppui`](#deesappui-), [`DeesAppuiMainmenu`](#deesappuimainmenu), [`DeesAppuiSecondarymenu`](#deesappuisecondarymenu), [`DeesAppuiMaincontent`](#deesappuimaincontent), [`DeesAppuiAppbar`](#deesappuiappbar), [`DeesAppuiActivitylog`](#deesappuiactivitylog), [`DeesAppuiBottombar`](#deesappuibottombar), [`DeesAppuiProfiledropdown`](#deesappuiprofiledropdown), [`DeesAppuiTabs`](#deesappuitabs), [`DeesMobileNavigation`](#deesmobilenavigation), [`DeesDashboardGrid`](#deesdashboardgrid) |
|
|
58
59
|
| **Data Display** | [`DeesTable`](#deestable), [`DeesDataviewCodebox`](#deesdataviewcodebox), [`DeesDataviewStatusobject`](#deesdataviewstatusobject), [`DeesPdf`](#deespdf), [`DeesStatsGrid`](#deesstatsgrid), [`DeesPagination`](#deespagination) |
|
|
59
60
|
| **Visualization** | [`DeesChartArea`](#deeschartarea), [`DeesChartLog`](#deeschartlog) |
|
|
60
61
|
| **Dialogs & Overlays** | [`DeesModal`](#deesmodal), [`DeesContextmenu`](#deescontextmenu), [`DeesSpeechbubble`](#deesspeechbubble), [`DeesWindowlayer`](#deeswindowlayer) |
|
|
61
62
|
| **Navigation** | [`DeesStepper`](#deesstepper), [`DeesProgressbar`](#deesprogressbar) |
|
|
62
|
-
| **
|
|
63
|
+
| **Workspace / IDE** | [`DeesEditor`](#deeseditor), [`DeesTerminal`](#deesterminal), [`DeesUpdater`](#deesupdater) |
|
|
63
64
|
| **Theming** | [`DeesTheme`](#deestheme) |
|
|
64
|
-
| **
|
|
65
|
+
| **Pre-built Templates** | [`DeesSimpleAppdash`](#deessimpleappdash), [`DeesSimpleLogin`](#deessimplelogin) |
|
|
65
66
|
| **Shopping** | [`DeesShoppingProductcard`](#deesshoppingproductcard) |
|
|
66
67
|
|
|
67
68
|
---
|
|
@@ -117,14 +118,14 @@ Interactive chips/tags with selection capabilities.
|
|
|
117
118
|
Display icons from FontAwesome and Lucide icon libraries with library prefixes.
|
|
118
119
|
|
|
119
120
|
```typescript
|
|
120
|
-
// FontAwesome icons
|
|
121
|
+
// FontAwesome icons — use 'fa:' prefix
|
|
121
122
|
<dees-icon
|
|
122
123
|
icon="fa:check" // FontAwesome icon with fa: prefix
|
|
123
124
|
iconSize="24" // Size in pixels
|
|
124
125
|
color="#22c55e" // Optional: custom color
|
|
125
126
|
></dees-icon>
|
|
126
127
|
|
|
127
|
-
// Lucide icons
|
|
128
|
+
// Lucide icons — use 'lucide:' prefix
|
|
128
129
|
<dees-icon
|
|
129
130
|
icon="lucide:menu" // Lucide icon with lucide: prefix
|
|
130
131
|
iconSize="24" // Size in pixels
|
|
@@ -134,7 +135,7 @@ Display icons from FontAwesome and Lucide icon libraries with library prefixes.
|
|
|
134
135
|
|
|
135
136
|
// Legacy API (deprecated but still supported)
|
|
136
137
|
<dees-icon
|
|
137
|
-
iconFA="check" // Without prefix
|
|
138
|
+
iconFA="check" // Without prefix — assumes FontAwesome
|
|
138
139
|
></dees-icon>
|
|
139
140
|
```
|
|
140
141
|
|
|
@@ -287,6 +288,18 @@ Window control buttons (minimize, maximize, close) for desktop-like applications
|
|
|
287
288
|
></dees-windowcontrols>
|
|
288
289
|
```
|
|
289
290
|
|
|
291
|
+
#### `DeesActionbar`
|
|
292
|
+
Floating action bar for contextual actions.
|
|
293
|
+
|
|
294
|
+
```typescript
|
|
295
|
+
<dees-actionbar
|
|
296
|
+
.actions=${[
|
|
297
|
+
{ icon: 'lucide:save', label: 'Save', action: () => handleSave() },
|
|
298
|
+
{ icon: 'lucide:trash', label: 'Delete', action: () => handleDelete() }
|
|
299
|
+
]}
|
|
300
|
+
></dees-actionbar>
|
|
301
|
+
```
|
|
302
|
+
|
|
290
303
|
---
|
|
291
304
|
|
|
292
305
|
### Form Components
|
|
@@ -331,6 +344,18 @@ Checkbox input component for boolean values.
|
|
|
331
344
|
></dees-input-checkbox>
|
|
332
345
|
```
|
|
333
346
|
|
|
347
|
+
#### `DeesInputToggle`
|
|
348
|
+
Toggle switch component for boolean on/off states.
|
|
349
|
+
|
|
350
|
+
```typescript
|
|
351
|
+
<dees-input-toggle
|
|
352
|
+
key="darkMode"
|
|
353
|
+
label="Enable Dark Mode"
|
|
354
|
+
.value=${true}
|
|
355
|
+
@change=${handleToggle}
|
|
356
|
+
></dees-input-toggle>
|
|
357
|
+
```
|
|
358
|
+
|
|
334
359
|
#### `DeesInputDropdown`
|
|
335
360
|
Dropdown selection component with search and filtering capabilities.
|
|
336
361
|
|
|
@@ -658,6 +683,19 @@ Advanced block-based editor with slash commands and rich content blocks.
|
|
|
658
683
|
- Collaborative editing ready
|
|
659
684
|
- Extensible block types
|
|
660
685
|
|
|
686
|
+
#### `DeesInputCode`
|
|
687
|
+
Code input component for editing source code with syntax highlighting.
|
|
688
|
+
|
|
689
|
+
```typescript
|
|
690
|
+
<dees-input-code
|
|
691
|
+
key="snippet"
|
|
692
|
+
label="Code Snippet"
|
|
693
|
+
.value=${codeString}
|
|
694
|
+
language="typescript"
|
|
695
|
+
@change=${handleCodeChange}
|
|
696
|
+
></dees-input-code>
|
|
697
|
+
```
|
|
698
|
+
|
|
661
699
|
#### `DeesFormSubmit`
|
|
662
700
|
Submit button component specifically designed for `DeesForm`.
|
|
663
701
|
|
|
@@ -670,10 +708,10 @@ Submit button component specifically designed for `DeesForm`.
|
|
|
670
708
|
|
|
671
709
|
---
|
|
672
710
|
|
|
673
|
-
### Layout Components
|
|
711
|
+
### App Shell (Layout) Components
|
|
674
712
|
|
|
675
|
-
#### `DeesAppui`
|
|
676
|
-
A comprehensive application shell component providing a complete UI framework with navigation, menus, activity logging, and view management.
|
|
713
|
+
#### `DeesAppui` 🏗️
|
|
714
|
+
A comprehensive application shell component providing a complete UI framework with navigation, menus, activity logging, bottom bar, and view management.
|
|
677
715
|
|
|
678
716
|
> **Full API Documentation**: See [ts_web/elements/00group-appui/dees-appui/readme.md](./ts_web/elements/00group-appui/dees-appui/readme.md) for complete documentation including all programmatic APIs, view lifecycle hooks, and TypeScript interfaces.
|
|
679
717
|
|
|
@@ -690,7 +728,6 @@ class MyApp extends DeesElement {
|
|
|
690
728
|
async firstUpdated() {
|
|
691
729
|
this.appui = this.shadowRoot.querySelector('dees-appui');
|
|
692
730
|
|
|
693
|
-
// Configure with views and menu
|
|
694
731
|
this.appui.configure({
|
|
695
732
|
branding: { logoIcon: 'lucide:box', logoText: 'My App' },
|
|
696
733
|
views: [
|
|
@@ -700,7 +737,13 @@ class MyApp extends DeesElement {
|
|
|
700
737
|
mainMenu: {
|
|
701
738
|
sections: [{ name: 'Main', views: ['dashboard', 'settings'] }]
|
|
702
739
|
},
|
|
703
|
-
defaultView: 'dashboard'
|
|
740
|
+
defaultView: 'dashboard',
|
|
741
|
+
bottomBar: {
|
|
742
|
+
visible: true,
|
|
743
|
+
widgets: [
|
|
744
|
+
{ id: 'status', iconName: 'lucide:activity', label: 'Online', status: 'success' }
|
|
745
|
+
]
|
|
746
|
+
}
|
|
704
747
|
});
|
|
705
748
|
}
|
|
706
749
|
|
|
@@ -710,43 +753,123 @@ class MyApp extends DeesElement {
|
|
|
710
753
|
}
|
|
711
754
|
```
|
|
712
755
|
|
|
756
|
+
**Architecture Overview:**
|
|
757
|
+
|
|
758
|
+
```
|
|
759
|
+
┌─────────────────────────────────────────────────────────────────────┐
|
|
760
|
+
│ AppBar (dees-appui-appbar) │
|
|
761
|
+
│ ├── Menus (File, Edit, View...) │
|
|
762
|
+
│ ├── Breadcrumbs │
|
|
763
|
+
│ ├── User Profile + Dropdown │
|
|
764
|
+
│ └── Activity Log Toggle │
|
|
765
|
+
├─────────────┬───────────────────────────────────┬───────────────────┤
|
|
766
|
+
│ Main Menu │ Content Area │ Activity Log │
|
|
767
|
+
│ (collapsed/ │ ├── Content Tabs │ (slide panel) │
|
|
768
|
+
│ expanded) │ │ (closable, from tables/lists)│ │
|
|
769
|
+
│ │ └── View Container │ │
|
|
770
|
+
│ ┌─────────┐ │ └── Active View │ │
|
|
771
|
+
│ │ 🏠 Home │ ├─────────────────────────────────┐ │ │
|
|
772
|
+
│ │ 📁 Files│ │ Secondary Menu │ │ │
|
|
773
|
+
│ │ ⚙ Set.. │ │ ├── Collapsible Groups │ │ │
|
|
774
|
+
│ │ │ │ │ ├── Tabs / Actions │ │ │
|
|
775
|
+
│ └─────────┘ │ │ ├── Filters / Links │ │ │
|
|
776
|
+
│ │ │ └── Dividers / Headers │ │ │
|
|
777
|
+
├─────────────┴──┴───────────────────────────────┴───────────────────┤
|
|
778
|
+
│ Bottom Bar (dees-appui-bottombar) — 24px status bar │
|
|
779
|
+
│ ├── Status widgets (left/right) │
|
|
780
|
+
│ └── Action buttons (left/right) │
|
|
781
|
+
└─────────────────────────────────────────────────────────────────────┘
|
|
782
|
+
```
|
|
783
|
+
|
|
784
|
+
**Configuration (`IAppConfig`):**
|
|
785
|
+
|
|
786
|
+
```typescript
|
|
787
|
+
interface IAppConfig {
|
|
788
|
+
branding?: { logoIcon?: string; logoText?: string };
|
|
789
|
+
appBar?: IAppBarConfig;
|
|
790
|
+
views: IViewDefinition[];
|
|
791
|
+
mainMenu?: IMainMenuConfig;
|
|
792
|
+
defaultView?: string;
|
|
793
|
+
activityLog?: IActivityLogConfig;
|
|
794
|
+
bottomBar?: IBottomBarConfig;
|
|
795
|
+
onViewChange?: (viewId: string, view: IViewDefinition) => void;
|
|
796
|
+
onSearch?: (query: string) => void;
|
|
797
|
+
}
|
|
798
|
+
```
|
|
799
|
+
|
|
713
800
|
**Key Features:**
|
|
714
|
-
- **Configure API
|
|
715
|
-
- **View Management
|
|
716
|
-
- **
|
|
717
|
-
- **
|
|
718
|
-
- **
|
|
719
|
-
- **RxJS Observables
|
|
720
|
-
- **TypeScript-first
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
**
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
//
|
|
744
|
-
context
|
|
801
|
+
- 🔧 **Configure API** — Single `configure()` method for complete app setup
|
|
802
|
+
- 📄 **View Management** — Automatic view caching, lazy loading, and lifecycle hooks (`onActivate`, `onDeactivate`, `canDeactivate`)
|
|
803
|
+
- 🧭 **Hash-based Routing** — Automatic URL synchronization with view navigation and parameterized routes
|
|
804
|
+
- 📊 **Activity Log** — Slide-out panel with stacked entries, date grouping, search, and filtering
|
|
805
|
+
- 📌 **Bottom Status Bar** — Configurable widgets and actions with status colors and loading states
|
|
806
|
+
- 🎯 **RxJS Observables** — `viewChanged$` and `viewLifecycle$` for reactive programming
|
|
807
|
+
- 🏷️ **TypeScript-first** — Typed `IViewActivationContext` passed to views on activation
|
|
808
|
+
|
|
809
|
+
**Programmatic APIs:**
|
|
810
|
+
|
|
811
|
+
| Area | Methods |
|
|
812
|
+
|------|---------|
|
|
813
|
+
| **Navigation** | `navigateToView(viewId, params?)`, `getCurrentView()`, `getViewRegistry()` |
|
|
814
|
+
| **App Bar** | `setAppBarMenus()`, `updateAppBarMenu()`, `setBreadcrumbs()`, `setUser()`, `setProfileMenuItems()`, `setSearchVisible()`, `onSearch()`, `setWindowControlsVisible()` |
|
|
815
|
+
| **Main Menu** | `setMainMenu()`, `updateMainMenuGroup()`, `addMainMenuItem()`, `removeMainMenuItem()`, `setMainMenuSelection()`, `setMainMenuCollapsed()`, `setMainMenuVisible()`, `setMainMenuBadge()`, `clearMainMenuBadge()` |
|
|
816
|
+
| **Secondary Menu** | `setSecondaryMenu()`, `updateSecondaryMenuGroup()`, `addSecondaryMenuItem()`, `setSecondaryMenuSelection()`, `setSecondaryMenuCollapsed()`, `setSecondaryMenuVisible()`, `clearSecondaryMenu()` |
|
|
817
|
+
| **Content Tabs** | `setContentTabs()`, `addContentTab()`, `removeContentTab()`, `selectContentTab()`, `getSelectedContentTab()`, `setContentTabsVisible()`, `setContentTabsAutoHide()` |
|
|
818
|
+
| **Activity Log** | `activityLog.add()`, `activityLog.addMany()`, `activityLog.clear()`, `activityLog.getEntries()`, `activityLog.filter()`, `activityLog.search()`, `setActivityLogVisible()`, `toggleActivityLog()`, `getActivityLogVisible()` |
|
|
819
|
+
| **Bottom Bar** | `bottomBar.addWidget()`, `bottomBar.updateWidget()`, `bottomBar.removeWidget()`, `bottomBar.getWidget()`, `bottomBar.clearWidgets()`, `bottomBar.addAction()`, `bottomBar.removeAction()`, `bottomBar.clearActions()`, `setBottomBarVisible()`, `getBottomBarVisible()` |
|
|
820
|
+
| **Observables** | `viewChanged$`, `viewLifecycle$` |
|
|
821
|
+
|
|
822
|
+
**View Lifecycle Hooks:**
|
|
823
|
+
|
|
824
|
+
```typescript
|
|
825
|
+
import { DeesElement, customElement } from '@design.estate/dees-element';
|
|
826
|
+
import type { IViewActivationContext, IViewLifecycle } from '@design.estate/dees-catalog';
|
|
827
|
+
|
|
828
|
+
@customElement('my-settings-view')
|
|
829
|
+
class MySettingsView extends DeesElement implements IViewLifecycle {
|
|
830
|
+
// Called when view becomes visible
|
|
831
|
+
async onActivate(context: IViewActivationContext) {
|
|
832
|
+
const { appui, viewId, params } = context;
|
|
833
|
+
|
|
834
|
+
// Set view-specific secondary menu
|
|
835
|
+
appui.setSecondaryMenu({
|
|
836
|
+
heading: 'Settings',
|
|
837
|
+
groups: [{ name: 'Options', items: [...] }]
|
|
838
|
+
});
|
|
839
|
+
|
|
840
|
+
// Control visibility of other shell parts
|
|
841
|
+
appui.setContentTabsVisible(false);
|
|
842
|
+
appui.setSecondaryMenuVisible(true);
|
|
843
|
+
}
|
|
844
|
+
|
|
845
|
+
// Called when navigating away
|
|
846
|
+
onDeactivate() { /* cleanup */ }
|
|
847
|
+
|
|
848
|
+
// Return false or a message string to block navigation
|
|
849
|
+
canDeactivate(): boolean | string {
|
|
850
|
+
if (this.hasUnsavedChanges) return 'You have unsaved changes. Leave anyway?';
|
|
851
|
+
return true;
|
|
852
|
+
}
|
|
745
853
|
}
|
|
746
854
|
```
|
|
747
855
|
|
|
856
|
+
**Secondary Menu Item Types:**
|
|
857
|
+
|
|
858
|
+
The secondary menu supports **8 distinct item types** for building rich contextual sidebars:
|
|
859
|
+
|
|
860
|
+
| Type | Description |
|
|
861
|
+
|------|-------------|
|
|
862
|
+
| **Tab** (default) | Selectable item that stays highlighted |
|
|
863
|
+
| **Action** | Executes on click without staying selected (blue styling) |
|
|
864
|
+
| **Filter** | Checkbox toggle for filtering |
|
|
865
|
+
| **MultiFilter** | Collapsible multi-select filter box |
|
|
866
|
+
| **Divider** | Visual separator line |
|
|
867
|
+
| **Header** | Non-interactive section label |
|
|
868
|
+
| **Link** | Opens an external URL |
|
|
869
|
+
| **Danger Action** | Red-styled action with optional confirmation |
|
|
870
|
+
|
|
748
871
|
#### `DeesAppuiMainmenu`
|
|
749
|
-
Main navigation menu component for application-wide navigation.
|
|
872
|
+
Main navigation menu component for application-wide navigation. Supports collapsed (icon-only) mode.
|
|
750
873
|
|
|
751
874
|
```typescript
|
|
752
875
|
<dees-appui-mainmenu
|
|
@@ -759,12 +882,12 @@ Main navigation menu component for application-wide navigation.
|
|
|
759
882
|
]
|
|
760
883
|
}
|
|
761
884
|
]}
|
|
762
|
-
collapsed // Optional: show collapsed version
|
|
885
|
+
collapsed // Optional: show collapsed icon-only version
|
|
763
886
|
></dees-appui-mainmenu>
|
|
764
887
|
```
|
|
765
888
|
|
|
766
889
|
#### `DeesAppuiSecondarymenu`
|
|
767
|
-
Secondary navigation component for sub-section selection with collapsible groups and
|
|
890
|
+
Secondary navigation component for sub-section selection with collapsible groups, badges, and 8 item types.
|
|
768
891
|
|
|
769
892
|
```typescript
|
|
770
893
|
<dees-appui-secondarymenu
|
|
@@ -806,28 +929,12 @@ Professional application bar component with hierarchical menus, breadcrumb navig
|
|
|
806
929
|
.menuItems=${[
|
|
807
930
|
{
|
|
808
931
|
name: 'File',
|
|
809
|
-
action: async () => {},
|
|
932
|
+
action: async () => {},
|
|
810
933
|
submenu: [
|
|
811
|
-
{
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
action: async () => handleNewFile()
|
|
816
|
-
},
|
|
817
|
-
{
|
|
818
|
-
name: 'Open...',
|
|
819
|
-
shortcut: 'Cmd+O',
|
|
820
|
-
iconName: 'folder-open',
|
|
821
|
-
action: async () => handleOpen()
|
|
822
|
-
},
|
|
823
|
-
{ divider: true }, // Menu separator
|
|
824
|
-
{
|
|
825
|
-
name: 'Save',
|
|
826
|
-
shortcut: 'Cmd+S',
|
|
827
|
-
iconName: 'save',
|
|
828
|
-
action: async () => handleSave(),
|
|
829
|
-
disabled: true // Disabled state
|
|
830
|
-
}
|
|
934
|
+
{ name: 'New File', shortcut: 'Cmd+N', iconName: 'file-plus', action: async () => handleNewFile() },
|
|
935
|
+
{ name: 'Open...', shortcut: 'Cmd+O', iconName: 'folder-open', action: async () => handleOpen() },
|
|
936
|
+
{ divider: true },
|
|
937
|
+
{ name: 'Save', shortcut: 'Cmd+S', iconName: 'save', action: async () => handleSave(), disabled: true }
|
|
831
938
|
]
|
|
832
939
|
}
|
|
833
940
|
]}
|
|
@@ -849,12 +956,12 @@ Professional application bar component with hierarchical menus, breadcrumb navig
|
|
|
849
956
|
```
|
|
850
957
|
|
|
851
958
|
**Key Features:**
|
|
852
|
-
- **Hierarchical Menu System**
|
|
853
|
-
- **Keyboard Navigation**
|
|
854
|
-
- **Breadcrumb Navigation**
|
|
855
|
-
- **User Account Section**
|
|
856
|
-
- **Activity Log Toggle**
|
|
857
|
-
- **Accessibility**
|
|
959
|
+
- **Hierarchical Menu System** — Top-level menus with dropdown submenus, icons, and keyboard shortcuts
|
|
960
|
+
- **Keyboard Navigation** — Full keyboard support (Tab, Arrow keys, Enter, Escape)
|
|
961
|
+
- **Breadcrumb Navigation** — Customizable breadcrumb trail with click events
|
|
962
|
+
- **User Account Section** — Avatar with status indicator and profile dropdown
|
|
963
|
+
- **Activity Log Toggle** — Button with badge count to show/hide activity panel
|
|
964
|
+
- **Accessibility** — Full ARIA support with menubar roles
|
|
858
965
|
|
|
859
966
|
#### `DeesAppuiActivitylog`
|
|
860
967
|
Real-time activity log panel for displaying user actions and system events.
|
|
@@ -886,6 +993,61 @@ activityLog.search('settings'); // Search by message
|
|
|
886
993
|
- Animated slide-in/out panel
|
|
887
994
|
- Theme-aware styling
|
|
888
995
|
|
|
996
|
+
#### `DeesAppuiBottombar`
|
|
997
|
+
A 24px fixed-height status bar at the bottom of the application shell. Supports status widgets and action buttons positioned left or right.
|
|
998
|
+
|
|
999
|
+
```typescript
|
|
1000
|
+
// Configure via DeesAppui
|
|
1001
|
+
appui.configure({
|
|
1002
|
+
bottomBar: {
|
|
1003
|
+
visible: true,
|
|
1004
|
+
widgets: [
|
|
1005
|
+
{
|
|
1006
|
+
id: 'status',
|
|
1007
|
+
iconName: 'lucide:activity',
|
|
1008
|
+
label: 'System Online',
|
|
1009
|
+
status: 'success', // 'idle' | 'active' | 'success' | 'warning' | 'error'
|
|
1010
|
+
tooltip: 'All systems operational',
|
|
1011
|
+
onClick: () => console.log('Status clicked'),
|
|
1012
|
+
},
|
|
1013
|
+
{
|
|
1014
|
+
id: 'version',
|
|
1015
|
+
iconName: 'lucide:gitBranch',
|
|
1016
|
+
label: 'v1.2.3',
|
|
1017
|
+
position: 'right',
|
|
1018
|
+
}
|
|
1019
|
+
],
|
|
1020
|
+
actions: [
|
|
1021
|
+
{
|
|
1022
|
+
id: 'terminal',
|
|
1023
|
+
iconName: 'lucide:terminal',
|
|
1024
|
+
tooltip: 'Open Terminal',
|
|
1025
|
+
position: 'right',
|
|
1026
|
+
onClick: () => console.log('Terminal clicked'),
|
|
1027
|
+
}
|
|
1028
|
+
]
|
|
1029
|
+
}
|
|
1030
|
+
});
|
|
1031
|
+
|
|
1032
|
+
// Programmatic updates
|
|
1033
|
+
appui.bottomBar.addWidget({ id: 'build', iconName: 'lucide:hammer', label: 'Building...', loading: true, status: 'active' });
|
|
1034
|
+
appui.bottomBar.updateWidget('build', { label: 'Build complete', loading: false, status: 'success' });
|
|
1035
|
+
appui.bottomBar.removeWidget('build');
|
|
1036
|
+
|
|
1037
|
+
appui.bottomBar.addAction({ id: 'refresh', iconName: 'lucide:refreshCw', onClick: () => location.reload() });
|
|
1038
|
+
appui.bottomBar.removeAction('refresh');
|
|
1039
|
+
|
|
1040
|
+
appui.setBottomBarVisible(false);
|
|
1041
|
+
```
|
|
1042
|
+
|
|
1043
|
+
**Key Features:**
|
|
1044
|
+
- Configurable status widgets with icons, labels, and colored status indicators
|
|
1045
|
+
- Loading spinner state for widgets
|
|
1046
|
+
- Contextual actions with icon buttons
|
|
1047
|
+
- Left/right positioning for both widgets and actions
|
|
1048
|
+
- Tooltips on hover
|
|
1049
|
+
- Context menu support per widget
|
|
1050
|
+
|
|
889
1051
|
#### `DeesAppuiTabs`
|
|
890
1052
|
Reusable tab component with horizontal/vertical layout support.
|
|
891
1053
|
|
|
@@ -1007,7 +1169,7 @@ A responsive grid component for displaying statistical data with various visuali
|
|
|
1007
1169
|
value: 125420,
|
|
1008
1170
|
unit: '$',
|
|
1009
1171
|
type: 'number',
|
|
1010
|
-
icon: '
|
|
1172
|
+
icon: 'lucide:dollarSign',
|
|
1011
1173
|
description: '+12.5% from last month',
|
|
1012
1174
|
color: '#22c55e'
|
|
1013
1175
|
},
|
|
@@ -1016,7 +1178,7 @@ A responsive grid component for displaying statistical data with various visuali
|
|
|
1016
1178
|
title: 'CPU Usage',
|
|
1017
1179
|
value: 73,
|
|
1018
1180
|
type: 'gauge',
|
|
1019
|
-
icon: '
|
|
1181
|
+
icon: 'lucide:cpu',
|
|
1020
1182
|
gaugeOptions: {
|
|
1021
1183
|
min: 0, max: 100,
|
|
1022
1184
|
thresholds: [
|
|
@@ -1032,8 +1194,22 @@ A responsive grid component for displaying statistical data with various visuali
|
|
|
1032
1194
|
value: '1.2k',
|
|
1033
1195
|
unit: '/min',
|
|
1034
1196
|
type: 'trend',
|
|
1035
|
-
icon: '
|
|
1197
|
+
icon: 'lucide:server',
|
|
1036
1198
|
trendData: [45, 52, 38, 65, 72, 68, 75, 82, 79, 85, 88, 92]
|
|
1199
|
+
},
|
|
1200
|
+
{
|
|
1201
|
+
id: 'cores',
|
|
1202
|
+
title: 'CPU Cores',
|
|
1203
|
+
value: 0,
|
|
1204
|
+
type: 'cpuCores',
|
|
1205
|
+
icon: 'lucide:cpu',
|
|
1206
|
+
columnSpan: 2,
|
|
1207
|
+
coresData: [
|
|
1208
|
+
{ id: 0, usage: 45, label: '0' },
|
|
1209
|
+
{ id: 1, usage: 72, label: '1' },
|
|
1210
|
+
{ id: 2, usage: 30, label: '2' },
|
|
1211
|
+
{ id: 3, usage: 88, label: '3' }
|
|
1212
|
+
]
|
|
1037
1213
|
}
|
|
1038
1214
|
]}
|
|
1039
1215
|
.minTileWidth=${250}
|
|
@@ -1041,6 +1217,8 @@ A responsive grid component for displaying statistical data with various visuali
|
|
|
1041
1217
|
></dees-statsgrid>
|
|
1042
1218
|
```
|
|
1043
1219
|
|
|
1220
|
+
**Tile Types:** `number`, `gauge`, `percentage`, `trend`, `text`, `multiPercentage`, `cpuCores`
|
|
1221
|
+
|
|
1044
1222
|
#### `DeesPagination`
|
|
1045
1223
|
Pagination component for navigating through large datasets.
|
|
1046
1224
|
|
|
@@ -1189,7 +1367,7 @@ Progress indicator component for tracking completion status.
|
|
|
1189
1367
|
Theme provider component that wraps children and provides CSS custom properties for consistent theming.
|
|
1190
1368
|
|
|
1191
1369
|
```typescript
|
|
1192
|
-
// Basic usage
|
|
1370
|
+
// Basic usage — wrap your app
|
|
1193
1371
|
<dees-theme>
|
|
1194
1372
|
<my-app></my-app>
|
|
1195
1373
|
</dees-theme>
|
|
@@ -1217,7 +1395,7 @@ Theme provider component that wraps children and provides CSS custom properties
|
|
|
1217
1395
|
|
|
1218
1396
|
---
|
|
1219
1397
|
|
|
1220
|
-
###
|
|
1398
|
+
### Workspace / IDE Components
|
|
1221
1399
|
|
|
1222
1400
|
#### `DeesEditor`
|
|
1223
1401
|
Code editor component with syntax highlighting and code completion, powered by Monaco Editor.
|
|
@@ -1236,28 +1414,6 @@ Code editor component with syntax highlighting and code completion, powered by M
|
|
|
1236
1414
|
></dees-editor>
|
|
1237
1415
|
```
|
|
1238
1416
|
|
|
1239
|
-
#### `DeesEditorMarkdown`
|
|
1240
|
-
Markdown editor component with live preview.
|
|
1241
|
-
|
|
1242
|
-
```typescript
|
|
1243
|
-
<dees-editor-markdown
|
|
1244
|
-
.value=${markdown}
|
|
1245
|
-
@change=${handleMarkdownChange}
|
|
1246
|
-
.options=${{ preview: true, toolbar: true, spellcheck: true }}
|
|
1247
|
-
></dees-editor-markdown>
|
|
1248
|
-
```
|
|
1249
|
-
|
|
1250
|
-
#### `DeesEditorMarkdownoutlet`
|
|
1251
|
-
Markdown preview component for rendering markdown content.
|
|
1252
|
-
|
|
1253
|
-
```typescript
|
|
1254
|
-
<dees-editor-markdownoutlet
|
|
1255
|
-
.markdown=${markdownContent}
|
|
1256
|
-
.theme=${'github'}
|
|
1257
|
-
allowHtml={false}
|
|
1258
|
-
></dees-editor-markdownoutlet>
|
|
1259
|
-
```
|
|
1260
|
-
|
|
1261
1417
|
#### `DeesTerminal`
|
|
1262
1418
|
Terminal emulator component for command-line interface.
|
|
1263
1419
|
|
|
@@ -1286,7 +1442,7 @@ Component for managing application updates and version control.
|
|
|
1286
1442
|
|
|
1287
1443
|
---
|
|
1288
1444
|
|
|
1289
|
-
###
|
|
1445
|
+
### Pre-built Templates
|
|
1290
1446
|
|
|
1291
1447
|
#### `DeesSimpleAppdash`
|
|
1292
1448
|
Simple application dashboard component for quick prototyping.
|
|
@@ -1360,6 +1516,8 @@ interface IMenuItem {
|
|
|
1360
1516
|
action: () => void;
|
|
1361
1517
|
badge?: string | number;
|
|
1362
1518
|
badgeVariant?: 'default' | 'success' | 'warning' | 'error';
|
|
1519
|
+
closeable?: boolean;
|
|
1520
|
+
onClose?: () => void;
|
|
1363
1521
|
}
|
|
1364
1522
|
|
|
1365
1523
|
// Menu group interface for organized menus
|
|
@@ -1375,11 +1533,13 @@ interface IViewDefinition {
|
|
|
1375
1533
|
id: string;
|
|
1376
1534
|
name: string;
|
|
1377
1535
|
iconName?: string;
|
|
1378
|
-
content: string | HTMLElement | (() => TemplateResult);
|
|
1536
|
+
content: string | (new () => HTMLElement) | (() => TemplateResult) | (() => Promise<any>);
|
|
1379
1537
|
secondaryMenu?: ISecondaryMenuGroup[];
|
|
1380
1538
|
contentTabs?: IMenuItem[];
|
|
1381
1539
|
route?: string;
|
|
1382
1540
|
badge?: string | number;
|
|
1541
|
+
badgeVariant?: 'default' | 'success' | 'warning' | 'error';
|
|
1542
|
+
cache?: boolean;
|
|
1383
1543
|
}
|
|
1384
1544
|
|
|
1385
1545
|
// Activity log entry
|
|
@@ -1392,6 +1552,36 @@ interface IActivityEntry {
|
|
|
1392
1552
|
iconName?: string;
|
|
1393
1553
|
data?: Record<string, unknown>;
|
|
1394
1554
|
}
|
|
1555
|
+
|
|
1556
|
+
// Bottom bar widget
|
|
1557
|
+
interface IBottomBarWidget {
|
|
1558
|
+
id: string;
|
|
1559
|
+
iconName?: string;
|
|
1560
|
+
label?: string;
|
|
1561
|
+
status?: 'idle' | 'active' | 'success' | 'warning' | 'error';
|
|
1562
|
+
tooltip?: string;
|
|
1563
|
+
loading?: boolean;
|
|
1564
|
+
onClick?: () => void;
|
|
1565
|
+
position?: 'left' | 'right';
|
|
1566
|
+
order?: number;
|
|
1567
|
+
}
|
|
1568
|
+
|
|
1569
|
+
// Bottom bar action button
|
|
1570
|
+
interface IBottomBarAction {
|
|
1571
|
+
id: string;
|
|
1572
|
+
iconName: string;
|
|
1573
|
+
tooltip?: string;
|
|
1574
|
+
onClick: () => void | Promise<void>;
|
|
1575
|
+
disabled?: boolean;
|
|
1576
|
+
position?: 'left' | 'right';
|
|
1577
|
+
}
|
|
1578
|
+
|
|
1579
|
+
// View activation context (passed to onActivate)
|
|
1580
|
+
interface IViewActivationContext {
|
|
1581
|
+
appui: DeesAppui;
|
|
1582
|
+
viewId: string;
|
|
1583
|
+
params?: Record<string, string>;
|
|
1584
|
+
}
|
|
1395
1585
|
```
|
|
1396
1586
|
|
|
1397
1587
|
---
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@design.estate/dees-catalog',
|
|
6
|
-
version: '3.
|
|
6
|
+
version: '3.38.0',
|
|
7
7
|
description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.'
|
|
8
8
|
}
|