@foxeltech/angular-ui 0.7.108 → 0.7.131
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/components.css +24 -5
- package/fesm2022/foxeltech-angular-ui-chart.mjs +25 -1
- package/fesm2022/foxeltech-angular-ui-chart.mjs.map +1 -1
- package/fesm2022/foxeltech-angular-ui-flow.mjs +42 -11
- package/fesm2022/foxeltech-angular-ui-flow.mjs.map +1 -1
- package/fesm2022/foxeltech-angular-ui.mjs +102 -28
- package/fesm2022/foxeltech-angular-ui.mjs.map +1 -1
- package/package.json +3 -2
- package/src/lib/styles/components.css +24 -5
- package/src/lib/styles/tokens.css +3 -0
- package/src/lib/styles/utilities.css +9 -4
- package/src/lib/ui/components/bar-list/bar-list.component.html +19 -18
- package/src/lib/ui/components/bar-list/bar-list.component.scss +63 -0
- package/src/lib/ui/components/breadcrumb/breadcrumb.component.css +31 -0
- package/src/lib/ui/components/breadcrumb/breadcrumb.component.html +6 -1
- package/src/lib/ui/components/button/button.component.html +37 -225
- package/src/lib/ui/components/button/button.component.scss +30 -0
- package/src/lib/ui/components/drawer/drawer.component.html +32 -7
- package/src/lib/ui/components/drawer/drawer.component.scss +114 -17
- package/src/lib/ui/components/filter-pills/filter-pills.component.html +4 -1
- package/src/lib/ui/components/filter-pills/filter-pills.component.scss +23 -0
- package/src/lib/ui/components/master-detail/master-detail.component.css +36 -8
- package/src/lib/ui/components/master-detail/master-detail.component.html +4 -2
- package/src/lib/ui/components/section-card/section-card.component.html +10 -5
- package/src/lib/ui/components/section-card/section-card.component.scss +28 -0
- package/src/lib/ui/components/stat-cards/stat-cards.component.css +48 -0
- package/src/lib/ui/components/stat-cards/stat-cards.component.html +16 -7
- package/tokens.css +3 -0
- package/types/foxeltech-angular-ui-flow.d.ts +24 -2
- package/types/foxeltech-angular-ui.d.ts +92 -5
- package/utilities.css +9 -4
|
@@ -16,6 +16,8 @@ import * as i1 from '@ngx-translate/core';
|
|
|
16
16
|
import { TranslateService } from '@ngx-translate/core';
|
|
17
17
|
import { ComponentType } from '@angular/cdk/portal';
|
|
18
18
|
import { CdkDragDrop } from '@angular/cdk/drag-drop';
|
|
19
|
+
import * as lucide_angular from 'lucide-angular';
|
|
20
|
+
import { LucideIconData } from 'lucide-angular';
|
|
19
21
|
|
|
20
22
|
declare abstract class BaseComponent implements OnDestroy {
|
|
21
23
|
protected injector: Injector;
|
|
@@ -1050,6 +1052,12 @@ interface Breadcrumb {
|
|
|
1050
1052
|
mono?: boolean;
|
|
1051
1053
|
/** Dropdown to switch the entity this crumb names. */
|
|
1052
1054
|
switcher?: BreadcrumbSwitcher;
|
|
1055
|
+
/**
|
|
1056
|
+
* Renders the crumb as an accent CTA pill instead of a link or a chip — the
|
|
1057
|
+
* reference's "+ Create project" closing the Project Management trail.
|
|
1058
|
+
* Navigates to `url`; `icon` is the leading mark and defaults to `plus`.
|
|
1059
|
+
*/
|
|
1060
|
+
cta?: boolean;
|
|
1053
1061
|
}
|
|
1054
1062
|
declare class BreadcrumbService {
|
|
1055
1063
|
private breadcrumbs$;
|
|
@@ -1703,6 +1711,14 @@ interface DrawerItem {
|
|
|
1703
1711
|
id: string;
|
|
1704
1712
|
label: string;
|
|
1705
1713
|
icon: string;
|
|
1714
|
+
/**
|
|
1715
|
+
* Lucide icon DATA (from `FX_LUCIDE_ICONS`), drawn instead of the HeroIcon
|
|
1716
|
+
* sprite when given. Data, not a name: the LUCIDE_ICONS provider does not
|
|
1717
|
+
* reach a federated remote's components — see FxLucideModule.
|
|
1718
|
+
*/
|
|
1719
|
+
iconData?: unknown;
|
|
1720
|
+
/** Fill the lucide mark instead of outlining it (the reference's ❖ is solid). */
|
|
1721
|
+
iconSolid?: boolean;
|
|
1706
1722
|
/** V2: renders as a non-interactive section caption (flat nav, no accordion). */
|
|
1707
1723
|
heading?: boolean;
|
|
1708
1724
|
route?: string;
|
|
@@ -1732,6 +1748,13 @@ declare class DrawerComponent implements OnInit, OnDestroy {
|
|
|
1732
1748
|
constructor(router: Router);
|
|
1733
1749
|
ngOnInit(): void;
|
|
1734
1750
|
ngOnDestroy(): void;
|
|
1751
|
+
/**
|
|
1752
|
+
* Ignores presses while the 300ms width animation is still running. The
|
|
1753
|
+
* button rides the drawer's edge, travelling ~190px as it animates, so a
|
|
1754
|
+
* second press lands on whatever the button has just slid away from — and a
|
|
1755
|
+
* mid-flight toggle leaves the animation and `isExpanded` out of step.
|
|
1756
|
+
*/
|
|
1757
|
+
private toggleLocked;
|
|
1735
1758
|
toggleDrawer(): void;
|
|
1736
1759
|
toggleAccordion(itemId: string): void;
|
|
1737
1760
|
isAccordionExpanded(itemId: string): boolean;
|
|
@@ -1858,6 +1881,12 @@ interface FxFilterPillOption {
|
|
|
1858
1881
|
label: string;
|
|
1859
1882
|
/** Shown muted beside the label; null/undefined renders no count. */
|
|
1860
1883
|
count?: number | null;
|
|
1884
|
+
/**
|
|
1885
|
+
* Optional lucide icon DATA (from `FX_LUCIDE_ICONS`), drawn before the label.
|
|
1886
|
+
* Passed as data rather than by name because the LUCIDE_ICONS provider does
|
|
1887
|
+
* not reach a federated remote's components — see FxLucideModule.
|
|
1888
|
+
*/
|
|
1889
|
+
icon?: LucideIconData;
|
|
1861
1890
|
}
|
|
1862
1891
|
/**
|
|
1863
1892
|
* V2 filter pills — the quick-filter row above ranked lists (design refs 02,
|
|
@@ -2068,8 +2097,27 @@ declare class MasterDetailComponent implements AfterViewInit, AfterContentInit {
|
|
|
2068
2097
|
/** True when the host projected a [mdFacets] block — switches to 3 columns. */
|
|
2069
2098
|
hasFacets: boolean;
|
|
2070
2099
|
table: BaseMasterDetailComponent<any>;
|
|
2071
|
-
/**
|
|
2072
|
-
|
|
2100
|
+
/**
|
|
2101
|
+
* Optional CAP on the list pane.
|
|
2102
|
+
*
|
|
2103
|
+
* The list is the flexible track now (the design's `204px 1fr 340px`), so it
|
|
2104
|
+
* takes whatever the rail and the detail leave. Set this only for a screen
|
|
2105
|
+
* whose rows genuinely stop reading better past some width; left unset the
|
|
2106
|
+
* property is not emitted at all and the pane simply fills.
|
|
2107
|
+
*/
|
|
2108
|
+
readonly listWidth: _angular_core.InputSignal<string | null>;
|
|
2109
|
+
/**
|
|
2110
|
+
* The detail pane's fixed track — the design's own 340px, and 450px on the
|
|
2111
|
+
* screens anh Tú widened (17/09).
|
|
2112
|
+
*
|
|
2113
|
+
* Pass `'auto'` (or null) to give the detail the SPARE width instead and cap
|
|
2114
|
+
* the list at `listWidth` — the pre-0.7.130 behaviour, which Binaries and
|
|
2115
|
+
* Remediation keep because their panes carry header blocks, metric grids and
|
|
2116
|
+
* step lists that a narrow track cannot hold.
|
|
2117
|
+
*/
|
|
2118
|
+
readonly detailWidth: _angular_core.InputSignal<string | null>;
|
|
2119
|
+
/** true = detail takes the spare width; false = it is a fixed track. */
|
|
2120
|
+
protected detailFluid(): boolean;
|
|
2073
2121
|
/**
|
|
2074
2122
|
* Chiều cao CHUNG của cả ba cụm (facets / list / detail). Mặc định trừ phần
|
|
2075
2123
|
* chrome phía trên (topbar + tab strip + context line) khỏi viewport để
|
|
@@ -2115,7 +2163,7 @@ declare class MasterDetailComponent implements AfterViewInit, AfterContentInit {
|
|
|
2115
2163
|
optionId(index: number): string;
|
|
2116
2164
|
onKeydown(event: KeyboardEvent, index: number): void;
|
|
2117
2165
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MasterDetailComponent, never>;
|
|
2118
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MasterDetailComponent, "fx-ui-master-detail", never, { "table": { "alias": "table"; "required": false; }; "listWidth": { "alias": "listWidth"; "required": false; "isSignal": true; }; "paneHeight": { "alias": "paneHeight"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "listLabel": { "alias": "listLabel"; "required": false; "isSignal": true; }; "skeletonCards": { "alias": "skeletonCards"; "required": false; "isSignal": true; }; "paginationStyle": { "alias": "paginationStyle"; "required": false; "isSignal": true; }; "prevLabel": { "alias": "prevLabel"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; "pageLabel": { "alias": "pageLabel"; "required": false; "isSignal": true; }; "ofLabel": { "alias": "ofLabel"; "required": false; "isSignal": true; }; "facetsOpen": { "alias": "facetsOpen"; "required": false; "isSignal": true; }; "facetsLabel": { "alias": "facetsLabel"; "required": false; "isSignal": true; }; "expandFacetsLabel": { "alias": "expandFacetsLabel"; "required": false; "isSignal": true; }; "collapseFacetsLabel": { "alias": "collapseFacetsLabel"; "required": false; "isSignal": true; }; }, {}, ["rowTemplate", "detailTemplate"], ["[mdFacets]", "[mdHeader]", "[mdFilters]"], true, never>;
|
|
2166
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MasterDetailComponent, "fx-ui-master-detail", never, { "table": { "alias": "table"; "required": false; }; "listWidth": { "alias": "listWidth"; "required": false; "isSignal": true; }; "detailWidth": { "alias": "detailWidth"; "required": false; "isSignal": true; }; "paneHeight": { "alias": "paneHeight"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "listLabel": { "alias": "listLabel"; "required": false; "isSignal": true; }; "skeletonCards": { "alias": "skeletonCards"; "required": false; "isSignal": true; }; "paginationStyle": { "alias": "paginationStyle"; "required": false; "isSignal": true; }; "prevLabel": { "alias": "prevLabel"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; "pageLabel": { "alias": "pageLabel"; "required": false; "isSignal": true; }; "ofLabel": { "alias": "ofLabel"; "required": false; "isSignal": true; }; "facetsOpen": { "alias": "facetsOpen"; "required": false; "isSignal": true; }; "facetsLabel": { "alias": "facetsLabel"; "required": false; "isSignal": true; }; "expandFacetsLabel": { "alias": "expandFacetsLabel"; "required": false; "isSignal": true; }; "collapseFacetsLabel": { "alias": "collapseFacetsLabel"; "required": false; "isSignal": true; }; }, {}, ["rowTemplate", "detailTemplate"], ["[mdFacets]", "[mdHeader]", "[mdFilters]"], true, never>;
|
|
2119
2167
|
}
|
|
2120
2168
|
|
|
2121
2169
|
interface FxMenuItem {
|
|
@@ -2471,7 +2519,6 @@ declare class BarListComponent {
|
|
|
2471
2519
|
readonly select: _angular_core.OutputEmitterRef<FxBarListItem>;
|
|
2472
2520
|
readonly max: _angular_core.Signal<number>;
|
|
2473
2521
|
widthOf(item: FxBarListItem): number;
|
|
2474
|
-
barClass(item: FxBarListItem): string;
|
|
2475
2522
|
onSelect(item: FxBarListItem): void;
|
|
2476
2523
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BarListComponent, never>;
|
|
2477
2524
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<BarListComponent, "fx-ui-bar-list", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; }, { "select": "select"; }, never, never, true, never>;
|
|
@@ -2769,6 +2816,46 @@ declare class UiModule {
|
|
|
2769
2816
|
static ɵinj: _angular_core.ɵɵInjectorDeclaration<UiModule>;
|
|
2770
2817
|
}
|
|
2771
2818
|
|
|
2819
|
+
/**
|
|
2820
|
+
* The lucide marks this design system draws, PICKED rather than pulled in whole:
|
|
2821
|
+
* `lucide-angular` ships ~2,100 icons and `pick()` is the only thing keeping the
|
|
2822
|
+
* bundle to the ones actually rendered.
|
|
2823
|
+
*
|
|
2824
|
+
* Heroicons remain the general-purpose set — `fx-ui-hero-icon` serves them from
|
|
2825
|
+
* the self-hosted sprite with no runtime icon library, and that does not change.
|
|
2826
|
+
* Lucide is here for the two marks the Binary Intelligence reference draws as
|
|
2827
|
+
* inline SVG of its own, which the sprite has no equivalent of:
|
|
2828
|
+
*
|
|
2829
|
+
* - `star` the GitHub star beside a PoC's star count
|
|
2830
|
+
* - `radiation` the proprietary-exploit mark (identified by matching the
|
|
2831
|
+
* reference's path data against lucide-static, 16/09)
|
|
2832
|
+
* - `download` the Download PoC action in the exploit detail footer
|
|
2833
|
+
*
|
|
2834
|
+
* And the four sidebar marks, chosen to match the reference's nav GLYPHS shape
|
|
2835
|
+
* for shape rather than by meaning (16/09):
|
|
2836
|
+
* `▦` → `grid-2x2` a square split by a cross
|
|
2837
|
+
* `⊞` → `square-plus` a square with a plus inside
|
|
2838
|
+
* `▤` → `rows-3` a square split into three bands
|
|
2839
|
+
* `❖` → `diamond` a diamond outline
|
|
2840
|
+
*
|
|
2841
|
+
* Usage: import `FxLucideModule`, then `<lucide-icon name="star" [size]="12" />`.
|
|
2842
|
+
* Names are kebab-case; the component pascal-cases them to look the icon up.
|
|
2843
|
+
*/
|
|
2844
|
+
declare const FX_LUCIDE_ICONS: {
|
|
2845
|
+
Star: lucide_angular.LucideIconData;
|
|
2846
|
+
Radiation: lucide_angular.LucideIconData;
|
|
2847
|
+
Download: lucide_angular.LucideIconData;
|
|
2848
|
+
Grid2x2: lucide_angular.LucideIconData;
|
|
2849
|
+
SquarePlus: lucide_angular.LucideIconData;
|
|
2850
|
+
Rows3: lucide_angular.LucideIconData;
|
|
2851
|
+
Diamond: lucide_angular.LucideIconData;
|
|
2852
|
+
};
|
|
2853
|
+
declare class FxLucideModule {
|
|
2854
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FxLucideModule, never>;
|
|
2855
|
+
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<FxLucideModule, never, [typeof lucide_angular.LucideAngularModule], [typeof lucide_angular.LucideAngularModule]>;
|
|
2856
|
+
static ɵinj: _angular_core.ɵɵInjectorDeclaration<FxLucideModule>;
|
|
2857
|
+
}
|
|
2858
|
+
|
|
2772
2859
|
/** Users who asked the OS for reduced motion get instant state changes. */
|
|
2773
2860
|
declare function fxMotionAllowed(): boolean;
|
|
2774
2861
|
/** Shared timing so every screen moves the same way. */
|
|
@@ -2785,5 +2872,5 @@ declare const FX_MOTION: {
|
|
|
2785
2872
|
/** Motion directives exported by UiModule (GSAP-based, reduced-motion aware). */
|
|
2786
2873
|
declare const FX_MOTION_DIRECTIVES: readonly [typeof FxRevealDirective, typeof FxRevealGroupDirective, typeof FxCountUpDirective];
|
|
2787
2874
|
|
|
2788
|
-
export { AuthInterceptor, AuthStateService, BarListComponent, BaseComponent, BaseDialogComponent, BaseMasterDetailComponent, BaseTableComponent, BreadcrumbComponent, BreadcrumbService, ButtonComponent, CheckboxComponent, CircleProgressBar, CodeBlockComponent, ConfirmationDialogComponent, DatetimePicker, DndUploadComponent, DrawerComponent, EmptyStateComponent, FX_ICON_SPRITE_URL, FX_MOTION, FX_MOTION_DIRECTIVES, FX_SKELETON_DATA_KEY, FacetsRailComponent, FilterChipsComponent, FilterPillsComponent, FxComponent, FxCountUpDirective, FxDialogService, FxLoadStatusService, FxLoadingService, FxRevealDirective, FxRevealGroupDirective, FxRouteSkeletonService, FxStorageService, FxToastrService, FxUtils, FxValidators, HasPermissionDirective, HeroIconComponent, HttpLoaderFactory, HttpWrapper, InfoFieldComponent, InputComponent, KanbanBoardComponent, ListRowComponent, LoadStatusComponent, LoadingPanel, MasterDetailComponent, MenuComponent, MeterComponent, NotificationService, OG_LIGHT_THEMES, OG_PICKER_THEMES, OG_PICKER_THEME_META, OG_THEMES, OG_THEME_META, PendingBadgeComponent, PermissionGuard, PermissionService, PipelineStepperComponent, ProjectCardComponent, RadioButtonComponent, RadioButtonToggleComponent, RealtimeTableSync, RouteSkeletonComponent, SampleFrameComponent, ScoreBadgeComponent, ScreenshotFrameComponent, SearchBarComponent, SectionCardComponent, SegmentedComponent, SelectComponent, SeverityBadgesComponent, SkeletonDashboardComponent, SkeletonDetailComponent, SkeletonFacetsComponent, SkeletonFrameComponent, SkeletonListComponent, SliderComponent, SparkbarComponent, StageDotsComponent, StatCardsComponent, StatusDotComponent, SwitchComponent, TabComponent, TabGroupComponent, TableCell, TagComponent, ThemePickerComponent, ThemeService, ToastComponent, ToastContainerComponent, TranslationModule, TranslationService, TreeDiagram, TrimOnBlurDirective, UiModule, anyFeatureEnabled, countTone, createApi, featureEnabled, fxListResolver, fxMotionAllowed, fxRevealElement, scoreTone, severityTone, toneBadge, toneBadgeSolid, toneBg, toneBorder, toneColor, toneDot, toneDotChart, toneFg, toneScale, toneText, toneTint };
|
|
2875
|
+
export { AuthInterceptor, AuthStateService, BarListComponent, BaseComponent, BaseDialogComponent, BaseMasterDetailComponent, BaseTableComponent, BreadcrumbComponent, BreadcrumbService, ButtonComponent, CheckboxComponent, CircleProgressBar, CodeBlockComponent, ConfirmationDialogComponent, DatetimePicker, DndUploadComponent, DrawerComponent, EmptyStateComponent, FX_ICON_SPRITE_URL, FX_LUCIDE_ICONS, FX_MOTION, FX_MOTION_DIRECTIVES, FX_SKELETON_DATA_KEY, FacetsRailComponent, FilterChipsComponent, FilterPillsComponent, FxComponent, FxCountUpDirective, FxDialogService, FxLoadStatusService, FxLoadingService, FxLucideModule, FxRevealDirective, FxRevealGroupDirective, FxRouteSkeletonService, FxStorageService, FxToastrService, FxUtils, FxValidators, HasPermissionDirective, HeroIconComponent, HttpLoaderFactory, HttpWrapper, InfoFieldComponent, InputComponent, KanbanBoardComponent, ListRowComponent, LoadStatusComponent, LoadingPanel, MasterDetailComponent, MenuComponent, MeterComponent, NotificationService, OG_LIGHT_THEMES, OG_PICKER_THEMES, OG_PICKER_THEME_META, OG_THEMES, OG_THEME_META, PendingBadgeComponent, PermissionGuard, PermissionService, PipelineStepperComponent, ProjectCardComponent, RadioButtonComponent, RadioButtonToggleComponent, RealtimeTableSync, RouteSkeletonComponent, SampleFrameComponent, ScoreBadgeComponent, ScreenshotFrameComponent, SearchBarComponent, SectionCardComponent, SegmentedComponent, SelectComponent, SeverityBadgesComponent, SkeletonDashboardComponent, SkeletonDetailComponent, SkeletonFacetsComponent, SkeletonFrameComponent, SkeletonListComponent, SliderComponent, SparkbarComponent, StageDotsComponent, StatCardsComponent, StatusDotComponent, SwitchComponent, TabComponent, TabGroupComponent, TableCell, TagComponent, ThemePickerComponent, ThemeService, ToastComponent, ToastContainerComponent, TranslationModule, TranslationService, TreeDiagram, TrimOnBlurDirective, UiModule, anyFeatureEnabled, countTone, createApi, featureEnabled, fxListResolver, fxMotionAllowed, fxRevealElement, scoreTone, severityTone, toneBadge, toneBadgeSolid, toneBg, toneBorder, toneColor, toneDot, toneDotChart, toneFg, toneScale, toneText, toneTint };
|
|
2789
2876
|
export type { Breadcrumb, BreadcrumbOption, BreadcrumbSwitcher, ColumnChangedEvent, DrawerItem, ErrorMessages, FxApiClass, FxBarListItem, FxConfirmOptions, FxFacetGroup, FxFacetOption, FxFacetSelection, FxFeatureFlags, FxFilterChipOption, FxFilterPillOption, FxListRequest, FxListResolverContext, FxListRowBadge, FxLoadJob, FxMenuItem, FxPipelineStage, FxPipelineStageState, FxProjectCard, FxProjectCardChip, FxProjectCardMetric, FxSegmentedOption, FxSeverityBadge, FxSkeletonBlock, FxSkeletonBlockKind, FxSkeletonBlockSpec, FxSkeletonHint, FxStatCard, FxStatCardDelta, FxTableFilters, IRadioButton, KanbanColumn, NotificationCallback, NotificationConnectOptions, OgTheme, OgThemeMeta, RealtimeTableEvent, RealtimeTableSyncOptions, TableResult, TagType, ToastData, Tone, TreeNode, UploadResult };
|
package/utilities.css
CHANGED
|
@@ -8,10 +8,15 @@
|
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
@utility btn-common {
|
|
11
|
-
/*
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
/* The demo's `.og-button--sm` (anh Tú 17/09: compact như New Analysis) —
|
|
12
|
+
27px tall, 11.5px at weight 400, 12px sides, 7px radius. MEASURED off the
|
|
13
|
+
reference's own `.og-button--sm.bi-newbtn`, which is the topbar CTA: it
|
|
14
|
+
wore this shape through `!` overrides because the shared button was a size
|
|
15
|
+
above it. The h-8 / 13px / 600 this replaces was itself a step down from
|
|
16
|
+
pre-V2 h-10 (29/08); against V2 panel density it still read one notch
|
|
17
|
+
heavy. leading-none: an arbitrary font-size inherits lh 1.5 and Archivo's
|
|
18
|
+
uneven leading floats the ink ~1px above centre. */
|
|
19
|
+
@apply flex text-[length:var(--og-fs-xs)] leading-none h-[27px] font-normal px-[12px] py-[4px] items-center justify-center rounded-control shadow-sm transition-all duration-200 disabled:opacity-50 disabled:pointer-events-none disabled:cursor-not-allowed;
|
|
15
20
|
}
|
|
16
21
|
|
|
17
22
|
@utility btn-menu-common {
|