@onetype/framework 2.0.53 → 2.0.54

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 (150) hide show
  1. package/addons/float/popup/css/popup.css +2 -2
  2. package/addons/render/directives/front/functions/process.js +3 -1
  3. package/addons/render/directives/front/items/self/160-slot.js +9 -1
  4. package/addons/render/editor/addon.js +13 -0
  5. package/addons/render/editor/functions/block/add.js +57 -0
  6. package/addons/render/editor/functions/block/delete.js +32 -0
  7. package/addons/render/editor/functions/block/find.js +30 -0
  8. package/addons/render/editor/functions/render/block.js +114 -0
  9. package/addons/render/editor/functions/render/blocks.js +31 -0
  10. package/addons/render/editor/items/elements/editor.js +69 -0
  11. package/addons/render/editor/items/self/paragraph.js +21 -0
  12. package/addons/render/editor/styles/editor.css +252 -0
  13. package/addons/render/elements/front/functions/types/colors/badge.js +19 -0
  14. package/addons/render/elements/front/functions/types/colors/status.js +24 -0
  15. package/addons/render/elements/front/functions/types/escape.js +8 -0
  16. package/addons/render/elements/front/functions/types/format/currency.js +16 -0
  17. package/addons/render/elements/front/functions/types/format/date.js +16 -0
  18. package/addons/render/elements/front/functions/types/format/number.js +24 -0
  19. package/addons/render/elements/front/functions/types/format/timeago.js +43 -0
  20. package/addons/render/elements/front/functions/types/render/avatar.js +10 -0
  21. package/addons/render/elements/front/functions/types/render/badge.js +17 -0
  22. package/addons/render/elements/front/functions/types/render/boolean.js +8 -0
  23. package/addons/render/elements/front/functions/types/render/chip.js +6 -0
  24. package/addons/render/elements/front/functions/types/render/currency.js +7 -0
  25. package/addons/render/elements/front/functions/types/render/date.js +6 -0
  26. package/addons/render/elements/front/functions/types/render/description.js +12 -0
  27. package/addons/render/elements/front/functions/types/render/group.js +11 -0
  28. package/addons/render/elements/front/functions/types/render/icon.js +8 -0
  29. package/addons/render/elements/front/functions/types/render/image.js +9 -0
  30. package/addons/render/elements/front/functions/types/render/link.js +8 -0
  31. package/addons/render/elements/front/functions/types/render/media.js +16 -0
  32. package/addons/render/elements/front/functions/types/render/metric.js +13 -0
  33. package/addons/render/elements/front/functions/types/render/number.js +6 -0
  34. package/addons/render/elements/front/functions/types/render/progress.js +13 -0
  35. package/addons/render/elements/front/functions/types/render/status.js +12 -0
  36. package/addons/render/elements/front/functions/types/render/tag.js +6 -0
  37. package/addons/render/elements/front/functions/types/render/tags.js +11 -0
  38. package/addons/render/elements/front/functions/types/render/text.js +8 -0
  39. package/addons/render/elements/front/functions/types/render/timeago.js +6 -0
  40. package/addons/render/elements/front/functions/types/render.js +16 -0
  41. package/addons/render/elements/front/items/directives/element.js +8 -3
  42. package/addons/render/elements/front/items/self/cards/info/info.css +499 -0
  43. package/addons/render/elements/front/items/self/cards/info/info.js +224 -0
  44. package/addons/render/elements/front/items/self/cards/item/item.css +614 -0
  45. package/addons/render/elements/front/items/self/cards/item/item.js +200 -0
  46. package/addons/render/elements/front/items/self/cards/pricing/pricing.css +318 -46
  47. package/addons/render/elements/front/items/self/cards/pricing/pricing.js +81 -30
  48. package/addons/render/elements/front/items/self/cards/profile/profile.css +446 -0
  49. package/addons/render/elements/front/items/self/cards/profile/profile.js +186 -0
  50. package/addons/render/elements/front/items/self/cards/share/share.css +445 -0
  51. package/addons/render/elements/front/items/self/cards/share/share.js +316 -0
  52. package/addons/render/elements/front/items/self/cards/stat/stat.css +356 -0
  53. package/addons/render/elements/front/items/self/cards/stat/stat.js +146 -0
  54. package/addons/render/elements/front/items/self/charts/bar/bar.css +263 -0
  55. package/addons/render/elements/front/items/self/charts/bar/bar.js +156 -0
  56. package/addons/render/elements/front/items/self/charts/donut/donut.css +222 -0
  57. package/addons/render/elements/front/items/self/charts/donut/donut.js +164 -0
  58. package/addons/render/elements/front/items/self/charts/line/line.css +229 -0
  59. package/addons/render/elements/front/items/self/charts/line/line.js +249 -0
  60. package/addons/render/elements/front/items/self/charts/sparkline/sparkline.css +102 -0
  61. package/addons/render/elements/front/items/self/charts/sparkline/sparkline.js +164 -0
  62. package/addons/render/elements/front/items/self/core/builder/builder.css +71 -116
  63. package/addons/render/elements/front/items/self/core/builder/builder.js +212 -127
  64. package/addons/render/elements/front/items/self/core/repeater/repeater.css +338 -71
  65. package/addons/render/elements/front/items/self/core/repeater/repeater.js +191 -44
  66. package/addons/render/elements/front/items/self/data/filters/filters.css +541 -0
  67. package/addons/render/elements/front/items/self/data/filters/filters.js +504 -0
  68. package/addons/render/elements/front/items/self/data/table/table.css +588 -0
  69. package/addons/render/elements/front/items/self/data/table/table.js +589 -0
  70. package/addons/render/elements/front/items/self/form/button/button.css +430 -103
  71. package/addons/render/elements/front/items/self/form/button/button.js +109 -101
  72. package/addons/render/elements/front/items/self/form/checkbox/checkbox.css +356 -39
  73. package/addons/render/elements/front/items/self/form/checkbox/checkbox.js +109 -75
  74. package/addons/render/elements/front/items/self/form/color/color.css +255 -61
  75. package/addons/render/elements/front/items/self/form/color/color.js +135 -41
  76. package/addons/render/elements/front/items/self/form/date/date.css +289 -38
  77. package/addons/render/elements/front/items/self/form/date/date.js +108 -24
  78. package/addons/render/elements/front/items/self/form/editor/editor.css +447 -0
  79. package/addons/render/elements/front/items/self/form/editor/editor.js +794 -0
  80. package/addons/render/elements/front/items/self/form/field/field.css +160 -29
  81. package/addons/render/elements/front/items/self/form/field/field.js +36 -16
  82. package/addons/render/elements/front/items/self/form/input/input.css +272 -32
  83. package/addons/render/elements/front/items/self/form/input/input.js +324 -124
  84. package/addons/render/elements/front/items/self/form/radio/radio.css +310 -45
  85. package/addons/render/elements/front/items/self/form/radio/radio.js +99 -80
  86. package/addons/render/elements/front/items/self/form/rating/rating.css +234 -57
  87. package/addons/render/elements/front/items/self/form/rating/rating.js +216 -86
  88. package/addons/render/elements/front/items/self/form/section/section.css +247 -32
  89. package/addons/render/elements/front/items/self/form/section/section.js +53 -16
  90. package/addons/render/elements/front/items/self/form/select/select.css +362 -64
  91. package/addons/render/elements/front/items/self/form/select/select.js +156 -30
  92. package/addons/render/elements/front/items/self/form/slider/slider.css +331 -123
  93. package/addons/render/elements/front/items/self/form/slider/slider.js +124 -26
  94. package/addons/render/elements/front/items/self/form/tags/tags.css +328 -53
  95. package/addons/render/elements/front/items/self/form/tags/tags.js +155 -28
  96. package/addons/render/elements/front/items/self/form/textarea/textarea.css +128 -27
  97. package/addons/render/elements/front/items/self/form/textarea/textarea.js +172 -113
  98. package/addons/render/elements/front/items/self/form/toggle/toggle.css +239 -39
  99. package/addons/render/elements/front/items/self/form/toggle/toggle.js +32 -17
  100. package/addons/render/elements/front/items/self/form/transfer/transfer.css +377 -0
  101. package/addons/render/elements/front/items/self/form/transfer/transfer.js +453 -0
  102. package/addons/render/elements/front/items/self/form/upload/upload.css +408 -0
  103. package/addons/render/elements/front/items/self/form/upload/upload.js +469 -0
  104. package/addons/render/elements/front/items/self/global/accordion/accordion.css +377 -0
  105. package/addons/render/elements/front/items/self/global/accordion/accordion.js +135 -0
  106. package/addons/render/elements/front/items/self/global/code/code.css +207 -44
  107. package/addons/render/elements/front/items/self/global/code/code.js +327 -19
  108. package/addons/render/elements/front/items/self/global/gallery/gallery.css +521 -0
  109. package/addons/render/elements/front/items/self/global/gallery/gallery.js +291 -0
  110. package/addons/render/elements/front/items/self/global/heading/heading.css +151 -49
  111. package/addons/render/elements/front/items/self/global/heading/heading.js +30 -15
  112. package/addons/render/elements/front/items/self/global/markdown/markdown.css +284 -135
  113. package/addons/render/elements/front/items/self/global/markdown/markdown.js +35 -5
  114. package/addons/render/elements/front/items/self/global/menu/menu.css +311 -56
  115. package/addons/render/elements/front/items/self/global/menu/menu.js +95 -47
  116. package/addons/render/elements/front/items/self/global/notice/notice.css +263 -23
  117. package/addons/render/elements/front/items/self/global/notice/notice.js +51 -11
  118. package/addons/render/elements/front/items/self/global/parameters/parameters.css +276 -33
  119. package/addons/render/elements/front/items/self/global/parameters/parameters.js +86 -16
  120. package/addons/render/elements/front/items/self/global/tags/tags.css +215 -29
  121. package/addons/render/elements/front/items/self/global/tags/tags.js +91 -17
  122. package/addons/render/elements/front/items/self/navigation/dock/dock.css +221 -0
  123. package/addons/render/elements/front/items/self/navigation/dock/dock.js +134 -0
  124. package/addons/render/elements/front/items/self/navigation/footer/footer.css +356 -0
  125. package/addons/render/elements/front/items/self/navigation/footer/footer.js +219 -0
  126. package/addons/render/elements/front/items/self/navigation/navbar/navbar.css +736 -76
  127. package/addons/render/elements/front/items/self/navigation/navbar/navbar.js +437 -29
  128. package/addons/render/elements/front/items/self/navigation/sidebar/sidebar.css +327 -196
  129. package/addons/render/elements/front/items/self/navigation/sidebar/sidebar.js +115 -62
  130. package/addons/render/elements/front/items/self/navigation/steps/steps.css +345 -0
  131. package/addons/render/elements/front/items/self/navigation/steps/steps.js +113 -0
  132. package/addons/render/elements/front/items/self/navigation/tabs/tabs.css +507 -33
  133. package/addons/render/elements/front/items/self/navigation/tabs/tabs.js +62 -19
  134. package/addons/render/elements/front/items/self/status/code/code.css +83 -12
  135. package/addons/render/elements/front/items/self/status/code/code.js +15 -4
  136. package/addons/render/elements/front/items/self/status/empty/empty.css +95 -15
  137. package/addons/render/elements/front/items/self/status/empty/empty.js +17 -12
  138. package/addons/render/elements/front/items/self/status/error/error.css +99 -14
  139. package/addons/render/elements/front/items/self/status/error/error.js +21 -11
  140. package/addons/render/elements/front/items/self/status/loading/loading.css +85 -14
  141. package/addons/render/elements/front/items/self/status/loading/loading.js +5 -6
  142. package/addons/render/elements/front/styles/types.css +363 -0
  143. package/instructions.txt +28 -0
  144. package/lib/load.js +1 -0
  145. package/lib/styles/reset.css +89 -76
  146. package/package.json +1 -1
  147. package/addons/render/elements/front/items/self/form/editor-markdown/editor-markdown.css +0 -410
  148. package/addons/render/elements/front/items/self/form/editor-markdown/editor-markdown.js +0 -191
  149. package/addons/render/elements/front/items/self/global/faq/faq.css +0 -98
  150. package/addons/render/elements/front/items/self/global/faq/faq.js +0 -56
