@edmicro/olkit 1.2.0 → 1.3.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.
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1512" height="775.077" fill="none"><g stroke="#F9FAFB" clip-path="url(#a)"><path d="M.5 0v775M11.073 0v775M21.648 0v775M32.221 0v775M42.794 0v775M53.369 0v775M63.941 0v775M74.514 0v775M85.089 0v775M95.66 0v775M106.233 0v775M116.808 0v775M127.381 0v775M137.954 0v775M148.529 0v775M159.102 0v775M169.674 0v775M180.249 0v775M190.822 0v775M201.395 0v775M211.97 0v775M222.543 0v775M233.116 0v775M243.691 0v775m10.57-775v775M264.834 0v775M275.409 0v775M285.982 0v775M296.555 0v775M307.13 0v775M317.703 0v775M328.276 0v775M338.851 0v775M349.424 0v775M359.996 0v775M370.571 0v775M381.144 0v775M391.717 0v775M402.292 0v775M412.865 0v775M423.436 0v775M434.009 0v775M444.584 0v775M455.157 0v775M465.729 0v775M476.304 0v775M486.877 0v775M497.45 0v775M508.025 0v775M518.598 0v775M529.171 0v775M539.746 0v775M550.318 0v775M560.891 0v775M571.466 0v775M582.039 0v775M592.61 0v775M603.185 0v775M613.758 0v775M624.331 0v775M634.906 0v775M645.478 0v775M656.051 0v775M666.626 0v775M677.199 0v775M687.772 0v775M698.347 0v775M708.92 0v775M719.492 0v775M730.067 0v775M740.64 0v775M751.213 0v775M761.786 0v775M772.359 0v775M782.932 0v775M793.507 0v775M804.08 0v775M814.653 0v775M825.227 0v775M835.8 0v775M846.373 0v775M856.948 0v775M867.521 0v775M878.094 0v775M888.669 0v775M899.242 0v775M909.815 0v775M920.39 0v775M930.96 0v775M941.533 0v775M952.108 0v775M962.681 0v775M973.254 0v775M983.829 0v775M994.402 0v775M1004.97 0v775m10.58-775v775m10.57-775v775M1036.7 0v775m10.57-775v775m10.57-775v775m10.58-775v775m10.57-775v775m10.57-775v775m10.57-775v775m10.58-775v775m10.57-775v775m10.58-775v775m10.57-775v775M1153 0v775m10.58-775v775m10.57-775v775m10.57-775v775M1195.3 0v775m10.57-775v775m10.57-775v775m10.58-775v775m10.57-775v775m10.58-775v775m10.57-775v775m10.57-775v775m10.57-775v775m10.58-775v775m10.57-775v775M1311.6 0v775m10.58-775v775m10.57-775v775m10.58-775v775M1353.9 0v775m10.57-775v775m10.58-775v775m10.57-775v775m10.57-775v775m10.58-775v775m10.57-775v775m10.57-775v775m10.58-775v775m10.57-775v775m10.57-775v775m10.58-775v775m10.57-775v775m10.57-775v775m10.58-775v775"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h1512v775.077H0z"/></clipPath></defs></svg>
@@ -0,0 +1,163 @@
1
+ /*
2
+ * Hoạ tiết nền Ôn Luyện — 20 kiểu của Figma component "Pattern"
3
+ * (canvas "▒ Hoạ tiết" #1240:55097), dùng qua `<ol-pattern type="…">`.
4
+ *
5
+ * ## Vì sao file riêng, KHÔNG gộp vào olkit.css
6
+ *
7
+ * 20 file SVG nặng 1,1 MB (đã nén SVGO; bản xuất Figma 2,8 MB). Nhúng vào
8
+ * JS hay vào olkit.css thì app nào import kit cũng mang theo. Ở đây mỗi kiểu
9
+ * là một file SVG RIÊNG, CSS `mask-image: url(...)` trỏ tới — Angular CLI chép
10
+ * file theo, trình duyệt chỉ TẢI kiểu đang hiện trên trang.
11
+ *
12
+ * angular.json → "styles": [..., "node_modules/@edmicro/olkit/styles/patterns.css"]
13
+ *
14
+ * ## Vì sao mask, không background-image
15
+ *
16
+ * Mask lấy KÊNH ALPHA của SVG làm khuôn, màu là `background-color:
17
+ * currentColor` — một hoạ tiết dùng được mọi màu (trắng trên navy, brand trên
18
+ * nền sáng) qua class `text-*`, không cần 20 × N bản màu. Độ mờ từng nét trong
19
+ * Figma (stroke-opacity) vẫn giữ vì nằm trong kênh alpha.
20
+ *
21
+ * Bản xuất Figma kèm nền xám #F0F0F0, khung nền tối #101828 và viền #E5E7EB
22
+ * của frame — đã lọc, chỉ giữ nhóm `Type=…`.
23
+ */
24
+ .ol-pattern {
25
+ background-color: currentColor;
26
+ -webkit-mask-repeat: no-repeat;
27
+ mask-repeat: no-repeat;
28
+ -webkit-mask-position: center;
29
+ mask-position: center;
30
+ -webkit-mask-size: cover;
31
+ mask-size: cover;
32
+ }
33
+ .ol-pattern--fit-contain {
34
+ -webkit-mask-size: contain;
35
+ mask-size: contain;
36
+ }
37
+ /* Lặp ô gốc theo kích thước thật của hình Figma (~1512×776). */
38
+ .ol-pattern--fit-repeat {
39
+ -webkit-mask-repeat: repeat;
40
+ mask-repeat: repeat;
41
+ -webkit-mask-size: auto;
42
+ mask-size: auto;
43
+ }
44
+
45
+ /* Figma: Type=Lines */
46
+ .ol-pattern--lines {
47
+ -webkit-mask-image: url('./patterns/lines.svg');
48
+ mask-image: url('./patterns/lines.svg');
49
+ }
50
+
51
+ /* Figma: Type=Rounded Lines */
52
+ .ol-pattern--rounded-lines {
53
+ -webkit-mask-image: url('./patterns/rounded-lines.svg');
54
+ mask-image: url('./patterns/rounded-lines.svg');
55
+ }
56
+
57
+ /* Figma: Type=Creative */
58
+ .ol-pattern--creative {
59
+ -webkit-mask-image: url('./patterns/creative.svg');
60
+ mask-image: url('./patterns/creative.svg');
61
+ }
62
+
63
+ /* Figma: Type=Diamond right */
64
+ .ol-pattern--diamond-right {
65
+ -webkit-mask-image: url('./patterns/diamond-right.svg');
66
+ mask-image: url('./patterns/diamond-right.svg');
67
+ }
68
+
69
+ /* Figma: Type=Diamond left */
70
+ .ol-pattern--diamond-left {
71
+ -webkit-mask-image: url('./patterns/diamond-left.svg');
72
+ mask-image: url('./patterns/diamond-left.svg');
73
+ }
74
+
75
+ /* Figma: Type=Vertical lines */
76
+ .ol-pattern--vertical-lines {
77
+ -webkit-mask-image: url('./patterns/vertical-lines.svg');
78
+ mask-image: url('./patterns/vertical-lines.svg');
79
+ }
80
+
81
+ /* Figma: Type=oblique lines */
82
+ .ol-pattern--oblique-lines {
83
+ -webkit-mask-image: url('./patterns/oblique-lines.svg');
84
+ mask-image: url('./patterns/oblique-lines.svg');
85
+ }
86
+
87
+ /* Figma: Type=Dots */
88
+ .ol-pattern--dots {
89
+ -webkit-mask-image: url('./patterns/dots.svg');
90
+ mask-image: url('./patterns/dots.svg');
91
+ }
92
+
93
+ /* Figma: Type=Lines modern */
94
+ .ol-pattern--lines-modern {
95
+ -webkit-mask-image: url('./patterns/lines-modern.svg');
96
+ mask-image: url('./patterns/lines-modern.svg');
97
+ }
98
+
99
+ /* Figma: Type=Squares */
100
+ .ol-pattern--squares {
101
+ -webkit-mask-image: url('./patterns/squares.svg');
102
+ mask-image: url('./patterns/squares.svg');
103
+ }
104
+
105
+ /* Figma: Type=Modern */
106
+ .ol-pattern--modern {
107
+ -webkit-mask-image: url('./patterns/modern.svg');
108
+ mask-image: url('./patterns/modern.svg');
109
+ }
110
+
111
+ /* Figma: Type=comb */
112
+ .ol-pattern--comb {
113
+ -webkit-mask-image: url('./patterns/comb.svg');
114
+ mask-image: url('./patterns/comb.svg');
115
+ }
116
+
117
+ /* Figma: Type=tech */
118
+ .ol-pattern--tech {
119
+ -webkit-mask-image: url('./patterns/tech.svg');
120
+ mask-image: url('./patterns/tech.svg');
121
+ }
122
+
123
+ /* Figma: Type=tech-square */
124
+ .ol-pattern--tech-square {
125
+ -webkit-mask-image: url('./patterns/tech-square.svg');
126
+ mask-image: url('./patterns/tech-square.svg');
127
+ }
128
+
129
+ /* Figma: Type=tech-squares */
130
+ .ol-pattern--tech-squares {
131
+ -webkit-mask-image: url('./patterns/tech-squares.svg');
132
+ mask-image: url('./patterns/tech-squares.svg');
133
+ }
134
+
135
+ /* Figma: Type=technology */
136
+ .ol-pattern--technology {
137
+ -webkit-mask-image: url('./patterns/technology.svg');
138
+ mask-image: url('./patterns/technology.svg');
139
+ }
140
+
141
+ /* Figma: Type=comb-linear */
142
+ .ol-pattern--comb-linear {
143
+ -webkit-mask-image: url('./patterns/comb-linear.svg');
144
+ mask-image: url('./patterns/comb-linear.svg');
145
+ }
146
+
147
+ /* Figma: Type=big-comb */
148
+ .ol-pattern--big-comb {
149
+ -webkit-mask-image: url('./patterns/big-comb.svg');
150
+ mask-image: url('./patterns/big-comb.svg');
151
+ }
152
+
153
+ /* Figma: Type=lines-oblique */
154
+ .ol-pattern--lines-oblique {
155
+ -webkit-mask-image: url('./patterns/lines-oblique.svg');
156
+ mask-image: url('./patterns/lines-oblique.svg');
157
+ }
158
+
159
+ /* Figma: Type=technology-top */
160
+ .ol-pattern--technology-top {
161
+ -webkit-mask-image: url('./patterns/technology-top.svg');
162
+ mask-image: url('./patterns/technology-top.svg');
163
+ }
@@ -6266,6 +6266,23 @@ type AppNavItemVariant = 'rail' | 'sheet' | 'bar';
6266
6266
  interface AppNavConfig {
6267
6267
  groups: AppNavGroup[];
6268
6268
  user?: AppNavUser;
6269
+ /**
6270
+ * Thanh đáy mobile: `id` các mục theo ĐÚNG thứ tự muốn hiện — sắp mobile
6271
+ * độc lập với menu desktop (`groups` giữ nguyên thứ tự desktop).
6272
+ *
6273
+ * - Lấy được mục ở mọi cấp và mọi nhóm (kể cả `footer`, kể cả con của một
6274
+ * mục cha), miễn có `route` và không có con — ô thanh đáy là một cú chạm.
6275
+ * - Mục gốc đã lên thanh đáy không lặp lại trong khay; mục con vẫn ở trong
6276
+ * menu con của cha nó.
6277
+ * - Khai thì `mobilePrimaryCount` bị bỏ qua — số ô là độ dài danh sách. Nên
6278
+ * ≤ 4 (màn 375px: 4 ô + nút Menu).
6279
+ * - Không khai: `mobilePrimaryCount` mục đầu nhóm `main` như trước.
6280
+ *
6281
+ * ```ts
6282
+ * mobileBar: ['home', 'assignments', 'live-classes', 'self-study-practice'],
6283
+ * ```
6284
+ */
6285
+ mobileBar?: readonly string[];
6269
6286
  }
