divhunt 2.0.4 → 2.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/addons/render/assets/back/functions/import.js +44 -0
  2. package/addons/render/assets/back/load.js +2 -0
  3. package/package.json +3 -3
  4. package/addons/render/elements/front/items/self/base/menu/menu.js +0 -96
  5. package/addons/render/elements/front/items/self/base/menu/styles/base.css +0 -116
  6. package/addons/render/elements/front/items/self/base/menu/styles/sizes.css +0 -27
  7. package/addons/render/elements/front/items/self/base/menu/styles/variants.css +0 -99
  8. package/addons/render/elements/front/items/self/base/tag/tag.css +0 -199
  9. package/addons/render/elements/front/items/self/base/tag/tag.js +0 -37
  10. package/addons/render/elements/front/items/self/cards/basic/basic.js +0 -89
  11. package/addons/render/elements/front/items/self/cards/basic/styles/base.css +0 -66
  12. package/addons/render/elements/front/items/self/cards/basic/styles/sizes.css +0 -32
  13. package/addons/render/elements/front/items/self/cards/basic/styles/variants.css +0 -99
  14. package/addons/render/elements/front/items/self/cards/list/list.js +0 -108
  15. package/addons/render/elements/front/items/self/cards/list/styles/base.css +0 -96
  16. package/addons/render/elements/front/items/self/cards/list/styles/sizes.css +0 -32
  17. package/addons/render/elements/front/items/self/cards/list/styles/variants.css +0 -99
  18. package/addons/render/elements/front/items/self/cards/media/media.js +0 -116
  19. package/addons/render/elements/front/items/self/cards/media/styles/base.css +0 -126
  20. package/addons/render/elements/front/items/self/cards/media/styles/sizes.css +0 -49
  21. package/addons/render/elements/front/items/self/cards/media/styles/variants.css +0 -74
  22. package/addons/render/elements/front/items/self/cards/profile/profile.js +0 -95
  23. package/addons/render/elements/front/items/self/cards/profile/styles/base.css +0 -142
  24. package/addons/render/elements/front/items/self/cards/profile/styles/sizes.css +0 -43
  25. package/addons/render/elements/front/items/self/cards/profile/styles/variants.css +0 -131
  26. package/addons/render/elements/front/items/self/cards/stat/stat.js +0 -117
  27. package/addons/render/elements/front/items/self/cards/stat/styles/base.css +0 -97
  28. package/addons/render/elements/front/items/self/cards/stat/styles/sizes.css +0 -49
  29. package/addons/render/elements/front/items/self/cards/stat/styles/variants.css +0 -124
  30. package/addons/render/elements/front/items/self/content/html/html.css +0 -93
  31. package/addons/render/elements/front/items/self/content/html/html.js +0 -40
  32. package/addons/render/elements/front/items/self/content/markdown/markdown.css +0 -200
  33. package/addons/render/elements/front/items/self/content/markdown/markdown.js +0 -120
  34. package/addons/render/elements/front/items/self/data/comments/comments.css +0 -253
  35. package/addons/render/elements/front/items/self/data/comments/comments.js +0 -134
  36. package/addons/render/elements/front/items/self/data/files/files.css +0 -116
  37. package/addons/render/elements/front/items/self/data/files/files.js +0 -85
  38. package/addons/render/elements/front/items/self/data/folders/folders.css +0 -104
  39. package/addons/render/elements/front/items/self/data/folders/folders.js +0 -73
  40. package/addons/render/elements/front/items/self/data/inbox/inbox.css +0 -225
  41. package/addons/render/elements/front/items/self/data/inbox/inbox.js +0 -111
  42. package/addons/render/elements/front/items/self/data/logs/logs.css +0 -133
  43. package/addons/render/elements/front/items/self/data/logs/logs.js +0 -65
  44. package/addons/render/elements/front/items/self/data/plans/plans.css +0 -231
  45. package/addons/render/elements/front/items/self/data/plans/plans.js +0 -104
  46. package/addons/render/elements/front/items/self/data/properties/properties.css +0 -108
  47. package/addons/render/elements/front/items/self/data/properties/properties.js +0 -156
  48. package/addons/render/elements/front/items/self/data/table/table.css +0 -153
  49. package/addons/render/elements/front/items/self/data/table/table.js +0 -106
  50. package/addons/render/elements/front/items/self/data/timeline/timeline.css +0 -127
  51. package/addons/render/elements/front/items/self/data/timeline/timeline.js +0 -57
  52. package/addons/render/elements/front/items/self/feedback/alert/alert.css +0 -258
  53. package/addons/render/elements/front/items/self/feedback/alert/alert.js +0 -67
  54. package/addons/render/elements/front/items/self/feedback/confirm/confirm.css +0 -229
  55. package/addons/render/elements/front/items/self/feedback/confirm/confirm.js +0 -81
  56. package/addons/render/elements/front/items/self/feedback/loader/loader.css +0 -203
  57. package/addons/render/elements/front/items/self/feedback/loader/loader.js +0 -25
  58. package/addons/render/elements/front/items/self/feedback/progress/progress.css +0 -136
  59. package/addons/render/elements/front/items/self/feedback/progress/progress.js +0 -40
  60. package/addons/render/elements/front/items/self/form/button/button.js +0 -105
  61. package/addons/render/elements/front/items/self/form/button/styles/base.css +0 -176
  62. package/addons/render/elements/front/items/self/form/button/styles/sizes.css +0 -78
  63. package/addons/render/elements/front/items/self/form/button/styles/variants.css +0 -421
  64. package/addons/render/elements/front/items/self/form/checkbox/checkbox.js +0 -57
  65. package/addons/render/elements/front/items/self/form/checkbox/styles/base.css +0 -52
  66. package/addons/render/elements/front/items/self/form/checkbox/styles/sizes.css +0 -39
  67. package/addons/render/elements/front/items/self/form/checkbox/styles/variants.css +0 -121
  68. package/addons/render/elements/front/items/self/form/field/field.css +0 -96
  69. package/addons/render/elements/front/items/self/form/field/field.js +0 -39
  70. package/addons/render/elements/front/items/self/form/input/input.css +0 -111
  71. package/addons/render/elements/front/items/self/form/input/input.js +0 -78
  72. package/addons/render/elements/front/items/self/form/input/styles/base.css +0 -26
  73. package/addons/render/elements/front/items/self/form/input/styles/sizes.css +0 -15
  74. package/addons/render/elements/front/items/self/form/input/styles/variants.css +0 -98
  75. package/addons/render/elements/front/items/self/form/radio/radio.js +0 -57
  76. package/addons/render/elements/front/items/self/form/radio/styles/base.css +0 -48
  77. package/addons/render/elements/front/items/self/form/radio/styles/sizes.css +0 -36
  78. package/addons/render/elements/front/items/self/form/radio/styles/variants.css +0 -121
  79. package/addons/render/elements/front/items/self/form/rating/rating.css +0 -95
  80. package/addons/render/elements/front/items/self/form/rating/rating.js +0 -88
  81. package/addons/render/elements/front/items/self/form/section/section.css +0 -107
  82. package/addons/render/elements/front/items/self/form/section/section.js +0 -39
  83. package/addons/render/elements/front/items/self/form/slider/slider.css +0 -244
  84. package/addons/render/elements/front/items/self/form/slider/slider.js +0 -69
  85. package/addons/render/elements/front/items/self/form/textarea/textarea.css +0 -117
  86. package/addons/render/elements/front/items/self/form/textarea/textarea.js +0 -69
  87. package/addons/render/elements/front/items/self/layout/empty/empty.css +0 -154
  88. package/addons/render/elements/front/items/self/layout/empty/empty.js +0 -43
  89. package/addons/render/elements/front/items/self/layout/heading/heading.css +0 -117
  90. package/addons/render/elements/front/items/self/layout/heading/heading.js +0 -47
  91. package/addons/render/elements/front/items/self/layout/hero/hero.js +0 -88
  92. package/addons/render/elements/front/items/self/layout/hero/styles/base.css +0 -81
  93. package/addons/render/elements/front/items/self/layout/hero/styles/sizes.css +0 -24
  94. package/addons/render/elements/front/items/self/layout/hero/styles/variants.css +0 -98
  95. package/addons/render/elements/front/items/self/navigation/breadcrumb/addon/_class/addon.js +0 -9
  96. package/addons/render/elements/front/items/self/navigation/breadcrumb/addon/functions/get.js +0 -22
  97. package/addons/render/elements/front/items/self/navigation/breadcrumb/breadcrumb.css +0 -13
  98. package/addons/render/elements/front/items/self/navigation/breadcrumb/breadcrumb.js +0 -51
  99. package/addons/render/elements/front/items/self/navigation/footer/addon/_class/addon.js +0 -11
  100. package/addons/render/elements/front/items/self/navigation/footer/addon/functions/columns.js +0 -11
  101. package/addons/render/elements/front/items/self/navigation/footer/addon/functions/get.js +0 -34
  102. package/addons/render/elements/front/items/self/navigation/footer/footer.css +0 -283
  103. package/addons/render/elements/front/items/self/navigation/footer/footer.js +0 -139
  104. package/addons/render/elements/front/items/self/navigation/navbar/addon/_class/addon.js +0 -13
  105. package/addons/render/elements/front/items/self/navigation/navbar/addon/functions/active.js +0 -7
  106. package/addons/render/elements/front/items/self/navigation/navbar/addon/functions/get.js +0 -31
  107. package/addons/render/elements/front/items/self/navigation/navbar/navbar.css +0 -140
  108. package/addons/render/elements/front/items/self/navigation/navbar/navbar.js +0 -118
  109. package/addons/render/elements/front/items/self/navigation/pagination/pagination.css +0 -160
  110. package/addons/render/elements/front/items/self/navigation/pagination/pagination.js +0 -131
  111. package/addons/render/elements/front/items/self/navigation/sidebar/addon/_class/addon.js +0 -12
  112. package/addons/render/elements/front/items/self/navigation/sidebar/addon/functions/active.js +0 -7
  113. package/addons/render/elements/front/items/self/navigation/sidebar/addon/functions/get.js +0 -35
  114. package/addons/render/elements/front/items/self/navigation/sidebar/addon/functions/groups.js +0 -10
  115. package/addons/render/elements/front/items/self/navigation/sidebar/sidebar.css +0 -278
  116. package/addons/render/elements/front/items/self/navigation/sidebar/sidebar.js +0 -85
  117. package/addons/render/elements/front/items/self/navigation/stepper/stepper.css +0 -202
  118. package/addons/render/elements/front/items/self/navigation/stepper/stepper.js +0 -82
  119. package/addons/render/elements/front/items/self/navigation/tabs/addon.js +0 -32
  120. package/addons/render/elements/front/items/self/navigation/tabs/tabs.css +0 -239
  121. package/addons/render/elements/front/items/self/navigation/tabs/tabs.js +0 -76
  122. package/addons/render/elements/front/items/self/preview/html/html.css +0 -377
  123. package/addons/render/elements/front/items/self/preview/html/html.js +0 -107
  124. package/lib/LICENSE.txt +0 -40
  125. /package/lib/{load.back.js → load.js} +0 -0