@@ -10,48 +10,288 @@
10
10
 
11
11
  .e-2e3de5ec > .holder
12
12
  {
13
+ position: relative;
13
14
  display: flex;
14
- align-items: center;
15
- gap: var(--ot-spacing-s);
15
+ align-items: flex-start;
16
+ gap: var(--ot-spacing-m);
16
17
  width: 100%;
17
- padding: var(--ot-spacing-s) var(--ot-spacing-m);
18
+ padding: var(--ot-spacing-m);
18
19
  border-radius: var(--ot-radius-m);
19
- font-size: var(--ot-size-s);
20
20
  border: 1px solid transparent;
21
+ font-family: var(--ot-font-primary);
21
22
  }
22
23
 
23
24
  /* Icon */
24
25
 
25
26
  .e-2e3de5ec > .holder > .icon
26
27
  {
27
- font-size: var(--ot-size-m);
28
+ font-size: 20px;
28
29
  flex-shrink: 0;
30
+ line-height: 1.3;
31
+ font-variation-settings: 'FILL' 1;
32
+ }
33
+
34
+ /* Body */
35
+
36
+ .e-2e3de5ec > .holder > .body
37
+ {
38
+ flex: 1;
39
+ min-width: 0;
40
+ display: flex;
41
+ flex-direction: column;
42
+ gap: 2px;
29
43
  }
