@mshuja288/aksuicore 0.3.0 → 0.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.
- package/CHANGELOG.md +13 -0
- package/dist/aksui.css +327 -6
- package/dist/index.cjs +430 -67
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +49 -9
- package/dist/index.d.ts +49 -9
- package/dist/index.js +430 -67
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/patterns/AppShell.tsx +140 -17
- package/src/patterns/RecordWorkspace.tsx +347 -46
- package/src/patterns/index.ts +2 -1
- package/src/primitives/SideNav.tsx +3 -1
- package/src/primitives/Topbar.tsx +38 -8
- package/src/theme/patterns.css +164 -0
- package/src/theme/primitives.css +9 -1
- package/src/theme/shell.css +154 -5
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,19 @@ Versioning follows [VERSIONING.md](./VERSIONING.md).
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.4.0] — 2026-10-12
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- `RecordWorkspace` column picker: toggle visible columns (default all), optional `columnPrefsKey` persistence, `exportKey` / `ExportColumnRef`
|
|
15
|
+
- `onDownload(format, columns)` now passes the currently visible columns for smart exports
|
|
16
|
+
- `AppShell` mobile drawer navigation (`mobileNav="drawer"` default) with topbar hamburger — avoids crowded bottom nav on many sections
|
|
17
|
+
- Compact mobile row actions (⋯ menu) in `RecordWorkspace`
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
|
|
21
|
+
- Small screens: side-rail actions sit above the table; sticky Actions column; bottom nav only when `mobileNav` is `bottom` or `hybrid`
|
|
22
|
+
|
|
10
23
|
## [0.3.0] — 2026-10-12
|
|
11
24
|
|
|
12
25
|
### Added
|
package/dist/aksui.css
CHANGED
|
@@ -101,13 +101,17 @@ button.ghost:hover,
|
|
|
101
101
|
button.app-select-trigger:hover,
|
|
102
102
|
button.date-field-trigger:hover,
|
|
103
103
|
button.avatar-button:hover,
|
|
104
|
+
button.topbar-menu-button:hover,
|
|
104
105
|
button.sort-header:hover,
|
|
105
106
|
button.row-action:hover,
|
|
107
|
+
button.row-action-menu-trigger:hover,
|
|
106
108
|
button.date-picker-day:hover,
|
|
107
109
|
button.side-rail-toggle:hover,
|
|
108
110
|
button.side-rail-icon:hover,
|
|
111
|
+
button.side-rail-columns-toggle:hover,
|
|
109
112
|
button.filter-clear:hover,
|
|
110
|
-
button.snackbar-close:hover
|
|
113
|
+
button.snackbar-close:hover,
|
|
114
|
+
button.nav-drawer-close:hover {
|
|
111
115
|
transform: none;
|
|
112
116
|
}
|
|
113
117
|
|
|
@@ -225,6 +229,10 @@ select:disabled {
|
|
|
225
229
|
min-width: 0;
|
|
226
230
|
}
|
|
227
231
|
|
|
232
|
+
button.topbar-menu-button {
|
|
233
|
+
flex: 0 0 auto;
|
|
234
|
+
}
|
|
235
|
+
|
|
228
236
|
.topbar-logo {
|
|
229
237
|
width: 40px;
|
|
230
238
|
height: 40px;
|
|
@@ -1211,11 +1219,81 @@ button.side-rail-add:hover {
|
|
|
1211
1219
|
background: #2a3546;
|
|
1212
1220
|
}
|
|
1213
1221
|
|
|
1222
|
+
.side-rail-columns,
|
|
1214
1223
|
.side-rail-download {
|
|
1215
1224
|
display: grid;
|
|
1216
1225
|
gap: 8px;
|
|
1217
1226
|
}
|
|
1218
1227
|
|
|
1228
|
+
button.side-rail-columns-toggle {
|
|
1229
|
+
display: inline-flex;
|
|
1230
|
+
align-items: center;
|
|
1231
|
+
justify-content: center;
|
|
1232
|
+
gap: 8px;
|
|
1233
|
+
width: 100%;
|
|
1234
|
+
padding: 10px 12px;
|
|
1235
|
+
border: 1px solid var(--aks-border, #d7dde5);
|
|
1236
|
+
border-radius: var(--aks-radius);
|
|
1237
|
+
background: #fff;
|
|
1238
|
+
color: var(--aks-brand);
|
|
1239
|
+
box-shadow: none;
|
|
1240
|
+
}
|
|
1241
|
+
|
|
1242
|
+
button.side-rail-columns-toggle svg {
|
|
1243
|
+
width: 18px;
|
|
1244
|
+
height: 18px;
|
|
1245
|
+
}
|
|
1246
|
+
|
|
1247
|
+
button.side-rail-columns-toggle:hover {
|
|
1248
|
+
background: #f5f7fa;
|
|
1249
|
+
}
|
|
1250
|
+
|
|
1251
|
+
.side-rail-columns-panel {
|
|
1252
|
+
display: grid;
|
|
1253
|
+
gap: 8px;
|
|
1254
|
+
padding: 8px;
|
|
1255
|
+
border: 1px solid var(--aks-line);
|
|
1256
|
+
border-radius: var(--aks-radius);
|
|
1257
|
+
background: #faf9f7;
|
|
1258
|
+
}
|
|
1259
|
+
|
|
1260
|
+
.side-rail-columns-actions {
|
|
1261
|
+
display: flex;
|
|
1262
|
+
gap: 6px;
|
|
1263
|
+
}
|
|
1264
|
+
|
|
1265
|
+
.side-rail-columns-actions button {
|
|
1266
|
+
flex: 1 1 auto;
|
|
1267
|
+
padding: 6px 8px;
|
|
1268
|
+
font-size: 12px;
|
|
1269
|
+
box-shadow: none;
|
|
1270
|
+
}
|
|
1271
|
+
|
|
1272
|
+
.side-rail-columns-list {
|
|
1273
|
+
display: grid;
|
|
1274
|
+
gap: 6px;
|
|
1275
|
+
max-height: 220px;
|
|
1276
|
+
overflow: auto;
|
|
1277
|
+
}
|
|
1278
|
+
|
|
1279
|
+
label.side-rail-column-option {
|
|
1280
|
+
display: flex;
|
|
1281
|
+
align-items: center;
|
|
1282
|
+
gap: 8px;
|
|
1283
|
+
margin: 0;
|
|
1284
|
+
padding: 4px 2px;
|
|
1285
|
+
color: var(--aks-brand);
|
|
1286
|
+
font-size: 13px;
|
|
1287
|
+
font-weight: 500;
|
|
1288
|
+
}
|
|
1289
|
+
|
|
1290
|
+
label.side-rail-column-option input {
|
|
1291
|
+
width: auto;
|
|
1292
|
+
min-height: 0;
|
|
1293
|
+
margin: 0;
|
|
1294
|
+
accent-color: var(--aks-accent);
|
|
1295
|
+
}
|
|
1296
|
+
|
|
1219
1297
|
button.side-rail-download-toggle {
|
|
1220
1298
|
display: inline-flex;
|
|
1221
1299
|
align-items: center;
|
|
@@ -1471,6 +1549,65 @@ button.sort-header.active .sort-indicator {
|
|
|
1471
1549
|
gap: 6px;
|
|
1472
1550
|
}
|
|
1473
1551
|
|
|
1552
|
+
.row-actions-mobile {
|
|
1553
|
+
display: none;
|
|
1554
|
+
position: relative;
|
|
1555
|
+
}
|
|
1556
|
+
|
|
1557
|
+
button.row-action-menu-trigger {
|
|
1558
|
+
width: 36px;
|
|
1559
|
+
height: 32px;
|
|
1560
|
+
padding: 0;
|
|
1561
|
+
color: var(--aks-muted);
|
|
1562
|
+
box-shadow: none;
|
|
1563
|
+
}
|
|
1564
|
+
|
|
1565
|
+
button.row-action-menu-trigger svg {
|
|
1566
|
+
width: 18px;
|
|
1567
|
+
height: 18px;
|
|
1568
|
+
}
|
|
1569
|
+
|
|
1570
|
+
button.row-action-menu-trigger:hover {
|
|
1571
|
+
transform: none;
|
|
1572
|
+
background: #f4f2ef;
|
|
1573
|
+
color: var(--aks-brand);
|
|
1574
|
+
box-shadow: none;
|
|
1575
|
+
}
|
|
1576
|
+
|
|
1577
|
+
.row-action-menu {
|
|
1578
|
+
position: absolute;
|
|
1579
|
+
top: calc(100% + 4px);
|
|
1580
|
+
right: 0;
|
|
1581
|
+
z-index: 5;
|
|
1582
|
+
display: grid;
|
|
1583
|
+
min-width: 132px;
|
|
1584
|
+
padding: 6px;
|
|
1585
|
+
border: 1px solid var(--aks-line);
|
|
1586
|
+
border-radius: var(--aks-radius);
|
|
1587
|
+
background: #fff;
|
|
1588
|
+
box-shadow: 0 12px 28px rgba(30, 39, 53, 0.14);
|
|
1589
|
+
}
|
|
1590
|
+
|
|
1591
|
+
.row-action-menu button {
|
|
1592
|
+
justify-content: flex-start;
|
|
1593
|
+
width: 100%;
|
|
1594
|
+
padding: 8px 10px;
|
|
1595
|
+
font-size: 13px;
|
|
1596
|
+
font-weight: 600;
|
|
1597
|
+
color: var(--aks-brand);
|
|
1598
|
+
box-shadow: none;
|
|
1599
|
+
}
|
|
1600
|
+
|
|
1601
|
+
.row-action-menu button.danger:not(:disabled) {
|
|
1602
|
+
color: #a33b2b;
|
|
1603
|
+
}
|
|
1604
|
+
|
|
1605
|
+
.row-action-menu button:hover:not(:disabled) {
|
|
1606
|
+
transform: none;
|
|
1607
|
+
background: #f4f2ef;
|
|
1608
|
+
box-shadow: none;
|
|
1609
|
+
}
|
|
1610
|
+
|
|
1474
1611
|
button.row-action {
|
|
1475
1612
|
padding: 4px 8px;
|
|
1476
1613
|
font-size: 12px;
|
|
@@ -1568,6 +1705,10 @@ button.row-action.danger:not(:disabled):hover {
|
|
|
1568
1705
|
}
|
|
1569
1706
|
|
|
1570
1707
|
@media (max-width: 900px) {
|
|
1708
|
+
.list-body {
|
|
1709
|
+
flex-direction: column;
|
|
1710
|
+
}
|
|
1711
|
+
|
|
1571
1712
|
.list-body.side-open,
|
|
1572
1713
|
.list-body.preview-open {
|
|
1573
1714
|
flex-direction: column;
|
|
@@ -1585,16 +1726,47 @@ button.row-action.danger:not(:disabled):hover {
|
|
|
1585
1726
|
align-items: center;
|
|
1586
1727
|
width: 100%;
|
|
1587
1728
|
flex-basis: auto;
|
|
1729
|
+
order: -1;
|
|
1588
1730
|
}
|
|
1589
1731
|
|
|
1590
1732
|
.side-rail:not(.open) .side-rail-icons {
|
|
1591
1733
|
display: inline-flex;
|
|
1734
|
+
flex-wrap: wrap;
|
|
1592
1735
|
margin-left: auto;
|
|
1736
|
+
gap: 4px;
|
|
1737
|
+
}
|
|
1738
|
+
|
|
1739
|
+
.side-rail.open {
|
|
1740
|
+
order: -1;
|
|
1593
1741
|
}
|
|
1594
1742
|
|
|
1595
1743
|
.table-card-bar {
|
|
1596
1744
|
flex-wrap: wrap;
|
|
1597
1745
|
}
|
|
1746
|
+
|
|
1747
|
+
.data-table {
|
|
1748
|
+
min-width: 520px;
|
|
1749
|
+
}
|
|
1750
|
+
|
|
1751
|
+
.row-actions-desktop {
|
|
1752
|
+
display: none;
|
|
1753
|
+
}
|
|
1754
|
+
|
|
1755
|
+
.row-actions-mobile {
|
|
1756
|
+
display: inline-flex;
|
|
1757
|
+
}
|
|
1758
|
+
|
|
1759
|
+
.data-table .actions-col {
|
|
1760
|
+
position: sticky;
|
|
1761
|
+
right: 0;
|
|
1762
|
+
z-index: 1;
|
|
1763
|
+
background: #fff;
|
|
1764
|
+
box-shadow: -8px 0 12px rgba(30, 39, 53, 0.04);
|
|
1765
|
+
}
|
|
1766
|
+
|
|
1767
|
+
.data-table thead .actions-col {
|
|
1768
|
+
background: #f6f5f3;
|
|
1769
|
+
}
|
|
1598
1770
|
}
|
|
1599
1771
|
|
|
1600
1772
|
/* src\theme\shell.css */
|
|
@@ -1633,20 +1805,146 @@ button.row-action.danger:not(:disabled):hover {
|
|
|
1633
1805
|
display: none;
|
|
1634
1806
|
}
|
|
1635
1807
|
|
|
1808
|
+
/* Mobile drawer — hidden on desktop */
|
|
1809
|
+
.nav-drawer-backdrop,
|
|
1810
|
+
.nav-drawer {
|
|
1811
|
+
display: none;
|
|
1812
|
+
}
|
|
1813
|
+
|
|
1814
|
+
button.topbar-menu-button {
|
|
1815
|
+
display: none;
|
|
1816
|
+
width: 40px;
|
|
1817
|
+
height: 40px;
|
|
1818
|
+
padding: 0;
|
|
1819
|
+
border-radius: var(--aks-radius);
|
|
1820
|
+
background: transparent;
|
|
1821
|
+
color: var(--aks-brand);
|
|
1822
|
+
box-shadow: none;
|
|
1823
|
+
}
|
|
1824
|
+
|
|
1825
|
+
button.topbar-menu-button svg {
|
|
1826
|
+
width: 22px;
|
|
1827
|
+
height: 22px;
|
|
1828
|
+
}
|
|
1829
|
+
|
|
1830
|
+
button.topbar-menu-button:hover {
|
|
1831
|
+
transform: none;
|
|
1832
|
+
background: #f4f2ef;
|
|
1833
|
+
box-shadow: none;
|
|
1834
|
+
}
|
|
1835
|
+
|
|
1636
1836
|
@media (max-width: 900px) {
|
|
1637
1837
|
.app-body {
|
|
1638
1838
|
grid-template-columns: 1fr;
|
|
1639
1839
|
}
|
|
1640
1840
|
|
|
1641
|
-
.app-shell .side-nav {
|
|
1841
|
+
.app-shell .app-body > .side-nav {
|
|
1642
1842
|
display: none;
|
|
1643
1843
|
}
|
|
1644
1844
|
|
|
1645
|
-
.
|
|
1845
|
+
button.topbar-menu-button {
|
|
1846
|
+
display: inline-grid;
|
|
1847
|
+
place-items: center;
|
|
1848
|
+
}
|
|
1849
|
+
|
|
1850
|
+
.app-shell.mobile-nav-drawer .screen,
|
|
1851
|
+
.app-shell.mobile-nav-hybrid:not(.has-bottom-nav) .screen {
|
|
1852
|
+
padding: 10px;
|
|
1853
|
+
}
|
|
1854
|
+
|
|
1855
|
+
.app-shell.has-bottom-nav .screen {
|
|
1646
1856
|
padding: 10px 10px 88px;
|
|
1647
1857
|
}
|
|
1648
1858
|
|
|
1649
|
-
|
|
1859
|
+
/* Drawer overlay */
|
|
1860
|
+
.nav-drawer-backdrop {
|
|
1861
|
+
display: block;
|
|
1862
|
+
position: fixed;
|
|
1863
|
+
inset: 0;
|
|
1864
|
+
z-index: 40;
|
|
1865
|
+
border: 0;
|
|
1866
|
+
padding: 0;
|
|
1867
|
+
margin: 0;
|
|
1868
|
+
background: rgba(30, 39, 53, 0.42);
|
|
1869
|
+
opacity: 0;
|
|
1870
|
+
pointer-events: none;
|
|
1871
|
+
transition: opacity 160ms ease;
|
|
1872
|
+
box-shadow: none;
|
|
1873
|
+
}
|
|
1874
|
+
|
|
1875
|
+
.nav-drawer-backdrop.open {
|
|
1876
|
+
opacity: 1;
|
|
1877
|
+
pointer-events: auto;
|
|
1878
|
+
}
|
|
1879
|
+
|
|
1880
|
+
.nav-drawer {
|
|
1881
|
+
display: flex;
|
|
1882
|
+
flex-direction: column;
|
|
1883
|
+
position: fixed;
|
|
1884
|
+
top: 0;
|
|
1885
|
+
left: 0;
|
|
1886
|
+
bottom: 0;
|
|
1887
|
+
z-index: 50;
|
|
1888
|
+
width: min(300px, calc(100vw - 48px));
|
|
1889
|
+
background: #fff;
|
|
1890
|
+
border-right: 1px solid var(--aks-line);
|
|
1891
|
+
box-shadow: 12px 0 32px rgba(30, 39, 53, 0.18);
|
|
1892
|
+
transform: translateX(-105%);
|
|
1893
|
+
transition: transform 180ms ease;
|
|
1894
|
+
pointer-events: none;
|
|
1895
|
+
}
|
|
1896
|
+
|
|
1897
|
+
.nav-drawer.open {
|
|
1898
|
+
transform: translateX(0);
|
|
1899
|
+
pointer-events: auto;
|
|
1900
|
+
}
|
|
1901
|
+
|
|
1902
|
+
.nav-drawer-head {
|
|
1903
|
+
display: flex;
|
|
1904
|
+
align-items: center;
|
|
1905
|
+
justify-content: space-between;
|
|
1906
|
+
gap: 12px;
|
|
1907
|
+
flex: 0 0 auto;
|
|
1908
|
+
padding: 14px 14px 10px;
|
|
1909
|
+
border-bottom: 1px solid var(--aks-line);
|
|
1910
|
+
}
|
|
1911
|
+
|
|
1912
|
+
.nav-drawer-title {
|
|
1913
|
+
margin: 0;
|
|
1914
|
+
color: var(--aks-brand);
|
|
1915
|
+
font-size: 12px;
|
|
1916
|
+
font-weight: 700;
|
|
1917
|
+
letter-spacing: 0.06em;
|
|
1918
|
+
text-transform: uppercase;
|
|
1919
|
+
}
|
|
1920
|
+
|
|
1921
|
+
button.nav-drawer-close {
|
|
1922
|
+
padding: 6px 10px;
|
|
1923
|
+
font-size: 12px;
|
|
1924
|
+
box-shadow: none;
|
|
1925
|
+
}
|
|
1926
|
+
|
|
1927
|
+
.nav-drawer .side-nav,
|
|
1928
|
+
.nav-drawer-nav {
|
|
1929
|
+
display: flex !important;
|
|
1930
|
+
flex-direction: column;
|
|
1931
|
+
flex: 1 1 auto;
|
|
1932
|
+
min-height: 0;
|
|
1933
|
+
overflow: auto;
|
|
1934
|
+
padding: 10px;
|
|
1935
|
+
gap: 4px;
|
|
1936
|
+
border: 0;
|
|
1937
|
+
background: transparent;
|
|
1938
|
+
}
|
|
1939
|
+
|
|
1940
|
+
.nav-drawer .side-nav button {
|
|
1941
|
+
justify-content: flex-start;
|
|
1942
|
+
width: 100%;
|
|
1943
|
+
text-align: left;
|
|
1944
|
+
}
|
|
1945
|
+
|
|
1946
|
+
/* Legacy / optional bottom nav */
|
|
1947
|
+
.app-shell.has-bottom-nav .bottom-nav {
|
|
1650
1948
|
position: fixed;
|
|
1651
1949
|
left: 0;
|
|
1652
1950
|
right: 0;
|
|
@@ -1661,6 +1959,10 @@ button.row-action.danger:not(:disabled):hover {
|
|
|
1661
1959
|
box-shadow: 0 -8px 24px rgba(30, 39, 53, 0.18);
|
|
1662
1960
|
}
|
|
1663
1961
|
|
|
1962
|
+
.app-shell.mobile-nav-hybrid.has-bottom-nav .bottom-nav {
|
|
1963
|
+
grid-template-columns: 1fr auto;
|
|
1964
|
+
}
|
|
1965
|
+
|
|
1664
1966
|
.bottom-nav button {
|
|
1665
1967
|
display: flex;
|
|
1666
1968
|
flex-direction: column;
|
|
@@ -1674,18 +1976,37 @@ button.row-action.danger:not(:disabled):hover {
|
|
|
1674
1976
|
font-size: 10px;
|
|
1675
1977
|
line-height: 1.1;
|
|
1676
1978
|
white-space: nowrap;
|
|
1979
|
+
overflow: hidden;
|
|
1980
|
+
text-overflow: ellipsis;
|
|
1677
1981
|
box-shadow: none;
|
|
1678
1982
|
}
|
|
1679
1983
|
|
|
1984
|
+
.bottom-nav button.bottom-nav-current {
|
|
1985
|
+
align-items: flex-start;
|
|
1986
|
+
padding-left: 14px;
|
|
1987
|
+
font-size: 12px;
|
|
1988
|
+
font-weight: 600;
|
|
1989
|
+
color: #fff;
|
|
1990
|
+
opacity: 1;
|
|
1991
|
+
}
|
|
1992
|
+
|
|
1993
|
+
.bottom-nav button.bottom-nav-menu {
|
|
1994
|
+
min-width: 72px;
|
|
1995
|
+
background: var(--aks-accent);
|
|
1996
|
+
color: #fff;
|
|
1997
|
+
font-size: 12px;
|
|
1998
|
+
font-weight: 700;
|
|
1999
|
+
}
|
|
2000
|
+
|
|
1680
2001
|
.bottom-nav button.active,
|
|
1681
|
-
.bottom-nav button:hover {
|
|
2002
|
+
.bottom-nav button:hover:not(:disabled) {
|
|
1682
2003
|
transform: none;
|
|
1683
2004
|
background: var(--aks-accent);
|
|
1684
2005
|
color: #fff;
|
|
1685
2006
|
box-shadow: none;
|
|
1686
2007
|
}
|
|
1687
2008
|
|
|
1688
|
-
.snackbar-host {
|
|
2009
|
+
.app-shell.has-bottom-nav .snackbar-host {
|
|
1689
2010
|
right: 16px;
|
|
1690
2011
|
bottom: calc(78px + env(safe-area-inset-bottom));
|
|
1691
2012
|
}
|