mbkbucket 1.5.1 → 2.0.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.
@@ -48,6 +48,12 @@
48
48
  display: flex;
49
49
  justify-content: space-between;
50
50
  align-items: center;
51
+ cursor: pointer;
52
+ transition: background 0.25s ease, box-shadow 0.25s ease;
53
+ }
54
+
55
+ .upload-card-header:hover {
56
+ background: linear-gradient(122deg, #064c47 0%, #0b6b64 52%, #0f7e75 100%);
51
57
  }
52
58
 
53
59
  .collapse-btn {
@@ -73,16 +79,53 @@
73
79
  }
74
80
 
75
81
  .collapsible-content {
76
- padding: 0rem !important;
82
+ padding: 0 !important;
77
83
  max-height: 0;
78
84
  overflow: hidden;
79
- transition: max-height 0.3s ease-out;
85
+ opacity: 0;
86
+ transform: translateY(-10px);
87
+ border-top: 1px solid transparent;
88
+ background: linear-gradient(180deg, rgba(247, 255, 252, 0.45) 0%, rgba(238, 250, 246, 0.72) 100%);
89
+ transition:
90
+ max-height 0.34s ease,
91
+ opacity 0.25s ease,
92
+ transform 0.3s ease,
93
+ padding 0.24s ease,
94
+ border-color 0.24s ease;
80
95
  }
81
96
 
82
97
  .collapsible-content.expanded {
83
- padding: 1rem !important;
98
+ padding: 1.15rem !important;
84
99
  max-height: 2000px;
85
- transition: max-height 0.3s ease-in;
100
+ opacity: 1;
101
+ transform: translateY(0);
102
+ border-top-color: rgba(11, 107, 100, 0.22);
103
+ }
104
+
105
+ .dashboard-card.upload-panel-open {
106
+ box-shadow: 0 22px 42px rgba(7, 54, 51, 0.22);
107
+ border-color: rgba(11, 107, 100, 0.3);
108
+ }
109
+
110
+ .dashboard-card.upload-panel-open .upload-card-header {
111
+ box-shadow: inset 0 -1px 0 rgba(255, 255, 255, 0.14);
112
+ }
113
+
114
+ .dashboard-card.upload-panel-open .card-title {
115
+ letter-spacing: 0.015em;
116
+ }
117
+
118
+ .dashboard-card.upload-panel-open .card-icon {
119
+ background: rgba(255, 255, 255, 0.34);
120
+ border: 1px solid rgba(255, 255, 255, 0.4);
121
+ }
122
+
123
+ .dashboard-card.upload-panel-open .form-label {
124
+ color: #12413d;
125
+ }
126
+
127
+ .dashboard-card.upload-panel-open .form-text {
128
+ color: #245651;
86
129
  }
87
130
 
88
131
  /* File Stats Card - Welcome Style */
@@ -133,6 +176,120 @@
133
176
  letter-spacing: 0.02em;
134
177
  }
135
178
 