30
44
 
31
- /* Text */
45
+ .e-2e3de5ec > .holder > .body > .title
46
+ {
47
+ font-size: 13px;
48
+ font-weight: 600;
49
+ line-height: 1.3;
50
+ }
51
+
52
+ .e-2e3de5ec > .holder > .body > .text
53
+ {
54
+ font-size: 12.5px;
55
+ line-height: 1.5;
56
+ opacity: 0.85;
57
+ }
58
+
59
+ /* Actions slot */
60
+
61
+ .e-2e3de5ec > .holder > .actions
62
+ {
63
+ display: flex;
64
+ align-items: center;
65
+ gap: var(--ot-spacing-s);
66
+ flex-shrink: 0;
67
+ }
32
68
 
33
- .e-2e3de5ec > .holder > .text
69
+ .e-2e3de5ec > .holder > .actions:empty
34
70
  {
35
- line-height: 1.4;
71
+ display: none;
36
72
  }
37
73
 
38
- /* Color variants */
74
+ /* Close button */
39
75
 
40
- .e-2e3de5ec > .holder.red { background: var(--ot-red-opacity); border-color: var(--ot-red-border); color: var(--ot-red); }
41
- .e-2e3de5ec > .holder.green { background: var(--ot-green-opacity); border-color: var(--ot-green-border); color: var(--ot-green); }
42
- .e-2e3de5ec > .holder.blue { background: var(--ot-blue-opacity); border-color: var(--ot-blue-border); color: var(--ot-blue); }
43
- .e-2e3de5ec > .holder.orange { background: var(--ot-orange-opacity); border-color: var(--ot-orange-border); color: var(--ot-orange); }
44
- .e-2e3de5ec > .holder.brand { background: var(--ot-brand-opacity); border-color: var(--ot-brand-border); color: var(--ot-brand); }
76
+ .e-2e3de5ec > .holder > .close
77
+ {
78
+ display: inline-flex;
79
+ align-items: center;
80
+ justify-content: center;
81
+ width: 28px;
82
+ height: 28px;
83
+ padding: 0;
84
+ background: transparent;
85
+ border: none;
86
+ border-radius: var(--ot-radius-s);
87
+ color: currentColor;
88
+ cursor: pointer;
89
+ flex-shrink: 0;
90
+ opacity: 0.6;
91
+ transition: background 0.15s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.15s cubic-bezier(0.22, 1, 0.36, 1);
92
+ }
45
93
 
