@starasia/admin 14.57.2 → 14.59.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.
@@ -12,7 +12,10 @@ export declare const navRailWidth: (showLabels: boolean) => "var(--app-header-he
12
12
  export interface NavRailProps {
13
13
  items: SidebarRailItem[];
14
14
  bottomItems?: SidebarRailAction[];
15
+ /** Item rail yang dipilih (filter panel). */
15
16
  activeKey: string;
17
+ /** Item rail yang memuat halaman aktif — diberi garis lokasi. */
18
+ locationKey?: string;
16
19
  onSelect: (key: string) => void;
17
20
  onAction: (item: SidebarRailAction) => void;
18
21
  logo: string;
@@ -28,14 +31,18 @@ export interface NavRailProps {
28
31
  * Rail navigasi desktop — kolom ikon di kiri panel sidebar. Dirakit oleh
29
32
  * `AppLayout` saat prop `rail` diisi; consumer tidak merender ini sendiri.
30
33
  */
31
- export declare function NavRail({ items, bottomItems, activeKey, onSelect, onAction, logo, panelCollapsed, onExpandPanel, showLabels, theme, }: NavRailProps): React.JSX.Element;
34
+ export declare function NavRail({ items, bottomItems, activeKey, locationKey, onSelect, onAction, logo, panelCollapsed, onExpandPanel, showLabels, theme, }: NavRailProps): React.JSX.Element;
32
35
  export interface MobileRailTabsProps {
33
36
  items: SidebarRailItem[];
37
+ /** Tab yang dipilih (filter panel). */
34
38
  activeKey: string;
39
+ /** Tab yang memuat halaman aktif — diberi garis lokasi di bawah label. */
40
+ locationKey?: string;
35
41
  onSelect: (key: string) => void;
36
42
  }
37
43
  /**
38
44
  * Pengganti rail di mobile: baris tab horizontal (scroll) di atas menu drawer.
39
- * Kolom rail vertikal terlalu memakan lebar drawer di layar kecil.
45
+ * Kolom rail vertikal terlalu memakan lebar drawer di layar kecil. Sinyalnya
46
+ * sama dengan rail desktop: tab terpilih = latar netral, lokasi = garis brand.
40
47
  */
41
- export declare function MobileRailTabs({ items, activeKey, onSelect }: MobileRailTabsProps): React.JSX.Element;
48
+ export declare function MobileRailTabs({ items, activeKey, locationKey, onSelect, }: MobileRailTabsProps): React.JSX.Element;
@@ -78,6 +78,20 @@ interface AppLayoutProps {
78
78
  * @default true
79
79
  */
80
80
  resizableSidebar?: boolean;
81
+ /**
82
+ * Group menu (modul) di panel bisa dilipat lewat judulnya — sidebar panjang
83
+ * jadi daftar nama modul + isi modul yang dibuka. Group yang memuat halaman
84
+ * aktif terbuka otomatis saat halamannya dibuka; group lain terlipat sampai
85
+ * dibuka user, dan tidak pernah terlipat otomatis (daftar tidak meloncat
86
+ * setelah klik). Pilihan buka/lipat disimpan per app di localStorage. Group
87
+ * terlipat yang berisi badge menampilkan titik di judulnya.
88
+ *
89
+ * Hanya berlaku saat panel menampilkan lebih dari satu group, dan tidak di
90
+ * icon rail. Jangan dipakai bersama filter teks menu buatan app — hasil
91
+ * filter bisa tersembunyi di group yang terlipat.
92
+ * @default false
93
+ */
94
+ collapsibleGroups?: boolean;
81
95
  /**
82
96
  * Rail navigasi: kolom ikon di kiri panel sidebar (pola ClickUp/Slack).
83
97
  * Item rail memfilter group yang tampil di panel lewat `groupIds`; item tanpa
@@ -119,5 +133,5 @@ export type SidebarTheme = "light" | "dark";
119
133
  * - Embed mode for iframes
120
134
  * - Header actions slot for caller-composed controls (e.g. ModuleSwitcher)
121
135
  */
122
- export declare function AppLayout({ children, headerLeftSlot, profile, isLoadingProfile, onLogout, isLoggingOut, loadingComponent, sidebarHeaderContent, headerActions, profileRole, profileMenuButtons, profileMenuItems, logoutButton, resizableSidebar, rail, sidebarTheme, }: AppLayoutProps): React.JSX.Element;
136
+ export declare function AppLayout({ children, headerLeftSlot, profile, isLoadingProfile, onLogout, isLoggingOut, loadingComponent, sidebarHeaderContent, headerActions, profileRole, profileMenuButtons, profileMenuItems, logoutButton, resizableSidebar, collapsibleGroups, rail, sidebarTheme, }: AppLayoutProps): React.JSX.Element;
123
137
  export {};
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Token permukaan sidebar `AppLayout` — bisa di-set app di CSS tanpa layer, mis.
2
+ * Token sidebar `AppLayout` — bisa di-set app di CSS tanpa layer, mis.
3
3
  *
4
4
  * :root {
5
5
  * --sa-app-sidebar-bg: #1c2627;
@@ -7,17 +7,12 @@
7
7
  * --sa-app-sidebar-active-fg: #ffffff;
8
8
  * }
9
9
  *
10
- * Fallback = tampilan bawaan, jadi tanpa token tidak ada yang berubah.
10
+ * Tanpa token = tampilan bawaan.
11
+ *
12
+ * Token status menu (`--sa-app-sidebar-active-*` untuk lokasi/halaman aktif,
13
+ * `--sa-app-sidebar-group-active-fg`, `--sa-app-sidebar-rail-selected-*` untuk
14
+ * filter rail) dipakai di `app-layout.module.css` — daftar & default-nya ada
15
+ * di header file itu.
11
16
  */
12
17
  /** Latar panel sidebar, footer, & rail. */
13
18
  export declare const SIDEBAR_BG = "var(--sa-app-sidebar-bg, var(--sa-background-primary-inverse))";
14
- /**
15
- * Item navigasi AKTIF di sidebar & rail (menu induk, sub-menu, tombol rail, tab rail
16
- * mobile). Dipasang inline hanya saat aktif; item aktif juga diberi `data-active`.
17
- * Fallback = nilai lama (`bg="white"` → `--sa-background-primary`, teks primary,
18
- * border subtle, tanpa bayangan).
19
- */
20
- export declare const SIDEBAR_ACTIVE_BG = "var(--sa-app-sidebar-active-bg, var(--sa-background-primary, #ffffff))";
21
- export declare const SIDEBAR_ACTIVE_FG = "var(--sa-app-sidebar-active-fg, var(--sa-text-primary, #292a2e))";
22
- export declare const SIDEBAR_ACTIVE_BORDER = "var(--sa-app-sidebar-active-border, var(--sa-border-subtle, #0b120e24))";
23
- export declare const SIDEBAR_ACTIVE_SHADOW = "var(--sa-app-sidebar-active-shadow, none)";