@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
@@ -15,82 +15,325 @@
15
15
  width: 100%;
16
16
  }
17
17
 
18
+ /* List */
19
+
20
+ .e-29179902 .list
21
+ {
22
+ display: flex;
23
+ flex-direction: column;
24
+ width: 100%;
25
+ }
26
+
18
27
  /* Param */
19
28
 
20
- .e-29179902 > .holder > .param
29
+ .e-29179902 .param
21
30
  {
22
31
  display: flex;
23
- align-items: center;
24
- justify-content: space-between;
25
- gap: var(--ot-spacing-m);
26
- padding: var(--ot-spacing-s) 0;
32
+ flex-direction: column;
33
+ gap: var(--ot-spacing-s);
34
+ padding: var(--ot-spacing-m) 0;
27
35
  border-bottom: 1px solid var(--ot-bg-2-border);
28
36
  }
29
37
 
30
- .e-29179902 > .holder > .param:last-child
38
+ .e-29179902 .list > .param:last-child
31
39
  {
32
40
  border-bottom: none;
33
41
  }
34
42
 
35
- /* Left */
43
+ .e-29179902 .param.is-deprecated > .head > .name
44
+ {
45
+ text-decoration: line-through;
46
+ opacity: 0.55;
47
+ }
48
+
49
+ /* Head */
36
50
 
37
- .e-29179902 > .holder > .param > .left
51
+ .e-29179902 .param > .head
38
52
  {
39
53
  display: flex;
40
54
  align-items: center;
55
+ flex-wrap: wrap;
41
56
  gap: var(--ot-spacing-s);
42
57
  }
43
58
 
44
59
  /* Name */
45
60
 
46
- .e-29179902 > .holder > .param > .left > .name
61
+ .e-29179902 .param > .head > .name
47
62
  {
48
- font-size: var(--ot-size-m);
63
+ font-family: ui-monospace, 'SF Mono', Menlo, monospace;
64
+ font-size: 13.5px;
49
65
  font-weight: 600;
50
- font-family: monospace;
51
66
  color: var(--ot-text-1);
52
67
  }
53
68
 
54
- /* Type badge */
69
+ /* Type */
55
70
 
56
- .e-29179902 > .holder > .param > .left > .type
71
+ .e-29179902 .param > .head > .type
57
72
  {
58
- font-size: var(--ot-size-s);
59
- font-weight: 500;
60
- padding: var(--ot-spacing-x) var(--ot-spacing-s);
73
+ display: inline-flex;
74
+ align-items: center;
75
+ padding: 2px 8px;
61
76
  border-radius: var(--ot-radius-s);
62
77
  background: var(--ot-blue-opacity);
63
78
  color: var(--ot-blue);
79
+ font-family: ui-monospace, 'SF Mono', Menlo, monospace;
80
+ font-size: 11px;
81
+ font-weight: 600;
64
82
  }
65
83
 
66
- /* Required badge */
84
+ /* Badges */
67
85
 
68
- .e-29179902 > .holder > .param > .left > .required
86
+ .e-29179902 .param > .head > .badge
69
87
  {
70
- font-size: var(--ot-size-s);
71
- font-weight: 500;
72
- padding: var(--ot-spacing-x) var(--ot-spacing-s);
73
- border-radius: var(--ot-radius-s);
74
- background: var(--ot-orange-opacity);
75
- color: var(--ot-orange);
88
+ display: inline-flex;
89
+ align-items: center;
90
+ padding: 2px 8px;
91
+ border-radius: 100px;
92
+ font-family: var(--ot-font-primary);
93
+ font-size: 10px;
94
+ font-weight: 700;
95
+ text-transform: uppercase;
96
+ letter-spacing: 0.06em;
97
+ }
98
+
99
+ .e-29179902 .param > .head > .badge.required
100
+ {
101
+ background: var(--ot-brand-opacity);
102
+ color: var(--ot-brand);
103
+ }
104
+
105
+ .e-29179902 .param > .head > .badge.deprecated
106
+ {
107
+ background: var(--ot-red-opacity);
108
+ color: var(--ot-red);
109
+ }
110
+
111
+ .e-29179902 .param > .head > .badge.since
112
+ {
113
+ background: var(--ot-green-opacity);
114
+ color: var(--ot-green);
76
115
  }
77
116
 
78
117
  /* Description */
79
118
 
