mbkbucket 1.5.1 → 2.1.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);
@@ -546,9 +731,18 @@
546
731
  align-items: center;
547
732
  gap: 0.5rem;
548
733
  font-size: 0.9rem;
734
+ min-width: 0;
735
+ }
736
+
737
+ .breadcrumb-nav .breadcrumb-item::before {
738
+ display: none !important;
739
+ content: none !important;
549
740
  }
550
741
 
551
742
  .breadcrumb-link {
743
+ background: transparent;
744
+ border: 0;
745
+ padding: 0;
552
746
  color: var(--primary-color-ml);
553
747
  cursor: pointer;
554
748
  transition: all 0.2s ease;
@@ -569,6 +763,8 @@
569
763
  .breadcrumb-current {
570
764
  color: var(--dark-color-ml);
571
765
  font-weight: 600;
766
+ min-width: 0;
767
+ overflow-wrap: anywhere;
572
768
  }
573
769
 
574
770
  .file-icon {
@@ -821,6 +1017,24 @@
821
1017
  background: var(--light-color-ml);
822
1018
  }
823
1019
 
1020
+ .virtualized-info {
1021
+ display: flex;
1022
+ justify-content: space-between;
1023
+ align-items: center;
1024
+ gap: 1rem;
1025
+ padding: 0.75rem 1rem;
1026
+ background: #f8fafc;
1027
+ border-top: 1px solid var(--gray-light-color-ml);
1028
+ color: var(--gray-color-ml);
1029
+ font-size: 0.85rem;
1030
+ }
1031
+
1032
+ .virtualized-actions {
1033
+ display: inline-flex;
1034
+ gap: 0.5rem;
1035
+ align-items: center;
1036
+ }
1037
+
824
1038
  .toast-close-btn {
825
1039
  background: none;
826
1040
  border: none;
@@ -997,8 +1211,9 @@
997
1211
  color: white;
998
1212
  padding: 0.5rem;
999
1213
  display: flex;
1000
- align-items: center;
1214
+ align-items: flex-start;
1001
1215
  justify-content: space-between;
1216
+ gap: 0.75rem;
1002
1217
  }
1003
1218
 
1004
1219
  .modal-title {
@@ -1008,15 +1223,55 @@
1008
1223
  display: flex;
1009
1224
  align-items: center;
1010
1225
  gap: 0.75rem;
1226
+ flex: 1;
1227
+ min-width: 0;
1228
+ line-height: 1.2;
1229
+ }
1230
+
1231
+ #previewModal .modal-title i {
1232
+ flex-shrink: 0;
1011
1233
  }
1012
1234
 
1013
1235
  /* Allow preview filename to wrap and break long words */
1014
1236
  #previewModal .modal-title #previewFileName {
1015
1237
  display: inline-block;
1016
- max-width: calc(100% - 120px);
1017
- overflow-wrap: anywhere;
1018
- word-break: break-word;
1019
- white-space: normal;
1238
+ max-width: 100%;
1239
+ min-width: 0;
1240
+ overflow: hidden;
1241
+ text-overflow: ellipsis;
1242
+ white-space: nowrap;
1243
+ }
1244
+
1245
+ #previewModal .preview-header-controls {
1246
+ flex-shrink: 0;
1247
+ }
1248
+
1249
+ .upload-item-meta-row {
1250
+ min-width: 0;
1251
+ }
1252
+
1253
+ .upload-file-icon {
1254
+ width: 36px;
1255
+ height: 36px;
1256
+ margin-right: 0.6rem;
1257
+ border-radius: 10px;
1258
+ font-size: 1rem;
1259
+ flex-shrink: 0;
1260
+ }
1261
+
1262
+ .upload-item-name {
1263
+ min-width: 0;
1264
+ max-width: 100%;
1265
+ overflow: hidden;
1266
+ text-overflow: ellipsis;
1267
+ white-space: nowrap;
1268
+ font-weight: 600;
1269
+ }
1270
+
1271
+ @media (max-width: 768px) {
1272
+ #previewModal .modal-title {
1273
+ font-size: 1.05rem;
1274
+ }
1020
1275
  }
1021
1276
 
