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,203 +0,0 @@
1
- /* Base */
2
- .e-4888da57> .holder
3
- {
4
- display: inline-flex;
5
- align-items: center;
6
- justify-content: center;
7
- }
8
-
9
- .e-4888da57> .holder > .spinner
10
- {
11
- width: 40px;
12
- height: 40px;
13
- border: 3px solid var(--dh-bg-3);
14
- border-top-color: var(--dh-text-1);
15
- border-radius: 50%;
16
- }
17
-
18
- /* Variants - Spin */
19
- @keyframes spin
20
- {
21
- to
22
- {
23
- transform: rotate(360deg);
24
- }
25
- }
26
-
27
- .e-4888da57> .holder[variant*="spin"] > .spinner
28
- {
29
- animation: spin 0.8s linear infinite;
30
- }
31
-
32
- /* Variants - Dots */
33
- @keyframes dots
34
- {
35
- 0%, 100%
36
- {
37
- background-position: 0% 50%, 50% 50%, 100% 0%;
38
- }
39
- 33%
40
- {
41
- background-position: 0% 0%, 50% 50%, 100% 50%;
42
- }
43
- 66%
44
- {
45
- background-position: 0% 50%, 50% 0%, 100% 100%;
46
- }
47
- }
48
-
49
- .e-4888da57> .holder[variant*="dots"] > .spinner
50
- {
51
- border: none;
52
- background: radial-gradient(circle, var(--dh-text-1) 25%, transparent 26%),
53
- radial-gradient(circle, var(--dh-text-1) 25%, transparent 26%),
54
- radial-gradient(circle, var(--dh-text-1) 25%, transparent 26%);
55
- background-size: 33% 33%;
56
- background-position: 0% 50%, 50% 50%, 100% 0%;
57
- background-repeat: no-repeat;
58
- animation: dots 1.5s infinite ease-in-out;
59
- }
60
-
61
- /* Variants - Pulse */
62
- @keyframes pulse
63
- {
64
- 0%, 100%
65
- {
66
- transform: scale(1);
67
- opacity: 1;
68
- }
69
- 50%
70
- {
71
- transform: scale(1.5);
72
- opacity: 0.5;
73
- }
74
- }
75
-
76
- .e-4888da57> .holder[variant*="pulse"] > .spinner
77
- {
78
- border: 3px solid var(--dh-text-1);
79
- animation: pulse 1.5s ease-in-out infinite;
80
- }
81
-
82
- /* Variants - Colors */
83
- .e-4888da57> .holder[variant*="brand"] > .spinner
84
- {
85
- border-top-color: var(--dh-brand);
86
- }
87
-
88
- .e-4888da57> .holder[variant*="brand"][variant*="dots"] > .spinner
89
- {
90
- background: radial-gradient(circle, var(--dh-brand) 25%, transparent 26%),
91
- radial-gradient(circle, var(--dh-brand) 25%, transparent 26%),
92
- radial-gradient(circle, var(--dh-brand) 25%, transparent 26%);
93
- background-size: 33% 33%;
94
- background-position: 0% 0%, 50% 50%, 100% 50%;
95
- background-repeat: no-repeat;
96
- }
97
-
98
- .e-4888da57> .holder[variant*="brand"][variant*="pulse"] > .spinner
99
- {
100
- border-color: var(--dh-brand);
101
- }
102
-
103
- .e-4888da57> .holder[variant*="blue"] > .spinner
104
- {
105
- border-top-color: var(--dh-blue);
106
- }
107
-
108
- .e-4888da57> .holder[variant*="blue"][variant*="dots"] > .spinner
109
- {
110
- background: radial-gradient(circle, var(--dh-blue) 25%, transparent 26%),
111
- radial-gradient(circle, var(--dh-blue) 25%, transparent 26%),
112
- radial-gradient(circle, var(--dh-blue) 25%, transparent 26%);
113
- background-size: 33% 33%;
114
- background-position: 0% 0%, 50% 50%, 100% 50%;
115
- background-repeat: no-repeat;
116
- }
117
-
118
- .e-4888da57> .holder[variant*="blue"][variant*="pulse"] > .spinner
119
- {
120
- border-color: var(--dh-blue);
121
- }
122
-
123
- .e-4888da57> .holder[variant*="red"] > .spinner
124
- {
125
- border-top-color: var(--dh-red);
126
- }
127
-
128
- .e-4888da57> .holder[variant*="red"][variant*="dots"] > .spinner
129
- {
130
- background: radial-gradient(circle, var(--dh-red) 25%, transparent 26%),
131
- radial-gradient(circle, var(--dh-red) 25%, transparent 26%),
132
- radial-gradient(circle, var(--dh-red) 25%, transparent 26%);
133
- background-size: 33% 33%;
134
- background-position: 0% 0%, 50% 50%, 100% 50%;
135
- background-repeat: no-repeat;
136
- }
137
-
138
- .e-4888da57> .holder[variant*="red"][variant*="pulse"] > .spinner
139
- {
140
- border-color: var(--dh-red);
141
- }
142
-
143
- .e-4888da57> .holder[variant*="orange"] > .spinner
144
- {
145
- border-top-color: var(--dh-orange);
146
- }
147
-
148
- .e-4888da57> .holder[variant*="orange"][variant*="dots"] > .spinner
149
- {
150
- background: radial-gradient(circle, var(--dh-orange) 25%, transparent 26%),
151
- radial-gradient(circle, var(--dh-orange) 25%, transparent 26%),
152
- radial-gradient(circle, var(--dh-orange) 25%, transparent 26%);
153
- background-size: 33% 33%;
154
- background-position: 0% 0%, 50% 50%, 100% 50%;
155
- background-repeat: no-repeat;
156
- }
157
-
158
- .e-4888da57> .holder[variant*="orange"][variant*="pulse"] > .spinner
159
- {
160
- border-color: var(--dh-orange);
161
- }
162
-
163
- .e-4888da57> .holder[variant*="green"] > .spinner
164
- {
165
- border-top-color: var(--dh-green);
166
- }
167
-
168
- .e-4888da57> .holder[variant*="green"][variant*="dots"] > .spinner
169
- {
170
- background: radial-gradient(circle, var(--dh-green) 25%, transparent 26%),
171
- radial-gradient(circle, var(--dh-green) 25%, transparent 26%),
172
- radial-gradient(circle, var(--dh-green) 25%, transparent 26%);
173
- background-size: 33% 33%;
174
- background-position: 0% 0%, 50% 50%, 100% 50%;
175
- background-repeat: no-repeat;
176
- }
177
-
178
- .e-4888da57> .holder[variant*="green"][variant*="pulse"] > .spinner
179
- {
180
- border-color: var(--dh-green);
181
- }
182
-
183
- /* Variants - Sizes */
184
- .e-4888da57> .holder[variant*="size-s"] > .spinner
185
- {
186
- width: 24px;
187
- height: 24px;
188
- border-width: 2px;
189
- }
190
-
191
- .e-4888da57> .holder[variant*="size-m"] > .spinner
192
- {
193
- width: 40px;
194
- height: 40px;
195
- border-width: 3px;
196
- }
197
-
198
- .e-4888da57> .holder[variant*="size-l"] > .spinner
199
- {
200
- width: 64px;
201
- height: 64px;
202
- border-width: 4px;
203
- }
@@ -1,25 +0,0 @@
1
- import elements from '#elements/load.js';
2
-
3
- elements.ItemAdd({
4
- id: 'loader',
5
- icon: 'progress_activity',
6
- name: 'Loader',
7
- description: 'Loading spinner with multiple animation styles (spin, dots, pulse).',
8
- category: 'Feedback',
9
- author: 'Divhunt',
10
- config: {
11
- variant: {
12
- type: 'array',
13
- value: ['dots', 'brand', 'size-m'],
14
- options: ['spin', 'dots', 'pulse', 'brand', 'blue', 'red', 'orange', 'green', 'size-s', 'size-m', 'size-l']
15
- }
16
- },
17
- render: function()
18
- {
19
- return `
20
- <div class="holder" :variant="variant.join(' ')">
21
- <div class="spinner"></div>
22
- </div>
23
- `;
24
- }
25
- });
@@ -1,136 +0,0 @@
1
- /* Base */
2
- .e-c8faa43
3
- {
4
- width: 100%;
5
- height: 8px;
6
- }
7
-
8
- .e-c8faa43 > .holder
9
- {
10
- position: relative;
11
- background: var(--dh-bg-3);
12
- border-radius: var(--dh-radius-s);
13
- overflow: hidden;
14
- }
15
-
16
- .e-c8faa43 > .holder > .bar
17
- {
18
- height: 100%;
19
- background: var(--dh-brand);
20
- border-radius: var(--dh-radius-s);
21
- transition: width 0.3s ease;
22
- }
23
-
24
- .e-c8faa43 > .holder > .text
25
- {
26
- position: absolute;
27
- top: 50%;
28
- left: 50%;
29
- transform: translate(-50%, -50%);
30
- font-size: var(--dh-size-s);
31
- font-weight: 600;
32
- color: var(--dh-text-1);
33
- white-space: nowrap;
34
- }
35
-
36
- /* Variants - Colors */
37
- .e-c8faa43 > .holder[variant*="brand"] > .bar
38
- {
39
- background: var(--dh-brand);
40
- }
41
-
42
- .e-c8faa43 > .holder[variant*="blue"] > .bar
43
- {
44
- background: var(--dh-blue);
45
- }
46
-
47
- .e-c8faa43 > .holder[variant*="red"] > .bar
48
- {
49
- background: var(--dh-red);
50
- }
51
-
52
- .e-c8faa43 > .holder[variant*="orange"] > .bar
53
- {
54
- background: var(--dh-orange);
55
- }
56
-
57
- .e-c8faa43 > .holder[variant*="green"] > .bar
58
- {
59
- background: var(--dh-green);
60
- }
61
-
62
- /* Variants - Striped */
63
- .e-c8faa43 > .holder[variant*="striped"] > .bar
64
- {
65
- background-image: linear-gradient(
66
- 45deg,
67
- rgba(255, 255, 255, 0.15) 25%,
68
- transparent 25%,
69
- transparent 50%,
70
- rgba(255, 255, 255, 0.15) 50%,
71
- rgba(255, 255, 255, 0.15) 75%,
72
- transparent 75%,
73
- transparent
74
- );
75
- background-size: 20px 20px;
76
- }
77
-
78
- /* Variants - Animated */
79
- @keyframes progress-stripes
80
- {
81
- 0%
82
- {
83
- background-position: 0 0;
84
- }
85
- 100%
86
- {
87
- background-position: 20px 0;
88
- }
89
- }
90
-
91
- .e-c8faa43 > .holder[variant*="animated"] > .bar
92
- {
93
- background-image: linear-gradient(
94
- 45deg,
95
- rgba(255, 255, 255, 0.15) 25%,
96
- transparent 25%,
97
- transparent 50%,
98
- rgba(255, 255, 255, 0.15) 50%,
99
- rgba(255, 255, 255, 0.15) 75%,
100
- transparent 75%,
101
- transparent
102
- );
103
- background-size: 20px 20px;
104
- animation: progress-stripes 1s linear infinite;
105
- }
106
-
107
- /* Variants - Sizes */
108
- .e-c8faa43 > .holder[variant*="size-s"]
109
- {
110
- height: 4px;
111
- }
112
-
113
- .e-c8faa43 > .holder[variant*="size-s"] > .text
114
- {
115
- font-size: 10px;
116
- }
117
-
118
- .e-c8faa43 > .holder[variant*="size-m"]
119
- {
120
- height: 8px;
121
- }
122
-
123
- .e-c8faa43 > .holder[variant*="size-m"] > .text
124
- {
125
- font-size: var(--dh-size-s);
126
- }
127
-
128
- .e-c8faa43 > .holder[variant*="size-l"]
129
- {
130
- height: 16px;
131
- }
132
-
133
- .e-c8faa43 > .holder[variant*="size-l"] > .text
134
- {
135
- font-size: var(--dh-size-m);
136
- }
@@ -1,40 +0,0 @@
1
- import elements from '#elements/load.js';
2
-
3
- elements.ItemAdd({
4
- id: 'progress',
5
- icon: 'progress_activity',
6
- name: 'Progress',
7
- description: 'Progress bar with percentage display and multiple styles.',
8
- category: 'Feedback',
9
- author: 'Divhunt',
10
- config: {
11
- value: {
12
- type: 'number',
13
- value: 60
14
- },
15
- max: {
16
- type: 'number',
17
- value: 100
18
- },
19
- text: {
20
- type: 'string',
21
- value: ''
22
- },
23
- variant: {
24
- type: 'array',
25
- value: ['striped', 'animated', 'size-m'],
26
- options: ['brand', 'blue', 'red', 'orange', 'green', 'striped', 'animated', 'size-s', 'size-m', 'size-l']
27
- }
28
- },
29
- render: function()
30
- {
31
- const percentage = Math.min(100, Math.max(0, (this.value / this.max) * 100));
32
-
33
- return `
34
- <div class="holder" :variant="variant.join(' ')">
35
- <div class="bar" style="width: ${percentage}%"></div>
36
- <div dh-if="text" class="text">{{ text }}</div>
37
- </div>
38
- `;
39
- }
40
- });
@@ -1,105 +0,0 @@
1
- import elements from '#elements/load.js';
2
-
3
- elements.ItemAdd({
4
- id: 'button',
5
- icon: 'smart_button',
6
- name: 'Button',
7
- description: 'Premium button with icons, variants, animations, and ripple effects.',
8
- category: 'Form',
9
- author: 'Divhunt',
10
- example: [
11
- { title: 'Solid', code: '<e-button text="Brand" icon="add"></e-button>' },
12
- { title: 'Soft', code: '<e-button text="Soft" icon="cloud" :variant="[\'soft-brand\']"></e-button>' },
13
- { title: 'Outline', code: '<e-button text="Outline" icon="edit" :variant="[\'outline-brand\']"></e-button>' },
14
- { title: 'Border', code: '<e-button text="Border" :variant="[\'border\']"></e-button>' },
15
- { title: 'Ghost', code: '<e-button text="Ghost" :variant="[\'ghost\']"></e-button>' },
16
- { title: 'Icon Only', code: '<e-button icon="add" :variant="[\'icon-only\']"></e-button>' }
17
- ],
18
- config: {
19
- icon: {
20
- type: 'string',
21
- },
22
- iconRight: {
23
- type: 'string',
24
- },
25
- text: {
26
- type: 'string',
27
- value: 'Button'
28
- },
29
- href: {
30
- type: 'string',
31
- },
32
- target: {
33
- type: 'string',
34
- options: ['_blank', '_self', '_parent', '_top']
35
- },
36
- type: {
37
- type: 'string',
38
- value: 'button',
39
- options: ['button', 'submit', 'reset']
40
- },
41
- disabled: {
42
- type: 'boolean',
43
- value: false
44
- },
45
- loading: {
46
- type: 'boolean',
47
- value: false
48
- },
49
- variant: {
50
- type: 'array',
51
- value: ['brand', 'size-m'],
52
- options: [
53
- 'brand', 'blue', 'red', 'orange', 'green',
54
- 'soft-brand', 'soft-blue', 'soft-red', 'soft-orange', 'soft-green',
55
- 'outline-brand', 'outline-blue', 'outline-red', 'outline-orange', 'outline-green',
56
- 'bg-1', 'bg-2', 'bg-3', 'bg-4',
57
- 'ghost', 'glass', 'border', 'transparent',
58
- 'size-s', 'size-m', 'size-l',
59
- 'full', 'icon-only', 'rounded'
60
- ]
61
- },
62
- _click: {
63
- type: 'function'
64
- }
65
- },
66
- render: function()
67
- {
68
- this.handleClick = (e) =>
69
- {
70
- if(this.disabled || this.loading)
71
- {
72
- return;
73
- }
74
-
75
- if(this._click)
76
- {
77
- this._click(e);
78
- }
79
- };
80
-
81
- const content = `
82
- <span dh-if="loading" class="spinner"><i>progress_activity</i></span>
83
- <span dh-if="!loading" class="content">
84
- <i dh-if="icon" class="icon-left">{{ icon }}</i>
85
- <span dh-if="text && !variant.includes('icon-only')" class="text">{{ text }}</span>
86
- <i dh-if="iconRight" class="icon-right">{{ iconRight }}</i>
87
- </span>
88
- `;
89
-
90
- if(this.href)
91
- {
92
- return `
93
- <a class="holder" :href="href" :target="target" :variant="variant.join(' ')" :disabled="disabled" :loading="loading" dh-click="handleClick">
94
- ${content}
95
- </a>
96
- `;
97
- }
98
-
99
- return `
100
- <button class="holder" :type="type" :variant="variant.join(' ')" :disabled="disabled" :loading="loading" dh-click="handleClick">
101
- ${content}
102
- </button>
103
- `;
104
- }
105
- });
@@ -1,176 +0,0 @@
1
- .e-593be338
2
- {
3
- display: flex;
4
- }
5
-
6
- /* Button Base */
7
- .e-593be338 > .holder
8
- {
9
- position: relative;
10
- border: 1px solid transparent;
11
- border-radius: var(--dh-radius-m);
12
- padding: 4px var(--dh-spacing-m);
13
- cursor: pointer;
14
- outline: none;
15
- display: inline-flex;
16
- align-items: center;
17
- justify-content: center;
18
- gap: var(--dh-spacing-s);
19
- background: transparent;
20
- color: var(--dh-text-1);
21
- font-size: var(--dh-size-m);
22
- font-weight: 500;
23
- text-decoration: none;
24
- white-space: nowrap;
25
- overflow: hidden;
26
- user-select: none;
27
-
28
- -webkit-tap-highlight-color: transparent;
29
- transition:
30
- background 0.2s ease,
31
- border-color 0.2s ease,
32
- color 0.2s ease,
33
- box-shadow 0.2s ease,
34
- transform 0.15s ease;
35
- }
36
-
37
- /* Content wrapper */
38
- .e-593be338 > .holder > .content
39
- {
40
- display: inline-flex;
41
- align-items: center;
42
- justify-content: center;
43
- gap: var(--dh-spacing-s);
44
- transition: transform 0.2s ease;
45
- }
46
-
47
- /* Text */
48
- .e-593be338 > .holder > .content > .text
49
- {
50
- line-height: 1;
51
- }
52
-
53
- /* Icons */
54
- .e-593be338 > .holder > .content > i
55
- {
56
- font-size: 18px;
57
- transition: transform 0.2s ease;
58
- }
59
-
60
- .e-593be338 > .holder > .content > .icon-left
61
- {
62
- margin-right: -2px;
63
- }
64
-
65
- .e-593be338 > .holder > .content > .icon-right
66
- {
67
- margin-left: -2px;
68
- }
69
-
70
- /* Hover - subtle lift */
71
- .e-593be338 > .holder:hover
72
- {
73
- transform: translateY(-1px);
74
- }
75
-
76
- .e-593be338 > .holder:hover > .content > .icon-right
77
- {
78
- transform: translateX(2px);
79
- }
80
-
81
- /* Active - press down */
82
- .e-593be338 > .holder:active
83
- {
84
- transform: translateY(0) scale(0.98);
85
- transition-duration: 0.1s;
86
- }
87
-
88
- /* Focus visible - premium glow ring */
89
- .e-593be338 > .holder:focus-visible
90
- {
91
- outline: none;
92
- box-shadow:
93
- 0 0 0 2px var(--dh-bg-1),
94
- 0 0 0 4px var(--dh-brand);
95
- }
96
-
97
- /* Disabled */
98
- .e-593be338 > .holder[disabled="true"]
99
- {
100
- opacity: 0.5;
101
- cursor: not-allowed;
102
- pointer-events: none;
103
- transform: none;
104
- }
105
-
106
- /* Loading */
107
- .e-593be338 > .holder[loading="true"]
108
- {
109
- cursor: wait;
110
- pointer-events: none;
111
- }
112
-
113
- /* Spinner */
114
- .e-593be338 > .holder > .spinner
115
- {
116
- display: inline-flex;
117
- align-items: center;
118
- justify-content: center;
119
- }
120
-
121
- .e-593be338 > .holder > .spinner > i
122
- {
123
- font-size: 18px;
124
- animation: e-button-spin 0.8s linear infinite;
125
- }
126
-
127
- @keyframes e-button-spin
128
- {
129
- from { transform: rotate(0deg); }
130
- to { transform: rotate(360deg); }
131
- }
132
-
133
- /* Ripple effect */
134
- .e-593be338 > .holder > .ripple
135
- {
136
- position: absolute;
137
- border-radius: 50%;
138
- background: currentColor;
139
- opacity: 0.15;
140
- transform: scale(0);
141
- animation: e-button-ripple 0.6s ease-out forwards;
142
- pointer-events: none;
143
- }
144
-
145
- @keyframes e-button-ripple
146
- {
147
- to
148
- {
149
- transform: scale(2.5);
150
- opacity: 0;
151
- }
152
- }
153
-
154
- /* Full width */
155
- .e-593be338 > .holder[variant*="full"]
156
- {
157
- width: 100%;
158
- }
159
-
160
- /* Rounded (pill) */
161
- .e-593be338 > .holder[variant*="rounded"]
162
- {
163
- border-radius: 100px;
164
- }
165
-
166
- /* Icon only - square aspect */
167
- .e-593be338 > .holder[variant*="icon-only"]
168
- {
169
- padding: 0;
170
- aspect-ratio: 1;
171
- }
172
-
173
- .e-593be338 > .holder[variant*="icon-only"] > .content > i
174
- {
175
- margin: 0;
176
- }