80
- .e-29179902 > .holder > .param > .description
119
+ .e-29179902 .param > .description
81
120
  {
82
- font-size: var(--ot-size-s);
121
+ font-size: 13px;
122
+ line-height: 1.6;
83
123
  color: var(--ot-text-2);
84
- text-align: right;
124
+ font-family: var(--ot-font-primary);
85
125
  }
86
126
 
87
- /* Background variants */
127
+ .e-29179902 .param > .description code
128
+ {
129
+ font-family: ui-monospace, 'SF Mono', Menlo, monospace;
130
+ font-size: 0.88em;
131
+ padding: 1px 6px;
132
+ border-radius: var(--ot-radius-s);
133
+ background: var(--ot-bg-2);
134
+ border: 1px solid var(--ot-bg-2-border);
135
+ color: var(--ot-text-1);
136
+ }
88
137
 
89
- .e-29179902 > .holder.bg-1 { background: var(--ot-bg-1); border: 1px solid var(--ot-bg-1-border); border-radius: var(--ot-radius-m); padding: var(--ot-spacing-m); }
90
- .e-29179902 > .holder.bg-2 { background: var(--ot-bg-2); border: 1px solid var(--ot-bg-2-border); border-radius: var(--ot-radius-m); padding: var(--ot-spacing-m); }
91
- .e-29179902 > .holder.bg-3 { background: var(--ot-bg-3); border: 1px solid var(--ot-bg-3-border); border-radius: var(--ot-radius-m); padding: var(--ot-spacing-m); }
92
- .e-29179902 > .holder.bg-4 { background: var(--ot-bg-4); border: 1px solid var(--ot-bg-4-border); border-radius: var(--ot-radius-m); padding: var(--ot-spacing-m); }
138
+ /* Meta rows (default, options) */
93
139
 