46
- /* Background variants */
94
+ .e-2e3de5ec > .holder > .close:hover
95
+ {
96
+ background: currentColor;
97
+ opacity: 0.15;
98
+ }
99
+
100
+ .e-2e3de5ec > .holder > .close > i
101
+ {
102
+ font-size: 18px;
103
+ }
47
104
 
48
- .e-2e3de5ec > .holder.bg-1 { background: var(--ot-bg-1); border-color: var(--ot-bg-1-border); color: var(--ot-text-2); }
49
- .e-2e3de5ec > .holder.bg-2 { background: var(--ot-bg-2); border-color: var(--ot-bg-2-border); color: var(--ot-text-2); }
50
- .e-2e3de5ec > .holder.bg-3 { background: var(--ot-bg-3); border-color: var(--ot-bg-3-border); color: var(--ot-text-2); }
51
- .e-2e3de5ec > .holder.bg-4 { background: var(--ot-bg-4); border-color: var(--ot-bg-4-border); color: var(--ot-text-2); }
105
+ /* ===== COLOR VARIANTS (opacity backgrounds) ===== */
106
+
107
+ .e-2e3de5ec > .holder.red
108
+ {
109
+ background: var(--ot-red-opacity);
110
+ border-color: var(--ot-red-border);
111
+ color: var(--ot-red);
112
+ }
113
+
114
+ .e-2e3de5ec > .holder.green
115
+ {
116
+ background: var(--ot-green-opacity);
117
+ border-color: var(--ot-green-border);
118
+ color: var(--ot-green);
119
+ }
120
+
121
+ .e-2e3de5ec > .holder.blue
122
+ {
123
+ background: var(--ot-blue-opacity);
124
+ border-color: var(--ot-blue-border);
125
+ color: var(--ot-blue);
126
+ }
127
+
128
+ .e-2e3de5ec > .holder.orange
129
+ {
130
+ background: var(--ot-orange-opacity);
131
+ border-color: var(--ot-orange-border);
132
+ color: var(--ot-orange);
133
+ }
134
+
135
+ .e-2e3de5ec > .holder.brand
136
+ {
137
+ background: var(--ot-brand-opacity);
138
+ border-color: var(--ot-brand-border);
139
+ color: var(--ot-brand);
140
+ }
141
+
142
+ .e-2e3de5ec > .holder.red > .body > .title,
143
+ .e-2e3de5ec > .holder.green > .body > .title,
144
+ .e-2e3de5ec > .holder.blue > .body > .title,
145
+ .e-2e3de5ec > .holder.orange > .body > .title,
146
+ .e-2e3de5ec > .holder.brand > .body > .title
147
+ {
148
+ color: inherit;
149
+ }
150
+
151
+ .e-2e3de5ec > .holder.red > .body > .text,
152
+ .e-2e3de5ec > .holder.green > .body > .text,
153
+ .e-2e3de5ec > .holder.blue > .body > .text,
154
+ .e-2e3de5ec > .holder.orange > .body > .text,
155
+ .e-2e3de5ec > .holder.brand > .body > .text
156
+ {
157
+ color: var(--ot-text-1);
158
+ opacity: 0.85;
159
+ }
160
+
161
+ /* ===== FILLED VARIANT (solid color) ===== */
162
+
163
+ .e-2e3de5ec > .holder.filled.red { background: var(--ot-red); border-color: var(--ot-red); color: white; }
164
+ .e-2e3de5ec > .holder.filled.green { background: var(--ot-green); border-color: var(--ot-green); color: white; }
165
+ .e-2e3de5ec > .holder.filled.blue { background: var(--ot-blue); border-color: var(--ot-blue); color: white; }
166
+ .e-2e3de5ec > .holder.filled.orange { background: var(--ot-orange); border-color: var(--ot-orange); color: white; }
167
+ .e-2e3de5ec > .holder.filled.brand { background: var(--ot-brand); border-color: var(--ot-brand); color: white; }
168
+
169
+ .e-2e3de5ec > .holder.filled > .body > .title,
170
+ .e-2e3de5ec > .holder.filled > .body > .text
171
+ {
172
+ color: white;
173
+ }
174
+
175
+ .e-2e3de5ec > .holder.filled > .body > .text
176
+ {
177
+ opacity: 0.9;
178
+ }
52
179
 
