divhunt 2.0.5 → 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 (121) hide show
  1. package/package.json +1 -1
  2. package/addons/render/elements/front/items/self/base/menu/menu.js +0 -96
  3. package/addons/render/elements/front/items/self/base/menu/styles/base.css +0 -116
  4. package/addons/render/elements/front/items/self/base/menu/styles/sizes.css +0 -27
  5. package/addons/render/elements/front/items/self/base/menu/styles/variants.css +0 -99
  6. package/addons/render/elements/front/items/self/base/tag/tag.css +0 -199
  7. package/addons/render/elements/front/items/self/base/tag/tag.js +0 -37
  8. package/addons/render/elements/front/items/self/cards/basic/basic.js +0 -89
  9. package/addons/render/elements/front/items/self/cards/basic/styles/base.css +0 -66
  10. package/addons/render/elements/front/items/self/cards/basic/styles/sizes.css +0 -32
  11. package/addons/render/elements/front/items/self/cards/basic/styles/variants.css +0 -99
  12. package/addons/render/elements/front/items/self/cards/list/list.js +0 -108
  13. package/addons/render/elements/front/items/self/cards/list/styles/base.css +0 -96
  14. package/addons/render/elements/front/items/self/cards/list/styles/sizes.css +0 -32
  15. package/addons/render/elements/front/items/self/cards/list/styles/variants.css +0 -99
  16. package/addons/render/elements/front/items/self/cards/media/media.js +0 -116
  17. package/addons/render/elements/front/items/self/cards/media/styles/base.css +0 -126
  18. package/addons/render/elements/front/items/self/cards/media/styles/sizes.css +0 -49
  19. package/addons/render/elements/front/items/self/cards/media/styles/variants.css +0 -74
  20. package/addons/render/elements/front/items/self/cards/profile/profile.js +0 -95
  21. package/addons/render/elements/front/items/self/cards/profile/styles/base.css +0 -142
  22. package/addons/render/elements/front/items/self/cards/profile/styles/sizes.css +0 -43
  23. package/addons/render/elements/front/items/self/cards/profile/styles/variants.css +0 -131
  24. package/addons/render/elements/front/items/self/cards/stat/stat.js +0 -117
  25. package/addons/render/elements/front/items/self/cards/stat/styles/base.css +0 -97
  26. package/addons/render/elements/front/items/self/cards/stat/styles/sizes.css +0 -49
  27. package/addons/render/elements/front/items/self/cards/stat/styles/variants.css +0 -124
  28. package/addons/render/elements/front/items/self/content/html/html.css +0 -93
  29. package/addons/render/elements/front/items/self/content/html/html.js +0 -40
  30. package/addons/render/elements/front/items/self/content/markdown/markdown.css +0 -200
  31. package/addons/render/elements/front/items/self/content/markdown/markdown.js +0 -120
  32. package/addons/render/elements/front/items/self/data/comments/comments.css +0 -253
  33. package/addons/render/elements/front/items/self/data/comments/comments.js +0 -134
  34. package/addons/render/elements/front/items/self/data/files/files.css +0 -116
  35. package/addons/render/elements/front/items/self/data/files/files.js +0 -85
  36. package/addons/render/elements/front/items/self/data/folders/folders.css +0 -104
  37. package/addons/render/elements/front/items/self/data/folders/folders.js +0 -73
  38. package/addons/render/elements/front/items/self/data/inbox/inbox.css +0 -225
  39. package/addons/render/elements/front/items/self/data/inbox/inbox.js +0 -111
  40. package/addons/render/elements/front/items/self/data/logs/logs.css +0 -133
  41. package/addons/render/elements/front/items/self/data/logs/logs.js +0 -65
  42. package/addons/render/elements/front/items/self/data/plans/plans.css +0 -231
  43. package/addons/render/elements/front/items/self/data/plans/plans.js +0 -104
  44. package/addons/render/elements/front/items/self/data/properties/properties.css +0 -108
  45. package/addons/render/elements/front/items/self/data/properties/properties.js +0 -156
  46. package/addons/render/elements/front/items/self/data/table/table.css +0 -153
  47. package/addons/render/elements/front/items/self/data/table/table.js +0 -106
  48. package/addons/render/elements/front/items/self/data/timeline/timeline.css +0 -127
  49. package/addons/render/elements/front/items/self/data/timeline/timeline.js +0 -57
  50. package/addons/render/elements/front/items/self/feedback/alert/alert.css +0 -258
  51. package/addons/render/elements/front/items/self/feedback/alert/alert.js +0 -67
  52. package/addons/render/elements/front/items/self/feedback/confirm/confirm.css +0 -229
  53. package/addons/render/elements/front/items/self/feedback/confirm/confirm.js +0 -81
  54. package/addons/render/elements/front/items/self/feedback/loader/loader.css +0 -203
  55. package/addons/render/elements/front/items/self/feedback/loader/loader.js +0 -25
  56. package/addons/render/elements/front/items/self/feedback/progress/progress.css +0 -136
  57. package/addons/render/elements/front/items/self/feedback/progress/progress.js +0 -40
  58. package/addons/render/elements/front/items/self/form/button/button.js +0 -105
  59. package/addons/render/elements/front/items/self/form/button/styles/base.css +0 -176
  60. package/addons/render/elements/front/items/self/form/button/styles/sizes.css +0 -78
  61. package/addons/render/elements/front/items/self/form/button/styles/variants.css +0 -421
  62. package/addons/render/elements/front/items/self/form/checkbox/checkbox.js +0 -57
  63. package/addons/render/elements/front/items/self/form/checkbox/styles/base.css +0 -52
  64. package/addons/render/elements/front/items/self/form/checkbox/styles/sizes.css +0 -39
  65. package/addons/render/elements/front/items/self/form/checkbox/styles/variants.css +0 -121
  66. package/addons/render/elements/front/items/self/form/field/field.css +0 -96
  67. package/addons/render/elements/front/items/self/form/field/field.js +0 -39
  68. package/addons/render/elements/front/items/self/form/input/input.css +0 -111
  69. package/addons/render/elements/front/items/self/form/input/input.js +0 -78
  70. package/addons/render/elements/front/items/self/form/input/styles/base.css +0 -26
  71. package/addons/render/elements/front/items/self/form/input/styles/sizes.css +0 -15
  72. package/addons/render/elements/front/items/self/form/input/styles/variants.css +0 -98
  73. package/addons/render/elements/front/items/self/form/radio/radio.js +0 -57
  74. package/addons/render/elements/front/items/self/form/radio/styles/base.css +0 -48
  75. package/addons/render/elements/front/items/self/form/radio/styles/sizes.css +0 -36
  76. package/addons/render/elements/front/items/self/form/radio/styles/variants.css +0 -121
  77. package/addons/render/elements/front/items/self/form/rating/rating.css +0 -95
  78. package/addons/render/elements/front/items/self/form/rating/rating.js +0 -88
  79. package/addons/render/elements/front/items/self/form/section/section.css +0 -107
  80. package/addons/render/elements/front/items/self/form/section/section.js +0 -39
  81. package/addons/render/elements/front/items/self/form/slider/slider.css +0 -244
  82. package/addons/render/elements/front/items/self/form/slider/slider.js +0 -69
  83. package/addons/render/elements/front/items/self/form/textarea/textarea.css +0 -117
  84. package/addons/render/elements/front/items/self/form/textarea/textarea.js +0 -69
  85. package/addons/render/elements/front/items/self/layout/empty/empty.css +0 -154
  86. package/addons/render/elements/front/items/self/layout/empty/empty.js +0 -43
  87. package/addons/render/elements/front/items/self/layout/heading/heading.css +0 -117
  88. package/addons/render/elements/front/items/self/layout/heading/heading.js +0 -47
  89. package/addons/render/elements/front/items/self/layout/hero/hero.js +0 -88
  90. package/addons/render/elements/front/items/self/layout/hero/styles/base.css +0 -81
  91. package/addons/render/elements/front/items/self/layout/hero/styles/sizes.css +0 -24
  92. package/addons/render/elements/front/items/self/layout/hero/styles/variants.css +0 -98
  93. package/addons/render/elements/front/items/self/navigation/breadcrumb/addon/_class/addon.js +0 -9
  94. package/addons/render/elements/front/items/self/navigation/breadcrumb/addon/functions/get.js +0 -22
  95. package/addons/render/elements/front/items/self/navigation/breadcrumb/breadcrumb.css +0 -13
  96. package/addons/render/elements/front/items/self/navigation/breadcrumb/breadcrumb.js +0 -51
  97. package/addons/render/elements/front/items/self/navigation/footer/addon/_class/addon.js +0 -11
  98. package/addons/render/elements/front/items/self/navigation/footer/addon/functions/columns.js +0 -11
  99. package/addons/render/elements/front/items/self/navigation/footer/addon/functions/get.js +0 -34
  100. package/addons/render/elements/front/items/self/navigation/footer/footer.css +0 -283
  101. package/addons/render/elements/front/items/self/navigation/footer/footer.js +0 -139
  102. package/addons/render/elements/front/items/self/navigation/navbar/addon/_class/addon.js +0 -13
  103. package/addons/render/elements/front/items/self/navigation/navbar/addon/functions/active.js +0 -7
  104. package/addons/render/elements/front/items/self/navigation/navbar/addon/functions/get.js +0 -31
  105. package/addons/render/elements/front/items/self/navigation/navbar/navbar.css +0 -140
  106. package/addons/render/elements/front/items/self/navigation/navbar/navbar.js +0 -118
  107. package/addons/render/elements/front/items/self/navigation/pagination/pagination.css +0 -160
  108. package/addons/render/elements/front/items/self/navigation/pagination/pagination.js +0 -131
  109. package/addons/render/elements/front/items/self/navigation/sidebar/addon/_class/addon.js +0 -12
  110. package/addons/render/elements/front/items/self/navigation/sidebar/addon/functions/active.js +0 -7
  111. package/addons/render/elements/front/items/self/navigation/sidebar/addon/functions/get.js +0 -35
  112. package/addons/render/elements/front/items/self/navigation/sidebar/addon/functions/groups.js +0 -10
  113. package/addons/render/elements/front/items/self/navigation/sidebar/sidebar.css +0 -278
  114. package/addons/render/elements/front/items/self/navigation/sidebar/sidebar.js +0 -85
  115. package/addons/render/elements/front/items/self/navigation/stepper/stepper.css +0 -202
  116. package/addons/render/elements/front/items/self/navigation/stepper/stepper.js +0 -82
  117. package/addons/render/elements/front/items/self/navigation/tabs/addon.js +0 -32
  118. package/addons/render/elements/front/items/self/navigation/tabs/tabs.css +0 -239
  119. package/addons/render/elements/front/items/self/navigation/tabs/tabs.js +0 -76
  120. package/addons/render/elements/front/items/self/preview/html/html.css +0 -377
  121. package/addons/render/elements/front/items/self/preview/html/html.js +0 -107