6270
6287
 
6271
6288
  /**
@@ -6335,6 +6352,14 @@ interface AppNavUserMenuContext {
6335
6352
  * `sheet` (khay mobile — không có chỗ ngang, nên xổ xuống tại chỗ).
6336
6353
  */
6337
6354
  variant: 'popup' | 'sheet';
6355
+ /**
6356
+ * Phần nào của menu đang vẽ. `all`: trọn menu (popup; khay khi
6357
+ * `mobileUserMenu="bottom"`). Khay với `mobileUserMenu="split"` vẽ template
6358
+ * HAI lần: `top` ngay dưới thẻ tài khoản (việc thường, cài đặt), `bottom`
6359
+ * cuối khay (mục phụ). Mục `danger` ở `split` do component vẽ thành nút icon
6360
+ * trên thẻ tài khoản — template đừng vẽ lại ở `bottom`.
6361
+ */
6362
+ part: 'all' | 'top' | 'bottom';
6338
6363
  }
6339
6364
  /** `<ng-template olAppNavItem let-item let-active="active" let-variant="variant">` */
6340
6365
  declare class OlAppNavItemDef {
@@ -6506,6 +6531,7 @@ declare class OlAppNav {
6506
6531
  readonly layout: _angular_core.InputSignal<AppNavLayout>;
6507
6532
  /**
6508
6533
  * Số mục lên thanh đáy mobile (đầu nhóm `main`); ô cuối luôn là nút Menu.
6534
+ * Bỏ qua khi `config.mobileBar` có khai — khi đó danh sách quyết định.
6509
6535
  *
6510
6536
  * Bốn: màn 375px chia 5 ô mỗi ô 75px — vừa icon 24px và một dòng nhãn 10px.
6511
6537
  * Sáu ô thì mỗi ô 62px, nhãn bắt đầu bị cắt.
@@ -6513,6 +6539,15 @@ declare class OlAppNav {
6513
6539
  readonly mobilePrimaryCount: _angular_core.InputSignal<number>;
6514
6540
  /** Khay menu mobile đang mở. Hai chiều: `[(mobileMenuOpen)]` — khung đóng khi chuyển trang. */
6515
6541
  readonly mobileMenuOpen: _angular_core.ModelSignal<boolean>;
6542
+ /**
6543
+ * Chỗ đặt menu tài khoản trong khay mobile:
6544
+ * - `bottom` (mặc định, như các bản trước): trọn menu ở cuối khay.
6545
+ * - `split`: việc thường (Trang cá nhân, Đổi mật khẩu… — mục không `danger`)
6546
+ * lên ĐẦU khay ngay dưới thẻ tài khoản; mục `danger` (Đăng xuất) thành nút
6547
+ * CHỈ ICON đỏ bên phải thẻ tài khoản. Template `olAppNavUserMenu` nhận
6548
+ * `part: 'top' | 'bottom'` để tự chia — và KHÔNG vẽ mục danger ở `bottom`.
6549
+ */
6550
+ readonly mobileUserMenu: _angular_core.InputSignal<"bottom" | "split">;
6516
6551
  /** Chữ trên nút Menu của thanh đáy. */
6517
6552
  readonly mobileMenuLabel: _angular_core.InputSignal<string>;
6518
6553
  readonly itemDef: _angular_core.Signal<OlAppNavItemDef | undefined>;
@@ -6541,9 +6576,10 @@ declare class OlAppNav {
6541
6576
  /** Mục của phần dưới, nằm sát thẻ tài khoản. */
6542
6577
  readonly footerItems: _angular_core.Signal<AppNavItem[]>;
6543
6578
  /**
6544
- * Mục lên thanh đáy mobile: `mobilePrimaryCount` mục gốc ĐẦU TIÊN của phần
6545
- * trên mà có `route` và KHÔNG có con — ô thanh đáy là một cú chạm điều
6546
- * hướng, không chứa được menu con. Mục cha vào khay.
6579
+ * Mục lên thanh đáy mobile. Có `config.mobileBar` → đúng các id đó, đúng
6580
+ * thứ tự đó (mọi nhóm, mọi cấp). Không có → `mobilePrimaryCount` mục gốc ĐẦU
6581
+ * TIÊN của phần trên. Cả hai chỉ nhận mục có `route` và KHÔNG có con — ô
6582
+ * thanh đáy là một cú chạm điều hướng, không chứa được menu con.
6547
6583
  */
6548
6584
  readonly primaryItems: _angular_core.Signal<AppNavItem[]>;
6549
6585
  /**
@@ -6614,6 +6650,14 @@ declare class OlAppNav {
6614
6650
  /** Ngữ cảnh template menu tài khoản — popup desktop và khay mobile. */
6615
6651
  readonly userMenuPopupContext: _angular_core.Signal<AppNavUserMenuContext | null>;
6616
6652
  readonly userMenuSheetContext: _angular_core.Signal<AppNavUserMenuContext | null>;
6653
+ readonly userMenuSheetTopContext: _angular_core.Signal<AppNavUserMenuContext | null>;
6654
+ /** Mục `danger` (Đăng xuất) — `split`: nút icon đỏ trên thẻ tài khoản đầu khay. */
6655
+ readonly cardActions: _angular_core.Signal<AppNavUserAction[]>;
6656
+ /**
6657
+ * Mục tài khoản mặc định (không template) cho phần khay đang vẽ. `split`:
6658
+ * việc thường ở `top`, mục danger đã lên thẻ tài khoản nên `bottom` rỗng.
6659
+ */
6660
+ sheetActionsFor(part: 'all' | 'top' | 'bottom'): readonly AppNavUserAction[];
6617
6661
  private buildUserMenuContext;
6618
6662
  /** Đường kẻ chỉ vẽ khi phần dưới có mục — không thì thừa một vạch. */
6619
6663
  readonly showDivider: _angular_core.Signal<boolean>;
@@ -6666,7 +6710,187 @@ declare class OlAppNav {
6666
6710
  toggleMobileMenu(): void;
6667
6711
  toggle(): void;
6668
6712
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlAppNav, never>;
6669
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<OlAppNav, "ol-app-nav", never, { "config": { "alias": "config"; "required": true; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "activeId": { "alias": "activeId"; "required": false; "isSignal": true; }; "logoSrc": { "alias": "logoSrc"; "required": false; "isSignal": true; }; "logoMarkSrc": { "alias": "logoMarkSrc"; "required": false; "isSignal": true; }; "logoTone": { "alias": "logoTone"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "collapsedWidth": { "alias": "collapsedWidth"; "required": false; "isSignal": true; }; "userMenuOpen": { "alias": "userMenuOpen"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "mobilePrimaryCount": { "alias": "mobilePrimaryCount"; "required": false; "isSignal": true; }; "mobileMenuOpen": { "alias": "mobileMenuOpen"; "required": false; "isSignal": true; }; "mobileMenuLabel": { "alias": "mobileMenuLabel"; "required": false; "isSignal": true; }; "showRail": { "alias": "showRail"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; "itemClick": "itemClick"; "userClick": "userClick"; "userAction": "userAction"; "userMenuOpen": "userMenuOpenChange"; "mobileMenuOpen": "mobileMenuOpenChange"; }, ["itemDef", "headerDef", "footerDef", "logoDef", "userDef", "userMenuDef"], never, true, never>;
6713
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<OlAppNav, "ol-app-nav", never, { "config": { "alias": "config"; "required": true; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "activeId": { "alias": "activeId"; "required": false; "isSignal": true; }; "logoSrc": { "alias": "logoSrc"; "required": false; "isSignal": true; }; "logoMarkSrc": { "alias": "logoMarkSrc"; "required": false; "isSignal": true; }; "logoTone": { "alias": "logoTone"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "collapsedWidth": { "alias": "collapsedWidth"; "required": false; "isSignal": true; }; "userMenuOpen": { "alias": "userMenuOpen"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "mobilePrimaryCount": { "alias": "mobilePrimaryCount"; "required": false; "isSignal": true; }; "mobileMenuOpen": { "alias": "mobileMenuOpen"; "required": false; "isSignal": true; }; "mobileUserMenu": { "alias": "mobileUserMenu"; "required": false; "isSignal": true; }; "mobileMenuLabel": { "alias": "mobileMenuLabel"; "required": false; "isSignal": true; }; "showRail": { "alias": "showRail"; "required": false; "isSignal": true; }; }, { "collapsed": "collapsedChange"; "itemClick": "itemClick"; "userClick": "userClick"; "userAction": "userAction"; "userMenuOpen": "userMenuOpenChange"; "mobileMenuOpen": "mobileMenuOpenChange"; }, ["itemDef", "headerDef", "footerDef", "logoDef", "userDef", "userMenuDef"], never, true, never>;
6714
+ }
6715
+
6716
+ /**
6717
+ * Các khe template của `ol-app-header`. Vùng nào không truyền thì component
6718
+ * vẽ giao diện mặc định. Khung (kiểu nhìn, dính đỉnh, nền mobile, chiều cao)
6719
+ * luôn do component giữ.
6720
+ *
6721
+ * olAppHeaderTitle thay khối tiêu đề (breadcrumb, avatar lớp…)
6722
+ * olAppHeaderActions cụm bên phải (chip, chuông…)
6723
+ * olAppHeaderContent thay TOÀN BỘ ruột — thanh làm bài (đồng hồ + tiến
6724
+ * trình + Nộp bài); khi có, nút quay lại / tiêu đề /
6725
+ * ô tìm không vẽ
6726
+ */
6727
+ /** Ngữ cảnh khe — chưa mang dữ liệu; để sẵn cho mở rộng không phá API. */
6728
+ type AppHeaderSlotContext = Record<string, never>;
6729
+ /** `<ng-template olAppHeaderTitle>` */
6730
+ declare class OlAppHeaderTitleDef {
6731
+ readonly template: TemplateRef<AppHeaderSlotContext>;
6732
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlAppHeaderTitleDef, never>;
6733
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OlAppHeaderTitleDef, "ng-template[olAppHeaderTitle]", never, {}, {}, never, never, true, never>;
6734
+ }
6735
+ /** `<ng-template olAppHeaderActions>` */
6736
+ declare class OlAppHeaderActionsDef {
6737
+ readonly template: TemplateRef<AppHeaderSlotContext>;
6738
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlAppHeaderActionsDef, never>;
6739
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OlAppHeaderActionsDef, "ng-template[olAppHeaderActions]", never, {}, {}, never, never, true, never>;
6740
+ }
6741
+ /** `<ng-template olAppHeaderContent>` */
6742
+ declare class OlAppHeaderContentDef {
6743
+ readonly template: TemplateRef<AppHeaderSlotContext>;
6744
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlAppHeaderContentDef, never>;
6745
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OlAppHeaderContentDef, "ng-template[olAppHeaderContent]", never, {}, {}, never, never, true, never>;
6746
+ }
6747
+ /** Gom sẵn để import một lần. */
6748
+ declare const OL_APP_HEADER_TEMPLATES: readonly [typeof OlAppHeaderTitleDef, typeof OlAppHeaderActionsDef, typeof OlAppHeaderContentDef];
6749
+
6750
+ /**
6751
+ * Kiểu dữ liệu cho `ol-app-header` — thanh trên của trang trong app (đi cặp
6752
+ * `ol-app-nav`). Khác `ol-navbar`: đó là navbar trang WEB (logo + liên kết).
6753
+ */
6754
+ /**
6755
+ * Kiểu nhìn:
6756
+ * `plain` trong suốt, không viền — đặt trên nền trang (có hoạ tiết)
6757
+ * `solid` nền trắng + viền dưới — trang nền trơn, admin
6758
+ * `floating` thẻ trắng bo góc + bóng nhẹ — dashboard kiểu thẻ
6759
+ */
6760
+ type AppHeaderVariant = 'plain' | 'solid' | 'floating';
6761
+ /** Chiều cao: `base` 64px · `sm` 56px. */
6762
+ type AppHeaderSize = 'base' | 'sm';
6763
+ /** Một mục đường dẫn (breadcrumb). Không có `link` = không bấm được (mục cuối). */
6764
+ interface AppHeaderCrumb {
6765
+ label: string;
6766
+ link?: string;
6767
+ }
6768
+ /** Mốc ô tìm hiện đầy đủ giữa hàng; dưới mốc là nút kính lúp mở ô. */
6769
+ type AppHeaderSearchCollapseAt = 'lg' | 'xl';
6770
+
6771
+ /**
6772
+ * Thanh trên của trang trong app — đi cặp `ol-app-nav`.
6773
+ *
6774
+ * Bố cục một hàng: [←] [tiêu đề] [ô tìm — co theo chỗ] [hành động].
6775
+ *
6776
+ * ## Hai hành vi theo bề ngang
6777
+ *
6778
+ * Desktop theo `variant`. Dưới `md` (`mobileSolid`, mặc định bật) header luôn
6779
+ * DÍNH ĐỈNH và NỀN ĐẶC: ở màn hẹp không còn menu trái, header là mốc duy nhất
6780
+ * cho biết đang ở màn nào; dính mà trong suốt thì nội dung cuộn qua hiện
6781
+ * xuyên lên, chữ chồng chữ.
6782
+ *
6783
+ * ## Ô tìm co giãn
6784
+ *
6785
+ * Từ `searchCollapseAt` trở lên ô nằm giữa hàng, `flex-1`, co lại khi chật;
6786
+ * dưới mốc đó thành nút kính lúp mở ô trong bảng thả xuống — không bóp ô tới
6787
+ * mức không gõ nổi.
6788
+ *
6789
+ * ## Khe
6790
+ *
6791
+ * `olAppHeaderTitle` · `olAppHeaderActions` · `olAppHeaderContent` — xem
6792
+ * `app-header-templates.ts`. `olAppHeaderContent` thay trọn ruột (thanh làm
6793
+ * bài), khung vẫn của component.
6794
+ */
6795
+ declare class OlAppHeader {
6796
+ private readonly router;
6797
+ readonly variant: _angular_core.InputSignal<AppHeaderVariant>;
6798
+ readonly size: _angular_core.InputSignal<AppHeaderSize>;
6799
+ /** Dưới `md`: dính đỉnh + nền đặc + viền dưới. */
6800
+ readonly mobileSolid: _angular_core.InputSignal<boolean>;
6801
+ /** Dính đỉnh cả trên desktop — `plain` tự có nền đặc khi dính. */
6802
+ readonly sticky: _angular_core.InputSignal<boolean>;
6803
+ /**
6804
+ * Class thêm vào thẻ `<header>` — host là `contents` nên class đặt trên
6805
+ * `<ol-app-header>` không có hộp nào để áp. Ví dụ kéo tràn mép ở mobile:
6806
+ * `headerClass="-mx-4 -mt-4 md:mx-0 md:mt-0"`.
6807
+ */
6808
+ readonly headerClass: _angular_core.InputSignal<string>;
6809
+ readonly title: _angular_core.InputSignal<string>;
6810
+ /** Dòng nhỏ phía trên tiêu đề, ví dụ "HỌC SINH · ÔN LUYỆN". Ẩn dưới `sm`. */
6811
+ readonly subtitle: _angular_core.InputSignal<string>;
6812
+ /**
6813
+ * Đường dẫn phía trên tiêu đề, thay `subtitle` khi có ≥ 2 mục. Mục cuối là
6814
+ * trang hiện tại (không bấm được). Ẩn dưới `sm` như `subtitle`.
6815
+ */
6816
+ readonly breadcrumbs: _angular_core.InputSignal<readonly AppHeaderCrumb[]>;
6817
+ readonly showBreadcrumbs: _angular_core.Signal<boolean>;
6818
+ /** Đường dẫn quay lại — bấm thì `router.navigateByUrl`. */
6819
+ readonly backLink: _angular_core.InputSignal<string>;
6820
+ /** Hiện nút quay lại và chỉ phát `(back)` — nơi dùng tự điều hướng. */
6821
+ readonly showBack: _angular_core.InputSignal<boolean>;
6822
+ /** Tên đọc + tooltip của nút quay lại: "Quay lại <backLabel>". */
6823
+ readonly backLabel: _angular_core.InputSignal<string>;
6824
+ readonly back: _angular_core.OutputEmitterRef<void>;
6825
+ readonly showSearch: _angular_core.InputSignal<boolean>;
6826
+ readonly searchPlaceholder: _angular_core.InputSignal<string>;
6827
+ readonly searchAriaLabel: _angular_core.InputSignal<string>;
6828
+ readonly searchCollapseAt: _angular_core.InputSignal<AppHeaderSearchCollapseAt>;
6829
+ readonly searchValue: _angular_core.ModelSignal<string>;
6830
+ /** Bấm Enter trong ô tìm — giá trị đã cắt khoảng trắng, bỏ qua khi rỗng. */
6831
+ readonly search: _angular_core.OutputEmitterRef<string>;
6832
+ readonly titleDef: _angular_core.Signal<OlAppHeaderTitleDef | undefined>;
6833
+ readonly actionsDef: _angular_core.Signal<OlAppHeaderActionsDef | undefined>;
6834
+ readonly contentDef: _angular_core.Signal<OlAppHeaderContentDef | undefined>;
6835
+ readonly hasBack: _angular_core.Signal<boolean>;
6836
+ readonly backAriaLabel: _angular_core.Signal<string>;
6837
+ /** Khung `<header>` — kiểu nhìn + hành vi mobile + dính đỉnh. */
6838
+ readonly headerClasses: _angular_core.Signal<string>;
6839
+ /** Ô tìm đầy đủ: chỉ hiện từ mốc. Viết đủ hai chuỗi để Tailwind quét thấy. */
6840
+ readonly searchInlineClasses: _angular_core.Signal<"hidden min-w-0 max-w-md flex-1 lg:block" | "hidden min-w-0 max-w-md flex-1 xl:block">;
6841
+ /** Nút kính lúp: chỉ dưới mốc. */
6842
+ readonly searchToggleClasses: _angular_core.Signal<"shrink-0 lg:hidden" | "shrink-0 xl:hidden">;
6843
+ /**
6844
+ * Khối tiêu đề: chiếm chỗ trống khi ô tìm không nằm giữa hàng; khi ô tìm
6845
+ * hiện thì nhường `flex-1` cho ô tìm, tiêu đề chỉ rộng theo chữ.
6846
+ */
6847
+ readonly titleClasses: _angular_core.Signal<"min-w-0 flex-1" | "min-w-0 flex-1 lg:max-w-[40%] lg:flex-none" | "min-w-0 flex-1 xl:max-w-[40%] xl:flex-none">;
6848
+ onBack(): void;
6849
+ submitSearch(event: Event): void;
6850
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlAppHeader, never>;
6851
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<OlAppHeader, "ol-app-header", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "mobileSolid": { "alias": "mobileSolid"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; "headerClass": { "alias": "headerClass"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "breadcrumbs": { "alias": "breadcrumbs"; "required": false; "isSignal": true; }; "backLink": { "alias": "backLink"; "required": false; "isSignal": true; }; "showBack": { "alias": "showBack"; "required": false; "isSignal": true; }; "backLabel": { "alias": "backLabel"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "searchAriaLabel": { "alias": "searchAriaLabel"; "required": false; "isSignal": true; }; "searchCollapseAt": { "alias": "searchCollapseAt"; "required": false; "isSignal": true; }; "searchValue": { "alias": "searchValue"; "required": false; "isSignal": true; }; }, { "back": "back"; "searchValue": "searchValueChange"; "search": "search"; }, ["titleDef", "actionsDef", "contentDef"], never, true, never>;
6852
+ }
6853
+
6854
+ /**
6855
+ * 20 hoạ tiết của Figma component "Pattern" (#1240:55097). Thứ tự theo Figma.
6856
+ * Dùng mảng này cho bộ chọn / trang trưng bày.
6857
+ */
6858
+ declare const OL_PATTERN_TYPES: readonly ["lines", "rounded-lines", "creative", "diamond-right", "diamond-left", "vertical-lines", "oblique-lines", "dots", "lines-modern", "squares", "modern", "comb", "tech", "tech-square", "tech-squares", "technology", "comb-linear", "big-comb", "lines-oblique", "technology-top"];
6859
+ type PatternType = (typeof OL_PATTERN_TYPES)[number];
6860
+ /**
6861
+ * Cách phủ hình lên khung:
6862
+ * cover phủ kín, cắt phần thừa (mặc định — nền trang, banner)
6863
+ * contain hiện trọn hình, có thể chừa lề
6864
+ * repeat lặp hình gốc theo kích thước thật (~1512×776)
6865
+ */
6866
+ type PatternFit = 'cover' | 'contain' | 'repeat';
6867
+ /** `absolute` phủ khối cha (cha cần `relative`); `fixed` phủ cả màn, đứng yên khi cuộn. */
6868
+ type PatternPosition = 'absolute' | 'fixed';
6869
+ /**
6870
+ * Hoạ tiết nền — lớp trang trí phủ khối cha (banner, thẻ, nền trang).
6871
+ *
6872
+ * Màu = `currentColor`: đặt `class="text-white"` trên nền tối,
6873
+ * `class="text-fg-brand"` trên nền sáng. Độ đậm qua `opacity`.
6874
+ *
6875
+ * CẦN import `@edmicro/olkit/styles/patterns.css` (file riêng — 20 SVG chỉ tải
6876
+ * kiểu đang dùng). Thiếu file đó thì hoạ tiết không hiện.
6877
+ *
6878
+ * ```html
6879
+ * <div class="relative overflow-hidden rounded-lg bg-brand">
6880
+ * <ol-pattern type="tech" class="text-white" [opacity]="0.2" />
6881
+ * …nội dung…
6882
+ * </div>
6883
+ * ```
6884
+ */
6885
+ declare class OlPattern {
6886
+ readonly type: _angular_core.InputSignal<"dots" | "lines" | "rounded-lines" | "creative" | "diamond-right" | "diamond-left" | "vertical-lines" | "oblique-lines" | "lines-modern" | "squares" | "modern" | "comb" | "tech" | "tech-square" | "tech-squares" | "technology" | "comb-linear" | "big-comb" | "lines-oblique" | "technology-top">;
6887
+ readonly fit: _angular_core.InputSignal<PatternFit>;
6888
+ readonly position: _angular_core.InputSignal<PatternPosition>;
6889
+ /** Độ đậm 0–1. Trên nền sáng thường 0,06–0,15; trên nền tối 0,15–0,4. */
6890
+ readonly opacity: _angular_core.InputSignal<number>;
6891
+ readonly hostClasses: _angular_core.Signal<string>;
6892
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlPattern, never>;
6893
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<OlPattern, "ol-pattern", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "fit": { "alias": "fit"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "opacity": { "alias": "opacity"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
6670
6894
  }
6671
6895
 
6672
6896
  declare class OlSidebar {
@@ -7338,6 +7562,10 @@ declare class OlTooltipDirective implements OnDestroy {
7338
7562
  private showTimeout?;
7339
7563
  private hideTimeout?;
7340
7564
  private touchTimeout?;
7565
+ /** Hẹn hiện tooltip khi NHẤN GIỮ — huỷ nếu nhấc tay sớm (chạm nhanh). */
7566
+ private longPressTimeout?;
7567
+ /** Mốc chạm gần nhất — bỏ qua mouseenter/focus trình duyệt tự sinh sau cú chạm. */
7568
+ private lastTouchAt;
7341
7569
  private tooltipComponent?;
7342
7570
  private tooltipElement?;
7343
7571
  private cleanupAutoUpdate?;
@@ -7348,12 +7576,16 @@ declare class OlTooltipDirective implements OnDestroy {
7348
7576
  private blurListener?;
7349
7577
  private touchStartListener?;
7350
7578
  private touchEndListener?;
7579
+ private touchCancelListeners;
7351
7580
  constructor();
7352
7581
  ngOnDestroy(): void;
7353
7582
  /**
7354
7583
  * Setup event listeners for tooltip triggers
7355
7584
  */
7356
7585
  private setupListeners;
7586
+ /** Sự kiện chuột/focus này có phải do cú chạm vừa rồi sinh ra không (≤ 800ms). */
7587
+ private fromRecentTouch;
7588
+ private clearLongPress;
7357
7589
  /**
7358
7590
  * Remove event listeners
7359
7591
  */
@@ -8818,6 +9050,6 @@ declare class OlOverlayContainer {
8818
9050
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
8819
9051
  }
8820
9052
 
8821
- export { APP_NAV_DEFAULT_USER_ACTIONS, CHAT_BUBBLE_STATUS, FIELD_ASTERISK, FIELD_CLEAR_RESERVE_END, FIELD_DISABLED, FIELD_HEIGHT, FIELD_HELPER, FIELD_HELPER_GAP, FIELD_ICON_GAP, FIELD_ICON_RESERVE_END, FIELD_ICON_RESERVE_START, FIELD_LABEL, FIELD_LABEL_BESIDE, FIELD_LABEL_GAP, FIELD_MIN_HEIGHT, FIELD_PADDING_END, FIELD_PADDING_START, FIELD_PADDING_X, FIELD_RADIUS, FIELD_STATE, FIELD_TEXT, FILE_KIND_META, FLOAT_LABEL_START, MONTHS_FULL_EN, MONTHS_FULL_VI, MONTHS_SHORT_VI, OL_APP_NAV_TEMPLATES, OL_ICONS, OL_LOGO_FULL_COLOR, OL_LOGO_FULL_WHITE, OL_LOGO_MARK_COLOR, OL_LOGO_MARK_WHITE, OlAccordion, OlAccordionItem, OlAlert, OlAlertDialog, OlAppNav, OlAppNavFooterDef, OlAppNavHeaderDef, OlAppNavItemDef, OlAppNavLogoDef, OlAppNavUserDef, OlAppNavUserMenuDef, OlAspectRatio, OlAutocomplete, OlAvatar, OlAvatarGroup, OlBackdrop, OlBadge, OlBanner, OlBottomNav, OlBottomNavItem, OlBreadcrumb, OlBreadcrumbItem, OlButton, OlButtonGroup, OlCard, OlCarousel, OlCarouselSlide, OlChart, OlChatBubble, OlChatContainer, OlCheckbox, OlCheckboxRadioForm, OlCheckboxRadioGroup, OlClipboard, OlCollapse, OlCommand, OlDateRangePicker, OlDatepicker, OlDatepickerDirective, OlDatepickerFooter, OlDatepickerHeader, OlDatepickerPopup, OlDatepickerStateService, OlDayView, OlDeviceMockup, OlDownloadAppButton, OlDrawer, OlDrawerFooter, OlDrawerHeader, OlDropdown, OlDropdownHeader, OlDropdownItem, OlDropdownSearch, OlDropdownState, OlEmpty, OlFileDropzone, OlFileInput, OlFileItem, OlFileUpload, OlFocusTrapService, OlFooter, OlFrame, OlGallery, OlGalleryItem, OlHelper, OlIcon, OlIconService, OlIconShape, OlIconStack, OlImagePreview, OlInput, OlInputCounter, OlItem, OlJumbotron, OlKbd, OlLabel, OlListGroup, OlListGroupItem, OlLoadingOverlay, OlLogo, OlMenubar, OlModal, OlModalFooter, OlModalHeader, OlMonthView, OlNavDropdown, OlNavbar, OlNavbarItem, OlOtpInput, OlOverlayContainer, OlPagination, OlPopover, OlPopoverContent, OlPositioningService, OlProgress, OlProgressBarService, OlProgressBarTop, OlRadio, OlRange, OlRating, OlResizable, OlRichTextEditor, OlScrollArea, OlScrollspy, OlSegmented, OlSelect, OlSeparator, OlSidebar, OlSidebarGroup, OlSidebarItem, OlSidebarSubmenu, OlSkeleton, OlSpeedDial, OlSpeedDialItem, OlSpinner, OlStepItem, OlStepper, OlTabItem, OlTable, OlTableLoading, OlTableRow, OlTabs, OlTagInput, OlTextarea, OlTimeline, OlTimelineItem, OlTimepicker, OlToast, OlToastContainer, OlToastService, OlToggle, OlToggleGroup, OlToggleInput, OlTooltip, OlTooltipDirective, OlTree, OlTreeNodeItem, OlYearView, PICKER_ICON_RESERVE_START, WEEKDAYS_SHORT_EN, WEEKDAYS_SHORT_VI, boDau, cloneDate, detectFileKind, endOfDay, fieldLabelLayout, fieldSizeClasses, fileExtension, filesFromClipboard, formatDate, formatFileSize, generateMonthMatrix, generateMonthsMatrix, generateYearsMatrix, isBetween, isDateDisabled, isEditableTarget, isSameDay, isSameMonth, isSameYear, isToday, matchesAccept, multiValuePadY, parseDate, pasteShortcutLabel, provideOlIcons, startOfDay, stripDiacritics, toUploadFile, validateFiles };
8822
- export type { AccordionVariant, AlertColor, AlertDialogTone, AlertLayout, AlertRounded, AlertType, AlertVariant, AppDevice, AppNavConfig, AppNavGroup, AppNavItem, AppNavItemContext, AppNavItemVariant, AppNavLayout, AppNavLogoContext, AppNavSlotContext, AppNavUser, AppNavUserAction, AppNavUserContext, AppNavUserMenuContext, AppTheme, AutocompleteOption, AutocompleteSize, AutocompleteState, AvatarShape, AvatarSize, AvatarStatus, BadgeColor, BadgeShape, BadgeSize, BadgeTheme, BadgeType, BannerPosition, BannerVariant, BoxplotDataPoint, BreadcrumbItemStatus, BreadcrumbSeparator, BreadcrumbVariant, ButtonColor, ButtonGroupColor, ButtonGroupOrientation, ButtonGroupSize, ButtonSize, CardPadding, CardRadius, CardShadow, CardVariant, ChartDataPoint, ChartSeries, ChartType, ChatBubbleStatus, ChatSender, CheckboxSize, ChoiceControl, ChoiceControlPosition, ChoiceGroupLayout, ChoiceLayout, ChoiceShape, CommandGroup, CommandItem, DateCustomClass, DateRange, DatepickerPreset, DatepickerSelectionMode, DatepickerSize, DatepickerViewMode, DayCell, DeviceType, DrawerFooterLayout, DrawerPlacement, DrawerSize, DropdownAutoClose, DropdownPlacement, DropdownStateType, DropdownTrigger, EmptySize, FieldSize, FieldState, FileInputSize, FileItemVariant, FileKind, FileKindMeta, FileRejectReason, FileRejection, FileUploadMode, FileValidationResult, FileValidationRules, FloatingVariant, HeatmapData, HelperFeature, HelperRule, HelperSize, HelperState, IconColor, IconShapeColor, IconShapeSize, IconShapeType, IconSize, IconVariant, InputCounterSize, InputSize, InputState, JumbotronVariant, LabelPosition, ListGroupType, LogoTone, LogoVariant, ModalFooterLayout, ModalPlacement, ModalSize, MonthCell, NavbarCollapseAt, NavbarDensity, OlAvatarStatusPosition, OlBottomNavPosition, OlButtonType, OlCheckboxRadioFormAlign, OlCheckboxRadioGroupRole, OlDateRangePickerVariant, OlFrameRounded, OlFrameSpacing, OlFrameVariant, OlGalleryGap, OlGalleryRatio, OlHelperType, OlIconStackSize, OlItemAlign, OlItemSize, OlLogoArt, OlMenubarItem, OlMenubarMenu, OlModalBackdrop, OlModalRole, OlPreviewImage, OlResizableDirection, OlScrollspyItem, OlScrollspyOrientation, OlSkeletonAnimation, OlSkeletonAspectRatio, OlSkeletonRounded, OlSkeletonType, OlSpeedDialTooltipPosition, OlTimepickerAddonType, OlToggleInputAlign, OlTreeNode, OlTreeNodeSelectionMode, OlTreeNodeToggleIcon, OlTreeSelectionMode, OlTreeToggleIcon, OlUploadFile, OtpInputSize, OverlayLayer, PaginationType, PaginationVariant, PopoverPlacement, PopoverTrigger, PositionedCoordinates, PositioningOptions, ProgressColor, ProgressLabelPosition, ProgressSize, RadarIndicator, RadioSize, RatingType, ScatterDataPoint, ScatterSeries, ScrollAreaAxis, ScrollAreaScrollbar, SegmentedColor, SegmentedOption, SegmentedSize, SegmentedVariant, SelectOption, SelectSize, SelectState, SeparatorOrientation, SpeedDialAction, SpeedDialColor, SpeedDialDirection, SpeedDialTrigger, SpeedDialType, StepState, StepperBreakpoint, StepperOrientation, StepperVariant, TabsSize, TabsVariant, TagInputSize, TextareaState, TimeObject, TimepickerFormat, TimepickerSize, TimepickerState, Toast, ToastConfig, ToastPosition, ToggleColor, TogglePosition, ToggleSize, UploadStatus, YearCell };
9053
+ export { APP_NAV_DEFAULT_USER_ACTIONS, CHAT_BUBBLE_STATUS, FIELD_ASTERISK, FIELD_CLEAR_RESERVE_END, FIELD_DISABLED, FIELD_HEIGHT, FIELD_HELPER, FIELD_HELPER_GAP, FIELD_ICON_GAP, FIELD_ICON_RESERVE_END, FIELD_ICON_RESERVE_START, FIELD_LABEL, FIELD_LABEL_BESIDE, FIELD_LABEL_GAP, FIELD_MIN_HEIGHT, FIELD_PADDING_END, FIELD_PADDING_START, FIELD_PADDING_X, FIELD_RADIUS, FIELD_STATE, FIELD_TEXT, FILE_KIND_META, FLOAT_LABEL_START, MONTHS_FULL_EN, MONTHS_FULL_VI, MONTHS_SHORT_VI, OL_APP_HEADER_TEMPLATES, OL_APP_NAV_TEMPLATES, OL_ICONS, OL_LOGO_FULL_COLOR, OL_LOGO_FULL_WHITE, OL_LOGO_MARK_COLOR, OL_LOGO_MARK_WHITE, OL_PATTERN_TYPES, OlAccordion, OlAccordionItem, OlAlert, OlAlertDialog, OlAppHeader, OlAppHeaderActionsDef, OlAppHeaderContentDef, OlAppHeaderTitleDef, OlAppNav, OlAppNavFooterDef, OlAppNavHeaderDef, OlAppNavItemDef, OlAppNavLogoDef, OlAppNavUserDef, OlAppNavUserMenuDef, OlAspectRatio, OlAutocomplete, OlAvatar, OlAvatarGroup, OlBackdrop, OlBadge, OlBanner, OlBottomNav, OlBottomNavItem, OlBreadcrumb, OlBreadcrumbItem, OlButton, OlButtonGroup, OlCard, OlCarousel, OlCarouselSlide, OlChart, OlChatBubble, OlChatContainer, OlCheckbox, OlCheckboxRadioForm, OlCheckboxRadioGroup, OlClipboard, OlCollapse, OlCommand, OlDateRangePicker, OlDatepicker, OlDatepickerDirective, OlDatepickerFooter, OlDatepickerHeader, OlDatepickerPopup, OlDatepickerStateService, OlDayView, OlDeviceMockup, OlDownloadAppButton, OlDrawer, OlDrawerFooter, OlDrawerHeader, OlDropdown, OlDropdownHeader, OlDropdownItem, OlDropdownSearch, OlDropdownState, OlEmpty, OlFileDropzone, OlFileInput, OlFileItem, OlFileUpload, OlFocusTrapService, OlFooter, OlFrame, OlGallery, OlGalleryItem, OlHelper, OlIcon, OlIconService, OlIconShape, OlIconStack, OlImagePreview, OlInput, OlInputCounter, OlItem, OlJumbotron, OlKbd, OlLabel, OlListGroup, OlListGroupItem, OlLoadingOverlay, OlLogo, OlMenubar, OlModal, OlModalFooter, OlModalHeader, OlMonthView, OlNavDropdown, OlNavbar, OlNavbarItem, OlOtpInput, OlOverlayContainer, OlPagination, OlPattern, OlPopover, OlPopoverContent, OlPositioningService, OlProgress, OlProgressBarService, OlProgressBarTop, OlRadio, OlRange, OlRating, OlResizable, OlRichTextEditor, OlScrollArea, OlScrollspy, OlSegmented, OlSelect, OlSeparator, OlSidebar, OlSidebarGroup, OlSidebarItem, OlSidebarSubmenu, OlSkeleton, OlSpeedDial, OlSpeedDialItem, OlSpinner, OlStepItem, OlStepper, OlTabItem, OlTable, OlTableLoading, OlTableRow, OlTabs, OlTagInput, OlTextarea, OlTimeline, OlTimelineItem, OlTimepicker, OlToast, OlToastContainer, OlToastService, OlToggle, OlToggleGroup, OlToggleInput, OlTooltip, OlTooltipDirective, OlTree, OlTreeNodeItem, OlYearView, PICKER_ICON_RESERVE_START, WEEKDAYS_SHORT_EN, WEEKDAYS_SHORT_VI, boDau, cloneDate, detectFileKind, endOfDay, fieldLabelLayout, fieldSizeClasses, fileExtension, filesFromClipboard, formatDate, formatFileSize, generateMonthMatrix, generateMonthsMatrix, generateYearsMatrix, isBetween, isDateDisabled, isEditableTarget, isSameDay, isSameMonth, isSameYear, isToday, matchesAccept, multiValuePadY, parseDate, pasteShortcutLabel, provideOlIcons, startOfDay, stripDiacritics, toUploadFile, validateFiles };
9054
+ export type { AccordionVariant, AlertColor, AlertDialogTone, AlertLayout, AlertRounded, AlertType, AlertVariant, AppDevice, AppHeaderCrumb, AppHeaderSearchCollapseAt, AppHeaderSize, AppHeaderSlotContext, AppHeaderVariant, AppNavConfig, AppNavGroup, AppNavItem, AppNavItemContext, AppNavItemVariant, AppNavLayout, AppNavLogoContext, AppNavSlotContext, AppNavUser, AppNavUserAction, AppNavUserContext, AppNavUserMenuContext, AppTheme, AutocompleteOption, AutocompleteSize, AutocompleteState, AvatarShape, AvatarSize, AvatarStatus, BadgeColor, BadgeShape, BadgeSize, BadgeTheme, BadgeType, BannerPosition, BannerVariant, BoxplotDataPoint, BreadcrumbItemStatus, BreadcrumbSeparator, BreadcrumbVariant, ButtonColor, ButtonGroupColor, ButtonGroupOrientation, ButtonGroupSize, ButtonSize, CardPadding, CardRadius, CardShadow, CardVariant, ChartDataPoint, ChartSeries, ChartType, ChatBubbleStatus, ChatSender, CheckboxSize, ChoiceControl, ChoiceControlPosition, ChoiceGroupLayout, ChoiceLayout, ChoiceShape, CommandGroup, CommandItem, DateCustomClass, DateRange, DatepickerPreset, DatepickerSelectionMode, DatepickerSize, DatepickerViewMode, DayCell, DeviceType, DrawerFooterLayout, DrawerPlacement, DrawerSize, DropdownAutoClose, DropdownPlacement, DropdownStateType, DropdownTrigger, EmptySize, FieldSize, FieldState, FileInputSize, FileItemVariant, FileKind, FileKindMeta, FileRejectReason, FileRejection, FileUploadMode, FileValidationResult, FileValidationRules, FloatingVariant, HeatmapData, HelperFeature, HelperRule, HelperSize, HelperState, IconColor, IconShapeColor, IconShapeSize, IconShapeType, IconSize, IconVariant, InputCounterSize, InputSize, InputState, JumbotronVariant, LabelPosition, ListGroupType, LogoTone, LogoVariant, ModalFooterLayout, ModalPlacement, ModalSize, MonthCell, NavbarCollapseAt, NavbarDensity, OlAvatarStatusPosition, OlBottomNavPosition, OlButtonType, OlCheckboxRadioFormAlign, OlCheckboxRadioGroupRole, OlDateRangePickerVariant, OlFrameRounded, OlFrameSpacing, OlFrameVariant, OlGalleryGap, OlGalleryRatio, OlHelperType, OlIconStackSize, OlItemAlign, OlItemSize, OlLogoArt, OlMenubarItem, OlMenubarMenu, OlModalBackdrop, OlModalRole, OlPreviewImage, OlResizableDirection, OlScrollspyItem, OlScrollspyOrientation, OlSkeletonAnimation, OlSkeletonAspectRatio, OlSkeletonRounded, OlSkeletonType, OlSpeedDialTooltipPosition, OlTimepickerAddonType, OlToggleInputAlign, OlTreeNode, OlTreeNodeSelectionMode, OlTreeNodeToggleIcon, OlTreeSelectionMode, OlTreeToggleIcon, OlUploadFile, OtpInputSize, OverlayLayer, PaginationType, PaginationVariant, PatternFit, PatternPosition, PatternType, PopoverPlacement, PopoverTrigger, PositionedCoordinates, PositioningOptions, ProgressColor, ProgressLabelPosition, ProgressSize, RadarIndicator, RadioSize, RatingType, ScatterDataPoint, ScatterSeries, ScrollAreaAxis, ScrollAreaScrollbar, SegmentedColor, SegmentedOption, SegmentedSize, SegmentedVariant, SelectOption, SelectSize, SelectState, SeparatorOrientation, SpeedDialAction, SpeedDialColor, SpeedDialDirection, SpeedDialTrigger, SpeedDialType, StepState, StepperBreakpoint, StepperOrientation, StepperVariant, TabsSize, TabsVariant, TagInputSize, TextareaState, TimeObject, TimepickerFormat, TimepickerSize, TimepickerState, Toast, ToastConfig, ToastPosition, ToggleColor, TogglePosition, ToggleSize, UploadStatus, YearCell };
8823
9055
  //# sourceMappingURL=edmicro-olkit.d.ts.map