1022
1277
  .modal-body {
@@ -1135,6 +1390,13 @@
1135
1390
  box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
1136
1391
  }
1137
1392
 
1393
+ @media (max-width: 768px) {
1394
+ .virtualized-info {
1395
+ flex-direction: column;
1396
+ align-items: flex-start;
1397
+ }
1398
+ }
1399
+
1138
1400
  .progress-bar {
1139
1401
  height: 100%;
1140
1402
  background: linear-gradient(135deg, var(--primary-color-ml) 0%, var(--success-color-ml) 100%);
@@ -1234,11 +1496,13 @@
1234
1496
  /* Skeleton loaders - tuned grid to equalize column spacing visually */
1235
1497
  .skeleton-row {
1236
1498
  display: grid;
1237
- grid-template-columns: 48px minmax(120px, 1fr) minmax(120px, 1fr) minmax(120px, 240px); /* icon + 3 columns with balanced min widths */
1499
+ grid-template-columns: 48px minmax(120px, 1fr) minmax(120px, 1fr) minmax(120px, 240px);
1500
+ /* icon + 3 columns with balanced min widths */
1238
1501
  gap: 1rem;
1239
1502
  padding: 1rem;
1240
1503
  align-items: center;
1241
- justify-items: stretch; /* make cells span their tracks evenly */
1504
+ justify-items: stretch;
1505
+ /* make cells span their tracks evenly */
1242
1506
  }
1243
1507
 
1244
1508
  /* make skeleton boxes flexible and responsive */
@@ -1252,9 +1516,20 @@
1252
1516
  }
1253
1517
 