@@ -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
- });
@@ -1,239 +0,0 @@
1
- /* Base */
2
- .e-4db696c > .holder
3
- {
4
- display: flex;
5
- align-items: center;
6
- gap: var(--dh-spacing-m);
7
- background: transparent;
8
- }
9
-
10
- .e-4db696c > .holder > .items
11
- {
12
- display: flex;
13
- align-items: center;
14
- gap: var(--dh-spacing-l);
15
- flex: 1;
16
- }
17
-
18
- .e-4db696c > .holder > .items > div
19
- {
20
- display: flex;
21
- }
22
-
23
- .e-4db696c > .holder > .items > div > .item
24
- {
25
- display: flex;
26
- align-items: center;
27
- gap: var(--dh-spacing-x);
28
- padding: var(--dh-spacing-s) 0;
29
- cursor: pointer;
30
- user-select: none;
31
- transition: all 0.2s ease;
32
- border-bottom: 2px solid transparent;
33
- color: var(--dh-text-2);
34
- }
35
-
36
- .e-4db696c > .holder > .items > div > .item:hover
37
- {
38
- color: var(--dh-text-1);
39
- }
40
-
41
- .e-4db696c > .holder > .items > div > .item[active="true"]
42
- {
43
- color: var(--dh-brand);
44
- border-bottom-color: var(--dh-brand);
45
- }
46
-
47
- .e-4db696c > .holder > .items > div > .item[disabled="true"]
48
- {
49
- opacity: 0.5;
50
- cursor: not-allowed;
51
- }
52
-
53
- .e-4db696c > .holder > .items > div > .item[disabled="true"]:hover
54
- {
55
- color: var(--dh-text-2);
56
- }
57
-
58
- .e-4db696c > .holder > .items > div > .item > .icon
59
- {
60
- font-size: 18px;
61
- color: inherit;
62
- }
63
-
64
- .e-4db696c > .holder > .items > div > .item > .label
65
- {
66
- font-weight: 500;
67
- }
68
-
69
- .e-4db696c > .holder > .items > div > .item > .badge
70
- {
71
- display: flex;
72
- align-items: center;
73
- justify-content: center;
74
- min-width: 18px;
75
- height: 18px;
76
- padding: 0 var(--dh-spacing-x);
77
- background: var(--dh-bg-4);
78
- color: var(--dh-text-1);
79
- font-size: 11px;
80
- font-weight: 600;
81
- border-radius: 9px;
82
- }
83
-
84
- .e-4db696c > .holder > .items > div > .item[active="true"] > .badge
85
- {
86
- background: var(--dh-brand);
87
- color: white;
88
- }
89
-
90
- /* Variants - Orientation */
91
- .e-4db696c > .holder[variant*="vertical"]
92
- {
93
- flex-direction: column;
94
- align-items: stretch;
95
- }
96
-
97
- .e-4db696c > .holder[variant*="vertical"] > .items
98
- {
99
- flex-direction: column;
100
- gap: 0;
101
- }
102
-
103
- .e-4db696c > .holder[variant*="vertical"] > .items > div
104
- {
105
- width: 100%;
106
- }
107
-
108
- .e-4db696c > .holder[variant*="vertical"] > .items > div > .item
109
- {
110
- border-bottom: none;
111
- border-left: 2px solid transparent;
112
- justify-content: flex-start;
113
- padding: var(--dh-spacing-s) var(--dh-spacing-m);
114
- }
115
-
116
- .e-4db696c > .holder[variant*="vertical"] > .items > div > .item[active="true"]
117
- {
118
- border-left-color: var(--dh-brand);
119
- border-bottom-color: transparent;
120
- }
121
-
122
- /* Variants - Background */
123
- .e-4db696c > .holder[variant*="bg-1"]
124
- {
125
- background: var(--dh-bg-1);
126
- }
127
-
128
- .e-4db696c > .holder[variant*="bg-2"]
129
- {
130
- background: var(--dh-bg-2);
131
- }
132
-
133
- .e-4db696c > .holder[variant*="bg-3"]
134
- {
135
- background: var(--dh-bg-3);
136
- }
137
-
138
- .e-4db696c > .holder[variant*="bg-4"]
139
- {
140
- background: var(--dh-bg-4);
141
- }
142
-
143
- .e-4db696c > .holder[variant*="bg-"]:not([variant*="vertical"])
144
- {
145
- padding: 0 var(--dh-spacing-m);
146
- }
147
-
148
- /* Variants - Border */
149
- .e-4db696c > .holder[variant*="border"]:not([variant*="border-bottom"]):not([variant*="border-full"])
150
- {
151
- border: 1px solid var(--dh-bg-2-border);
152
- }
153
-
154
- .e-4db696c > .holder[variant*="border-bottom"]
155
- {
156
- border-bottom: 1px solid var(--dh-bg-2-border);
157
- }
158
-
159
- .e-4db696c > .holder[variant*="border-full"]
160
- {
161
- border: 1px solid var(--dh-bg-2-border);
162
- }
163
-
164
- /* Variants - Radius */
165
- .e-4db696c > .holder[variant*="radius-s"]
166
- {
167
- border-radius: var(--dh-radius-s);
168
- }
169
-
170
- .e-4db696c > .holder[variant*="radius-m"]
171
- {
172
- border-radius: var(--dh-radius-m);
173
- }
174
-
175
- .e-4db696c > .holder[variant*="radius-l"]
176
- {
177
- border-radius: var(--dh-radius-l);
178
- }
179
-
180
- /* Sizes */
181
- .e-4db696c > .holder[size="s"] > .items > div > .item
182
- {
183
- font-size: var(--dh-size-s);
184
- }
185
-
186
- .e-4db696c > .holder[size="s"] > .items > div > .item > .icon
187
- {
188
- font-size: 16px;
189
- }
190
-
191
- .e-4db696c > .holder[size="s"]:not([variant*="vertical"]) > .items > div > .item
192
- {
193
- padding: var(--dh-spacing-x) 0;
194
- }
195
-
196
- .e-4db696c > .holder[size="s"][variant*="vertical"] > .items > div > .item
197
- {
198
- padding: var(--dh-spacing-x) var(--dh-spacing-m);
199
- }
200
-
201
- .e-4db696c > .holder[size="m"] > .items > div > .item
202
- {
203
- font-size: var(--dh-size-m);
204
- }
205
-
206
- .e-4db696c > .holder[size="m"] > .items > div > .item > .icon
207
- {
208
- font-size: 18px;
209
- }
210
-
211
- .e-4db696c > .holder[size="m"]:not([variant*="vertical"]) > .items > div > .item
212
- {
213
- padding: var(--dh-spacing-s) 0;
214
- }
215
-
216
- .e-4db696c > .holder[size="m"][variant*="vertical"] > .items > div > .item
217
- {
218
- padding: var(--dh-spacing-s) var(--dh-spacing-m);
219
- }
220
-
221
- .e-4db696c > .holder[size="l"] > .items > div > .item
222
- {
223
- font-size: var(--dh-size-l);
224
- }
225
-
226
- .e-4db696c > .holder[size="l"] > .items > div > .item > .icon
227
- {
228
- font-size: 20px;
229
- }
230
-
231
- .e-4db696c > .holder[size="l"]:not([variant*="vertical"]) > .items > div > .item
232
- {
233
- padding: var(--dh-spacing-m) 0;
234
- }
235
-
236
- .e-4db696c > .holder[size="l"][variant*="vertical"] > .items > div > .item
237
- {
238
- padding: var(--dh-spacing-m) var(--dh-spacing-m);
239
- }
@@ -1,76 +0,0 @@
1
- import elements from '#elements/load.js';
2
-
3
- elements.ItemAdd({
4
- id: 'tabs',
5
- icon: 'tab',
6
- name: 'Tabs',
7
- description: 'Tab navigation component with support for icons, badges, and active state management.',
8
- category: 'Navigation',
9
- author: 'Divhunt',
10
- config: {
11
- variant: {
12
- type: 'array',
13
- value: ['border-bottom'],
14
- options: ['horizontal', 'vertical', 'bg-1', 'bg-2', 'bg-3', 'bg-4', 'border', 'border-bottom', 'border-full', 'radius-s', 'radius-m', 'radius-l']
15
- },
16
- size: {
17
- type: 'string',
18
- value: 'm',
19
- options: ['s', 'm', 'l']
20
- },
21
- onClick: {
22
- type: 'function'
23
- }
24
- },
25
- render: function()
26
- {
27
- this.items = tabs.Fn('get');
28
-
29
- const update = () =>
30
- {
31
- this.items = tabs.Fn('get');
32
- };
33
-
34
- tabs.ItemOn('added', update, 'tabs');
35
- tabs.ItemOn('removed', update, 'tabs');
36
- tabs.ItemOn('modified', update, 'tabs');
37
-
38
- this.handleTabClick = (item) =>
39
- {
40
- if(item.disabled)
41
- {
42
- return;
43
- }
44
-
45
- this.items.forEach(tab =>
46
- {
47
- tabs.Item(tab.id).Set('active', tab.id === item.id);
48
- });
49
-
50
- if(this.onClick)
51
- {
52
- this.onClick(tabs.Item(item.id));
53
- }
54
- };
55
-
56
- return `
57
- <div class="holder" :variant="variant.join(' ')" :size="size">
58
- <slot name="start"></slot>
59
- <div class="items" dh-if="items.length > 0">
60
- <div dh-for="item in items">
61
- <div
62
- class="item"
63
- :active="item.active ? 'true' : 'false'"
64
- :disabled="item.disabled ? 'true' : 'false'"
65
- dh-click="() => handleTabClick(item)">
66
- <i dh-if="item.icon" class="icon">{{ item.icon }}</i>
67
- <span dh-if="item.label" class="label">{{ item.label }}</span>
68
- <span dh-if="item.badge" class="badge">{{ item.badge }}</span>
69
- </div>
70
- </div>
71
- </div>
72
- <slot name="end"></slot>
73
- </div>
74
- `;
75
- }
76
- });