divhunt 2.0.5 → 2.0.9

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 (159) hide show
  1. package/addons/core/commands/back/functions/expose.js +14 -0
  2. package/addons/core/commands/back/functions/find.js +1 -1
  3. package/addons/core/commands/back/functions/grpc/client.js +1 -1
  4. package/addons/core/commands/back/functions/grpc/server.js +1 -1
  5. package/addons/core/commands/back/functions/hide.js +14 -0
  6. package/addons/core/commands/back/functions/http/server.js +1 -1
  7. package/addons/core/commands/back/items/{many.js → self/many.js} +2 -4
  8. package/addons/core/commands/back/items/{one.js → self/one.js} +2 -4
  9. package/addons/core/commands/back/items/{run.js → self/run.js} +3 -7
  10. package/addons/core/commands/core/functions/run.js +13 -0
  11. package/addons/core/commands/{back → core}/item/functions/run.js +1 -1
  12. package/addons/core/commands/core/load.js +25 -0
  13. package/addons/core/commands/front/directives/run.js +84 -0
  14. package/addons/core/commands/front/directives/submit.js +150 -0
  15. package/addons/core/commands/front/functions/api.js +30 -0
  16. package/addons/render/assets/back/functions/import.js +1 -1
  17. package/examples/basic-front/back/assets.js +11 -0
  18. package/examples/basic-front/back/index.js +13 -0
  19. package/examples/basic-front/back/items/commands/html.js +14 -0
  20. package/examples/basic-front/back/items/commands/test.js +19 -0
  21. package/examples/basic-front/back/items/html/fonts.js +12 -0
  22. package/examples/basic-front/front/pages/home.js +16 -0
  23. package/examples/basic-front/front/styles/main.css +31 -0
  24. package/examples/basic-front/front/test.js +7 -0
  25. package/examples/basic-front/package.json +7 -0
  26. package/lib/src/divhunt.js +2 -0
  27. package/lib/src/mixins/form.js +67 -0
  28. package/package.json +3 -3
  29. package/test/front/test.js +31 -0
  30. package/test.js +52 -0
  31. package/addons/core/commands/LICENSE.txt +0 -40
  32. package/addons/core/commands/README.md +0 -294
  33. package/addons/core/commands/back/load.js +0 -18
  34. package/addons/core/commands/front/#register/addon.js +0 -9
  35. package/addons/core/commands/front/functions/find.js +0 -22
  36. package/addons/core/commands/front/item/functions/run.js +0 -96
  37. package/addons/core/commands/front/items/elements/table/table.css +0 -18
  38. package/addons/core/commands/front/items/elements/table/table.js +0 -254
  39. package/addons/render/elements/front/items/self/base/menu/menu.js +0 -96
  40. package/addons/render/elements/front/items/self/base/menu/styles/base.css +0 -116
  41. package/addons/render/elements/front/items/self/base/menu/styles/sizes.css +0 -27
  42. package/addons/render/elements/front/items/self/base/menu/styles/variants.css +0 -99
  43. package/addons/render/elements/front/items/self/base/tag/tag.css +0 -199
  44. package/addons/render/elements/front/items/self/base/tag/tag.js +0 -37
  45. package/addons/render/elements/front/items/self/cards/basic/basic.js +0 -89
  46. package/addons/render/elements/front/items/self/cards/basic/styles/base.css +0 -66
  47. package/addons/render/elements/front/items/self/cards/basic/styles/sizes.css +0 -32
  48. package/addons/render/elements/front/items/self/cards/basic/styles/variants.css +0 -99
  49. package/addons/render/elements/front/items/self/cards/list/list.js +0 -108
  50. package/addons/render/elements/front/items/self/cards/list/styles/base.css +0 -96
  51. package/addons/render/elements/front/items/self/cards/list/styles/sizes.css +0 -32
  52. package/addons/render/elements/front/items/self/cards/list/styles/variants.css +0 -99
  53. package/addons/render/elements/front/items/self/cards/media/media.js +0 -116
  54. package/addons/render/elements/front/items/self/cards/media/styles/base.css +0 -126
  55. package/addons/render/elements/front/items/self/cards/media/styles/sizes.css +0 -49
  56. package/addons/render/elements/front/items/self/cards/media/styles/variants.css +0 -74
  57. package/addons/render/elements/front/items/self/cards/profile/profile.js +0 -95
  58. package/addons/render/elements/front/items/self/cards/profile/styles/base.css +0 -142
  59. package/addons/render/elements/front/items/self/cards/profile/styles/sizes.css +0 -43
  60. package/addons/render/elements/front/items/self/cards/profile/styles/variants.css +0 -131
  61. package/addons/render/elements/front/items/self/cards/stat/stat.js +0 -117
  62. package/addons/render/elements/front/items/self/cards/stat/styles/base.css +0 -97
  63. package/addons/render/elements/front/items/self/cards/stat/styles/sizes.css +0 -49
  64. package/addons/render/elements/front/items/self/cards/stat/styles/variants.css +0 -124
  65. package/addons/render/elements/front/items/self/content/html/html.css +0 -93
  66. package/addons/render/elements/front/items/self/content/html/html.js +0 -40
  67. package/addons/render/elements/front/items/self/content/markdown/markdown.css +0 -200
  68. package/addons/render/elements/front/items/self/content/markdown/markdown.js +0 -120
  69. package/addons/render/elements/front/items/self/data/comments/comments.css +0 -253
  70. package/addons/render/elements/front/items/self/data/comments/comments.js +0 -134
  71. package/addons/render/elements/front/items/self/data/files/files.css +0 -116
  72. package/addons/render/elements/front/items/self/data/files/files.js +0 -85
  73. package/addons/render/elements/front/items/self/data/folders/folders.css +0 -104
  74. package/addons/render/elements/front/items/self/data/folders/folders.js +0 -73
  75. package/addons/render/elements/front/items/self/data/inbox/inbox.css +0 -225
  76. package/addons/render/elements/front/items/self/data/inbox/inbox.js +0 -111
  77. package/addons/render/elements/front/items/self/data/logs/logs.css +0 -133
  78. package/addons/render/elements/front/items/self/data/logs/logs.js +0 -65
  79. package/addons/render/elements/front/items/self/data/plans/plans.css +0 -231
  80. package/addons/render/elements/front/items/self/data/plans/plans.js +0 -104
  81. package/addons/render/elements/front/items/self/data/properties/properties.css +0 -108
  82. package/addons/render/elements/front/items/self/data/properties/properties.js +0 -156
  83. package/addons/render/elements/front/items/self/data/table/table.css +0 -153
  84. package/addons/render/elements/front/items/self/data/table/table.js +0 -106
  85. package/addons/render/elements/front/items/self/data/timeline/timeline.css +0 -127
  86. package/addons/render/elements/front/items/self/data/timeline/timeline.js +0 -57
  87. package/addons/render/elements/front/items/self/feedback/alert/alert.css +0 -258
  88. package/addons/render/elements/front/items/self/feedback/alert/alert.js +0 -67
  89. package/addons/render/elements/front/items/self/feedback/confirm/confirm.css +0 -229
  90. package/addons/render/elements/front/items/self/feedback/confirm/confirm.js +0 -81
  91. package/addons/render/elements/front/items/self/feedback/loader/loader.css +0 -203
  92. package/addons/render/elements/front/items/self/feedback/loader/loader.js +0 -25
  93. package/addons/render/elements/front/items/self/feedback/progress/progress.css +0 -136
  94. package/addons/render/elements/front/items/self/feedback/progress/progress.js +0 -40
  95. package/addons/render/elements/front/items/self/form/button/button.js +0 -105
  96. package/addons/render/elements/front/items/self/form/button/styles/base.css +0 -176
  97. package/addons/render/elements/front/items/self/form/button/styles/sizes.css +0 -78
  98. package/addons/render/elements/front/items/self/form/button/styles/variants.css +0 -421
  99. package/addons/render/elements/front/items/self/form/checkbox/checkbox.js +0 -57
  100. package/addons/render/elements/front/items/self/form/checkbox/styles/base.css +0 -52
  101. package/addons/render/elements/front/items/self/form/checkbox/styles/sizes.css +0 -39
  102. package/addons/render/elements/front/items/self/form/checkbox/styles/variants.css +0 -121
  103. package/addons/render/elements/front/items/self/form/field/field.css +0 -96
  104. package/addons/render/elements/front/items/self/form/field/field.js +0 -39
  105. package/addons/render/elements/front/items/self/form/input/input.css +0 -111
  106. package/addons/render/elements/front/items/self/form/input/input.js +0 -78
  107. package/addons/render/elements/front/items/self/form/input/styles/base.css +0 -26
  108. package/addons/render/elements/front/items/self/form/input/styles/sizes.css +0 -15
  109. package/addons/render/elements/front/items/self/form/input/styles/variants.css +0 -98
  110. package/addons/render/elements/front/items/self/form/radio/radio.js +0 -57
  111. package/addons/render/elements/front/items/self/form/radio/styles/base.css +0 -48
  112. package/addons/render/elements/front/items/self/form/radio/styles/sizes.css +0 -36
  113. package/addons/render/elements/front/items/self/form/radio/styles/variants.css +0 -121
  114. package/addons/render/elements/front/items/self/form/rating/rating.css +0 -95
  115. package/addons/render/elements/front/items/self/form/rating/rating.js +0 -88
  116. package/addons/render/elements/front/items/self/form/section/section.css +0 -107
  117. package/addons/render/elements/front/items/self/form/section/section.js +0 -39
  118. package/addons/render/elements/front/items/self/form/slider/slider.css +0 -244
  119. package/addons/render/elements/front/items/self/form/slider/slider.js +0 -69
  120. package/addons/render/elements/front/items/self/form/textarea/textarea.css +0 -117
  121. package/addons/render/elements/front/items/self/form/textarea/textarea.js +0 -69
  122. package/addons/render/elements/front/items/self/layout/empty/empty.css +0 -154
  123. package/addons/render/elements/front/items/self/layout/empty/empty.js +0 -43
  124. package/addons/render/elements/front/items/self/layout/heading/heading.css +0 -117
  125. package/addons/render/elements/front/items/self/layout/heading/heading.js +0 -47
  126. package/addons/render/elements/front/items/self/layout/hero/hero.js +0 -88
  127. package/addons/render/elements/front/items/self/layout/hero/styles/base.css +0 -81
  128. package/addons/render/elements/front/items/self/layout/hero/styles/sizes.css +0 -24
  129. package/addons/render/elements/front/items/self/layout/hero/styles/variants.css +0 -98
  130. package/addons/render/elements/front/items/self/navigation/breadcrumb/addon/_class/addon.js +0 -9
  131. package/addons/render/elements/front/items/self/navigation/breadcrumb/addon/functions/get.js +0 -22
  132. package/addons/render/elements/front/items/self/navigation/breadcrumb/breadcrumb.css +0 -13
  133. package/addons/render/elements/front/items/self/navigation/breadcrumb/breadcrumb.js +0 -51
  134. package/addons/render/elements/front/items/self/navigation/footer/addon/_class/addon.js +0 -11
  135. package/addons/render/elements/front/items/self/navigation/footer/addon/functions/columns.js +0 -11
  136. package/addons/render/elements/front/items/self/navigation/footer/addon/functions/get.js +0 -34
  137. package/addons/render/elements/front/items/self/navigation/footer/footer.css +0 -283
  138. package/addons/render/elements/front/items/self/navigation/footer/footer.js +0 -139
  139. package/addons/render/elements/front/items/self/navigation/navbar/addon/_class/addon.js +0 -13
  140. package/addons/render/elements/front/items/self/navigation/navbar/addon/functions/active.js +0 -7
  141. package/addons/render/elements/front/items/self/navigation/navbar/addon/functions/get.js +0 -31
  142. package/addons/render/elements/front/items/self/navigation/navbar/navbar.css +0 -140
  143. package/addons/render/elements/front/items/self/navigation/navbar/navbar.js +0 -118
  144. package/addons/render/elements/front/items/self/navigation/pagination/pagination.css +0 -160
  145. package/addons/render/elements/front/items/self/navigation/pagination/pagination.js +0 -131
  146. package/addons/render/elements/front/items/self/navigation/sidebar/addon/_class/addon.js +0 -12
  147. package/addons/render/elements/front/items/self/navigation/sidebar/addon/functions/active.js +0 -7
  148. package/addons/render/elements/front/items/self/navigation/sidebar/addon/functions/get.js +0 -35
  149. package/addons/render/elements/front/items/self/navigation/sidebar/addon/functions/groups.js +0 -10
  150. package/addons/render/elements/front/items/self/navigation/sidebar/sidebar.css +0 -278
  151. package/addons/render/elements/front/items/self/navigation/sidebar/sidebar.js +0 -85
  152. package/addons/render/elements/front/items/self/navigation/stepper/stepper.css +0 -202
  153. package/addons/render/elements/front/items/self/navigation/stepper/stepper.js +0 -82
  154. package/addons/render/elements/front/items/self/navigation/tabs/addon.js +0 -32
  155. package/addons/render/elements/front/items/self/navigation/tabs/tabs.css +0 -239
  156. package/addons/render/elements/front/items/self/navigation/tabs/tabs.js +0 -76
  157. package/addons/render/elements/front/items/self/preview/html/html.css +0 -377
  158. package/addons/render/elements/front/items/self/preview/html/html.js +0 -107
  159. /package/addons/core/commands/{back → core}/addon.js +0 -0