1254
1518
  /* 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; }
1519
+ .skeleton-box.s-40 {
1520
+ max-width: 48px;
1521
+ justify-self: start;
1522
+ }
1523
+
1524
+ .skeleton-box.s-80 {
1525
+ max-width: 160px;
1526
+ justify-self: center;
1527
+ }
1528
+
1529
+ .skeleton-box.s-200 {
1530
+ max-width: 220px;
1531
+ justify-self: end;
1532
+ }
1258
1533
 
1259
1534
  .skeleton-row .file-icon {
1260
1535
  width: 40px;
@@ -1268,7 +1543,10 @@
1268
1543
  grid-template-columns: 40px minmax(100px, 1fr) minmax(100px, 1fr) minmax(100px, 200px);
1269
1544
  gap: 0.9rem;
1270
1545
  }
1271
- .skeleton-box.s-200 { max-width: 180px; }
1546
+
1547
+ .skeleton-box.s-200 {
1548
+ max-width: 180px;
1549
+ }
1272
1550
  }
1273
1551
 
1274
1552
  @media (max-width: 768px) {
@@ -1276,8 +1554,15 @@
1276
1554
  grid-template-columns: 40px 1fr 1fr 1fr;
1277
1555
  gap: 0.75rem;
1278
1556
  }
1279
- .skeleton-box.s-80 { justify-self: start; }
1280
- .skeleton-box.s-200 { max-width: 140px; justify-self: end; }
1557
+
1558
+ .skeleton-box.s-80 {
1559
+ justify-self: start;
1560
+ }
1561
+
1562
+ .skeleton-box.s-200 {
1563
+ max-width: 140px;
1564
+ justify-self: end;
1565
+ }
1281
1566
  }
1282
1567
 
1283
1568
 
@@ -1326,6 +1611,162 @@
1326
1611
  transform: none;
1327
1612
  }
1328
1613
 
1614
+ /* v2 Visual System */
1615
+ :root {
1616
+ --v2-accent: #0b6b64;
1617
+ --v2-accent-strong: #084f4a;
1618
+ --v2-highlight: #0ea5a0;
1619
+ --v2-surface: #f4fcf9;
1620
+ --v2-border: rgba(11, 107, 100, 0.28);
1621
+ }
1622
+
1623
+ .content-area {
1624
+ animation: v2FadeIn 0.45s ease;
1625
+ }
1626
+
1627
+ .dashboard-card {
1628
+ background: linear-gradient(180deg, #f7fffc 0%, #eefaf6 100%);
1629
+ border: 1px solid rgba(11, 107, 100, 0.2);
1630
+ box-shadow: 0 16px 30px rgba(7, 54, 51, 0.12);
1631
+ }
1632
+
1633
+ .dashboard-card:hover {
1634
+ transform: translateY(-1px);
1635
+ box-shadow: 0 18px 36px rgba(7, 54, 51, 0.2);
1636
+ }
1637
+
1638
+ .card-header {
1639
+ background: linear-gradient(122deg, #07544e 0%, #0b6b64 52%, #0f7e75 100%);
1640
+ }
1641
+
1642
+ .card-title {
1643
+ letter-spacing: 0.01em;
1644
+ }
1645
+
1646
+ .card-icon {
1647
+ background: rgba(255, 255, 255, 0.23);
1648
+ border: 1px solid rgba(255, 255, 255, 0.35);
1649
+ }
1650
+
1651
+ .file-stats {
1652
+ background:
1653
+ linear-gradient(132deg, #064640 0%, #0a5b54 46%, #0d6b63 100%);
1654
+ }
1655
+
1656
+ .bucket-switcher-control {
1657
+ background: rgba(255, 255, 255, 0.24);
1658
+ }
1659
+
1660
+ .bucket-switcher-select {
1661
+ font-size: 0.85rem;
1662
+ }
1663
+
1664
+ .upload-drop-zone {
1665
+ background:
1666
+ linear-gradient(145deg, rgba(219, 247, 241, 0.9), rgba(226, 244, 241, 0.82));
1667
+ border-color: rgba(11, 107, 100, 0.55);
1668
+ }
1669
+
1670
+ .upload-drop-zone:hover,
1671
+ .upload-drop-zone.dragover {
1672
+ border-color: var(--v2-highlight);
1673
+ background:
1674
+ linear-gradient(145deg, rgba(201, 244, 236, 0.95), rgba(224, 249, 242, 0.86));
1675
+ }
1676
+
1677
+ .btn {
1678
+ border-radius: 0.65rem;
1679
+ }
1680
+
1681
+ .btn-primary {
1682
+ background: linear-gradient(135deg, var(--v2-accent), var(--v2-accent-strong));
1683
+ }
1684
+
1685
+ .btn-primary:hover {
1686
+ background: linear-gradient(135deg, #064640, #073a36);
1687
+ }
1688
+
1689
+ .btn-outline-secondary {
1690
+ border-color: #9ca3af;
1691
+ color: #1f2937;
1692
+ }
1693
+
1694
+ .table thead {
1695
+ background: linear-gradient(180deg, rgba(225, 242, 238, 0.95), rgba(210, 236, 230, 0.9));
1696
+ }
1697
+
1698
+ .table th {
1699
+ color: #23403d;
1700
+ }
1701
+
1702
+ .file-row:hover {
1703
+ background-color: #ddf2ed;
1704
+ }
1705
+
1706
+ .folder-row:hover {
1707
+ background-color: #d7efe9;
1708
+ }
1709
+
1710
+ .search-inline .form-control {
1711
+ border-color: rgba(15, 118, 110, 0.3);
1712
+ }
1713
+
1714
+ .quick-filter-btn.active {
1715
+ color: #ffffff;
1716
+ background: linear-gradient(135deg, var(--v2-accent), var(--v2-accent-strong));
1717
+ border-color: var(--v2-accent-strong);
1718
+ }
1719
+
1720
+ .reveal-item {
1721
+ opacity: 0;
1722
+ transform: translateY(14px) scale(0.99);
1723
+ animation: v2Rise 0.48s cubic-bezier(0.2, 0.8, 0.2, 1) forwards;
1724
+ }
1725
+
1726
+ .reveal-delay-1 {
1727
+ animation-delay: 0.05s;
1728
+ }
1729
+
1730
+ .reveal-delay-2 {
1731
+ animation-delay: 0.12s;
1732
+ }
1733
+
1734
+ .reveal-delay-3 {
1735
+ animation-delay: 0.2s;
1736
+ }
1737
+
1738
+ .reveal-delay-4 {
1739
+ animation-delay: 0.28s;
1740
+ }
1741
+
1742
+ @keyframes v2FadeIn {
1743
+ from {
1744
+ opacity: 0.4;
1745
+ }
1746
+
1747
+ to {
1748
+ opacity: 1;
1749
+ }
1750
+ }
1751
+
1752
+ @keyframes v2Rise {
1753
+ from {
1754
+ opacity: 0;
1755
+ transform: translateY(14px) scale(0.99);
1756
+ }
1757
+
1758
+ to {
1759
+ opacity: 1;
1760
+ transform: translateY(0) scale(1);
1761
+ }
1762
+ }
1763
+
1764
+ @media (max-width: 768px) {
1765
+ .card-header {
1766
+ padding: 0.8rem;
1767
+ }
1768
+ }
1769
+
1329
1770
  .upload-success {
1330
1771
  color: var(--success-color-ml);
1331
1772
  font-weight: 600;
@@ -1618,6 +2059,19 @@
1618
2059
  .breadcrumb-nav {
1619
2060
  padding: 0.5rem 1rem;
1620
2061
  font-size: 0.85rem;
2062
+ gap: 0.35rem;
2063
+ overflow: visible;
2064
+ }
2065
+
2066
+ .breadcrumb-item {
2067
+ max-width: 100%;
2068
+ }
2069
+
2070
+ .breadcrumb-current,
2071
+ .breadcrumb-link {
2072
+ max-width: calc(100vw - 4rem);
2073
+ white-space: normal;
2074
+ overflow-wrap: anywhere;
1621
2075
  }
1622
2076
 
1623
2077
  .file-size {
@@ -1742,4 +2196,103 @@
1742
2196
  .dtm {
1743
2197
  display: block;
1744
2198
  }
1745
- }
2199
+ }
2200
+
2201
+ .table-cell-center {
2202
+ text-align: center;
2203
+ }
2204
+
2205
+ .table-select-col {
2206
+ width: 48px;
2207
+ text-align: center;
2208
+ }
2209
+
2210
+ .file-name-cell,
2211
+ .file-name-heading {
2212
+ padding-left: 1.5rem;
2213
+ }
2214
+
2215
+ .file-row-main {
2216
+ display: flex;
2217
+ align-items: center;
2218
+ }
2219
+
2220
+ .folder-name {
2221
+ font-weight: 700;
2222
+ }
2223
+
2224
+ .folder-leading-icon {
2225
+ margin-right: 0.5rem;
2226
+ color: #f59e0b;
2227
+ }
2228
+
2229
+ .muted-cell-value {
2230
+ color: var(--gray-color-ml);
2231
+ }
2232
+
2233
+ .path-display-icon {
2234
+ margin-right: 4px;
2235
+ opacity: 0.5;
2236
+ }
2237
+
2238
+ .copy-btn {
2239
+ color: #fff;
2240
+ }
2241
+
2242
+ .view-btn.is-disabled {
2243
+ opacity: 0.5;
2244
+ }
2245
+
2246
+ .sortable-heading {
2247
+ cursor: pointer;
2248
+ }
2249
+
2250
+ .bulk-actions-controls {
2251
+ float: right;
2252
+ }
2253
+
2254
+ .toast-icon {
2255
+ font-size: 1.25rem;
2256
+ }
2257
+
2258
+ .toast-message {
2259
+ flex: 1;
2260
+ }
2261
+
2262
+ .empty-state-error-icon {
2263
+ color: var(--danger-color-ml);
2264
+ }
2265
+
2266
+ .empty-state-folder-icon {
2267
+ font-size: 4rem;
2268
+ color: #cbd5e0;
2269
+ }
2270
+
2271
+ .upload-progress-cell {
2272
+ min-width: 220px;
2273
+ }
2274
+
2275
+ .upload-progress-track {
2276
+ height: 8px;
2277
+ margin-bottom: 6px;
2278
+ }
2279
+
2280
+ .upload-progress-bar {
2281
+ height: 8px;
2282
+ }
2283
+
2284
+ .progress-bar-empty {
2285
+ width: 0%;
2286
+ }
2287
+
2288
+ .is-hidden {
2289
+ display: none !important;
2290
+ }
2291
+
2292
+ .bucket-switcher-status:not(.is-hidden) {
2293
+ display: inline;
2294
+ }
2295
+
2296
+ .file-list-card-body {
2297
+ padding: 0;
2298
+ }