179
+ .bucket-switcher-wrap {
180
+ margin-left: auto;
181
+ }
182
+
183
+ .bucket-switcher {
184
+ display: flex;
185
+ flex-direction: column;
186
+ gap: 0.35rem;
187
+ min-width: 230px;
188
+ }
189
+
190
+ .bucket-switcher-label {
191
+ color: rgba(255, 255, 255, 0.9);
192
+ font-size: 0.76rem;
193
+ font-weight: 700;
194
+ letter-spacing: 0.06em;
195
+ text-transform: uppercase;
196
+ }
197
+
198
+ .bucket-switcher-control {
199
+ position: relative;
200
+ display: flex;
201
+ align-items: center;
202
+ background: rgba(255, 255, 255, 0.18);
203
+ border: 1px solid rgba(255, 255, 255, 0.3);
204
+ border-radius: 0.65rem;
205
+ padding-left: 0.6rem;
206
+ transition: var(--transition-fast-ml);
207
+ }
208
+
209
+ .bucket-switcher-control:focus-within {
210
+ background: rgba(255, 255, 255, 0.26);
211
+ border-color: rgba(255, 255, 255, 0.9);
212
+ box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.2);
213
+ }
214
+
215
+ .bucket-switcher-icon {
216
+ color: rgba(255, 255, 255, 0.9);
217
+ margin-right: 0.5rem;
218
+ }
219
+
220
+ .bucket-switcher-select {
221
+ appearance: none;
222
+ -webkit-appearance: none;
223
+ -moz-appearance: none;
224
+ background: transparent;
225
+ border: none;
226
+ color: #ffffff;
227
+ font-weight: 600;
228
+ padding: 0.5rem 2rem 0.5rem 0;
229
+ min-width: 180px;
230
+ box-shadow: none;
231
+ }
232
+
233
+ .bucket-switcher-select:focus {
234
+ box-shadow: none;
235
+ outline: none;
236
+ }
237
+
238
+ .bucket-switcher-select option {
239
+ color: var(--dark-color-ml);
240
+ }
241
+
242
+ .bucket-switcher-caret {
243
+ position: absolute;
244
+ right: 0.65rem;
245
+ color: rgba(255, 255, 255, 0.9);
246
+ font-size: 0.8rem;
247
+ pointer-events: none;
248
+ }
249
+
250
+ .bucket-switcher-select:disabled {
251
+ opacity: 0.75;
252
+ cursor: not-allowed;
253
+ }
254
+
255
+ .bucket-switcher-status {
256
+ color: rgba(255, 255, 255, 0.9);
257
+ font-size: 0.72rem;
258
+ letter-spacing: 0.02em;
259
+ }
260
+
261
+ .quick-filter-group {
262
+ display: inline-flex;
263
+ align-items: center;
264
+ gap: 0.45rem;
265
+ flex-wrap: wrap;
266
+ }
267
+
268
+ .quick-filter-btn {
269
+ background: rgba(255, 255, 255, 0.08);
270
+ color: #ffffff;
271
+ border: 1px solid rgba(255, 255, 255, 0.3);
272
+ border-radius: 999px;
273
+ padding: 0.36rem 0.72rem;
274
+ font-size: 0.78rem;
275
+ line-height: 1;
276
+ min-height: 30px;
277
+ }
278
+
279
+ .quick-filter-btn:hover {
280
+ background: rgba(255, 255, 255, 0.16);
281
+ color: #ffffff;
282
+ border-color: rgba(255, 255, 255, 0.5);
283
+ box-shadow: none;
284
+ }
285
+
286
+ .quick-filter-btn.active {
287
+ background: #ffffff;
288
+ color: var(--primary-color-ml);
289
+ border-color: #ffffff;
290
+ font-weight: 700;
291
+ }
292
+
136
293
  /* Form styling - Modern approach */
137
294
  .form-control {
138
295
  border: 1px solid var(--gray-light-color-ml);
@@ -144,6 +301,34 @@
144
301
  background: white;
145
302
  }
146
303
 
304
+ @media (max-width: 768px) {
305
+ .stats-content {
306
+ align-items: flex-start;
307
+ flex-wrap: wrap;
308
+ }
309
+
310
+ .bucket-switcher-wrap {
311
+ width: 100%;
312
+ margin-left: 0;
313
+ }
314
+
315
+ .bucket-switcher {
316
+ width: 100%;
317
+ max-width: 100%;
318
+ }
319
+
320
+ .bucket-switcher-select {
321
+ width: 100%;
322
+ min-width: 0;
323
+ }
324
+
325
+ .quick-filter-group {
326
+ width: 100%;
327
+ justify-content: flex-start;
328
+ margin-top: 0.35rem;
329
+ }
330
+ }
331
+
147
332
  .form-control:focus {
148
333
  border-color: var(--primary-color-ml);
149
334
  box-shadow: 0 0 0 3px rgba(13, 148, 136, 0.1);
@@ -821,6 +1006,24 @@
821
1006
  background: var(--light-color-ml);
822
1007
  }
823
1008
 
