@kupola/kupola 1.2.0 → 1.4.0

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 (111) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +330 -286
  3. package/adapters/axios.d.ts +34 -0
  4. package/adapters/axios.js +122 -0
  5. package/adapters/navios-http.d.ts +110 -0
  6. package/adapters/navios-http.js +151 -0
  7. package/css/components-ext.css +157 -0
  8. package/css/components.css +69 -0
  9. package/css/theme-dark.css +5 -5
  10. package/css/utilities.css +119 -1
  11. package/dist/css/accessibility.css +119 -0
  12. package/dist/css/animations.css +224 -0
  13. package/dist/css/brand-themes.css +300 -0
  14. package/dist/css/colors_and_type.css +441 -0
  15. package/dist/css/components-ext.css +4165 -0
  16. package/dist/css/components.css +1483 -0
  17. package/dist/css/kupola.css +1 -12
  18. package/dist/css/kupola.min.css +1 -0
  19. package/dist/css/responsive.css +697 -0
  20. package/dist/css/scaffold.css +145 -0
  21. package/dist/css/states.css +316 -0
  22. package/dist/css/theme-dark.css +296 -0
  23. package/dist/css/theme-light.css +296 -0
  24. package/dist/css/utilities.css +171 -0
  25. package/dist/icons.svg +284 -0
  26. package/dist/kupola.cjs.js +17409 -257
  27. package/dist/kupola.cjs.js.map +1 -1
  28. package/dist/kupola.css +9000 -0
  29. package/dist/kupola.esm.js +17183 -7597
  30. package/dist/kupola.esm.js.map +1 -1
  31. package/dist/kupola.min.css +1 -0
  32. package/dist/kupola.min.js +2 -0
  33. package/dist/kupola.min.js.map +1 -0
  34. package/dist/kupola.umd.js +17415 -257
  35. package/dist/kupola.umd.js.map +1 -1
  36. package/dist/plugins/vite-plugin-kupola.js +120 -0
  37. package/dist/types/kupola.d.ts +421 -323
  38. package/js/calendar.js +334 -25
  39. package/js/carousel.js +182 -48
  40. package/js/collapse.js +148 -34
  41. package/js/color-picker.js +416 -108
  42. package/js/component.js +8 -19
  43. package/js/countdown.js +9 -8
  44. package/js/data-bind.js +73 -16
  45. package/js/datepicker.js +488 -110
  46. package/js/depends.js +710 -0
  47. package/js/dialog.js +4 -2
  48. package/js/drawer.js +172 -8
  49. package/js/dropdown.js +272 -17
  50. package/js/dynamic-tags.js +156 -40
  51. package/js/fileupload.js +9 -8
  52. package/js/form.js +280 -254
  53. package/js/global-events.js +281 -188
  54. package/js/heatmap.js +10 -7
  55. package/js/i18n.js +18 -10
  56. package/js/icons.js +141 -161
  57. package/js/image-preview.js +146 -2
  58. package/js/initializer.js +151 -71
  59. package/js/kupola-core.js +123 -45
  60. package/js/kupola-lifecycle.js +13 -11
  61. package/js/message.js +8 -1
  62. package/js/modal.js +207 -59
  63. package/js/notification.js +8 -1
  64. package/js/numberinput.js +9 -8
  65. package/js/pagination.js +263 -0
  66. package/js/registry.js +29 -12
  67. package/js/select.js +482 -27
  68. package/js/slide-captcha.js +11 -2
  69. package/js/slider.js +442 -25
  70. package/js/statcard.js +9 -7
  71. package/js/table.js +1210 -0
  72. package/js/tag.js +268 -14
  73. package/js/theme-standalone.js +88 -0
  74. package/js/theme.js +14 -43
  75. package/js/timepicker.js +335 -66
  76. package/js/tooltip.js +317 -86
  77. package/js/utils.js +6 -2
  78. package/js/validation.js +6 -2
  79. package/js/virtual-list.js +11 -7
  80. package/js/web-components.js +288 -0
  81. package/package.json +81 -67
  82. package/plugins/vite-plugin-kupola.js +120 -0
  83. package/scripts/build-css.cjs +113 -0
  84. package/scripts/build-svg-sprite.cjs +107 -0
  85. package/types/kupola.d.ts +421 -323
  86. package/CHANGELOG.md +0 -130
  87. package/INTEGRATION.md +0 -440
  88. package/PROJECT_SUMMARY.md +0 -312
  89. package/SKILL.md +0 -572
  90. package/dist/utils/utils/Kupola.cs +0 -77
  91. package/dist/utils/utils/Kupola.java +0 -104
  92. package/dist/utils/utils/kupola.go +0 -120
  93. package/dist/utils/utils/kupola.js +0 -63
  94. package/dist/utils/utils/kupola.py +0 -1392
  95. package/dist/utils/utils/kupola.rb +0 -69
  96. package/js/composition-api.js +0 -458
  97. package/js/error-handler.js +0 -181
  98. package/js/http.js +0 -419
  99. package/js/kupola-devtools.js +0 -598
  100. package/js/performance.js +0 -250
  101. package/js/router.js +0 -396
  102. package/js/security.js +0 -189
  103. package/js/test-utils.js +0 -251
  104. package/templates/base.html +0 -30
  105. package/templates/base_dashboard.html +0 -99
  106. package/utils/Kupola.cs +0 -77
  107. package/utils/Kupola.java +0 -104
  108. package/utils/kupola.go +0 -120
  109. package/utils/kupola.js +0 -63
  110. package/utils/kupola.py +0 -1392
  111. package/utils/kupola.rb +0 -69