@@ -1,278 +0,0 @@
1
- /* Base */
2
- .e-6059377a
3
- {
4
- height: 100%;
5
- }
6
-
7
- .e-6059377a > .holder
8
- {
9
- display: flex;
10
- flex-direction: column;
11
- height: max-content;
12
- width: 250px;
13
- background: transparent;
14
- transition: width 0.2s;
15
- height: 100%;
16
- }
17
-
18
- /* Content */
19
- .e-6059377a > .holder > .content
20
- {
21
- display: flex;
22
- flex-direction: column;
23
- gap: var(--dh-spacing-s);
24
- flex: 1;
25
- overflow-y: auto;
26
- overflow-x: hidden;
27
- }
28
-
29
- /* Group */
30
- .e-6059377a > .holder > .content > .group
31
- {
32
- display: flex;
33
- flex-direction: column;
34
- padding-bottom: var(--dh-spacing-m);
35
- border-bottom: 1px solid var(--dh-bg-3-border);
36
- }
37
-
38
- .e-6059377a > .holder > .content > .group:last-child
39
- {
40
- border-bottom: none;
41
- padding-bottom: 0;
42
- }
43
-
44
- .e-6059377a > .holder > .content > .group > label
45
- {
46
- display: flex;
47
- align-items: center;
48
- height: 28px;
49
- padding: 0 var(--dh-spacing-s);
50
- font-size: 11px;
51
- font-weight: 600;
52
- color: var(--dh-text-2);
53
- text-transform: uppercase;
54
- letter-spacing: 0.5px;
55
- margin-top: var(--dh-spacing-s);
56
- margin-bottom: var(--dh-spacing-x);
57
- }
58
-
59
- .e-6059377a > .holder > .content > .group > .items
60
- {
61
- display: flex;
62
- flex-direction: column;
63
- gap: 2px;
64
- }
65
-
66
- .e-6059377a > .holder > .content > .group > .items > .item
67
- {
68
- display: flex;
69
- align-items: center;
70
- gap: var(--dh-spacing-s);
71
- padding: var(--dh-spacing-s) var(--dh-spacing-m);
72
- color: var(--dh-text-1);
73
- font-size: var(--dh-size-m);
74
- font-weight: 500;
75
- text-decoration: none;
76
- cursor: pointer;
77
- transition: all 0.2s;
78
- border-radius: 0;
79
- }
80
-
81
- .e-6059377a > .holder > .content > .group > .items > .item:hover
82
- {
83
- background: var(--dh-bg-3);
84
- }
85
-
86
- .e-6059377a > .holder > .content > .group > .items > .item:focus-visible
87
- {
88
- outline: 2px solid var(--dh-brand);
89
- outline-offset: 2px;
90
- }
91
-
92
- .e-6059377a > .holder > .content > .group > .items > .item[active]
93
- {
94
- color: var(--dh-brand);
95
- }
96
-
97
- .e-6059377a > .holder > .content > .group > .items > .item > i
98
- {
99
- flex-shrink: 0;
100
- width: 20px;
101
- height: 20px;
102
- font-size: 20px;
103
- color: var(--dh-text-2);
104
- display: flex;
105
- align-items: center;
106
- justify-content: center;
107
- transition: all 0.2s;
108
- }
109
-
110
- .e-6059377a > .holder > .content > .group > .items > .item:hover > i
111
- {
112
- color: var(--dh-text-1);
113
- }
114
-
115
- .e-6059377a > .holder > .content > .group > .items > .item[active] > i
116
- {
117
- color: var(--dh-brand);
118
- }
119
-
120
- .e-6059377a > .holder > .content > .group > .items > .item > span
121
- {
122
- flex: 1;
123
- min-width: 0;
124
- white-space: nowrap;
125
- overflow: hidden;
126
- text-overflow: ellipsis;
127
- }
128
-
129
- /* Variants - Background */
130
- .e-6059377a > .holder[variant*="bg-1"]
131
- {
132
- background: var(--dh-bg-1);
133
- padding: var(--dh-spacing-m);
134
- }
135
-
136
- .e-6059377a > .holder[variant*="bg-2"]
137
- {
138
- background: var(--dh-bg-2);
139
- padding: var(--dh-spacing-m);
140
- }
141
-
142
- .e-6059377a > .holder[variant*="bg-3"]
143
- {
144
- background: var(--dh-bg-3);
145
- padding: var(--dh-spacing-m);
146
- }
147
-
148
- .e-6059377a > .holder[variant*="bg-4"]
149
- {
150
- background: var(--dh-bg-4);
151
- padding: var(--dh-spacing-m);
152
- }
153
-
154
- /* Variants - Border Full */
155
- .e-6059377a > .holder[variant*="bg-1"][variant*="border-full"]
156
- {
157
- border: 1px solid var(--dh-bg-1-border);
158
- }
159
-
160
- .e-6059377a > .holder[variant*="bg-2"][variant*="border-full"]
161
- {
162
- border: 1px solid var(--dh-bg-2-border);
163
- }
164
-
165
- .e-6059377a > .holder[variant*="bg-3"][variant*="border-full"]
166
- {
167
- border: 1px solid var(--dh-bg-3-border);
168
- }
169
-
170
- .e-6059377a > .holder[variant*="bg-4"][variant*="border-full"]
171
- {
172
- border: 1px solid var(--dh-bg-4-border);
173
- }
174
-
175
- .e-6059377a > .holder[variant*="bg-1"][variant*="border-left"]
176
- {
177
- border-left: 1px solid var(--dh-bg-1-border);
178
- }
179
-
180
- .e-6059377a > .holder[variant*="bg-2"][variant*="border-left"]
181
- {
182
- border-left: 1px solid var(--dh-bg-2-border);
183
- }
184
-
185
- .e-6059377a > .holder[variant*="bg-3"][variant*="border-left"]
186
- {
187
- border-left: 1px solid var(--dh-bg-3-border);
188
- }
189
-
190
- .e-6059377a > .holder[variant*="bg-4"][variant*="border-left"]
191
- {
192
- border-left: 1px solid var(--dh-bg-4-border);
193
- }
194
-
195
- .e-6059377a > .holder[variant*="bg-1"][variant*="border-right"]
196
- {
197
- border-right: 1px solid var(--dh-bg-1-border);
198
- }
199
-
200
- .e-6059377a > .holder[variant*="bg-2"][variant*="border-right"]
201
- {
202
- border-right: 1px solid var(--dh-bg-2-border);
203
- }
204
-
205
- .e-6059377a > .holder[variant*="bg-3"][variant*="border-right"]
206
- {
207
- border-right: 1px solid var(--dh-bg-3-border);
208
- }
209
-
210
- .e-6059377a > .holder[variant*="bg-4"][variant*="border-right"]
211
- {
212
- border-right: 1px solid var(--dh-bg-4-border);
213
- }
214
-
215
- /* Variants - Radius */
216
- .e-6059377a > .holder[variant*="radius-s"]
217
- {
218
- border-radius: var(--dh-radius-s);
219
- }
220
-
221
- .e-6059377a > .holder[variant*="radius-m"]
222
- {
223
- border-radius: var(--dh-radius-m);
224
- }
225
-
226
- .e-6059377a > .holder[variant*="radius-l"]
227
- {
228
- border-radius: var(--dh-radius-l);
229
- }
230
-
231
- /* Variants - Size */
232
- .e-6059377a > .holder[variant*="size-s"]
233
- {
234
- width: 220px;
235
- }
236
-
237
- .e-6059377a > .holder[variant*="size-m"]
238
- {
239
- width: 250px;
240
- }
241
-
242
- .e-6059377a > .holder[variant*="size-l"]
243
- {
244
- width: 280px;
245
- }
246
-
247
- .e-6059377a > .holder[variant*="size-full"]
248
- {
249
- width: 100%;
250
- }
251
-
252
- /* Footer */
253
- .e-6059377a > .holder > footer
254
- {
255
- margin-top: auto;
256
- }
257
-
258
- /* Collapsed */
259
- .e-6059377a > .holder[collapsed="true"]
260
- {
261
- width: 64px;
262
- }
263
-
264
-
265
- /* Responsive */
266
- @media (max-width: 768px)
267
- {
268
- .e-6059377a > .holder
269
- {
270
- width: 100%;
271
- max-width: 280px;
272
- }
273
-
274
- .e-6059377a > .holder[collapsed="true"]
275
- {
276
- width: 64px;
277
- }
278
- }
@@ -1,85 +0,0 @@
1
- import elements from '#elements/load.js';
2
-
3
- elements.ItemAdd({
4
- id: 'sidebar',
5
- icon: 'menu',
6
- name: 'Sidebar',
7
- description: 'Collapsible sidebar navigation with header, grouped menu items, nested menus, and footer. Supports expanded and collapsed states.',
8
- category: 'Navigation',
9
- author: 'Divhunt',
10
- config: {
11
- variant: {
12
- type: 'array',
13
- value: ['bg-2', 'size-full'],
14
- options: ['bg-1', 'bg-2', 'bg-3', 'bg-4', 'border-full', 'border-left', 'border-right', 'radius-s', 'radius-m', 'radius-l', 'size-s', 'size-m', 'size-l', 'size-full']
15
- },
16
- groups: {
17
- type: 'array',
18
- value: []
19
- },
20
- collapsed: {
21
- type: 'boolean',
22
- value: false
23
- },
24
- onMenuClick: {
25
- type: 'function'
26
- }
27
- },
28
- render: function()
29
- {
30
- const filterGroups = (allGroups) =>
31
- {
32
- if (!this.groups || this.groups.length === 0)
33
- {
34
- return allGroups;
35
- }
36
-
37
- return allGroups.filter(group => this.groups.includes(group.id));
38
- };
39
-
40
- this.filteredGroups = filterGroups(sidebar.Fn('groups'));
41
-
42
- const update = () =>
43
- {
44
- this.filteredGroups = filterGroups(sidebar.Fn('groups'));
45
- };
46
-
47
- sidebar.ItemOn('added', update, 'sidebar');
48
- sidebar.ItemOn('removed', update, 'sidebar');
49
- sidebar.ItemOn('modified', update, 'sidebar');
50
-
51
- this.handleMenuClick = (item) =>
52
- {
53
- sidebar.Fn('active', item.id);
54
-
55
- if (this.onMenuClick)
56
- {
57
- this.onMenuClick({ item });
58
- }
59
- };
60
-
61
- return `
62
- <div class="holder" :variant="variant.join(' ')" :collapsed="collapsed">
63
- <slot name="top"></slot>
64
-
65
- <nav class="content">
66
- <slot name="content"></slot>
67
-
68
- <div dh-for="group in filteredGroups" class="group">
69
- <label dh-if="group.label">{{ group.label }}</label>
70
- <div class="items">
71
- <a dh-for="item in group.items" :href="item.href" class="item" :active="item.active" dh-click="handleMenuClick(item)">
72
- <i>{{ item.icon }}</i>
73
- <span>{{ item.label }}</span>
74
- </a>
75
- </div>
76
- </div>
77
- </nav>
78
-
79
- <footer>
80
- <slot name="bottom"></slot>
81
- </footer>
82
- </div>
83
- `;
84
- }
85
- });
@@ -1,202 +0,0 @@
1
- /* Base */
2
- .e-4d809c05 > .holder
3
- {
4
- display: flex;
5
- gap: 0;
6
- }
7
-
8
- .e-4d809c05 > .holder > .step
9
- {
10
- display: flex;
11
- align-items: center;
12
- flex: 1;
13
- cursor: pointer;
14
- position: relative;
15
- }
16
-
17
- .e-4d809c05 > .holder > .step > .circle
18
- {
19
- display: flex;
20
- align-items: center;
21
- justify-content: center;
22
- width: 40px;
23
- height: 40px;
24
- border-radius: 50%;
25
- background: var(--dh-bg-2);
26
- border: 2px solid var(--dh-bg-2-border);
27
- color: var(--dh-text-2);
28
- font-weight: 600;
29
- transition: all 0.2s ease;
30
- flex-shrink: 0;
31
- z-index: 1;
32
- }
33
-
34
- .e-4d809c05 > .holder > .step > .circle > .icon
35
- {
36
- font-size: 20px;
37
- }
38
-
39
- .e-4d809c05 > .holder > .step > .circle > .number
40
- {
41
- font-size: 16px;
42
- }
43
-
44
- .e-4d809c05 > .holder > .step > .content
45
- {
46
- display: flex;
47
- flex-direction: column;
48
- gap: var(--dh-spacing-x);
49
- margin-left: var(--dh-spacing-s);
50
- min-width: 0;
51
- }
52
-
53
- .e-4d809c05 > .holder > .step > .content > .label
54
- {
55
- font-weight: 600;
56
- color: var(--dh-text-1);
57
- white-space: nowrap;
58
- overflow: hidden;
59
- text-overflow: ellipsis;
60
- }
61
-
62
- .e-4d809c05 > .holder > .step > .content > .description
63
- {
64
- font-size: var(--dh-size-s);
65
- color: var(--dh-text-2);
66
- white-space: nowrap;
67
- overflow: hidden;
68
- text-overflow: ellipsis;
69
- }
70
-
71
- .e-4d809c05 > .holder > .step > .connector
72
- {
73
- flex: 1;
74
- height: 2px;
75
- background: var(--dh-bg-2-border);
76
- margin: 0 var(--dh-spacing-m);
77
- transition: background 0.2s ease;
78
- }
79
-
80
- .e-4d809c05 > .holder > .step[status="current"] > .circle
81
- {
82
- background: var(--dh-brand);
83
- border-color: var(--dh-brand-border);
84
- color: white;
85
- }
86
-
87
- .e-4d809c05 > .holder > .step[status="completed"] > .circle
88
- {
89
- background: var(--dh-brand);
90
- border-color: var(--dh-brand-border);
91
- color: white;
92
- }
93
-
94
- .e-4d809c05 > .holder > .step[status="completed"] > .connector
95
- {
96
- background: var(--dh-brand);
97
- }
98
-
99
- .e-4d809c05 > .holder > .step[status="pending"] > .circle
100
- {
101
- background: var(--dh-bg-2);
102
- border-color: var(--dh-bg-2-border);
103
- color: var(--dh-text-2);
104
- }
105
-
106
- .e-4d809c05 > .holder > .step[status="pending"] > .content > .label
107
- {
108
- color: var(--dh-text-2);
109
- }
110
-
111
- /* Variants - Vertical */
112
- .e-4d809c05 > .holder[variant*="vertical"]
113
- {
114
- flex-direction: column;
115
- gap: var(--dh-spacing-l);
116
- }
117
-
118
- .e-4d809c05 > .holder[variant*="vertical"] > .step
119
- {
120
- flex-direction: row;
121
- align-items: flex-start;
122
- }
123
-
124
- .e-4d809c05 > .holder[variant*="vertical"] > .step > .content
125
- {
126
- margin-left: var(--dh-spacing-s);
127
- margin-top: 0;
128
- }
129
-
130
- .e-4d809c05 > .holder[variant*="vertical"] > .step > .connector
131
- {
132
- position: absolute;
133
- left: 20px;
134
- top: 40px;
135
- width: 2px;
136
- height: calc(100% + var(--dh-spacing-l));
137
- margin: 0;
138
- }
139
-
140
- /* Variants - Sizes */
141
- .e-4d809c05 > .holder[variant*="size-s"] > .step > .circle
142
- {
143
- width: 32px;
144
- height: 32px;
145
- }
146
-
147
- .e-4d809c05 > .holder[variant*="size-s"] > .step > .circle > .icon
148
- {
149
- font-size: 16px;
150
- }
151
-
152
- .e-4d809c05 > .holder[variant*="size-s"] > .step > .circle > .number
153
- {
154
- font-size: 14px;
155
- }
156
-
157
- .e-4d809c05 > .holder[variant*="size-s"] > .step > .content > .label
158
- {
159
- font-size: var(--dh-size-s);
160
- }
161
-
162
- .e-4d809c05 > .holder[variant*="size-m"] > .step > .circle
163
- {
164
- width: 40px;
165
- height: 40px;
166
- }
167
-
168
- .e-4d809c05 > .holder[variant*="size-m"] > .step > .circle > .icon
169
- {
170
- font-size: 20px;
171
- }
172
-
173
- .e-4d809c05 > .holder[variant*="size-m"] > .step > .circle > .number
174
- {
175
- font-size: 16px;
176
- }
177
-
178
- .e-4d809c05 > .holder[variant*="size-m"] > .step > .content > .label
179
- {
180
- font-size: var(--dh-size-m);
181
- }
182
-
183
- .e-4d809c05 > .holder[variant*="size-l"] > .step > .circle
184
- {
185
- width: 48px;
186
- height: 48px;
187
- }
188
-
189
- .e-4d809c05 > .holder[variant*="size-l"] > .step > .circle > .icon
190
- {
191
- font-size: 24px;
192
- }
193
-
194
- .e-4d809c05 > .holder[variant*="size-l"] > .step > .circle > .number
195
- {
196
- font-size: 18px;
197
- }
198
-
199
- .e-4d809c05 > .holder[variant*="size-l"] > .step > .content > .label
200
- {
201
- font-size: var(--dh-size-l);
202
- }
@@ -1,82 +0,0 @@
1
- import elements from '#elements/load.js';
2
-
3
- elements.ItemAdd({
4
- id: 'stepper',
5
- icon: 'linear_scale',
6
- name: 'Stepper',
7
- description: 'Step-by-step progress indicator with customizable steps, icons, and completion states.',
8
- category: 'Navigation',
9
- author: 'Divhunt',
10
- config: {
11
- steps: {
12
- type: 'array',
13
- value: [
14
- { label: 'Step 1', description: 'First step', icon: 'looks_one' },
15
- { label: 'Step 2', description: 'Second step', icon: 'looks_two' },
16
- { label: 'Step 3', description: 'Third step', icon: 'looks_3' }
17
- ],
18
- each: {
19
- type: 'object',
20
- config: {
21
- label: ['string'],
22
- description: ['string'],
23
- icon: ['string']
24
- }
25
- }
26
- },
27
- step: {
28
- type: 'number',
29
- value: 1
30
- },
31
- variant: {
32
- type: 'array',
33
- value: ['horizontal', 'size-m'],
34
- options: ['horizontal', 'vertical', 'size-s', 'size-m', 'size-l']
35
- },
36
- onChange: {
37
- type: 'function'
38
- }
39
- },
40
- render: function()
41
- {
42
- this.goToStep = (index) =>
43
- {
44
- if (index >= 0 && index < this.steps.length)
45
- {
46
- this.step = index;
47
- if (this.onChange)
48
- {
49
- this.onChange(index);
50
- }
51
- }
52
- };
53
-
54
- this.getStatus = (index) =>
55
- {
56
- if (index < this.step) return 'completed';
57
- if (index === this.step) return 'current';
58
- return 'pending';
59
- };
60
-
61
- this.isCompleted = (index) => index < this.step;
62
-
63
- return `
64
- <div class="holder" :variant="variant.join(' ')">
65
- <div dh-for="step, index in steps" class="step" :status="getStatus(index)" dh-click="() => goToStep(index)">
66
- <div class="circle">
67
- <i dh-if="isCompleted(index)" class="icon check">check</i>
68
- <i dh-if="!isCompleted(index) && step.icon" class="icon">{{ step.icon }}</i>
69
- <span dh-if="!isCompleted(index) && !step.icon" class="number">{{ index + 1 }}</span>
70
- </div>
71
-
72
- <div class="content">
73
- <div class="label">{{ step.label }}</div>
74
- <div dh-if="step.description" class="description">{{ step.description }}</div>
75
- </div>
76
-
77
- <div dh-if="index < steps.length - 1" class="connector"></div>
78
- </div>
79
- </div>
80
- `;
81
- }
82
- });
@@ -1,32 +0,0 @@
1
- const tabs = divhunt.Addon('tabs', (addon) =>
2
- {
3
- addon.Field('id', ['string|number']);
4
- addon.Field('order', ['number', 0]);
5
- addon.Field('label', ['string']);
6
- addon.Field('icon', ['string']);
7
- addon.Field('badge', ['string|number']);
8
- addon.Field('active', ['boolean', false]);
9
- addon.Field('disabled', ['boolean', false]);
10
- addon.Field('condition', ['function']);
11
- });
12
-
13
- tabs.Fn('get', function()
14
- {
15
- let result = Object.values(this.Items());
16
-
17
- result = result.filter(item =>
18
- {
19
- return !item.Get('condition') || item.Get('condition')(item);
20
- });
21
-
22
- result = result.sort((a, b) => a.Get('order') - b.Get('order'));
23
-
24
- return result.map(item => ({
25
- id: item.Get('id'),
26
- label: item.Get('label'),
27
- icon: item.Get('icon'),
28
- badge: item.Get('badge'),
29
- active: item.Get('active'),
30
- disabled: item.Get('disabled')
31
- }));
32
- });