1009
+ .virtualized-info {
1010
+ display: flex;
1011
+ justify-content: space-between;
1012
+ align-items: center;
1013
+ gap: 1rem;
1014
+ padding: 0.75rem 1rem;
1015
+ background: #f8fafc;
1016
+ border-top: 1px solid var(--gray-light-color-ml);
1017
+ color: var(--gray-color-ml);
1018
+ font-size: 0.85rem;
1019
+ }
1020
+
1021
+ .virtualized-actions {
1022
+ display: inline-flex;
1023
+ gap: 0.5rem;
1024
+ align-items: center;
1025
+ }
1026
+
824
1027
  .toast-close-btn {
825
1028
  background: none;
826
1029
  border: none;
@@ -997,8 +1200,9 @@
997
1200
  color: white;
998
1201
  padding: 0.5rem;
999
1202
  display: flex;
1000
- align-items: center;
1203
+ align-items: flex-start;
1001
1204
  justify-content: space-between;
1205
+ gap: 0.75rem;
1002
1206
  }
1003
1207
 
1004
1208
  .modal-title {
@@ -1008,15 +1212,55 @@
1008
1212
  display: flex;
1009
1213
  align-items: center;
1010
1214
  gap: 0.75rem;
1215
+ flex: 1;
1216
+ min-width: 0;
1217
+ line-height: 1.2;
1218
+ }
1219
+
1220
+ #previewModal .modal-title i {
1221
+ flex-shrink: 0;
1011
1222
  }
1012
1223
 
1013
1224
  /* Allow preview filename to wrap and break long words */
1014
1225
  #previewModal .modal-title #previewFileName {
1015
1226
  display: inline-block;
1016
- max-width: calc(100% - 120px);
1017
- overflow-wrap: anywhere;
1018
- word-break: break-word;
1019
- white-space: normal;
1227
+ max-width: 100%;
1228
+ min-width: 0;
1229
+ overflow: hidden;
1230
+ text-overflow: ellipsis;
1231
+ white-space: nowrap;
1232
+ }
1233
+
1234
+ #previewModal .preview-header-controls {
1235
+ flex-shrink: 0;
1236
+ }
1237
+
1238
+ .upload-item-meta-row {
1239
+ min-width: 0;
1240
+ }
1241
+
1242
+ .upload-file-icon {
1243
+ width: 36px;
1244
+ height: 36px;
1245
+ margin-right: 0.6rem;
1246
+ border-radius: 10px;
1247
+ font-size: 1rem;
1248
+ flex-shrink: 0;
1249
+ }
1250
+
1251
+ .upload-item-name {
1252
+ min-width: 0;
1253
+ max-width: 100%;
1254
+ overflow: hidden;
1255
+ text-overflow: ellipsis;
1256
+ white-space: nowrap;
1257
+ font-weight: 600;
1258
+ }
1259
+
1260
+ @media (max-width: 768px) {
1261
+ #previewModal .modal-title {
1262
+ font-size: 1.05rem;
1263
+ }
1020
1264
  }
1021
1265
 
1022
1266
  .modal-body {
@@ -1135,6 +1379,13 @@
1135
1379
  box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
1136
1380
  }
1137
1381
 
1382
+ @media (max-width: 768px) {
1383
+ .virtualized-info {
1384
+ flex-direction: column;
1385
+ align-items: flex-start;
1386
+ }
1387
+ }
1388
+
1138
1389
  .progress-bar {
1139
1390
  height: 100%;
1140
1391
  background: linear-gradient(135deg, var(--primary-color-ml) 0%, var(--success-color-ml) 100%);
@@ -1234,11 +1485,13 @@
1234
1485
  /* Skeleton loaders - tuned grid to equalize column spacing visually */
1235
1486
  .skeleton-row {
1236
1487
  display: grid;
1237
- grid-template-columns: 48px minmax(120px, 1fr) minmax(120px, 1fr) minmax(120px, 240px); /* icon + 3 columns with balanced min widths */
1488
+ grid-template-columns: 48px minmax(120px, 1fr) minmax(120px, 1fr) minmax(120px, 240px);
1489
+ /* icon + 3 columns with balanced min widths */
1238
1490
  gap: 1rem;
1239
1491
  padding: 1rem;
1240
1492
  align-items: center;
1241
- justify-items: stretch; /* make cells span their tracks evenly */
1493
+ justify-items: stretch;
1494
+ /* make cells span their tracks evenly */
1242
1495
  }
1243
1496
 
1244
1497
  /* make skeleton boxes flexible and responsive */
@@ -1252,9 +1505,20 @@
1252
1505
  }