@@ -1,12 +1 @@
1
- @import url('colors_and_type.css');
2
- @import url('theme-light.css');
3
- @import url('theme-dark.css');
4
- @import url('brand-themes.css');
5
- @import url('scaffold.css');
6
- @import url('components.css');
7
- @import url('components-ext.css');
8
- @import url('states.css');
9
- @import url('utilities.css');
10
- @import url('responsive.css');
11
- @import url('accessibility.css');
12
- @import url('animations.css');
1
+ @import "../css/scaffold.css";@import "../css/colors_and_type.css";@import "../css/theme-light.css";@import "../css/brand-themes.css";@import "../css/components.css";@import "../css/components-ext.css";@import "../css/states.css";@import "../css/responsive.css";@import "../css/animations.css";@import "../css/accessibility.css";@import "../css/utilities.css";
@@ -0,0 +1 @@
1
+ @import "../css/scaffold.css";@import "../css/colors_and_type.css";@import "../css/theme-light.css";@import "../css/brand-themes.css";@import "../css/components.css";@import "../css/components-ext.css";@import "../css/states.css";@import "../css/responsive.css";@import "../css/animations.css";@import "../css/accessibility.css";@import "../css/utilities.css";
@@ -0,0 +1,697 @@
1
+ /* Responsive Design */
2
+ /* Breakpoints: Phone < 768px, Pad 768px - 1024px, PC > 1024px */
3
+
4
+ /* Phone (< 768px) */
5
+ @media (max-width: 767px) {
6
+ .ds-dashboard {
7
+ flex-direction: column;
8
+ }
9
+
10
+ .ds-dashboard__header {
11
+ height: 44px;
12
+ padding: 0 8px;
13
+ }
14
+
15
+ .ds-dashboard__header-center {
16
+ display: none;
17
+ }
18
+
19
+ .ds-dashboard__header-right {
20
+ gap: 4px;
21
+ }
22
+
23
+ .ds-dashboard__sidebar {
24
+ position: fixed;
25
+ bottom: 0;
26
+ left: 0;
27
+ right: 0;
28
+ top: auto;
29
+ height: 56px;
30
+ width: 100%;
31
+ border-right: none;
32
+ border-top: 1px solid var(--border-neutral-l1);
33
+ z-index: 100;
34
+ }
35
+
36
+ .ds-dashboard__sidebar-nav {
37
+ flex-direction: row;
38
+ justify-content: space-around;
39
+ }
40
+
41
+ .ds-dashboard__sidebar-item {
42
+ width: auto;
43
+ flex: 1;
44
+ }
45
+
46
+ .ds-dashboard__content {
47
+ padding: 8px;
48
+ margin-bottom: 64px;
49
+ }
50
+
51
+ .ds-dashboard__footer {
52
+ display: none;
53
+ }
54
+
55
+ .grid-cols-2,
56
+ .grid-cols-3,
57
+ .grid-cols-4 {
58
+ grid-template-columns: 1fr;
59
+ }
60
+
61
+ .ds-card {
62
+ padding: 12px;
63
+ }
64
+
65
+ .ds-btn {
66
+ padding: 6px 12px;
67
+ font-size: 12px;
68
+ }
69
+
70
+ .ds-btn--sm {
71
+ padding: 4px 8px;
72
+ font-size: 11px;
73
+ }
74
+
75
+ .ds-btn--lg {
76
+ padding: 8px 16px;
77
+ font-size: 13px;
78
+ }
79
+
80
+ .ds-input {
81
+ padding: 8px 12px;
82
+ font-size: 12px;
83
+ }
84
+
85
+ .ds-table {
86
+ font-size: 11px;
87
+ overflow-x: auto;
88
+ display: block;
89
+ }
90
+
91
+ .ds-table thead,
92
+ .ds-table tbody,
93
+ .ds-table tr,
94
+ .ds-table th,
95
+ .ds-table td {
96
+ display: block;
97
+ }
98
+
99
+ .ds-table thead tr {
100
+ position: absolute;
101
+ top: -9999px;
102
+ left: -9999px;
103
+ }
104
+
105
+ .ds-table tr {
106
+ border-bottom: 1px solid var(--border-neutral-l1);
107
+ }
108
+
109
+ .ds-table td {
110
+ border: none;
111
+ position: relative;
112
+ padding-left: 50%;
113
+ white-space: normal;
114
+ text-align: left;
115
+ }
116
+
117
+ .ds-table td::before {
118
+ content: attr(data-label);
119
+ position: absolute;
120
+ left: 0;
121
+ width: 45%;
122
+ padding-right: 10px;
123
+ white-space: nowrap;
124
+ font-weight: 500;
125
+ text-align: left;
126
+ }
127
+
128
+ .ds-modal {
129
+ margin: 8px;
130
+ max-height: calc(100vh - 16px);
131
+ }
132
+
133
+ .ds-statcard {
134
+ padding: 12px;
135
+ }
136
+
137
+ .ds-statcard__value {
138
+ font-size: 24px;
139
+ }
140
+
141
+ .ds-tabs__list {
142
+ flex-wrap: wrap;
143
+ }
144
+
145
+ .ds-tabs__item {
146
+ padding: 8px 12px;
147
+ font-size: 12px;
148
+ }
149
+
150
+ .ds-navlist__item {
151
+ padding: 10px 12px;
152
+ }
153
+
154
+ .ds-navlist__item-icon {
155
+ width: 24px;
156
+ height: 24px;
157
+ }
158
+
159
+ .ds-navlist__item-label {
160
+ font-size: 12px;
161
+ }
162
+
163
+ .ds-pagination__btn {
164
+ min-width: 28px;
165
+ height: 28px;
166
+ font-size: 11px;
167
+ }
168
+
169
+ .ds-tag {
170
+ padding: 2px 6px;
171
+ font-size: 10px;
172
+ }
173
+
174
+ .ds-alert {
175
+ padding: 10px 12px;
176
+ }
177
+
178
+ .ds-avatar {
179
+ width: 32px;
180
+ height: 32px;
181
+ }
182
+
183
+ .ds-avatar--sm {
184
+ width: 24px;
185
+ height: 24px;
186
+ }
187
+
188
+ .ds-avatar--lg {
189
+ width: 40px;
190
+ height: 40px;
191
+ }
192
+
193
+ .ds-titlebar {
194
+ height: 28px;
195
+ padding: 0 8px;
196
+ }
197
+
198
+ .ds-editortabs {
199
+ padding: 0 8px;
200
+ }
201
+
202
+ .ds-editortabs__tab {
203
+ padding: 6px 8px;
204
+ font-size: 11px;
205
+ }
206
+
207
+ .ds-statusbar {
208
+ height: 20px;
209
+ padding: 0 8px;
210
+ font-size: 10px;
211
+ }
212
+
213
+ .ds-pageheader {
214
+ padding: 12px 16px;
215
+ }
216
+
217
+ .ds-pageheader__title h1 {
218
+ font-size: 16px;
219
+ }
220
+
221
+ .ds-pageheader__subtitle {
222
+ font-size: 11px;
223
+ }
224
+
225
+ .ds-settingrow {
226
+ padding: 10px 0;
227
+ }
228
+
229
+ .ds-settingrow__title {
230
+ font-size: 12px;
231
+ }
232
+
233
+ .ds-settingrow__description {
234
+ font-size: 11px;
235
+ }
236
+
237
+ .ds-activityrail {
238
+ width: 40px;
239
+ }
240
+
241
+ .ds-activityrail__item {
242
+ width: 40px;
243
+ height: 40px;
244
+ }
245
+
246
+ .ds-chatcomposer {
247
+ padding: 8px;
248
+ }
249
+
250
+ .ds-chatcomposer__input-area {
251
+ padding: 4px 8px;
252
+ }
253
+
254
+ .ds-chatcomposer__model {
255
+ font-size: 10px;
256
+ padding: 2px 6px;
257
+ }
258
+
259
+ .ds-chatcomposer__input {
260
+ font-size: 12px;
261
+ }
262
+
263
+ .ds-tablepanel {
264
+ border-radius: 4px;
265
+ }
266
+
267
+ .ds-tablepanel__toolbar {
268
+ padding: 8px;
269
+ }
270
+
271
+ .ds-tablepanel__footer {
272
+ padding: 6px 8px;
273
+ font-size: 11px;
274
+ }
275
+
276
+ .ds-kbd {
277
+ padding: 1px 4px;
278
+ font-size: 10px;
279
+ }
280
+ }
281
+
282
+ /* Pad (768px - 1024px) */
283
+ @media (min-width: 768px) and (max-width: 1024px) {
284
+ .ds-dashboard__sidebar {
285
+ width: 56px;
286
+ }
287
+
288
+ .ds-dashboard__header {
289
+ padding: 0 12px;
290
+ }
291
+
292
+ .ds-dashboard__content {
293
+ padding: 12px;
294
+ }
295
+
296
+ .grid-cols-4 {
297
+ grid-template-columns: repeat(2, 1fr);
298
+ }
299
+
300
+ .grid-cols-3 {
301
+ grid-template-columns: repeat(2, 1fr);
302
+ }
303
+
304
+ .ds-card {
305
+ padding: 16px;
306
+ }
307
+
308
+ .ds-statcard__value {
309
+ font-size: 28px;
310
+ }
311
+
312
+ .ds-table {
313
+ font-size: 12px;
314
+ }
315
+
316
+ .ds-btn {
317
+ padding: 7px 14px;
318
+ }
319
+
320
+ .ds-input {
321
+ padding: 10px 14px;
322
+ }
323
+
324
+ .ds-titlebar {
325
+ height: 30px;
326
+ }
327
+
328
+ .ds-statusbar {
329
+ height: 22px;
330
+ font-size: 11px;
331
+ }
332
+
333
+ .ds-pageheader {
334
+ padding: 14px 20px;
335
+ }
336
+
337
+ .ds-pageheader__title h1 {
338
+ font-size: 17px;
339
+ }
340
+ }
341
+
342
+ /* PC (> 1024px) */
343
+ @media (min-width: 1025px) {
344
+ .ds-dashboard__sidebar {
345
+ width: 48px;
346
+ }
347
+
348
+ .ds-dashboard__header {
349
+ padding: 0 16px;
350
+ }
351
+
352
+ .ds-dashboard__content {
353
+ padding: 16px;
354
+ }
355
+
356
+ .grid-cols-4 {
357
+ grid-template-columns: repeat(4, 1fr);
358
+ }
359
+
360
+ .grid-cols-3 {
361
+ grid-template-columns: repeat(3, 1fr);
362
+ }
363
+
364
+ .grid-cols-2 {
365
+ grid-template-columns: repeat(2, 1fr);
366
+ }
367
+ }
368
+
369
+ /* Touch device optimizations */
370
+ @media (hover: none) {
371
+ .ds-btn:hover {
372
+ transform: none;
373
+ }
374
+
375
+ .ds-card:hover {
376
+ border-color: var(--border-neutral-l1);
377
+ }
378
+
379
+ .ds-navlist__item:hover {
380
+ background-color: transparent;
381
+ }
382
+
383
+ .ds-navlist__item.is-active:hover {
384
+ background-color: var(--bg-brand);
385
+ }
386
+
387
+ .ds-tab__item:hover {
388
+ background-color: transparent;
389
+ }
390
+
391
+ .ds-editortabs__tab:hover {
392
+ background-color: transparent;
393
+ }
394
+
395
+ .ds-activityrail__item:hover {
396
+ background-color: transparent;
397
+ }
398
+
399
+ .ds-statusbar__item:hover {
400
+ color: var(--text-secondary);
401
+ }
402
+ }
403
+
404
+ /* High contrast mode */
405
+ @media (prefers-contrast: high) {
406
+ :root {
407
+ --border-neutral-l1: #000000;
408
+ --border-neutral-l2: #000000;
409
+ --border-neutral-l3: #000000;
410
+ }
411
+ }
412
+
413
+ /* Reduced motion */
414
+ @media (prefers-reduced-motion: reduce) {
415
+ *,
416
+ *::before,
417
+ *::after {
418
+ animation-duration: 0.01ms !important;
419
+ animation-iteration-count: 1 !important;
420
+ transition-duration: 0.01ms !important;
421
+ }
422
+ }
423
+
424
+ /* Additional responsive improvements */
425
+
426
+ /* Phone (< 768px) - Additional components */
427
+ @media (max-width: 767px) {
428
+ .ds-progress-circle {
429
+ width: 60px;
430
+ height: 60px;
431
+ }
432
+
433
+ .ds-progress-circle__value {
434
+ font-size: 12px;
435
+ }
436
+
437
+ .ds-progress-circle__label {
438
+ font-size: 10px;
439
+ }
440
+
441
+ .ds-slider {
442
+ padding: 6px 0;
443
+ }
444
+
445
+ .ds-slider__label {
446
+ font-size: 11px;
447
+ }
448
+
449
+ .ds-slider__value {
450
+ font-size: 11px;
451
+ }
452
+
453
+ .ds-datepicker {
454
+ width: 100%;
455
+ }
456
+
457
+ .ds-datepicker__calendar {
458
+ width: 100%;
459
+ left: 0;
460
+ }
461
+
462
+ .ds-fileupload__dropzone {
463
+ padding: 20px;
464
+ }
465
+
466
+ .ds-fileupload__icon {
467
+ width: 36px;
468
+ height: 36px;
469
+ }
470
+
471
+ .ds-fileupload__title {
472
+ font-size: 12px;
473
+ }
474
+
475
+ .ds-fileupload__subtitle {
476
+ font-size: 11px;
477
+ }
478
+
479
+ .ds-timeline {
480
+ padding: 4px 0;
481
+ }
482
+
483
+ .ds-timeline__item {
484
+ padding: 10px 0;
485
+ gap: 8px;
486
+ margin-left: 4px;
487
+ }
488
+
489
+ .ds-timeline__marker {
490
+ width: 10px;
491
+ height: 10px;
492
+ margin-left: -6px;
493
+ }
494
+
495
+ .ds-timeline__time {
496
+ font-size: 10px;
497
+ }
498
+
499
+ .ds-timeline__title {
500
+ font-size: 12px;
501
+ }
502
+
503
+ .ds-timeline__description {
504
+ font-size: 11px;
505
+ }
506
+
507
+ .ds-tablepanel__filters {
508
+ flex-wrap: wrap;
509
+ gap: 4px;
510
+ }
511
+ }
512
+
513
+ /* Pad (768px - 1024px) - Additional components */
514
+ @media (min-width: 768px) and (max-width: 1024px) {
515
+ .ds-progress-circle {
516
+ width: 70px;
517
+ height: 70px;
518
+ }
519
+
520
+ .ds-progress-circle__value {
521
+ font-size: 13px;
522
+ }
523
+
524
+ .ds-datepicker {
525
+ width: 220px;
526
+ }
527
+
528
+ .ds-datepicker__calendar {
529
+ width: 260px;
530
+ }
531
+
532
+ .ds-fileupload__dropzone {
533
+ padding: 24px;
534
+ }
535
+
536
+ .ds-timeline__item {
537
+ padding: 10px 0;
538
+ }
539
+ }
540
+
541
+ /* Sidebar collapse toggle button */
542
+ .ds-dashboard__sidebar-toggle {
543
+ display: none;
544
+ }
545
+
546
+ @media (max-width: 1024px) {
547
+ .ds-dashboard__sidebar-toggle {
548
+ display: flex;
549
+ align-items: center;
550
+ justify-content: center;
551
+ width: 32px;
552
+ height: 32px;
553
+ background: none;
554
+ border: none;
555
+ cursor: pointer;
556
+ color: var(--icon-secondary);
557
+ border-radius: 4px;
558
+ transition: background-color 0.15s ease, color 0.15s ease;
559
+ }
560
+
561
+ .ds-dashboard__sidebar-toggle:hover {
562
+ background-color: var(--bg-overlay-l1);
563
+ color: var(--icon-default);
564
+ }
565
+ }
566
+
567
+ /* Sidebar collapsed state */
568
+ .ds-dashboard__sidebar.is-collapsed {
569
+ width: 0;
570
+ overflow: hidden;
571
+ padding: 0;
572
+ }
573
+
574
+ .ds-dashboard__sidebar.is-collapsed + .ds-dashboard__content {
575
+ margin-left: 0;
576
+ }
577
+
578
+ /* Font size adjustments based on viewport width */
579
+ @media (max-width: 767px) {
580
+ html {
581
+ font-size: 14px;
582
+ }
583
+
584
+ .text-xs {
585
+ font-size: 10px;
586
+ }
587
+
588
+ .text-sm {
589
+ font-size: 11px;
590
+ }
591
+
592
+ .text-base {
593
+ font-size: 12px;
594
+ }
595
+
596
+ .text-lg {
597
+ font-size: 14px;
598
+ }
599
+
600
+ .text-xl {
601
+ font-size: 16px;
602
+ }
603
+
604
+ .text-2xl {
605
+ font-size: 18px;
606
+ }
607
+ }
608
+
609
+ @media (min-width: 768px) and (max-width: 1024px) {
610
+ html {
611
+ font-size: 15px;
612
+ }
613
+
614
+ .text-xs {
615
+ font-size: 11px;
616
+ }
617
+
618
+ .text-sm {
619
+ font-size: 12px;
620
+ }
621
+
622
+ .text-base {
623
+ font-size: 13px;
624
+ }
625
+
626
+ .text-lg {
627
+ font-size: 15px;
628
+ }
629
+
630
+ .text-xl {
631
+ font-size: 17px;
632
+ }
633
+
634
+ .text-2xl {
635
+ font-size: 19px;
636
+ }
637
+ }
638
+
639
+ @media (min-width: 1025px) {
640
+ html {
641
+ font-size: 16px;
642
+ }
643
+
644
+ .text-xs {
645
+ font-size: 11px;
646
+ }
647
+
648
+ .text-sm {
649
+ font-size: 13px;
650
+ }
651
+
652
+ .text-base {
653
+ font-size: 14px;
654
+ }
655
+
656
+ .text-lg {
657
+ font-size: 16px;
658
+ }
659
+
660
+ .text-xl {
661
+ font-size: 18px;
662
+ }
663
+
664
+ .text-2xl {
665
+ font-size: 20px;
666
+ }
667
+ }
668
+
669
+ /* Landscape orientation */
670
+ @media (orientation: landscape) and (max-width: 1024px) {
671
+ .ds-dashboard__sidebar {
672
+ height: 48px;
673
+ }
674
+
675
+ .ds-dashboard__content {
676
+ margin-bottom: 56px;
677
+ }
678
+
679
+ .grid-cols-4 {
680
+ grid-template-columns: repeat(2, 1fr);
681
+ }
682
+ }
683
+
684
+ /* Very small screens */
685
+ @media (max-width: 320px) {
686
+ .ds-dashboard__header-right {
687
+ gap: 2px;
688
+ }
689
+
690
+ .ds-dashboard__logo span {
691
+ display: none;
692
+ }
693
+
694
+ .ds-btn--sm {
695
+ padding: 2px 6px;
696
+ }
697
+ }