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,96 +0,0 @@
1
- .e-523d241b > .holder
2
- {
3
- display: flex;
4
- align-items: center;
5
- border-radius: var(--dh-radius-m);
6
- transition: all 0.2s;
7
- }
8
-
9
- .e-523d241b > .holder:hover
10
- {
11
- transform: translateY(-2px);
12
- }
13
-
14
- .e-523d241b > .holder > i
15
- {
16
- flex-shrink: 0;
17
- font-size: var(--dh-size-l);
18
- color: var(--dh-text-2);
19
- transition: all 0.2s;
20
- }
21
-
22
- .e-523d241b > .holder:hover > i
23
- {
24
- color: var(--dh-text-1);
25
- }
26
-
27
- .e-523d241b > .holder > i[status="success"]
28
- {
29
- color: var(--dh-green);
30
- }
31
-
32
- .e-523d241b > .holder > i[status="warning"]
33
- {
34
- color: var(--dh-orange);
35
- }
36
-
37
- .e-523d241b > .holder > i[status="error"]
38
- {
39
- color: var(--dh-red);
40
- }
41
-
42
- .e-523d241b > .holder > i[status="info"]
43
- {
44
- color: var(--dh-blue);
45
- }
46
-
47
- .e-523d241b > .holder > .content
48
- {
49
- display: flex;
50
- flex-direction: column;
51
- flex: 1;
52
- min-width: 0;
53
- gap: var(--dh-spacing-x);
54
- }
55
-
56
- .e-523d241b > .holder > .content > .header
57
- {
58
- display: flex;
59
- align-items: center;
60
- gap: var(--dh-spacing-s);
61
- }
62
-
63
- .e-523d241b > .holder > .content > .header > strong
64
- {
65
- font-size: var(--dh-size-m);
66
- font-weight: 500;
67
- color: var(--dh-text-1);
68
- }
69
-
70
- .e-523d241b > .holder > .content > span
71
- {
72
- font-size: var(--dh-size-s);
73
- color: var(--dh-text-2);
74
- line-height: 1.4;
75
- }
76
-
77
- .e-523d241b > .holder > .content > .meta
78
- {
79
- display: flex;
80
- align-items: center;
81
- gap: var(--dh-spacing-m);
82
- }
83
-
84
- .e-523d241b > .holder > .content > .meta > small
85
- {
86
- display: flex;
87
- align-items: center;
88
- gap: var(--dh-spacing-x);
89
- font-size: var(--dh-size-s);
90
- color: var(--dh-text-2);
91
- }
92
-
93
- .e-523d241b > .holder > .content > .meta > small > i
94
- {
95
- font-size: var(--dh-size-s);
96
- }
@@ -1,32 +0,0 @@
1
- .e-523d241b > .holder[variant*="size-s"]
2
- {
3
- padding: var(--dh-spacing-s);
4
- gap: var(--dh-spacing-s);
5
- }
6
-
7
- .e-523d241b > .holder[variant*="size-s"] > i
8
- {
9
- font-size: var(--dh-size-m);
10
- }
11
-
12
- .e-523d241b > .holder[variant*="size-m"]
13
- {
14
- padding: var(--dh-spacing-m);
15
- gap: var(--dh-spacing-m);
16
- }
17
-
18
- .e-523d241b > .holder[variant*="size-l"]
19
- {
20
- padding: var(--dh-spacing-l);
21
- gap: var(--dh-spacing-l);
22
- }
23
-
24
- .e-523d241b > .holder[variant*="size-l"] > i
25
- {
26
- font-size: 28px;
27
- }
28
-
29
- .e-523d241b > .holder[variant*="size-l"] > .content > .header > strong
30
- {
31
- font-size: var(--dh-size-l);
32
- }
@@ -1,99 +0,0 @@
1
- .e-523d241b > .holder[variant*="bg-1"]
2
- {
3
- background: var(--dh-bg-1);
4
- }
5
-
6
- .e-523d241b > .holder[variant*="bg-2"]
7
- {
8
- background: var(--dh-bg-2);
9
- }
10
-
11
- .e-523d241b > .holder[variant*="bg-3"]
12
- {
13
- background: var(--dh-bg-3);
14
- }
15
-
16
- .e-523d241b > .holder[variant*="bg-4"]
17
- {
18
- background: var(--dh-bg-4);
19
- }
20
-
21
- .e-523d241b > .holder[variant*="bg-1"]:hover
22
- {
23
- background: var(--dh-bg-1-hover);
24
- }
25
-
26
- .e-523d241b > .holder[variant*="bg-2"]:hover
27
- {
28
- background: var(--dh-bg-2-hover);
29
- }
30
-
31
- .e-523d241b > .holder[variant*="bg-3"]:hover
32
- {
33
- background: var(--dh-bg-3-hover);
34
- }
35
-
36
- .e-523d241b > .holder[variant*="bg-4"]:hover
37
- {
38
- background: var(--dh-bg-4-hover);
39
- }
40
-
41
- .e-523d241b > .holder[variant*="border"]
42
- {
43
- border: 1px solid var(--dh-bg-3-border);
44
- }
45
-
46
- .e-523d241b > .holder[variant*="brand"]
47
- {
48
- border-color: var(--dh-brand-border);
49
- background: var(--dh-brand-opacity);
50
- }
51
-
52
- .e-523d241b > .holder[variant*="brand"] > i
53
- {
54
- color: var(--dh-brand);
55
- }
56
-
57
- .e-523d241b > .holder[variant*="blue"]
58
- {
59
- border-color: var(--dh-blue-border);
60
- background: var(--dh-blue-opacity);
61
- }
62
-
63
- .e-523d241b > .holder[variant*="blue"] > i
64
- {
65
- color: var(--dh-blue);
66
- }
67
-
68
- .e-523d241b > .holder[variant*="red"]
69
- {
70
- border-color: var(--dh-red-border);
71
- background: var(--dh-red-opacity);
72
- }
73
-
74
- .e-523d241b > .holder[variant*="red"] > i
75
- {
76
- color: var(--dh-red);
77
- }
78
-
79
- .e-523d241b > .holder[variant*="orange"]
80
- {
81
- border-color: var(--dh-orange-border);
82
- background: var(--dh-orange-opacity);
83
- }
84
-
85
- .e-523d241b > .holder[variant*="orange"] > i
86
- {
87
- color: var(--dh-orange);
88
- }
89
-
90
- .e-523d241b > .holder[variant*="green"]
91
- {
92
- border-color: var(--dh-green-border);
93
- background: var(--dh-green-opacity);
94
- }
95
-
96
- .e-523d241b > .holder[variant*="green"] > i
97
- {
98
- color: var(--dh-green);
99
- }
@@ -1,116 +0,0 @@
1
- import elements from '#elements/load.js';
2
-
3
- elements.ItemAdd({
4
- id: 'card-media',
5
- icon: 'image',
6
- name: 'Card Media',
7
- description: 'Media card with image, title, description, tags, and author metadata.',
8
- category: 'Cards',
9
- author: 'Divhunt',
10
- config: {
11
- src: {
12
- type: 'string',
13
- value: 'https://placehold.co/600x400'
14
- },
15
- alt: {
16
- type: 'string',
17
- value: 'Featured Image'
18
- },
19
- ratio: {
20
- type: 'string',
21
- value: '16/9',
22
- options: ['1/1', '4/3', '16/9', '21/9']
23
- },
24
- badge: {
25
- type: 'string',
26
- value: 'Featured'
27
- },
28
- title: {
29
- type: 'string',
30
- value: 'Getting Started with Modern Web Development'
31
- },
32
- description: {
33
- type: 'string',
34
- value: 'Learn the fundamentals of building fast, responsive web applications using the latest tools and techniques.'
35
- },
36
- tags: {
37
- type: 'array',
38
- value: ['Development', 'Tutorial', 'Web'],
39
- each: {
40
- type: 'string'
41
- }
42
- },
43
- author: {
44
- type: 'object',
45
- value: {
46
- name: 'Jane Smith',
47
- avatar: ''
48
- },
49
- config: {
50
- name: { type: 'string', value: '' },
51
- avatar: { type: 'string', value: '' }
52
- }
53
- },
54
- date: {
55
- type: 'string',
56
- value: 'Jan 15, 2026'
57
- },
58
- readTime: {
59
- type: 'string',
60
- value: '5 min read'
61
- },
62
- variant: {
63
- type: 'array',
64
- value: ['bg-2', 'border', 'size-m'],
65
- options: ['border', 'bg-1', 'bg-2', 'bg-3', 'bg-4', 'brand', 'blue', 'red', 'orange', 'green', 'size-s', 'size-m', 'size-l']
66
- },
67
- onClick: {
68
- type: 'function'
69
- }
70
- },
71
- render: function()
72
- {
73
- this.handleClick = () =>
74
- {
75
- if (this.onClick)
76
- {
77
- this.onClick();
78
- }
79
- };
80
-
81
- this.getInitials = () =>
82
- {
83
- if (!this.author?.name) return '';
84
- return this.author.name.split(' ').map(n => n[0]).join('').substring(0, 2).toUpperCase();
85
- };
86
-
87
- return `
88
- <div class="holder" :variant="variant.join(' ')" dh-click="handleClick">
89
- <div dh-if="src" class="media" :style="'aspect-ratio: ' + ratio">
90
- <img :src="src" :alt="alt">
91
- <e-tag dh-if="badge" :text="badge" :variant="['bg-2', 'size-s']"></e-tag>
92
- <slot name="overlay"></slot>
93
- </div>
94
- <div class="content">
95
- <div dh-if="tags.length" class="tags">
96
- <e-tag dh-for="tag in tags" :text="tag" :variant="['transparent', 'size-s']"></e-tag>
97
- </div>
98
- <h3 dh-if="title">{{ title }}</h3>
99
- <p dh-if="description">{{ description }}</p>
100
- </div>
101
- <div dh-if="author?.name || date || readTime" class="meta">
102
- <div dh-if="author?.name" class="author">
103
- <div class="avatar">
104
- <img dh-if="author.avatar" :src="author.avatar" :alt="author.name">
105
- <span dh-if="!author.avatar">{{ getInitials() }}</span>
106
- </div>
107
- <span>{{ author.name }}</span>
108
- </div>
109
- <span dh-if="date">{{ date }}</span>
110
- <span dh-if="readTime">{{ readTime }}</span>
111
- </div>
112
- <slot name="footer"></slot>
113
- </div>
114
- `;
115
- }
116
- });
@@ -1,126 +0,0 @@
1
- .e-aa4ad7d > .holder
2
- {
3
- display: flex;
4
- flex-direction: column;
5
- border-radius: var(--dh-radius-m);
6
- overflow: hidden;
7
- transition: all 0.2s;
8
- }
9
-
10
- .e-aa4ad7d > .holder:hover
11
- {
12
- transform: translateY(-2px);
13
- }
14
-
15
- .e-aa4ad7d > .holder > .media
16
- {
17
- position: relative;
18
- overflow: hidden;
19
- }
20
-
21
- .e-aa4ad7d > .holder > .media > img
22
- {
23
- width: 100%;
24
- height: 100%;
25
- object-fit: cover;
26
- transition: all 0.2s;
27
- }
28
-
29
- .e-aa4ad7d > .holder:hover > .media > img
30
- {
31
- transform: scale(1.05);
32
- }
33
-
34
- .e-aa4ad7d > .holder > .media > .e-c1b33c5
35
- {
36
- position: absolute;
37
- top: var(--dh-spacing-s);
38
- left: var(--dh-spacing-s);
39
- }
40
-
41
- .e-aa4ad7d > .holder > .content
42
- {
43
- display: flex;
44
- flex-direction: column;
45
- gap: var(--dh-spacing-s);
46
- }
47
-
48
- .e-aa4ad7d > .holder > .content > .tags
49
- {
50
- display: flex;
51
- flex-wrap: wrap;
52
- gap: var(--dh-spacing-x);
53
- }
54
-
55
- .e-aa4ad7d > .holder > .content > h3
56
- {
57
- font-size: var(--dh-size-m);
58
- font-weight: 600;
59
- color: var(--dh-text-1);
60
- margin: 0;
61
- line-height: 1.4;
62
- }
63
-
64
- .e-aa4ad7d > .holder > .content > p
65
- {
66
- font-size: var(--dh-size-s);
67
- color: var(--dh-text-2);
68
- margin: 0;
69
- line-height: 1.5;
70
- }
71
-
72
- .e-aa4ad7d > .holder > .meta
73
- {
74
- display: flex;
75
- align-items: center;
76
- gap: var(--dh-spacing-m);
77
- border-top: 1px solid var(--dh-bg-3-border);
78
- }
79
-
80
- .e-aa4ad7d > .holder > .meta > .author
81
- {
82
- display: flex;
83
- align-items: center;
84
- gap: var(--dh-spacing-s);
85
- }
86
-
87
- .e-aa4ad7d > .holder > .meta > .author > .avatar
88
- {
89
- width: var(--dh-height-s);
90
- height: var(--dh-height-s);
91
- border-radius: 50%;
92
- overflow: hidden;
93
- display: flex;
94
- align-items: center;
95
- justify-content: center;
96
- background: var(--dh-bg-3);
97
- font-size: var(--dh-size-s);
98
- font-weight: 600;
99
- color: var(--dh-text-2);
100
- }
101
-
102
- .e-aa4ad7d > .holder > .meta > .author > .avatar > img
103
- {
104
- width: 100%;
105
- height: 100%;
106
- object-fit: cover;
107
- }
108
-
109
- .e-aa4ad7d > .holder > .meta > .author > span
110
- {
111
- font-size: var(--dh-size-s);
112
- font-weight: 500;
113
- color: var(--dh-text-1);
114
- }
115
-
116
- .e-aa4ad7d > .holder > .meta > span
117
- {
118
- font-size: var(--dh-size-s);
119
- color: var(--dh-text-2);
120
- }
121
-
122
- .e-aa4ad7d > .holder > .meta > span + span::before
123
- {
124
- content: '·';
125
- margin-right: var(--dh-spacing-s);
126
- }
@@ -1,49 +0,0 @@
1
- .e-aa4ad7d > .holder[variant*="size-s"]
2
- {
3
- gap: var(--dh-spacing-s);
4
- }
5
-
6
- .e-aa4ad7d > .holder[variant*="size-s"] > .content
7
- {
8
- padding: var(--dh-spacing-s);
9
- }
10
-
11
- .e-aa4ad7d > .holder[variant*="size-s"] > .meta
12
- {
13
- padding: var(--dh-spacing-s);
14
- }
15
-
16
- .e-aa4ad7d > .holder[variant*="size-m"]
17
- {
18
- gap: var(--dh-spacing-m);
19
- }
20
-
21
- .e-aa4ad7d > .holder[variant*="size-m"] > .content
22
- {
23
- padding: 0 var(--dh-spacing-m);
24
- }
25
-
26
- .e-aa4ad7d > .holder[variant*="size-m"] > .meta
27
- {
28
- padding: var(--dh-spacing-m);
29
- }
30
-
31
- .e-aa4ad7d > .holder[variant*="size-l"]
32
- {
33
- gap: var(--dh-spacing-l);
34
- }
35
-
36
- .e-aa4ad7d > .holder[variant*="size-l"] > .content
37
- {
38
- padding: 0 var(--dh-spacing-l);
39
- }
40
-
41
- .e-aa4ad7d > .holder[variant*="size-l"] > .meta
42
- {
43
- padding: var(--dh-spacing-l);
44
- }
45
-
46
- .e-aa4ad7d > .holder[variant*="size-l"] > .content > h3
47
- {
48
- font-size: var(--dh-size-l);
49
- }
@@ -1,74 +0,0 @@
1
- .e-aa4ad7d > .holder[variant*="bg-1"]
2
- {
3
- background: var(--dh-bg-1);
4
- }
5
-
6
- .e-aa4ad7d > .holder[variant*="bg-2"]
7
- {
8
- background: var(--dh-bg-2);
9
- }
10
-
11
- .e-aa4ad7d > .holder[variant*="bg-3"]
12
- {
13
- background: var(--dh-bg-3);
14
- }
15
-
16
- .e-aa4ad7d > .holder[variant*="bg-4"]
17
- {
18
- background: var(--dh-bg-4);
19
- }
20
-
21
- .e-aa4ad7d > .holder[variant*="bg-1"]:hover
22
- {
23
- background: var(--dh-bg-1-hover);
24
- }
25
-
26
- .e-aa4ad7d > .holder[variant*="bg-2"]:hover
27
- {
28
- background: var(--dh-bg-2-hover);
29
- }
30
-
31
- .e-aa4ad7d > .holder[variant*="bg-3"]:hover
32
- {
33
- background: var(--dh-bg-3-hover);
34
- }
35
-
36
- .e-aa4ad7d > .holder[variant*="bg-4"]:hover
37
- {
38
- background: var(--dh-bg-4-hover);
39
- }
40
-
41
- .e-aa4ad7d > .holder[variant*="border"]
42
- {
43
- border: 1px solid var(--dh-bg-3-border);
44
- }
45
-
46
- .e-aa4ad7d > .holder[variant*="brand"]
47
- {
48
- border-color: var(--dh-brand-border);
49
- background: var(--dh-brand-opacity);
50
- }
51
-
52
- .e-aa4ad7d > .holder[variant*="blue"]
53
- {
54
- border-color: var(--dh-blue-border);
55
- background: var(--dh-blue-opacity);
56
- }
57
-
58
- .e-aa4ad7d > .holder[variant*="red"]
59
- {
60
- border-color: var(--dh-red-border);
61
- background: var(--dh-red-opacity);
62
- }
63
-
64
- .e-aa4ad7d > .holder[variant*="orange"]
65
- {
66
- border-color: var(--dh-orange-border);
67
- background: var(--dh-orange-opacity);
68
- }
69
-
70
- .e-aa4ad7d > .holder[variant*="green"]
71
- {
72
- border-color: var(--dh-green-border);
73
- background: var(--dh-green-opacity);
74
- }
@@ -1,95 +0,0 @@
1
- import elements from '#elements/load.js';
2
-
3
- elements.ItemAdd({
4
- id: 'card-profile',
5
- icon: 'person',
6
- name: 'Card Profile',
7
- description: 'Profile card with avatar, name, role, status indicator, stats, and badge.',
8
- category: 'Cards',
9
- author: 'Divhunt',
10
- config: {
11
- avatar: {
12
- type: 'string',
13
- value: ''
14
- },
15
- name: {
16
- type: 'string',
17
- value: 'Sarah Johnson'
18
- },
19
- role: {
20
- type: 'string',
21
- value: 'Senior Product Designer'
22
- },
23
- badge: {
24
- type: 'string',
25
- value: 'Pro'
26
- },
27
- status: {
28
- type: 'string',
29
- value: 'online',
30
- options: ['', 'online', 'offline', 'away', 'busy']
31
- },
32
- stats: {
33
- type: 'array',
34
- value: [
35
- { label: 'Projects', value: '48' },
36
- { label: 'Followers', value: '2.4k' },
37
- { label: 'Following', value: '186' }
38
- ],
39
- each: {
40
- type: 'object',
41
- config: {
42
- label: { type: 'string', value: '' },
43
- value: { type: 'string', value: '' }
44
- }
45
- }
46
- },
47
- variant: {
48
- type: 'array',
49
- value: ['bg-2', 'border', 'size-m'],
50
- options: ['border', 'bg-1', 'bg-2', 'bg-3', 'bg-4', 'brand', 'blue', 'red', 'orange', 'green', 'size-s', 'size-m', 'size-l', 'horizontal']
51
- },
52
- onClick: {
53
- type: 'function'
54
- }
55
- },
56
- render: function()
57
- {
58
- this.handleClick = () =>
59
- {
60
- if (this.onClick)
61
- {
62
- this.onClick();
63
- }
64
- };
65
-
66
- this.getInitials = () =>
67
- {
68
- if (!this.name) return '';
69
- return this.name.split(' ').map(n => n[0]).join('').substring(0, 2).toUpperCase();
70
- };
71
-
72
- return `
73
- <div class="holder" :variant="variant.join(' ')" dh-click="handleClick">
74
- <div class="header">
75
- <div class="avatar" :status="status">
76
- <img dh-if="avatar" :src="avatar" :alt="name">
77
- <span dh-if="!avatar && name">{{ getInitials() }}</span>
78
- </div>
79
- <e-tag dh-if="badge" :text="badge" :variant="['brand', 'size-s']"></e-tag>
80
- </div>
81
- <div class="content">
82
- <strong>{{ name }}</strong>
83
- <span dh-if="role">{{ role }}</span>
84
- </div>
85
- <div dh-if="stats.length" class="stats">
86
- <div dh-for="stat in stats" class="stat">
87
- <strong>{{ stat.value }}</strong>
88
- <span>{{ stat.label }}</span>
89
- </div>
90
- </div>
91
- <slot name="actions"></slot>
92
- </div>
93
- `;
94
- }
95
- });