1253
1506
 
1254
1507
  /* semantic size hints (max widths) and alignment to ensure visual balance */
1255
- .skeleton-box.s-40 { max-width: 48px; justify-self: start; }
1256
- .skeleton-box.s-80 { max-width: 160px; justify-self: center; }
1257
- .skeleton-box.s-200 { max-width: 220px; justify-self: end; }
1508
+ .skeleton-box.s-40 {
1509
+ max-width: 48px;
1510
+ justify-self: start;
1511
+ }
1512
+
1513
+ .skeleton-box.s-80 {
1514
+ max-width: 160px;
1515
+ justify-self: center;
1516
+ }
1517
+
1518
+ .skeleton-box.s-200 {
1519
+ max-width: 220px;
1520
+ justify-self: end;
1521
+ }
1258
1522
 
1259
1523
  .skeleton-row .file-icon {
1260
1524
  width: 40px;
@@ -1268,7 +1532,10 @@
1268
1532
  grid-template-columns: 40px minmax(100px, 1fr) minmax(100px, 1fr) minmax(100px, 200px);
1269
1533
  gap: 0.9rem;
1270
1534
  }
1271
- .skeleton-box.s-200 { max-width: 180px; }
1535
+
1536
+ .skeleton-box.s-200 {
1537
+ max-width: 180px;
1538
+ }
1272
1539
  }
1273
1540
 
1274
1541
  @media (max-width: 768px) {
@@ -1276,8 +1543,15 @@
1276
1543
  grid-template-columns: 40px 1fr 1fr 1fr;
1277
1544
  gap: 0.75rem;
1278
1545
  }
1279
- .skeleton-box.s-80 { justify-self: start; }
1280
- .skeleton-box.s-200 { max-width: 140px; justify-self: end; }
1546
+
1547
+ .skeleton-box.s-80 {
1548
+ justify-self: start;
1549
+ }
1550
+
1551
+ .skeleton-box.s-200 {
1552
+ max-width: 140px;
1553
+ justify-self: end;
1554
+ }
1281
1555
  }
1282
1556
 
1283
1557
 
@@ -1326,6 +1600,162 @@
1326
1600
  transform: none;
1327
1601
  }
1328
1602
 