94
- /* Border variant */
140
+ .e-29179902 .param > .meta
141
+ {
142
+ display: flex;
143
+ align-items: center;
144
+ flex-wrap: wrap;
145
+ gap: var(--ot-spacing-s);
146
+ font-size: 12px;
147
+ }
148
+
149
+ .e-29179902 .param > .meta > .meta-label
150
+ {
151
+ font-family: var(--ot-font-primary);
152
+ font-size: 10.5px;
153
+ font-weight: 700;
154
+ text-transform: uppercase;
155
+ letter-spacing: 0.08em;
156
+ color: var(--ot-text-3);
157
+ }
158
+
159
+ .e-29179902 .param > .meta > .options
160
+ {
161
+ display: inline-flex;
162
+ align-items: center;
163
+ flex-wrap: wrap;
164
+ gap: var(--ot-spacing-x);
165
+ }
166
+
167
+ .e-29179902 .param .mono
168
+ {
169
+ display: inline-flex;
170
+ align-items: center;
171
+ padding: 2px 8px;
172
+ border-radius: var(--ot-radius-s);
173
+ background: var(--ot-bg-2);
174
+ border: 1px solid var(--ot-bg-2-border);
175
+ color: var(--ot-text-1);
176
+ font-family: ui-monospace, 'SF Mono', Menlo, monospace;
177
+ font-size: 11px;
178
+ font-weight: 500;
179
+ }
180
+
181
+ /* Nested children */
182
+
183
+ .e-29179902 .param > .children
184
+ {
185
+ position: relative;
186
+ display: flex;
187
+ flex-direction: column;
188
+ margin-top: var(--ot-spacing-s);
189
+ padding-left: var(--ot-spacing-m);
190
+ border-left: 2px solid var(--ot-bg-2-border);
191
+ }
192
+
193
+ .e-29179902 .param > .children > .param
194
+ {
195
+ padding: var(--ot-spacing-s) 0;
196
+ border-bottom: 1px dashed var(--ot-bg-2-border);
197
+ }
198
+
199
+ .e-29179902 .param > .children > .param:last-child
200
+ {
201
+ border-bottom: none;
202
+ }
203
+
204
+ /* ===== STYLE: ROWS (default) ===== */
205
+
206
+ .e-29179902 > .holder.rows
207
+ {
208
+ padding: 0;
209
+ }
210
+
211
+ /* ===== STYLE: COMPACT (single-line) ===== */
212
+
213
+ .e-29179902 > .holder.compact .param
214
+ {
215
+ flex-direction: row;
216
+ align-items: center;
217
+ flex-wrap: wrap;
218
+ gap: var(--ot-spacing-m);
219
+ padding: var(--ot-spacing-s) 0;
220
+ }
221
+
222
+ .e-29179902 > .holder.compact .param > .head
223
+ {
224
+ flex-shrink: 0;
225
+ }
226
+
227
+ .e-29179902 > .holder.compact .param > .description
228
+ {
229
+ flex: 1;
230
+ min-width: 200px;
231
+ font-size: 12.5px;
232
+ }
233
+
234
+ .e-29179902 > .holder.compact .param > .meta
235
+ {
236
+ flex-basis: 100%;
237
+ }
238
+
239
+ /* ===== STYLE: CARDS ===== */
240
+
241
+ .e-29179902 > .holder.cards .list
242
+ {
243
+ gap: var(--ot-spacing-m);
244
+ }
245
+
246
+ .e-29179902 > .holder.cards .list > .param
247
+ {
248
+ padding: var(--ot-spacing-m);
249
+ background: var(--ot-bg-2);
250
+ border: 1px solid var(--ot-bg-2-border);
251
+ border-radius: var(--ot-radius-m);
252
+ transition: border-color 0.2s cubic-bezier(0.22, 1, 0.36, 1);
253
+ }
254
+
255
+ .e-29179902 > .holder.cards .list > .param:hover
256
+ {
257
+ border-color: var(--ot-bg-3-border);
258
+ }
259
+
260
+ .e-29179902 > .holder.cards .list > .param:last-child
261
+ {
262
+ border-bottom: 1px solid var(--ot-bg-2-border);
263
+ }
264
+
265
+ /* ===== BACKGROUNDS ===== */
266
+
267
+ .e-29179902 > .holder.bg-1 { background: var(--ot-bg-1); border-radius: var(--ot-radius-m); padding: var(--ot-spacing-m); }
268
+ .e-29179902 > .holder.bg-1 .param { border-bottom-color: var(--ot-bg-1-border); }
269
+ .e-29179902 > .holder.bg-1 .param > .head > .type,
270
+ .e-29179902 > .holder.bg-1 .param .mono { background: var(--ot-bg-2); border-color: var(--ot-bg-1-border); }
271
+ .e-29179902 > .holder.bg-1.cards .list > .param { background: var(--ot-bg-2); border-color: var(--ot-bg-1-border); }
272
+ .e-29179902 > .holder.bg-1.cards .list > .param:hover { border-color: var(--ot-bg-2-border); }
273
+
274
+ .e-29179902 > .holder.bg-2 { background: var(--ot-bg-2); border-radius: var(--ot-radius-m); padding: var(--ot-spacing-m); }
275
+ .e-29179902 > .holder.bg-2 .param { border-bottom-color: var(--ot-bg-2-border); }
276
+ .e-29179902 > .holder.bg-2 .param > .head > .type,
277
+ .e-29179902 > .holder.bg-2 .param .mono { background: var(--ot-bg-1); border-color: var(--ot-bg-2-border); }
278
+ .e-29179902 > .holder.bg-2.cards .list > .param { background: var(--ot-bg-1); border-color: var(--ot-bg-2-border); }
279
+
280
+ .e-29179902 > .holder.bg-3 { background: var(--ot-bg-3); border-radius: var(--ot-radius-m); padding: var(--ot-spacing-m); }
281
+ .e-29179902 > .holder.bg-3 .param { border-bottom-color: var(--ot-bg-3-border); }
282
+ .e-29179902 > .holder.bg-3 .param > .head > .type,
283
+ .e-29179902 > .holder.bg-3 .param .mono { background: var(--ot-bg-2); border-color: var(--ot-bg-3-border); }
284
+ .e-29179902 > .holder.bg-3.cards .list > .param { background: var(--ot-bg-2); border-color: var(--ot-bg-3-border); }
285
+
286
+ .e-29179902 > .holder.bg-4 { background: var(--ot-bg-4); border-radius: var(--ot-radius-m); padding: var(--ot-spacing-m); }
287
+ .e-29179902 > .holder.bg-4 .param { border-bottom-color: var(--ot-bg-4-border); }
288
+ .e-29179902 > .holder.bg-4 .param > .head > .type,
289
+ .e-29179902 > .holder.bg-4 .param .mono { background: var(--ot-bg-3); border-color: var(--ot-bg-4-border); }
290
+ .e-29179902 > .holder.bg-4.cards .list > .param { background: var(--ot-bg-3); border-color: var(--ot-bg-4-border); }
291
+
292
+ /* ===== BORDERS ===== */
95
293
 