53
- /* Size variants */
180
+ /* ===== ACCENT VARIANT (left border accent bar) ===== */
54
181
 
55
- .e-2e3de5ec > .holder.size-s { padding: var(--ot-spacing-x) var(--ot-spacing-s); font-size: var(--ot-size-s); }
56
- .e-2e3de5ec > .holder.size-m { padding: var(--ot-spacing-s) var(--ot-spacing-m); font-size: var(--ot-size-m); }
57
- .e-2e3de5ec > .holder.size-l { padding: var(--ot-spacing-m) var(--ot-spacing-l); font-size: var(--ot-size-m); }
182
+ .e-2e3de5ec > .holder.accent
183
+ {
184
+ border-left-width: 3px;
185
+ border-top-left-radius: 0;
186
+ border-bottom-left-radius: 0;
187
+ }
188
+
189
+ .e-2e3de5ec > .holder.accent.red { border-left-color: var(--ot-red); }
190
+ .e-2e3de5ec > .holder.accent.green { border-left-color: var(--ot-green); }
191
+ .e-2e3de5ec > .holder.accent.blue { border-left-color: var(--ot-blue); }
192
+ .e-2e3de5ec > .holder.accent.orange { border-left-color: var(--ot-orange); }
193
+ .e-2e3de5ec > .holder.accent.brand { border-left-color: var(--ot-brand); }
194
+
195
+ /* ===== BACKGROUND VARIANTS (neutral) ===== */
196
+
197
+ .e-2e3de5ec > .holder.bg-1
198
+ {
199
+ background: var(--ot-bg-1);
200
+ border-color: var(--ot-bg-1-border);
201
+ color: var(--ot-text-2);
202
+ }
203
+
204
+ .e-2e3de5ec > .holder.bg-2
205
+ {
206
+ background: var(--ot-bg-2);
207
+ border-color: var(--ot-bg-2-border);
208
+ color: var(--ot-text-2);
209
+ }
210
+
211
+ .e-2e3de5ec > .holder.bg-3
212
+ {
213
+ background: var(--ot-bg-3);
214
+ border-color: var(--ot-bg-3-border);
215
+ color: var(--ot-text-2);
216
+ }
217
+
218
+ .e-2e3de5ec > .holder.bg-4
219
+ {
220
+ background: var(--ot-bg-4);
221
+ border-color: var(--ot-bg-4-border);
222
+ color: var(--ot-text-2);
223
+ }
224
+
225
+ .e-2e3de5ec > .holder.bg-1 > .body > .title,
226
+ .e-2e3de5ec > .holder.bg-2 > .body > .title,
227
+ .e-2e3de5ec > .holder.bg-3 > .body > .title,
228
+ .e-2e3de5ec > .holder.bg-4 > .body > .title
229
+ {
230
+ color: var(--ot-text-1);
231
+ }
232
+
233
+ /* ===== SIZES ===== */
234
+
235
+ .e-2e3de5ec > .holder.size-s
236
+ {
237
+ padding: var(--ot-spacing-s) var(--ot-spacing-m);
238
+ gap: var(--ot-spacing-s);
239
+ }
240
+
241
+ .e-2e3de5ec > .holder.size-s > .icon
242
+ {
243
+ font-size: 17px;
244
+ }
245
+
246
+ .e-2e3de5ec > .holder.size-s > .body > .title
247
+ {
248
+ font-size: 12px;
249
+ }
250
+
251
+ .e-2e3de5ec > .holder.size-s > .body > .text
252
+ {
253
+ font-size: 11.5px;
254
+ }
255
+
256
+ .e-2e3de5ec > .holder.size-s > .close
257
+ {
258
+ width: 24px;
259
+ height: 24px;
260
+ }
261
+
262
+ .e-2e3de5ec > .holder.size-s > .close > i
263
+ {
264
+ font-size: 15px;
265
+ }
266
+
267
+ .e-2e3de5ec > .holder.size-l
268
+ {
269
+ padding: var(--ot-spacing-l);
270
+ gap: var(--ot-spacing-m);
271
+ }
272
+
273
+ .e-2e3de5ec > .holder.size-l > .icon
274
+ {
275
+ font-size: 24px;
276
+ }
277
+
278
+ .e-2e3de5ec > .holder.size-l > .body > .title
279
+ {
280
+ font-size: 15px;
281
+ }
282
+
283
+ .e-2e3de5ec > .holder.size-l > .body > .text
284
+ {
285
+ font-size: 13.5px;
286
+ }
287
+
288
+ .e-2e3de5ec > .holder.size-l > .close
289
+ {
290
+ width: 32px;
291
+ height: 32px;
292
+ }
293
+
294
+ .e-2e3de5ec > .holder.size-l > .close > i
295
+ {
296
+ font-size: 20px;
297
+ }
@@ -1,33 +1,73 @@
1
1
  onetype.AddonReady('elements', (elements) =>
2
2
  {
3
+ const DEFAULT_ICONS = {
4
+ red: 'error',
5
+ orange: 'warning',
6
+ green: 'check_circle',
7
+ blue: 'info',
8
+ brand: 'bolt'
9
+ };
10
+
3
11
  elements.ItemAdd({
4
12
  id: 'global-notice',
5
13
  icon: 'info',
6
14
  name: 'Notice',
7
- description: 'Notice banner with icon, text, and color variants.',
15
+ description: 'Notice banner with icon, title, text, actions slot and close button.',
8
16
  category: 'Global',
9
17
  author: 'OneType',
10
18
  config: {
11
19
  icon: {
12
- type: 'string',
13
- value: 'info'
20
+ type: 'string'
21
+ },
22
+ title: {
23
+ type: 'string'
14
24
  },
15
25
  text: {
16
- type: 'string',
17
- value: ''
26
+ type: 'string'
27
+ },
28
+ closable: {
29
+ type: 'boolean'
18
30
  },
19
31
  variant: {
20
32
  type: 'array',
21
- value: ['red'],
22
- options: ['red', 'green', 'blue', 'orange', 'brand', 'bg-1', 'bg-2', 'bg-3', 'bg-4', 'size-s', 'size-m', 'size-l']
33
+ value: ['blue', 'size-m'],
34
+ options: ['red', 'green', 'blue', 'orange', 'brand', 'bg-1', 'bg-2', 'bg-3', 'bg-4', 'filled', 'accent', 'size-s', 'size-m', 'size-l']
35
+ },
36
+ _close: {
37
+ type: 'function'
23
38
  }
24
39
  },
25
40
  render: function()
26
41
  {
27
- return `
28
- <div :class="'holder ' + variant.join(' ')">
29
- <i ot-if="icon" class="icon">{{ icon }}</i>
30
- <span class="text">{{ text }}</span>
42
+ this.hasActions = !!this.Slots.actions;
43
+ this.closed = false;
44
+
45
+ const color = this.variant.find(v => DEFAULT_ICONS[v]);
46
+ this.resolvedIcon = this.icon || (color ? DEFAULT_ICONS[color] : 'info');
47
+
48
+ this.close = (event) =>
49
+ {
50
+ this.closed = true;
51
+
52
+ if(this._close)
53
+ {
54
+ this._close({ event });
55
+ }
56
+ };
57
+
58
+ return /* html */ `
59
+ <div ot-if="!closed" :class="'holder ' + variant.join(' ')">
60
+ <i class="icon">{{ resolvedIcon }}</i>
61
+ <div class="body">
62
+ <div ot-if="title" class="title">{{ title }}</div>
63
+ <div ot-if="text" class="text">{{ text }}</div>
64
+ </div>
65
+ <div ot-if="hasActions" class="actions">
66
+ <slot name="actions"></slot>
67
+ </div>
68
+ <button ot-if="closable" type="button" class="close" ot-click="close">
69
+ <i>close</i>
70
+ </button>
31
71
  </div>
32
72
  `;
33
73
  }