@@ -1,134 +0,0 @@
1
- import elements from '#elements/load.js';
2
-
3
- elements.ItemAdd({
4
- id: 'comments',
5
- icon: 'comment',
6
- name: 'Comments',
7
- description: 'Comment thread with replies, likes, and timestamps.',
8
- category: 'Data',
9
- author: 'Divhunt',
10
- config: {
11
- comments: {
12
- type: 'array',
13
- value: [
14
- {
15
- author: 'Sarah Johnson',
16
- avatar: '',
17
- time: '2 hours ago',
18
- text: 'This looks great! I really like the new design direction. The colors are much more vibrant.',
19
- likes: 12,
20
- replies: [
21
- {
22
- author: 'John Doe',
23
- avatar: '',
24
- time: '1 hour ago',
25
- text: 'I agree! The color palette is perfect.',
26
- likes: 5
27
- },
28
- {
29
- author: 'Jane Smith',
30
- avatar: '',
31
- time: '30 minutes ago',
32
- text: 'Thanks for the feedback everyone!',
33
- likes: 3
34
- }
35
- ]
36
- },
37
- {
38
- author: 'Mike Chen',
39
- avatar: '',
40
- time: '5 hours ago',
41
- text: 'Can we adjust the spacing on mobile? It feels a bit cramped on smaller screens.',
42
- likes: 8,
43
- replies: [
44
- {
45
- author: 'Sarah Johnson',
46
- avatar: '',
47
- time: '4 hours ago',
48
- text: 'Good point, I will look into that.',
49
- likes: 4
50
- }
51
- ]
52
- },
53
- {
54
- author: 'Emma Davis',
55
- avatar: '',
56
- time: '1 day ago',
57
- text: 'Great work team! This is exactly what we needed. Looking forward to the next iteration.',
58
- likes: 24,
59
- replies: []
60
- }
61
- ]
62
- },
63
- variant: {
64
- type: 'array',
65
- value: ['border'],
66
- options: ['border', 'bg-1', 'bg-2', 'bg-3', 'compact']
67
- }
68
- },
69
- render: function()
70
- {
71
- this.state = this.state || {};
72
- this.state.expandedComments = this.state.expandedComments || {};
73
-
74
- this.toggleReplies = (commentId) =>
75
- {
76
- this.state.expandedComments[commentId] = !this.state.expandedComments[commentId];
77
- this.Update();
78
- };
79
-
80
- return `
81
- <div class="holder" :variant="variant.join(' ')">
82
- <div dh-for="comment in comments" class="comment-wrapper">
83
- <div class="comment">
84
- <div class="avatar">
85
- <i dh-if="!comment.avatar" class="icon">person</i>
86
- <img dh-if="comment.avatar" :src="comment.avatar" alt="Avatar">
87
- </div>
88
- <div class="content">
89
- <div class="header">
90
- <span class="author">{{ comment.author }}</span>
91
- <span class="time">{{ comment.time }}</span>
92
- </div>
93
- <div class="text">{{ comment.text }}</div>
94
- <div class="actions">
95
- <div class="action">
96
- <i class="icon">thumb_up</i>
97
- <span>{{ comment.likes }}</span>
98
- </div>
99
- <div class="action" dh-if="comment.replies.length > 0" dh-click="toggleReplies(comment.author + comment.time)">
100
- <i class="icon">{{ state.expandedComments[comment.author + comment.time] ? 'expand_less' : 'expand_more' }}</i>
101
- <span>{{ comment.replies.length }} {{ comment.replies.length === 1 ? 'reply' : 'replies' }}</span>
102
- </div>
103
- <div class="action">
104
- <i class="icon">more_horiz</i>
105
- </div>
106
- </div>
107
- </div>
108
- </div>
109
- <div dh-if="state.expandedComments[comment.author + comment.time] && comment.replies.length > 0" class="replies">
110
- <div dh-for="reply in comment.replies" class="reply">
111
- <div class="avatar">
112
- <i dh-if="!reply.avatar" class="icon">person</i>
113
- <img dh-if="reply.avatar" :src="reply.avatar" alt="Avatar">
114
- </div>
115
- <div class="content">
116
- <div class="header">
117
- <span class="author">{{ reply.author }}</span>
118
- <span class="time">{{ reply.time }}</span>
119
- </div>
120
- <div class="text">{{ reply.text }}</div>
121
- <div class="actions">
122
- <div class="action">
123
- <i class="icon">thumb_up</i>
124
- <span>{{ reply.likes }}</span>
125
- </div>
126
- </div>
127
- </div>
128
- </div>
129
- </div>
130
- </div>
131
- </div>
132
- `;
133
- }
134
- });
@@ -1,116 +0,0 @@
1
- /* Base */
2
- .e-68acba21 > .holder
3
- {
4
- display: flex;
5
- flex-direction: column;
6
- background: var(--dh-bg-1);
7
- border-radius: var(--dh-radius-l);
8
- overflow: hidden;
9
- }
10
-
11
- .e-68acba21 > .holder > .file
12
- {
13
- display: flex;
14
- align-items: center;
15
- gap: var(--dh-spacing-m);
16
- padding: var(--dh-spacing-m);
17
- border-bottom: 1px solid var(--dh-bg-2-border);
18
- transition: background 0.2s ease;
19
- cursor: pointer;
20
- }
21
-
22
- .e-68acba21 > .holder > .file:last-child
23
- {
24
- border-bottom: none;
25
- }
26
-
27
- .e-68acba21 > .holder > .file:hover
28
- {
29
- background: var(--dh-bg-2);
30
- }
31
-
32
- .e-68acba21 > .holder > .file > .icon-wrapper
33
- {
34
- width: 48px;
35
- height: 48px;
36
- border-radius: var(--dh-radius-m);
37
- background: var(--dh-bg-2);
38
- display: flex;
39
- align-items: center;
40
- justify-content: center;
41
- flex-shrink: 0;
42
- }
43
-
44
- .e-68acba21 > .holder > .file > .icon-wrapper > .icon
45
- {
46
- font-size: 24px;
47
- color: var(--dh-brand);
48
- }
49
-
50
- .e-68acba21 > .holder > .file > .info
51
- {
52
- display: flex;
53
- flex-direction: column;
54
- gap: var(--dh-spacing-x);
55
- flex: 1;
56
- min-width: 0;
57
- }
58
-
59
- .e-68acba21 > .holder > .file > .info > .name
60
- {
61
- font-weight: 600;
62
- color: var(--dh-text-1);
63
- font-size: var(--dh-size-m);
64
- white-space: nowrap;
65
- overflow: hidden;
66
- text-overflow: ellipsis;
67
- }
68
-
69
- .e-68acba21 > .holder > .file > .info > .meta
70
- {
71
- display: flex;
72
- align-items: center;
73
- gap: var(--dh-spacing-x);
74
- font-size: var(--dh-size-s);
75
- color: var(--dh-text-2);
76
- }
77
-
78
- .e-68acba21 > .holder > .file > .info > .meta > .separator
79
- {
80
- opacity: 0.5;
81
- }
82
-
83
- .e-68acba21 > .holder > .file > .actions
84
- {
85
- display: flex;
86
- gap: var(--dh-spacing-x);
87
- opacity: 0;
88
- transition: opacity 0.2s ease;
89
- }
90
-
91
- .e-68acba21 > .holder > .file:hover > .actions
92
- {
93
- opacity: 1;
94
- }
95
-
96
- /* Variants - Border */
97
- .e-68acba21 > .holder[variant*="border"] { border: 1px solid var(--dh-bg-2-border); }
98
-
99
- /* Variants - Background */
100
- .e-68acba21 > .holder[variant*="bg-1"] { background: var(--dh-bg-1); }
101
- .e-68acba21 > .holder[variant*="bg-2"] { background: var(--dh-bg-2); }
102
- .e-68acba21 > .holder[variant*="bg-3"] { background: var(--dh-bg-3); }
103
-
104
- /* Variants - Compact */
105
- .e-68acba21 > .holder[variant*="compact"] > .file { padding: var(--dh-spacing-s) var(--dh-spacing-m); gap: var(--dh-spacing-s); }
106
- .e-68acba21 > .holder[variant*="compact"] > .file > .icon-wrapper { width: 36px; height: 36px; }
107
- .e-68acba21 > .holder[variant*="compact"] > .file > .icon-wrapper > .icon { font-size: 20px; }
108
- .e-68acba21 > .holder[variant*="compact"] > .file > .info > .name { font-size: var(--dh-size-s); }
109
-
110
- /* Variants - Grid */
111
- .e-68acba21 > .holder[variant*="grid"] { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: var(--dh-spacing-m); padding: var(--dh-spacing-m); }
112
- .e-68acba21 > .holder[variant*="grid"] > .file { flex-direction: column; align-items: center; text-align: center; padding: var(--dh-spacing-l); border: 1px solid var(--dh-bg-2-border); border-radius: var(--dh-radius-m); background: var(--dh-bg-2); }
113
- .e-68acba21 > .holder[variant*="grid"] > .file > .icon-wrapper { width: 64px; height: 64px; }
114
- .e-68acba21 > .holder[variant*="grid"] > .file > .icon-wrapper > .icon { font-size: 32px; }
115
- .e-68acba21 > .holder[variant*="grid"] > .file > .info { align-items: center; text-align: center; }
116
- .e-68acba21 > .holder[variant*="grid"] > .file > .actions { margin-top: var(--dh-spacing-s); }
@@ -1,85 +0,0 @@
1
- import elements from '#elements/load.js';
2
-
3
- elements.ItemAdd({
4
- id: 'files',
5
- icon: 'description',
6
- name: 'Files',
7
- description: 'File list with icons, sizes, and actions.',
8
- category: 'Data',
9
- author: 'Divhunt',
10
- config: {
11
- files: {
12
- type: 'array',
13
- value: [
14
- {
15
- name: 'Project Proposal.pdf',
16
- type: 'pdf',
17
- size: '2.4 MB',
18
- modified: '2 hours ago',
19
- icon: 'picture_as_pdf'
20
- },
21
- {
22
- name: 'Design Mockups.fig',
23
- type: 'figma',
24
- size: '8.1 MB',
25
- modified: 'Yesterday',
26
- icon: 'palette'
27
- },
28
- {
29
- name: 'Budget Spreadsheet.xlsx',
30
- type: 'excel',
31
- size: '156 KB',
32
- modified: '3 days ago',
33
- icon: 'table_chart'
34
- },
35
- {
36
- name: 'Meeting Notes.docx',
37
- type: 'word',
38
- size: '45 KB',
39
- modified: '1 week ago',
40
- icon: 'description'
41
- },
42
- {
43
- name: 'Presentation.pptx',
44
- type: 'powerpoint',
45
- size: '12.3 MB',
46
- modified: '2 weeks ago',
47
- icon: 'slideshow'
48
- }
49
- ]
50
- },
51
- variant: {
52
- type: 'array',
53
- value: ['border'],
54
- options: ['border', 'bg-1', 'bg-2', 'bg-3', 'compact', 'grid']
55
- }
56
- },
57
- render: function()
58
- {
59
- return `
60
- <div class="holder" :variant="variant.join(' ')">
61
- <div dh-for="file in files" class="file">
62
- <div class="icon-wrapper">
63
- <i class="icon">{{ file.icon }}</i>
64
- </div>
65
- <div class="info">
66
- <div class="name">{{ file.name }}</div>
67
- <div class="meta">
68
- <span class="size">{{ file.size }}</span>
69
- <span class="separator">•</span>
70
- <span class="modified">{{ file.modified }}</span>
71
- </div>
72
- </div>
73
- <div class="actions">
74
- <e-button :variant="['ghost', 'size-s']">
75
- <i class="icon">download</i>
76
- </e-button>
77
- <e-button :variant="['ghost', 'size-s']">
78
- <i class="icon">more_vert</i>
79
- </e-button>
80
- </div>
81
- </div>
82
- </div>
83
- `;
84
- }
85
- });
@@ -1,104 +0,0 @@
1
- /* Base */
2
- .e-55cd111> .holder
3
- {
4
- display: grid;
5
- grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
6
- gap: var(--dh-spacing-m);
7
- }
8
-
9
- .e-55cd111> .holder > .folder
10
- {
11
- display: flex;
12
- flex-direction: column;
13
- gap: var(--dh-spacing-m);
14
- padding: var(--dh-spacing-l);
15
- background: var(--dh-bg-2);
16
- border: 1px solid var(--dh-bg-2-border);
17
- border-radius: var(--dh-radius-l);
18
- cursor: pointer;
19
- transition: all 0.2s ease;
20
- position: relative;
21
- }
22
-
23
- .e-55cd111> .holder > .folder:hover
24
- {
25
- transform: translateY(-2px);
26
- border-color: var(--dh-brand);
27
- }
28
-
29
- .e-55cd111> .holder > .folder > .icon-wrapper
30
- {
31
- display: flex;
32
- align-items: center;
33
- justify-content: center;
34
- width: 64px;
35
- height: 64px;
36
- border-radius: var(--dh-radius-m);
37
- background: var(--dh-bg-3);
38
- }
39
-
40
- .e-55cd111> .holder > .folder > .icon-wrapper > .icon
41
- {
42
- font-size: 36px;
43
- color: var(--dh-brand);
44
- }
45
-
46
- .e-55cd111> .holder > .folder > .info
47
- {
48
- display: flex;
49
- flex-direction: column;
50
- gap: var(--dh-spacing-x);
51
- flex: 1;
52
- }
53
-
54
- .e-55cd111> .holder > .folder > .info > .name
55
- {
56
- font-weight: 600;
57
- color: var(--dh-text-1);
58
- font-size: var(--dh-size-m);
59
- }
60
-
61
- .e-55cd111> .holder > .folder > .info > .count
62
- {
63
- font-size: var(--dh-size-s);
64
- color: var(--dh-text-2);
65
- }
66
-
67
- .e-55cd111> .holder > .folder > .actions
68
- {
69
- position: absolute;
70
- top: var(--dh-spacing-m);
71
- right: var(--dh-spacing-m);
72
- opacity: 0;
73
- transition: opacity 0.2s ease;
74
- }
75
-
76
- .e-55cd111> .holder > .folder:hover > .actions
77
- {
78
- opacity: 1;
79
- }
80
-
81
- /* Folder Colors */
82
- .e-55cd111> .holder > .folder[color="brand"] > .icon-wrapper > .icon { color: var(--dh-brand); }
83
- .e-55cd111> .holder > .folder[color="blue"] > .icon-wrapper > .icon { color: var(--dh-blue); }
84
- .e-55cd111> .holder > .folder[color="green"] > .icon-wrapper > .icon { color: var(--dh-green); }
85
- .e-55cd111> .holder > .folder[color="orange"] > .icon-wrapper > .icon { color: var(--dh-orange); }
86
- .e-55cd111> .holder > .folder[color="red"] > .icon-wrapper > .icon { color: var(--dh-red); }
87
-
88
- /* Variants - List */
89
- .e-55cd111> .holder[variant*="list"] { display: flex; flex-direction: column; gap: 0; }
90
- .e-55cd111> .holder[variant*="list"] > .folder { flex-direction: row; align-items: center; gap: var(--dh-spacing-m); border-radius: 0; border-left: none; border-right: none; border-top: none; }
91
- .e-55cd111> .holder[variant*="list"] > .folder:last-child { border-bottom: none; }
92
- .e-55cd111> .holder[variant*="list"] > .folder > .icon-wrapper { width: 48px; height: 48px; }
93
- .e-55cd111> .holder[variant*="list"] > .folder > .icon-wrapper > .icon { font-size: 28px; }
94
- .e-55cd111> .holder[variant*="list"] > .folder:hover { transform: none; background: var(--dh-bg-3); }
95
-
96
- /* Variants - Compact */
97
- .e-55cd111> .holder[variant*="compact"] { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: var(--dh-spacing-s); }
98
- .e-55cd111> .holder[variant*="compact"] > .folder { padding: var(--dh-spacing-m); gap: var(--dh-spacing-s); }
99
- .e-55cd111> .holder[variant*="compact"] > .folder > .icon-wrapper { width: 48px; height: 48px; }
100
- .e-55cd111> .holder[variant*="compact"] > .folder > .icon-wrapper > .icon { font-size: 28px; }
101
- .e-55cd111> .holder[variant*="compact"] > .folder > .info > .name { font-size: var(--dh-size-s); }
102
-
103
- /* Variants - Border */
104
- .e-55cd111> .holder[variant*="border"] { border: 1px solid var(--dh-bg-2-border); border-radius: var(--dh-radius-l); padding: var(--dh-spacing-m); background: var(--dh-bg-1); }
@@ -1,73 +0,0 @@
1
- import elements from '#elements/load.js';
2
-
3
- elements.ItemAdd({
4
- id: 'folders',
5
- icon: 'folder',
6
- name: 'Folders',
7
- description: 'Folder grid with item counts and colors.',
8
- category: 'Data',
9
- author: 'Divhunt',
10
- config: {
11
- folders: {
12
- type: 'array',
13
- value: [
14
- {
15
- name: 'Projects',
16
- count: 24,
17
- color: 'brand'
18
- },
19
- {
20
- name: 'Documents',
21
- count: 156,
22
- color: 'blue'
23
- },
24
- {
25
- name: 'Images',
26
- count: 89,
27
- color: 'green'
28
- },
29
- {
30
- name: 'Videos',
31
- count: 12,
32
- color: 'orange'
33
- },
34
- {
35
- name: 'Archives',
36
- count: 7,
37
- color: 'red'
38
- },
39
- {
40
- name: 'Templates',
41
- count: 32,
42
- color: 'brand'
43
- }
44
- ]
45
- },
46
- variant: {
47
- type: 'array',
48
- value: ['grid'],
49
- options: ['grid', 'list', 'compact', 'border']
50
- }
51
- },
52
- render: function()
53
- {
54
- return `
55
- <div class="holder" :variant="variant.join(' ')">
56
- <div dh-for="folder in folders" class="folder" :color="folder.color">
57
- <div class="icon-wrapper">
58
- <i class="icon">folder</i>
59
- </div>
60
- <div class="info">
61
- <div class="name">{{ folder.name }}</div>
62
- <div class="count">{{ folder.count }} items</div>
63
- </div>
64
- <div class="actions">
65
- <e-button :variant="['ghost', 'size-s']">
66
- <i class="icon">more_vert</i>
67
- </e-button>
68
- </div>
69
- </div>
70
- </div>
71
- `;
72
- }
73
- });