96
294
  .e-29179902 > .holder.border { border: 1px solid var(--ot-bg-2-border); border-radius: var(--ot-radius-m); padding: var(--ot-spacing-m); }
295
+ .e-29179902 > .holder.border-top { border-top: 1px solid var(--ot-bg-2-border); }
296
+ .e-29179902 > .holder.border-right { border-right: 1px solid var(--ot-bg-2-border); }
297
+ .e-29179902 > .holder.border-bottom { border-bottom: 1px solid var(--ot-bg-2-border); }
298
+ .e-29179902 > .holder.border-left { border-left: 1px solid var(--ot-bg-2-border); }
299
+
300
+ .e-29179902 > .holder.bg-1.border,
301
+ .e-29179902 > .holder.bg-1.border-top,
302
+ .e-29179902 > .holder.bg-1.border-right,
303
+ .e-29179902 > .holder.bg-1.border-bottom,
304
+ .e-29179902 > .holder.bg-1.border-left { border-color: var(--ot-bg-1-border); }
305
+
306
+ .e-29179902 > .holder.bg-2.border,
307
+ .e-29179902 > .holder.bg-2.border-top,
308
+ .e-29179902 > .holder.bg-2.border-right,
309
+ .e-29179902 > .holder.bg-2.border-bottom,
310
+ .e-29179902 > .holder.bg-2.border-left { border-color: var(--ot-bg-2-border); }
311
+
312
+ .e-29179902 > .holder.bg-3.border,
313
+ .e-29179902 > .holder.bg-3.border-top,
314
+ .e-29179902 > .holder.bg-3.border-right,
315
+ .e-29179902 > .holder.bg-3.border-bottom,
316
+ .e-29179902 > .holder.bg-3.border-left { border-color: var(--ot-bg-3-border); }
317
+
318
+ .e-29179902 > .holder.bg-4.border,
319
+ .e-29179902 > .holder.bg-4.border-top,
320
+ .e-29179902 > .holder.bg-4.border-right,
321
+ .e-29179902 > .holder.bg-4.border-bottom,
322
+ .e-29179902 > .holder.bg-4.border-left { border-color: var(--ot-bg-4-border); }
323
+
324
+ /* ===== SIZES ===== */
325
+
326
+ .e-29179902 > .holder.size-s .param { padding: var(--ot-spacing-s) 0; gap: var(--ot-spacing-x); }
327
+ .e-29179902 > .holder.size-s .param > .head { gap: var(--ot-spacing-x); }
328
+ .e-29179902 > .holder.size-s .param > .head > .name { font-size: 12.5px; }
329
+ .e-29179902 > .holder.size-s .param > .head > .type { font-size: 10px; padding: 1px 6px; }
330
+ .e-29179902 > .holder.size-s .param > .head > .badge { font-size: 9px; padding: 1px 6px; }
331
+ .e-29179902 > .holder.size-s .param > .description { font-size: 12px; }
332
+ .e-29179902 > .holder.size-s .param .mono { font-size: 10px; padding: 1px 6px; }
333
+
334
+ .e-29179902 > .holder.size-l .param { padding: var(--ot-spacing-l) 0; gap: var(--ot-spacing-m); }
335
+ .e-29179902 > .holder.size-l .param > .head > .name { font-size: 15px; }
336
+ .e-29179902 > .holder.size-l .param > .head > .type { font-size: 12px; padding: 3px 10px; }
337
+ .e-29179902 > .holder.size-l .param > .head > .badge { font-size: 11px; padding: 3px 10px; }
338
+ .e-29179902 > .holder.size-l .param > .description { font-size: 14px; }
339
+ .e-29179902 > .holder.size-l .param .mono { font-size: 12px; padding: 3px 10px; }
@@ -4,7 +4,7 @@ onetype.AddonReady('elements', (elements) =>
4
4
  id: 'global-parameters',
5
5
  icon: 'list',
6
6
  name: 'Parameters',
7
- description: 'Parameter list with name, type, required badge, and description.',
7
+ description: 'Rich parameter list with types, defaults, enums, nested properties and multiple styles.',
8
8
  category: 'Global',
9
9
  author: 'OneType',
10
10
  config: {
@@ -14,31 +14,101 @@ onetype.AddonReady('elements', (elements) =>
14
14
  each: {
15
15
  type: 'object',
16
16
  config: {
17
- name: { type: 'string', value: '' },
18
- type: { type: 'string', value: '' },
19
- required: { type: 'boolean', value: false },
20
- description: { type: 'string', value: '' }
17
+ name: { type: 'string' },
18
+ type: { type: 'string' },
19
+ required: { type: 'boolean' },
20
+ deprecated: { type: 'boolean' },
21
+ since: { type: 'string' },
22
+ default: { type: 'string|number|boolean' },
23
+ description: { type: 'string' },
24
+ options: { type: 'array' },
25
+ children: { type: 'array' }
21
26
  }
22
27
  }
23
28
  },
24
29
  variant: {
25
30
  type: 'array',
26
- value: [],
27
- options: ['bg-1', 'bg-2', 'bg-3', 'bg-4', 'border']
31
+ value: ['rows', 'size-m'],
32
+ options: ['rows', 'compact', 'cards', 'bg-1', 'bg-2', 'bg-3', 'bg-4', 'border', 'border-top', 'border-right', 'border-bottom', 'border-left', 'size-s', 'size-m', 'size-l']
28
33
  }
29
34
  },
30
35
  render: function()
31
36
  {
32
- return `
37
+ const styles = ['rows', 'compact', 'cards'];
38
+ const hasStyle = this.variant.some(v => styles.includes(v));
39
+
40
+ if(!hasStyle)
41
+ {
42
+ this.variant = ['rows', ...this.variant];
43
+ }
44
+
45
+ this.formatDefault = (value) =>
46
+ {
47
+ if(value === null || value === undefined || value === '')
48
+ {
49
+ return '';
50
+ }
51
+
52
+ if(typeof value === 'string')
53
+ {
54
+ return '"' + value + '"';
55
+ }
56
+
57
+ return String(value);
58
+ };
59
+
60
+ this.renderItem = (item, depth) =>
61
+ {
62
+ const hasDefault = item.default !== undefined && item.default !== null && item.default !== '';
63
+ const hasOptions = item.options && item.options.length > 0;
64
+ const hasChildren = item.children && item.children.length > 0;
65
+ const hasDescription = !!item.description;
66
+
67
+ const typeBadge = item.type ? '<span class="type">' + item.type + '</span>' : '';
68
+ const requiredBadge = item.required ? '<span class="badge required">required</span>' : '';
69
+ const deprecatedBadge = item.deprecated ? '<span class="badge deprecated">deprecated</span>' : '';
70
+ const sinceBadge = item.since ? '<span class="badge since">' + item.since + '</span>' : '';
71
+
72
+ const head = '<div class="head">'
73
+ + '<span class="name">' + (item.name || '') + '</span>'
74
+ + typeBadge
75
+ + requiredBadge
76
+ + deprecatedBadge
77
+ + sinceBadge
78
+ + '</div>';
79
+
80
+ const description = hasDescription
81
+ ? '<div class="description">' + item.description + '</div>'
82
+ : '';
83
+
84
+ const defaultRow = hasDefault
85
+ ? '<div class="meta"><span class="meta-label">Default</span><code class="mono">' + this.formatDefault(item.default) + '</code></div>'
86
+ : '';
87
+
88
+ const optionsRow = hasOptions
89
+ ? '<div class="meta"><span class="meta-label">Options</span><span class="options">'
90
+ + item.options.map(o => '<code class="mono">' + o + '</code>').join('')
91
+ + '</span></div>'
92
+ : '';
93
+
94
+ const childrenList = hasChildren
95
+ ? '<div class="children">' + item.children.map(c => this.renderItem(c, depth + 1)).join('') + '</div>'
96
+ : '';
97
+
98
+ return '<div class="param' + (item.deprecated ? ' is-deprecated' : '') + '" data-depth="' + depth + '">'
99
+ + head
100
+ + description
101
+ + defaultRow
102
+ + optionsRow
103
+ + childrenList
104
+ + '</div>';
105
+ };
106
+
107
+ this.html = this.items.map(item => this.renderItem(item, 0)).join('');
108
+
109
+ return /* html */ `
33
110
  <div :class="'holder ' + variant.join(' ')">
34
- <div ot-for="item in items" class="param">
35
- <div class="left">
36
- <span class="name">{{ item.name }}</span>
37
- <span class="type">{{ item.type }}</span>
38
- <span ot-if="item.required" class="required">required</span>
39
- </div>
40
- <span ot-if="item.description" class="description">{{ item.description }}</span>
41
- </div>
111
+ <div class="list" ot-html="html"></div>
42
112
  </div>
43
113
  `;
44
114
  }