1603
+ /* v2 Visual System */
1604
+ :root {
1605
+ --v2-accent: #0b6b64;
1606
+ --v2-accent-strong: #084f4a;
1607
+ --v2-highlight: #0ea5a0;
1608
+ --v2-surface: #f4fcf9;
1609
+ --v2-border: rgba(11, 107, 100, 0.28);
1610
+ }
1611
+
1612
+ .content-area {
1613
+ animation: v2FadeIn 0.45s ease;
1614
+ }
1615
+
1616
+ .dashboard-card {
1617
+ background: linear-gradient(180deg, #f7fffc 0%, #eefaf6 100%);
1618
+ border: 1px solid rgba(11, 107, 100, 0.2);
1619
+ box-shadow: 0 16px 30px rgba(7, 54, 51, 0.12);
1620
+ }
1621
+
1622
+ .dashboard-card:hover {
1623
+ transform: translateY(-1px);
1624
+ box-shadow: 0 18px 36px rgba(7, 54, 51, 0.2);
1625
+ }
1626
+
1627
+ .card-header {
1628
+ background: linear-gradient(122deg, #07544e 0%, #0b6b64 52%, #0f7e75 100%);
1629
+ }
1630
+
1631
+ .card-title {
1632
+ letter-spacing: 0.01em;
1633
+ }
1634
+
1635
+ .card-icon {
1636
+ background: rgba(255, 255, 255, 0.23);
1637
+ border: 1px solid rgba(255, 255, 255, 0.35);
1638
+ }
1639
+
1640
+ .file-stats {
1641
+ background:
1642
+ linear-gradient(132deg, #064640 0%, #0a5b54 46%, #0d6b63 100%);
1643
+ }
1644
+
1645
+ .bucket-switcher-control {
1646
+ background: rgba(255, 255, 255, 0.24);
1647
+ }
1648
+
1649
+ .bucket-switcher-select {
1650
+ font-size: 0.85rem;
1651
+ }
1652
+
1653
+ .upload-drop-zone {
1654
+ background:
1655
+ linear-gradient(145deg, rgba(219, 247, 241, 0.9), rgba(226, 244, 241, 0.82));
1656
+ border-color: rgba(11, 107, 100, 0.55);
1657
+ }
1658
+
1659
+ .upload-drop-zone:hover,
1660
+ .upload-drop-zone.dragover {
1661
+ border-color: var(--v2-highlight);
1662
+ background:
1663
+ linear-gradient(145deg, rgba(201, 244, 236, 0.95), rgba(224, 249, 242, 0.86));
1664
+ }
1665
+
1666
+ .btn {
1667
+ border-radius: 0.65rem;
1668
+ }
1669
+
1670
+ .btn-primary {
1671
+ background: linear-gradient(135deg, var(--v2-accent), var(--v2-accent-strong));
1672
+ }
1673
+
1674
+ .btn-primary:hover {
1675
+ background: linear-gradient(135deg, #064640, #073a36);
1676
+ }
1677
+
1678
+ .btn-outline-secondary {
1679
+ border-color: #9ca3af;
1680
+ color: #1f2937;
1681
+ }
1682
+
1683
+ .table thead {
1684
+ background: linear-gradient(180deg, rgba(225, 242, 238, 0.95), rgba(210, 236, 230, 0.9));
1685
+ }
1686
+
1687
+ .table th {
1688
+ color: #23403d;
1689
+ }
1690
+
1691
+ .file-row:hover {
1692
+ background-color: #ddf2ed;
1693
+ }
1694
+
1695
+ .folder-row:hover {
1696
+ background-color: #d7efe9;
1697
+ }
1698
+
1699
+ .search-inline .form-control {
1700
+ border-color: rgba(15, 118, 110, 0.3);
1701
+ }
1702
+
1703
+ .quick-filter-btn.active {
1704
+ color: #ffffff;
1705
+ background: linear-gradient(135deg, var(--v2-accent), var(--v2-accent-strong));
1706
+ border-color: var(--v2-accent-strong);
1707
+ }
1708
+
1709
+ .reveal-item {
1710
+ opacity: 0;
1711
+ transform: translateY(14px) scale(0.99);
1712
+ animation: v2Rise 0.48s cubic-bezier(0.2, 0.8, 0.2, 1) forwards;
1713
+ }
1714
+
1715
+ .reveal-delay-1 {
1716
+ animation-delay: 0.05s;
1717
+ }
1718
+
1719
+ .reveal-delay-2 {
1720
+ animation-delay: 0.12s;
1721
+ }
1722
+
1723
+ .reveal-delay-3 {
1724
+ animation-delay: 0.2s;
1725
+ }
1726
+
1727
+ .reveal-delay-4 {
1728
+ animation-delay: 0.28s;
1729
+ }
1730
+
1731
+ @keyframes v2FadeIn {
1732
+ from {
1733
+ opacity: 0.4;
1734
+ }
1735
+
1736
+ to {
1737
+ opacity: 1;
1738
+ }
1739
+ }
1740
+
1741
+ @keyframes v2Rise {
1742
+ from {
1743
+ opacity: 0;
1744
+ transform: translateY(14px) scale(0.99);
1745
+ }
1746
+
1747
+ to {
1748
+ opacity: 1;
1749
+ transform: translateY(0) scale(1);
1750
+ }
1751
+ }
1752
+
1753
+ @media (max-width: 768px) {
1754
+ .card-header {
1755
+ padding: 0.8rem;
1756
+ }
1757
+ }
1758
+
1329
1759
  .upload-success {
1330
1760
  color: var(--success-color-ml);
1331
1761
  font-weight: 600;