@atomng/ui 1.0.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/README.md +401 -0
- package/atomng-ui.d.ts.map +1 -0
- package/atoms/atomng-ui-atoms.d.ts.map +1 -0
- package/atoms/avatar/avatar.component.d.ts +24 -0
- package/atoms/avatar/avatar.component.d.ts.map +1 -0
- package/atoms/avatar/index.d.ts +3 -0
- package/atoms/avatar/index.d.ts.map +1 -0
- package/atoms/badge/badge.component.d.ts +23 -0
- package/atoms/badge/badge.component.d.ts.map +1 -0
- package/atoms/badge/index.d.ts +3 -0
- package/atoms/badge/index.d.ts.map +1 -0
- package/atoms/button/button.component.d.ts +47 -0
- package/atoms/button/button.component.d.ts.map +1 -0
- package/atoms/button/index.d.ts +3 -0
- package/atoms/button/index.d.ts.map +1 -0
- package/atoms/checkbox/checkbox.component.d.ts +28 -0
- package/atoms/checkbox/checkbox.component.d.ts.map +1 -0
- package/atoms/checkbox/index.d.ts +2 -0
- package/atoms/checkbox/index.d.ts.map +1 -0
- package/atoms/chip/chip.component.d.ts +17 -0
- package/atoms/chip/chip.component.d.ts.map +1 -0
- package/atoms/chip/index.d.ts +2 -0
- package/atoms/chip/index.d.ts.map +1 -0
- package/atoms/index.d.ts +14 -0
- package/atoms/index.d.ts.map +1 -0
- package/atoms/kbd/index.d.ts +2 -0
- package/atoms/kbd/index.d.ts.map +1 -0
- package/atoms/kbd/kbd.component.d.ts +14 -0
- package/atoms/kbd/kbd.component.d.ts.map +1 -0
- package/atoms/link/index.d.ts +2 -0
- package/atoms/link/index.d.ts.map +1 -0
- package/atoms/link/link.component.d.ts +15 -0
- package/atoms/link/link.component.d.ts.map +1 -0
- package/atoms/progress/index.d.ts +3 -0
- package/atoms/progress/index.d.ts.map +1 -0
- package/atoms/progress/progress.component.d.ts +20 -0
- package/atoms/progress/progress.component.d.ts.map +1 -0
- package/atoms/separator/index.d.ts +2 -0
- package/atoms/separator/index.d.ts.map +1 -0
- package/atoms/separator/separator.component.d.ts +13 -0
- package/atoms/separator/separator.component.d.ts.map +1 -0
- package/atoms/skeleton/index.d.ts +2 -0
- package/atoms/skeleton/index.d.ts.map +1 -0
- package/atoms/skeleton/skeleton.component.d.ts +13 -0
- package/atoms/skeleton/skeleton.component.d.ts.map +1 -0
- package/atoms/slider/index.d.ts +2 -0
- package/atoms/slider/index.d.ts.map +1 -0
- package/atoms/slider/slider.component.d.ts +27 -0
- package/atoms/slider/slider.component.d.ts.map +1 -0
- package/atoms/switch/index.d.ts +2 -0
- package/atoms/switch/index.d.ts.map +1 -0
- package/atoms/switch/switch.component.d.ts +25 -0
- package/atoms/switch/switch.component.d.ts.map +1 -0
- package/atoms/tooltip/index.d.ts +2 -0
- package/atoms/tooltip/index.d.ts.map +1 -0
- package/atoms/tooltip/tooltip.component.d.ts +15 -0
- package/atoms/tooltip/tooltip.component.d.ts.map +1 -0
- package/fesm2022/atomng-ui-atoms.mjs +778 -0
- package/fesm2022/atomng-ui-atoms.mjs.map +1 -0
- package/fesm2022/atomng-ui-molecules.mjs +1590 -0
- package/fesm2022/atomng-ui-molecules.mjs.map +1 -0
- package/fesm2022/atomng-ui-organisms.mjs +1346 -0
- package/fesm2022/atomng-ui-organisms.mjs.map +1 -0
- package/fesm2022/atomng-ui-tokens.mjs +499 -0
- package/fesm2022/atomng-ui-tokens.mjs.map +1 -0
- package/fesm2022/atomng-ui.mjs +4184 -0
- package/fesm2022/atomng-ui.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/index.d.ts.map +1 -0
- package/lib/atoms/avatar/avatar.component.d.ts +24 -0
- package/lib/atoms/avatar/avatar.component.d.ts.map +1 -0
- package/lib/atoms/avatar/index.d.ts +3 -0
- package/lib/atoms/avatar/index.d.ts.map +1 -0
- package/lib/atoms/badge/badge.component.d.ts +23 -0
- package/lib/atoms/badge/badge.component.d.ts.map +1 -0
- package/lib/atoms/badge/index.d.ts +3 -0
- package/lib/atoms/badge/index.d.ts.map +1 -0
- package/lib/atoms/button/button.component.d.ts +47 -0
- package/lib/atoms/button/button.component.d.ts.map +1 -0
- package/lib/atoms/button/index.d.ts +3 -0
- package/lib/atoms/button/index.d.ts.map +1 -0
- package/lib/atoms/checkbox/checkbox.component.d.ts +28 -0
- package/lib/atoms/checkbox/checkbox.component.d.ts.map +1 -0
- package/lib/atoms/checkbox/index.d.ts +2 -0
- package/lib/atoms/checkbox/index.d.ts.map +1 -0
- package/lib/atoms/chip/chip.component.d.ts +17 -0
- package/lib/atoms/chip/chip.component.d.ts.map +1 -0
- package/lib/atoms/chip/index.d.ts +2 -0
- package/lib/atoms/chip/index.d.ts.map +1 -0
- package/lib/atoms/index.d.ts +14 -0
- package/lib/atoms/index.d.ts.map +1 -0
- package/lib/atoms/kbd/index.d.ts +2 -0
- package/lib/atoms/kbd/index.d.ts.map +1 -0
- package/lib/atoms/kbd/kbd.component.d.ts +14 -0
- package/lib/atoms/kbd/kbd.component.d.ts.map +1 -0
- package/lib/atoms/link/index.d.ts +2 -0
- package/lib/atoms/link/index.d.ts.map +1 -0
- package/lib/atoms/link/link.component.d.ts +15 -0
- package/lib/atoms/link/link.component.d.ts.map +1 -0
- package/lib/atoms/progress/index.d.ts +3 -0
- package/lib/atoms/progress/index.d.ts.map +1 -0
- package/lib/atoms/progress/progress.component.d.ts +20 -0
- package/lib/atoms/progress/progress.component.d.ts.map +1 -0
- package/lib/atoms/separator/index.d.ts +2 -0
- package/lib/atoms/separator/index.d.ts.map +1 -0
- package/lib/atoms/separator/separator.component.d.ts +13 -0
- package/lib/atoms/separator/separator.component.d.ts.map +1 -0
- package/lib/atoms/skeleton/index.d.ts +2 -0
- package/lib/atoms/skeleton/index.d.ts.map +1 -0
- package/lib/atoms/skeleton/skeleton.component.d.ts +13 -0
- package/lib/atoms/skeleton/skeleton.component.d.ts.map +1 -0
- package/lib/atoms/slider/index.d.ts +2 -0
- package/lib/atoms/slider/index.d.ts.map +1 -0
- package/lib/atoms/slider/slider.component.d.ts +27 -0
- package/lib/atoms/slider/slider.component.d.ts.map +1 -0
- package/lib/atoms/switch/index.d.ts +2 -0
- package/lib/atoms/switch/index.d.ts.map +1 -0
- package/lib/atoms/switch/switch.component.d.ts +25 -0
- package/lib/atoms/switch/switch.component.d.ts.map +1 -0
- package/lib/atoms/tooltip/index.d.ts +2 -0
- package/lib/atoms/tooltip/index.d.ts.map +1 -0
- package/lib/atoms/tooltip/tooltip.component.d.ts +15 -0
- package/lib/atoms/tooltip/tooltip.component.d.ts.map +1 -0
- package/lib/molecules/alert/alert.component.d.ts +22 -0
- package/lib/molecules/alert/alert.component.d.ts.map +1 -0
- package/lib/molecules/alert/index.d.ts +2 -0
- package/lib/molecules/alert/index.d.ts.map +1 -0
- package/lib/molecules/avatar-group/avatar-group.component.d.ts +22 -0
- package/lib/molecules/avatar-group/avatar-group.component.d.ts.map +1 -0
- package/lib/molecules/avatar-group/index.d.ts +2 -0
- package/lib/molecules/avatar-group/index.d.ts.map +1 -0
- package/lib/molecules/breadcrumb/breadcrumb.component.d.ts +17 -0
- package/lib/molecules/breadcrumb/breadcrumb.component.d.ts.map +1 -0
- package/lib/molecules/breadcrumb/index.d.ts +2 -0
- package/lib/molecules/breadcrumb/index.d.ts.map +1 -0
- package/lib/molecules/button-group/button-group.component.d.ts +11 -0
- package/lib/molecules/button-group/button-group.component.d.ts.map +1 -0
- package/lib/molecules/button-group/index.d.ts +2 -0
- package/lib/molecules/button-group/index.d.ts.map +1 -0
- package/lib/molecules/form-field/form-field.component.d.ts +18 -0
- package/lib/molecules/form-field/form-field.component.d.ts.map +1 -0
- package/lib/molecules/form-field/index.d.ts +2 -0
- package/lib/molecules/form-field/index.d.ts.map +1 -0
- package/lib/molecules/index.d.ts +13 -0
- package/lib/molecules/index.d.ts.map +1 -0
- package/lib/molecules/input/index.d.ts +2 -0
- package/lib/molecules/input/index.d.ts.map +1 -0
- package/lib/molecules/input/input.component.d.ts +50 -0
- package/lib/molecules/input/input.component.d.ts.map +1 -0
- package/lib/molecules/pagination/index.d.ts +2 -0
- package/lib/molecules/pagination/index.d.ts.map +1 -0
- package/lib/molecules/pagination/pagination.component.d.ts +18 -0
- package/lib/molecules/pagination/pagination.component.d.ts.map +1 -0
- package/lib/molecules/select/index.d.ts +3 -0
- package/lib/molecules/select/index.d.ts.map +1 -0
- package/lib/molecules/select/select.component.d.ts +56 -0
- package/lib/molecules/select/select.component.d.ts.map +1 -0
- package/lib/molecules/select-search/index.d.ts +2 -0
- package/lib/molecules/select-search/index.d.ts.map +1 -0
- package/lib/molecules/select-search/select-search.component.d.ts +63 -0
- package/lib/molecules/select-search/select-search.component.d.ts.map +1 -0
- package/lib/molecules/tabs/index.d.ts +2 -0
- package/lib/molecules/tabs/index.d.ts.map +1 -0
- package/lib/molecules/tabs/tabs.component.d.ts +23 -0
- package/lib/molecules/tabs/tabs.component.d.ts.map +1 -0
- package/lib/molecules/textarea/index.d.ts +2 -0
- package/lib/molecules/textarea/index.d.ts.map +1 -0
- package/lib/molecules/textarea/textarea.component.d.ts +27 -0
- package/lib/molecules/textarea/textarea.component.d.ts.map +1 -0
- package/lib/molecules/toast/index.d.ts +2 -0
- package/lib/molecules/toast/index.d.ts.map +1 -0
- package/lib/molecules/toast/toast.component.d.ts +19 -0
- package/lib/molecules/toast/toast.component.d.ts.map +1 -0
- package/lib/organisms/accordion/accordion.component.d.ts +25 -0
- package/lib/organisms/accordion/accordion.component.d.ts.map +1 -0
- package/lib/organisms/card/card.component.d.ts +14 -0
- package/lib/organisms/card/card.component.d.ts.map +1 -0
- package/lib/organisms/dropdown-menu/dropdown-menu.component.d.ts +29 -0
- package/lib/organisms/dropdown-menu/dropdown-menu.component.d.ts.map +1 -0
- package/lib/organisms/index.d.ts +8 -0
- package/lib/organisms/index.d.ts.map +1 -0
- package/lib/organisms/modal/modal.component.d.ts +19 -0
- package/lib/organisms/modal/modal.component.d.ts.map +1 -0
- package/lib/organisms/navigation-menu/navigation-menu.component.d.ts +24 -0
- package/lib/organisms/navigation-menu/navigation-menu.component.d.ts.map +1 -0
- package/lib/organisms/sidebar/sidebar.component.d.ts +68 -0
- package/lib/organisms/sidebar/sidebar.component.d.ts.map +1 -0
- package/lib/organisms/table/index.d.ts +3 -0
- package/lib/organisms/table/index.d.ts.map +1 -0
- package/lib/organisms/table/table-cell.directive.d.ts +17 -0
- package/lib/organisms/table/table-cell.directive.d.ts.map +1 -0
- package/lib/organisms/table/table.component.d.ts +50 -0
- package/lib/organisms/table/table.component.d.ts.map +1 -0
- package/lib/tokens/index.d.ts +2 -0
- package/lib/tokens/index.d.ts.map +1 -0
- package/lib/tokens/theme/color-presets.d.ts +24 -0
- package/lib/tokens/theme/color-presets.d.ts.map +1 -0
- package/lib/tokens/theme/index.d.ts +6 -0
- package/lib/tokens/theme/index.d.ts.map +1 -0
- package/lib/tokens/theme/theme-picker.component.d.ts +11 -0
- package/lib/tokens/theme/theme-picker.component.d.ts.map +1 -0
- package/lib/tokens/theme/theme-toggle.component.d.ts +15 -0
- package/lib/tokens/theme/theme-toggle.component.d.ts.map +1 -0
- package/lib/tokens/theme/theme.provider.d.ts +4 -0
- package/lib/tokens/theme/theme.provider.d.ts.map +1 -0
- package/lib/tokens/theme/theme.service.d.ts +48 -0
- package/lib/tokens/theme/theme.service.d.ts.map +1 -0
- package/molecules/alert/alert.component.d.ts +22 -0
- package/molecules/alert/alert.component.d.ts.map +1 -0
- package/molecules/alert/index.d.ts +2 -0
- package/molecules/alert/index.d.ts.map +1 -0
- package/molecules/atomng-ui-molecules.d.ts.map +1 -0
- package/molecules/avatar-group/avatar-group.component.d.ts +22 -0
- package/molecules/avatar-group/avatar-group.component.d.ts.map +1 -0
- package/molecules/avatar-group/index.d.ts +2 -0
- package/molecules/avatar-group/index.d.ts.map +1 -0
- package/molecules/breadcrumb/breadcrumb.component.d.ts +17 -0
- package/molecules/breadcrumb/breadcrumb.component.d.ts.map +1 -0
- package/molecules/breadcrumb/index.d.ts +2 -0
- package/molecules/breadcrumb/index.d.ts.map +1 -0
- package/molecules/button-group/button-group.component.d.ts +11 -0
- package/molecules/button-group/button-group.component.d.ts.map +1 -0
- package/molecules/button-group/index.d.ts +2 -0
- package/molecules/button-group/index.d.ts.map +1 -0
- package/molecules/form-field/form-field.component.d.ts +18 -0
- package/molecules/form-field/form-field.component.d.ts.map +1 -0
- package/molecules/form-field/index.d.ts +2 -0
- package/molecules/form-field/index.d.ts.map +1 -0
- package/molecules/index.d.ts +13 -0
- package/molecules/index.d.ts.map +1 -0
- package/molecules/input/index.d.ts +2 -0
- package/molecules/input/index.d.ts.map +1 -0
- package/molecules/input/input.component.d.ts +50 -0
- package/molecules/input/input.component.d.ts.map +1 -0
- package/molecules/pagination/index.d.ts +2 -0
- package/molecules/pagination/index.d.ts.map +1 -0
- package/molecules/pagination/pagination.component.d.ts +18 -0
- package/molecules/pagination/pagination.component.d.ts.map +1 -0
- package/molecules/select/index.d.ts +3 -0
- package/molecules/select/index.d.ts.map +1 -0
- package/molecules/select/select.component.d.ts +56 -0
- package/molecules/select/select.component.d.ts.map +1 -0
- package/molecules/select-search/index.d.ts +2 -0
- package/molecules/select-search/index.d.ts.map +1 -0
- package/molecules/select-search/select-search.component.d.ts +63 -0
- package/molecules/select-search/select-search.component.d.ts.map +1 -0
- package/molecules/tabs/index.d.ts +2 -0
- package/molecules/tabs/index.d.ts.map +1 -0
- package/molecules/tabs/tabs.component.d.ts +23 -0
- package/molecules/tabs/tabs.component.d.ts.map +1 -0
- package/molecules/textarea/index.d.ts +2 -0
- package/molecules/textarea/index.d.ts.map +1 -0
- package/molecules/textarea/textarea.component.d.ts +27 -0
- package/molecules/textarea/textarea.component.d.ts.map +1 -0
- package/molecules/toast/index.d.ts +2 -0
- package/molecules/toast/index.d.ts.map +1 -0
- package/molecules/toast/toast.component.d.ts +19 -0
- package/molecules/toast/toast.component.d.ts.map +1 -0
- package/organisms/accordion/accordion.component.d.ts +25 -0
- package/organisms/accordion/accordion.component.d.ts.map +1 -0
- package/organisms/atomng-ui-organisms.d.ts.map +1 -0
- package/organisms/card/card.component.d.ts +14 -0
- package/organisms/card/card.component.d.ts.map +1 -0
- package/organisms/dropdown-menu/dropdown-menu.component.d.ts +29 -0
- package/organisms/dropdown-menu/dropdown-menu.component.d.ts.map +1 -0
- package/organisms/index.d.ts +8 -0
- package/organisms/index.d.ts.map +1 -0
- package/organisms/modal/modal.component.d.ts +19 -0
- package/organisms/modal/modal.component.d.ts.map +1 -0
- package/organisms/navigation-menu/navigation-menu.component.d.ts +24 -0
- package/organisms/navigation-menu/navigation-menu.component.d.ts.map +1 -0
- package/organisms/sidebar/sidebar.component.d.ts +68 -0
- package/organisms/sidebar/sidebar.component.d.ts.map +1 -0
- package/organisms/table/index.d.ts +3 -0
- package/organisms/table/index.d.ts.map +1 -0
- package/organisms/table/table-cell.directive.d.ts +17 -0
- package/organisms/table/table-cell.directive.d.ts.map +1 -0
- package/organisms/table/table.component.d.ts +50 -0
- package/organisms/table/table.component.d.ts.map +1 -0
- package/package.json +81 -0
- package/tokens/_colors.scss +150 -0
- package/tokens/_spacing.scss +98 -0
- package/tokens/_typography.scss +59 -0
- package/tokens/atomng-ui-tokens.d.ts.map +1 -0
- package/tokens/index.d.ts +2 -0
- package/tokens/index.d.ts.map +1 -0
- package/tokens/index.scss +8 -0
- package/tokens/theme/color-presets.d.ts +24 -0
- package/tokens/theme/color-presets.d.ts.map +1 -0
- package/tokens/theme/index.d.ts +6 -0
- package/tokens/theme/index.d.ts.map +1 -0
- package/tokens/theme/theme-picker.component.d.ts +11 -0
- package/tokens/theme/theme-picker.component.d.ts.map +1 -0
- package/tokens/theme/theme-toggle.component.d.ts +15 -0
- package/tokens/theme/theme-toggle.component.d.ts.map +1 -0
- package/tokens/theme/theme.provider.d.ts +4 -0
- package/tokens/theme/theme.provider.d.ts.map +1 -0
- package/tokens/theme/theme.service.d.ts +48 -0
- package/tokens/theme/theme.service.d.ts.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../libs/shared-ui/src/lib/organisms/table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,MAAW,mBAAmB,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAW,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { TemplateRef } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export interface TableCellContext {
|
|
4
|
+
$implicit: Record<string, unknown>;
|
|
5
|
+
row: Record<string, unknown>;
|
|
6
|
+
}
|
|
7
|
+
export declare class UiTableCellDirective {
|
|
8
|
+
readonly tpl: TemplateRef<TableCellContext>;
|
|
9
|
+
/** The column key this template handles. */
|
|
10
|
+
columnKey: string;
|
|
11
|
+
constructor(tpl: TemplateRef<TableCellContext>);
|
|
12
|
+
/** Type-safe static context guard for `let-row`. */
|
|
13
|
+
static ngTemplateContextGuard(_dir: UiTableCellDirective, ctx: unknown): ctx is TableCellContext;
|
|
14
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<UiTableCellDirective, never>;
|
|
15
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<UiTableCellDirective, "ng-template[uiCell]", never, { "columnKey": { "alias": "uiCell"; "required": true; }; }, {}, never, never, true, never>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=table-cell.directive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-cell.directive.d.ts","sourceRoot":"","sources":["../../../../../libs/shared-ui/src/lib/organisms/table/table-cell.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,WAAW,EAAE,MAAM,eAAe,CAAC;;AAU9D,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,GAAG,EAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,qBAIa,oBAAoB;aAKb,GAAG,EAAE,WAAW,CAAC,gBAAgB,CAAC;IAJpD,4CAA4C;IACA,SAAS,EAAG,MAAM,CAAC;gBAG7C,GAAG,EAAE,WAAW,CAAC,gBAAgB,CAAC;IAGpD,oDAAoD;IACpD,MAAM,CAAC,sBAAsB,CAC3B,IAAI,EAAE,oBAAoB,EAC1B,GAAG,EAAE,OAAO,GACX,GAAG,IAAI,gBAAgB;yCAZf,oBAAoB;2CAApB,oBAAoB;CAehC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { TemplateRef } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export interface TableColumn<T = unknown> {
|
|
4
|
+
key: string;
|
|
5
|
+
label: string;
|
|
6
|
+
sortable?: boolean;
|
|
7
|
+
width?: string;
|
|
8
|
+
align?: 'left' | 'center' | 'right';
|
|
9
|
+
}
|
|
10
|
+
export interface SortState {
|
|
11
|
+
column: string;
|
|
12
|
+
direction: 'asc' | 'desc';
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Table Organism — Source: Nuxt UI v3 ❖ Table
|
|
16
|
+
* Data table with sorting, selection, loading state.
|
|
17
|
+
*
|
|
18
|
+
* Custom cell templates via UiTableCellDirective:
|
|
19
|
+
* <ng-template uiCell="columnKey" let-row>
|
|
20
|
+
* <ui-badge>{{ row['field'] }}</ui-badge>
|
|
21
|
+
* </ng-template>
|
|
22
|
+
*/
|
|
23
|
+
export declare class TableComponent {
|
|
24
|
+
readonly columns: import("@angular/core").InputSignal<TableColumn<unknown>[]>;
|
|
25
|
+
readonly rows: import("@angular/core").InputSignal<Record<string, unknown>[]>;
|
|
26
|
+
readonly loading: import("@angular/core").InputSignal<boolean>;
|
|
27
|
+
readonly selectable: import("@angular/core").InputSignal<boolean>;
|
|
28
|
+
readonly caption: import("@angular/core").InputSignal<string>;
|
|
29
|
+
readonly emptyLabel: import("@angular/core").InputSignal<string>;
|
|
30
|
+
readonly rowIdKey: import("@angular/core").InputSignal<string>;
|
|
31
|
+
readonly sortState: import("@angular/core").ModelSignal<SortState>;
|
|
32
|
+
readonly selectedIds: import("@angular/core").ModelSignal<(string | number)[]>;
|
|
33
|
+
readonly rowClick: import("@angular/core").OutputEmitterRef<Record<string, unknown>>;
|
|
34
|
+
private cellDirs;
|
|
35
|
+
/** Returns the TemplateRef for a column key if a custom template was provided. */
|
|
36
|
+
protected getCellTpl(key: string): TemplateRef<unknown> | null;
|
|
37
|
+
protected readonly loadingRows: import("@angular/core").Signal<number[]>;
|
|
38
|
+
protected readonly allSelected: import("@angular/core").Signal<boolean>;
|
|
39
|
+
protected rowId(row: Record<string, unknown>): string | number;
|
|
40
|
+
protected isSelected(id: string | number): boolean;
|
|
41
|
+
protected toggleRow(id: string | number): void;
|
|
42
|
+
protected toggleAll(): void;
|
|
43
|
+
protected sort(key: string): void;
|
|
44
|
+
protected getSortIcon(key: string): string;
|
|
45
|
+
protected getSortAriaLabel(key: string): string | null;
|
|
46
|
+
protected onRowClick(row: Record<string, unknown>): void;
|
|
47
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TableComponent, never>;
|
|
48
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TableComponent, "ui-table", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "caption": { "alias": "caption"; "required": false; "isSignal": true; }; "emptyLabel": { "alias": "emptyLabel"; "required": false; "isSignal": true; }; "rowIdKey": { "alias": "rowIdKey"; "required": false; "isSignal": true; }; "sortState": { "alias": "sortState"; "required": false; "isSignal": true; }; "selectedIds": { "alias": "selectedIds"; "required": false; "isSignal": true; }; }, { "sortState": "sortStateChange"; "selectedIds": "selectedIdsChange"; "rowClick": "rowClick"; }, ["cellDirs"], ["[slot=empty]", "*"], true, never>;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=table.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.component.d.ts","sourceRoot":"","sources":["../../../../../libs/shared-ui/src/lib/organisms/table/table.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAEM,WAAW,EACvB,MAAM,eAAe,CAAC;;AAIvB,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,GAAG,EAAS,MAAM,CAAC;IACnB,KAAK,EAAO,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAG,OAAO,CAAC;IACpB,KAAK,CAAC,EAAM,MAAM,CAAC;IACnB,KAAK,CAAC,EAAM,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;CACzC;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC;CAC3B;AAED;;;;;;;;GAQG;AACH,qBAgGa,cAAc;IACzB,QAAQ,CAAC,OAAO,8DAAwC;IACxD,QAAQ,CAAC,IAAI,iEAAgD;IAC7D,QAAQ,CAAC,OAAO,+CAA8B;IAC9C,QAAQ,CAAC,UAAU,+CAA2B;IAC9C,QAAQ,CAAC,OAAO,8CAAmC;IACnD,QAAQ,CAAC,UAAU,8CAAyC;IAC5D,QAAQ,CAAC,QAAQ,8CAA2B;IAE5C,QAAQ,CAAC,SAAS,iDAAoC;IACtD,QAAQ,CAAC,WAAW,2DAAmC;IAEvD,QAAQ,CAAC,QAAQ,oEAAqC;IAItD,OAAO,CAAC,QAAQ,CAAmC;IAEnD,kFAAkF;IAClF,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI;IAM9D,SAAS,CAAC,QAAQ,CAAC,WAAW,2CAA0D;IACxF,SAAS,CAAC,QAAQ,CAAC,WAAW,0CAE5B;IAIF,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,MAAM;IAI9D,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAIlD,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAM9C,SAAS,CAAC,SAAS,IAAI,IAAI;IAQ3B,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAWjC,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAM1C,SAAS,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAMtD,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;yCA7E7C,cAAc;2CAAd,cAAc;CAgF1B"}
|
package/package.json
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@atomng/ui",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Angular 19 component library — Atomic Design system built with Standalone Components, Angular Signals and SCSS design tokens.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"angular",
|
|
7
|
+
"angular19",
|
|
8
|
+
"component-library",
|
|
9
|
+
"design-system",
|
|
10
|
+
"ui-kit",
|
|
11
|
+
"atomic-design",
|
|
12
|
+
"standalone-components",
|
|
13
|
+
"signals",
|
|
14
|
+
"scss",
|
|
15
|
+
"css-custom-properties",
|
|
16
|
+
"dark-mode",
|
|
17
|
+
"theming",
|
|
18
|
+
"atoms",
|
|
19
|
+
"molecules",
|
|
20
|
+
"organisms"
|
|
21
|
+
],
|
|
22
|
+
"author": {
|
|
23
|
+
"name": "Libasse Mbaye",
|
|
24
|
+
"email": "libasselayembayedev@gmail.com"
|
|
25
|
+
},
|
|
26
|
+
"license": "MIT",
|
|
27
|
+
"peerDependencies": {
|
|
28
|
+
"@angular/animations": ">=19.0.0",
|
|
29
|
+
"@angular/common": ">=19.0.0",
|
|
30
|
+
"@angular/core": ">=19.0.0",
|
|
31
|
+
"@angular/forms": ">=19.0.0",
|
|
32
|
+
"@angular/router": ">=19.0.0",
|
|
33
|
+
"lucide-angular": ">=1.0.0",
|
|
34
|
+
"rxjs": ">=7.4.0"
|
|
35
|
+
},
|
|
36
|
+
"peerDependenciesMeta": {
|
|
37
|
+
"@angular/animations": {
|
|
38
|
+
"optional": true
|
|
39
|
+
},
|
|
40
|
+
"@angular/forms": {
|
|
41
|
+
"optional": true
|
|
42
|
+
},
|
|
43
|
+
"@angular/router": {
|
|
44
|
+
"optional": true
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"sideEffects": [
|
|
48
|
+
"**/*.scss",
|
|
49
|
+
"**/*.css"
|
|
50
|
+
],
|
|
51
|
+
"module": "fesm2022/atomng-ui.mjs",
|
|
52
|
+
"typings": "index.d.ts",
|
|
53
|
+
"exports": {
|
|
54
|
+
"./package.json": {
|
|
55
|
+
"default": "./package.json"
|
|
56
|
+
},
|
|
57
|
+
".": {
|
|
58
|
+
"types": "./index.d.ts",
|
|
59
|
+
"default": "./fesm2022/atomng-ui.mjs"
|
|
60
|
+
},
|
|
61
|
+
"./tokens": {
|
|
62
|
+
"types": "./tokens/index.d.ts",
|
|
63
|
+
"default": "./fesm2022/atomng-ui-tokens.mjs"
|
|
64
|
+
},
|
|
65
|
+
"./molecules": {
|
|
66
|
+
"types": "./molecules/index.d.ts",
|
|
67
|
+
"default": "./fesm2022/atomng-ui-molecules.mjs"
|
|
68
|
+
},
|
|
69
|
+
"./atoms": {
|
|
70
|
+
"types": "./atoms/index.d.ts",
|
|
71
|
+
"default": "./fesm2022/atomng-ui-atoms.mjs"
|
|
72
|
+
},
|
|
73
|
+
"./organisms": {
|
|
74
|
+
"types": "./organisms/index.d.ts",
|
|
75
|
+
"default": "./fesm2022/atomng-ui-organisms.mjs"
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"dependencies": {
|
|
79
|
+
"tslib": ">=2.3.0"
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
// ============================================================
|
|
2
|
+
// DESIGN TOKENS — COLORS
|
|
3
|
+
// Source: Nuxt UI v3 Official Design Kit (Figma)
|
|
4
|
+
// Primary: #00C16A | Font: DM Sans
|
|
5
|
+
// ============================================================
|
|
6
|
+
|
|
7
|
+
:root {
|
|
8
|
+
// ── Primary (Nuxt Green) ──────────────────────────────────
|
|
9
|
+
--color-primary-50: #e6fff3;
|
|
10
|
+
--color-primary-100: #b3ffe0;
|
|
11
|
+
--color-primary-200: #80ffcc;
|
|
12
|
+
--color-primary-300: #4dfab8;
|
|
13
|
+
--color-primary-400: #1af5a3;
|
|
14
|
+
--color-primary-500: #00c16a; // Base — rgb(0, 193, 106)
|
|
15
|
+
--color-primary-600: #00a358;
|
|
16
|
+
--color-primary-700: #008547;
|
|
17
|
+
--color-primary-800: #006736;
|
|
18
|
+
--color-primary-900: #004a26;
|
|
19
|
+
--color-primary-950: #002d17;
|
|
20
|
+
|
|
21
|
+
// ── Secondary ────────────────────────────────────────────
|
|
22
|
+
--color-secondary-50: #f0f4ff;
|
|
23
|
+
--color-secondary-100: #d9e4ff;
|
|
24
|
+
--color-secondary-200: #b3c9ff;
|
|
25
|
+
--color-secondary-300: #8db0ff;
|
|
26
|
+
--color-secondary-400: #6695ff;
|
|
27
|
+
--color-secondary-500: #4070ff;
|
|
28
|
+
--color-secondary-600: #2a54e0;
|
|
29
|
+
--color-secondary-700: #1a3cba;
|
|
30
|
+
--color-secondary-800: #0d2794;
|
|
31
|
+
--color-secondary-900: #06186e;
|
|
32
|
+
--color-secondary-950: #030d4a;
|
|
33
|
+
|
|
34
|
+
// ── Neutral ───────────────────────────────────────────────
|
|
35
|
+
--color-neutral-0: #ffffff;
|
|
36
|
+
--color-neutral-50: #f9fafb;
|
|
37
|
+
--color-neutral-100: #f3f4f6;
|
|
38
|
+
--color-neutral-200: #e5e7eb;
|
|
39
|
+
--color-neutral-300: #d1d5db;
|
|
40
|
+
--color-neutral-400: #9ca3af;
|
|
41
|
+
--color-neutral-500: #6b7280;
|
|
42
|
+
--color-neutral-600: #4b5563;
|
|
43
|
+
--color-neutral-700: #374151;
|
|
44
|
+
--color-neutral-800: #1f2937;
|
|
45
|
+
--color-neutral-900: #111827;
|
|
46
|
+
--color-neutral-950: #1b1718;
|
|
47
|
+
|
|
48
|
+
// ── Success ───────────────────────────────────────────────
|
|
49
|
+
--color-success-50: #f0fdf4;
|
|
50
|
+
--color-success-100: #dcfce7;
|
|
51
|
+
--color-success-200: #bbf7d0;
|
|
52
|
+
--color-success-300: #86efac;
|
|
53
|
+
--color-success-400: #4ade80;
|
|
54
|
+
--color-success-500: #22c55e;
|
|
55
|
+
--color-success-600: #16a34a;
|
|
56
|
+
--color-success-700: #15803d;
|
|
57
|
+
--color-success-800: #166534;
|
|
58
|
+
--color-success-900: #14532d;
|
|
59
|
+
--color-success-950: #052e16;
|
|
60
|
+
|
|
61
|
+
// ── Warning ───────────────────────────────────────────────
|
|
62
|
+
--color-warning-50: #fffbeb;
|
|
63
|
+
--color-warning-100: #fef3c7;
|
|
64
|
+
--color-warning-200: #fde68a;
|
|
65
|
+
--color-warning-300: #fcd34d;
|
|
66
|
+
--color-warning-400: #fbbf24;
|
|
67
|
+
--color-warning-500: #f59e0b;
|
|
68
|
+
--color-warning-600: #d97706;
|
|
69
|
+
--color-warning-700: #b45309;
|
|
70
|
+
--color-warning-800: #92400e;
|
|
71
|
+
--color-warning-900: #78350f;
|
|
72
|
+
--color-warning-950: #451a03;
|
|
73
|
+
|
|
74
|
+
// ── Error ─────────────────────────────────────────────────
|
|
75
|
+
--color-error-50: #fef2f2;
|
|
76
|
+
--color-error-100: #fee2e2;
|
|
77
|
+
--color-error-200: #fecaca;
|
|
78
|
+
--color-error-300: #fca5a5;
|
|
79
|
+
--color-error-400: #f87171;
|
|
80
|
+
--color-error-500: #ef4444;
|
|
81
|
+
--color-error-600: #dc2626;
|
|
82
|
+
--color-error-700: #b91c1c;
|
|
83
|
+
--color-error-800: #991b1b;
|
|
84
|
+
--color-error-900: #7f1d1d;
|
|
85
|
+
--color-error-950: #450a0a;
|
|
86
|
+
|
|
87
|
+
// ── Info ──────────────────────────────────────────────────
|
|
88
|
+
--color-info-50: #eff6ff;
|
|
89
|
+
--color-info-100: #dbeafe;
|
|
90
|
+
--color-info-200: #bfdbfe;
|
|
91
|
+
--color-info-300: #93c5fd;
|
|
92
|
+
--color-info-400: #60a5fa;
|
|
93
|
+
--color-info-500: #3b82f6;
|
|
94
|
+
--color-info-600: #2563eb;
|
|
95
|
+
--color-info-700: #1d4ed8;
|
|
96
|
+
--color-info-800: #1e40af;
|
|
97
|
+
--color-info-900: #1e3a8a;
|
|
98
|
+
--color-info-950: #172554;
|
|
99
|
+
|
|
100
|
+
// ── Semantic Aliases ──────────────────────────────────────
|
|
101
|
+
--color-bg: var(--color-neutral-0);
|
|
102
|
+
--color-bg-muted: var(--color-neutral-50);
|
|
103
|
+
--color-bg-subtle: var(--color-neutral-100);
|
|
104
|
+
--color-border: var(--color-neutral-200);
|
|
105
|
+
--color-border-muted: var(--color-neutral-100);
|
|
106
|
+
--color-text: var(--color-neutral-900);
|
|
107
|
+
--color-text-muted: var(--color-neutral-500);
|
|
108
|
+
--color-text-subtle: var(--color-neutral-400);
|
|
109
|
+
--color-text-inverted: var(--color-neutral-0);
|
|
110
|
+
--color-ring: var(--color-primary-500);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// ── Dark Mode ─────────────────────────────────────────────
|
|
114
|
+
[data-theme="dark"],
|
|
115
|
+
.dark {
|
|
116
|
+
--color-bg: var(--color-neutral-950);
|
|
117
|
+
--color-bg-muted: var(--color-neutral-900);
|
|
118
|
+
--color-bg-subtle: var(--color-neutral-800);
|
|
119
|
+
--color-border: var(--color-neutral-800);
|
|
120
|
+
--color-border-muted: var(--color-neutral-900);
|
|
121
|
+
--color-text: var(--color-neutral-50);
|
|
122
|
+
--color-text-muted: var(--color-neutral-400);
|
|
123
|
+
--color-text-subtle: var(--color-neutral-500);
|
|
124
|
+
--color-text-inverted: var(--color-neutral-950);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// ── SCSS Maps for programmatic use ────────────────────────
|
|
128
|
+
$colors-primary: (
|
|
129
|
+
50: #e6fff3,
|
|
130
|
+
100: #b3ffe0,
|
|
131
|
+
200: #80ffcc,
|
|
132
|
+
300: #4dfab8,
|
|
133
|
+
400: #1af5a3,
|
|
134
|
+
500: #00c16a,
|
|
135
|
+
600: #00a358,
|
|
136
|
+
700: #008547,
|
|
137
|
+
800: #006736,
|
|
138
|
+
900: #004a26,
|
|
139
|
+
950: #002d17,
|
|
140
|
+
);
|
|
141
|
+
|
|
142
|
+
$color-semantic: (
|
|
143
|
+
'primary': #00c16a,
|
|
144
|
+
'secondary': #4070ff,
|
|
145
|
+
'neutral': #6b7280,
|
|
146
|
+
'success': #22c55e,
|
|
147
|
+
'warning': #f59e0b,
|
|
148
|
+
'error': #ef4444,
|
|
149
|
+
'info': #3b82f6,
|
|
150
|
+
);
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
// ============================================================
|
|
2
|
+
// DESIGN TOKENS — SPACING & SIZING
|
|
3
|
+
// Source: Nuxt UI v3 Official Design Kit (Figma)
|
|
4
|
+
// Button sizes: xs(h:24) sm(h:28) md(h:32) lg(h:36) xl(h:40)
|
|
5
|
+
// ============================================================
|
|
6
|
+
|
|
7
|
+
:root {
|
|
8
|
+
// ── Base spacing scale (4px base) ─────────────────────────
|
|
9
|
+
--spacing-0: 0;
|
|
10
|
+
--spacing-px: 1px;
|
|
11
|
+
--spacing-0-5: 0.125rem; // 2px
|
|
12
|
+
--spacing-1: 0.25rem; // 4px
|
|
13
|
+
--spacing-1-5: 0.375rem; // 6px
|
|
14
|
+
--spacing-2: 0.5rem; // 8px
|
|
15
|
+
--spacing-2-5: 0.625rem; // 10px
|
|
16
|
+
--spacing-3: 0.75rem; // 12px
|
|
17
|
+
--spacing-3-5: 0.875rem; // 14px
|
|
18
|
+
--spacing-4: 1rem; // 16px
|
|
19
|
+
--spacing-5: 1.25rem; // 20px
|
|
20
|
+
--spacing-6: 1.5rem; // 24px
|
|
21
|
+
--spacing-7: 1.75rem; // 28px
|
|
22
|
+
--spacing-8: 2rem; // 32px
|
|
23
|
+
--spacing-9: 2.25rem; // 36px
|
|
24
|
+
--spacing-10: 2.5rem; // 40px
|
|
25
|
+
--spacing-11: 2.75rem; // 44px
|
|
26
|
+
--spacing-12: 3rem; // 48px
|
|
27
|
+
--spacing-16: 4rem; // 64px
|
|
28
|
+
--spacing-20: 5rem; // 80px
|
|
29
|
+
--spacing-24: 6rem; // 96px
|
|
30
|
+
|
|
31
|
+
// ── Component Heights (from Figma button specs) ───────────
|
|
32
|
+
--size-xs: 1.5rem; // 24px
|
|
33
|
+
--size-sm: 1.75rem; // 28px
|
|
34
|
+
--size-md: 2rem; // 32px
|
|
35
|
+
--size-lg: 2.25rem; // 36px
|
|
36
|
+
--size-xl: 2.5rem; // 40px
|
|
37
|
+
|
|
38
|
+
// ── Border Radius ─────────────────────────────────────────
|
|
39
|
+
--radius-none: 0;
|
|
40
|
+
--radius-sm: 0.125rem; // 2px
|
|
41
|
+
--radius-md: 0.375rem; // 6px ← Figma base radius
|
|
42
|
+
--radius-lg: 0.5rem; // 8px
|
|
43
|
+
--radius-xl: 0.75rem; // 12px
|
|
44
|
+
--radius-2xl: 1rem; // 16px
|
|
45
|
+
--radius-full: 9999px;
|
|
46
|
+
|
|
47
|
+
// ── Icon Sizes ────────────────────────────────────────────
|
|
48
|
+
--icon-xs: 0.875rem; // 14px
|
|
49
|
+
--icon-sm: 1rem; // 16px
|
|
50
|
+
--icon-md: 1.25rem; // 20px ← Figma button icon size
|
|
51
|
+
--icon-lg: 1.5rem; // 24px
|
|
52
|
+
--icon-xl: 1.75rem; // 28px
|
|
53
|
+
|
|
54
|
+
// ── Shadows ───────────────────────────────────────────────
|
|
55
|
+
--shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05);
|
|
56
|
+
--shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
|
|
57
|
+
--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
|
|
58
|
+
--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
|
|
59
|
+
--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
|
|
60
|
+
|
|
61
|
+
// ── Transitions ───────────────────────────────────────────
|
|
62
|
+
--transition-fast: 150ms ease;
|
|
63
|
+
--transition-base: 200ms ease;
|
|
64
|
+
--transition-slow: 300ms ease;
|
|
65
|
+
--transition-colors: color 150ms ease, background-color 150ms ease, border-color 150ms ease, box-shadow 150ms ease;
|
|
66
|
+
|
|
67
|
+
// ── Z-index ───────────────────────────────────────────────
|
|
68
|
+
--z-base: 0;
|
|
69
|
+
--z-raised: 10;
|
|
70
|
+
--z-dropdown: 1000;
|
|
71
|
+
--z-sticky: 1100;
|
|
72
|
+
--z-modal: 1300;
|
|
73
|
+
--z-toast: 1500;
|
|
74
|
+
--z-tooltip: 1700;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// ── Padding map (from Figma button specs) ─────────────────
|
|
78
|
+
// xs: 4px 8px | sm: 6px 10px | md: 6px 10px | lg: 8px 12px | xl: 8px 12px
|
|
79
|
+
$component-padding: (
|
|
80
|
+
xs: (4px, 8px),
|
|
81
|
+
sm: (6px, 10px),
|
|
82
|
+
md: (6px, 10px),
|
|
83
|
+
lg: (8px, 12px),
|
|
84
|
+
xl: (8px, 12px),
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
// ── Responsive breakpoints ────────────────────────────────
|
|
88
|
+
$breakpoints: (
|
|
89
|
+
sm: 640px,
|
|
90
|
+
md: 768px,
|
|
91
|
+
lg: 1024px,
|
|
92
|
+
xl: 1280px,
|
|
93
|
+
2xl: 1536px,
|
|
94
|
+
);
|
|
95
|
+
|
|
96
|
+
@mixin responsive($bp) {
|
|
97
|
+
@media (min-width: map-get($breakpoints, $bp)) { @content; }
|
|
98
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// ============================================================
|
|
2
|
+
// DESIGN TOKENS — TYPOGRAPHY
|
|
3
|
+
// Source: Nuxt UI v3 Official Design Kit (Figma)
|
|
4
|
+
// Font: DM Sans — extracted from Figma component specs
|
|
5
|
+
// ============================================================
|
|
6
|
+
|
|
7
|
+
:root {
|
|
8
|
+
// ── Font Families ─────────────────────────────────────────
|
|
9
|
+
--font-sans: 'DM Sans', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
|
10
|
+
--font-mono: 'DM Mono', 'Fira Code', 'Cascadia Code', ui-monospace, monospace;
|
|
11
|
+
|
|
12
|
+
// ── Font Sizes ────────────────────────────────────────────
|
|
13
|
+
--text-xs: 0.75rem; // 12px
|
|
14
|
+
--text-sm: 0.875rem; // 14px
|
|
15
|
+
--text-md: 1rem; // 16px
|
|
16
|
+
--text-lg: 1.125rem; // 18px
|
|
17
|
+
--text-xl: 1.25rem; // 20px
|
|
18
|
+
--text-2xl: 1.5rem; // 24px
|
|
19
|
+
--text-3xl: 1.875rem; // 30px
|
|
20
|
+
--text-4xl: 2.25rem; // 36px
|
|
21
|
+
|
|
22
|
+
// ── Font Weights ──────────────────────────────────────────
|
|
23
|
+
--font-normal: 400;
|
|
24
|
+
--font-medium: 500; // Primary weight in Figma
|
|
25
|
+
--font-semibold: 600;
|
|
26
|
+
--font-bold: 700;
|
|
27
|
+
|
|
28
|
+
// ── Line Heights ──────────────────────────────────────────
|
|
29
|
+
--leading-none: 1;
|
|
30
|
+
--leading-tight: 1.25;
|
|
31
|
+
--leading-snug: 1.375;
|
|
32
|
+
--leading-normal: 1.5;
|
|
33
|
+
--leading-relaxed: 1.625;
|
|
34
|
+
|
|
35
|
+
// ── Letter Spacing ────────────────────────────────────────
|
|
36
|
+
--tracking-tight: -0.025em;
|
|
37
|
+
--tracking-normal: 0;
|
|
38
|
+
--tracking-wide: 0.025em;
|
|
39
|
+
--tracking-wider: 0.05em;
|
|
40
|
+
--tracking-widest: 0.1em;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// ── SCSS Mixins ───────────────────────────────────────────
|
|
44
|
+
@mixin text-xs { font-size: var(--text-xs); line-height: var(--leading-normal); }
|
|
45
|
+
@mixin text-sm { font-size: var(--text-sm); line-height: var(--leading-normal); }
|
|
46
|
+
@mixin text-md { font-size: var(--text-md); line-height: var(--leading-normal); }
|
|
47
|
+
@mixin text-lg { font-size: var(--text-lg); line-height: var(--leading-snug); }
|
|
48
|
+
@mixin text-xl { font-size: var(--text-xl); line-height: var(--leading-snug); }
|
|
49
|
+
@mixin text-2xl { font-size: var(--text-2xl); line-height: var(--leading-tight); }
|
|
50
|
+
@mixin text-3xl { font-size: var(--text-3xl); line-height: var(--leading-tight); }
|
|
51
|
+
@mixin text-4xl { font-size: var(--text-4xl); line-height: var(--leading-tight); }
|
|
52
|
+
|
|
53
|
+
// ── Button Typography (from Figma) ────────────────────────
|
|
54
|
+
// xs: 12px 500 | sm: 12px 500 | md: 14px 500 | lg: 14px 500 | xl: 16px 500
|
|
55
|
+
@mixin btn-text-xs { font-size: var(--text-xs); font-weight: var(--font-medium); }
|
|
56
|
+
@mixin btn-text-sm { font-size: var(--text-xs); font-weight: var(--font-medium); }
|
|
57
|
+
@mixin btn-text-md { font-size: var(--text-sm); font-weight: var(--font-medium); }
|
|
58
|
+
@mixin btn-text-lg { font-size: var(--text-sm); font-weight: var(--font-medium); }
|
|
59
|
+
@mixin btn-text-xl { font-size: var(--text-md); font-weight: var(--font-medium); }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atomng-ui-tokens.d.ts","sourceRoot":"","sources":["../../../../libs/shared-ui/src/lib/tokens/atomng-ui-tokens.ts"],"names":[],"mappings":"AAAA;;GAEG;;AAEH,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../libs/shared-ui/src/lib/tokens/index.ts"],"names":[],"mappings":"AAIA,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// ============================================================
|
|
2
|
+
// SHARED-UI DESIGN TOKENS — Master Export
|
|
3
|
+
// Import this file in your global styles.scss
|
|
4
|
+
// ============================================================
|
|
5
|
+
|
|
6
|
+
@forward 'colors';
|
|
7
|
+
@forward 'typography';
|
|
8
|
+
@forward 'spacing';
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface ColorPalette {
|
|
2
|
+
50: string;
|
|
3
|
+
100: string;
|
|
4
|
+
200: string;
|
|
5
|
+
300: string;
|
|
6
|
+
400: string;
|
|
7
|
+
500: string;
|
|
8
|
+
600: string;
|
|
9
|
+
700: string;
|
|
10
|
+
800: string;
|
|
11
|
+
900: string;
|
|
12
|
+
950: string;
|
|
13
|
+
}
|
|
14
|
+
export type PrimaryColorPreset = 'green' | 'emerald' | 'teal' | 'cyan' | 'sky' | 'blue' | 'indigo' | 'violet' | 'purple' | 'fuchsia' | 'pink' | 'rose' | 'red' | 'orange' | 'amber' | 'lime' | 'slate' | 'zinc';
|
|
15
|
+
export interface ColorPresetMeta {
|
|
16
|
+
name: PrimaryColorPreset;
|
|
17
|
+
label: string;
|
|
18
|
+
swatch: string;
|
|
19
|
+
palette: ColorPalette;
|
|
20
|
+
}
|
|
21
|
+
export declare const COLOR_PRESETS: Record<PrimaryColorPreset, ColorPresetMeta>;
|
|
22
|
+
/** Returns all preset metas sorted for display */
|
|
23
|
+
export declare function getAllPresets(): ColorPresetMeta[];
|
|
24
|
+
//# sourceMappingURL=color-presets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color-presets.d.ts","sourceRoot":"","sources":["../../../../../libs/shared-ui/src/lib/tokens/theme/color-presets.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAG,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,kBAAkB,GAC1B,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GACrC,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GACpC,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GACtC,KAAK,GAAG,QAAQ,GAAG,OAAO,GAC1B,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAE9B,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAK,kBAAkB,CAAC;IAC5B,KAAK,EAAI,MAAM,CAAC;IAChB,MAAM,EAAG,MAAM,CAAC;IAChB,OAAO,EAAE,YAAY,CAAC;CACvB;AAID,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,kBAAkB,EAAE,eAAe,CAmKrE,CAAC;AAEF,kDAAkD;AAClD,wBAAgB,aAAa,IAAI,eAAe,EAAE,CAEjD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../libs/shared-ui/src/lib/tokens/theme/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ThemeService } from './theme.service';
|
|
2
|
+
import { ColorPresetMeta, PrimaryColorPreset } from './color-presets';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class ThemePickerComponent {
|
|
5
|
+
protected theme: ThemeService;
|
|
6
|
+
readonly change: import("@angular/core").OutputEmitterRef<PrimaryColorPreset>;
|
|
7
|
+
protected select(preset: ColorPresetMeta): void;
|
|
8
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ThemePickerComponent, never>;
|
|
9
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ThemePickerComponent, "ui-theme-picker", never, {}, { "change": "change"; }, never, never, true, never>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=theme-picker.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-picker.component.d.ts","sourceRoot":"","sources":["../../../../../libs/shared-ui/src/lib/tokens/theme/theme-picker.component.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAW,iBAAiB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;;AAUtE,qBAgEa,oBAAoB;IAC/B,SAAS,CAAC,KAAK,eAAwB;IAEvC,QAAQ,CAAC,MAAM,+DAAgC;IAE/C,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;yCALpC,oBAAoB;2CAApB,oBAAoB;CAShC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ThemeService, ThemeMode } from './theme.service';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
interface ModeOption {
|
|
4
|
+
value: ThemeMode;
|
|
5
|
+
label: string;
|
|
6
|
+
icon: string;
|
|
7
|
+
}
|
|
8
|
+
export declare class ThemeToggleComponent {
|
|
9
|
+
protected theme: ThemeService;
|
|
10
|
+
protected options: ModeOption[];
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ThemeToggleComponent, never>;
|
|
12
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ThemeToggleComponent, "ui-theme-toggle", never, {}, {}, never, never, true, never>;
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=theme-toggle.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-toggle.component.d.ts","sourceRoot":"","sources":["../../../../../libs/shared-ui/src/lib/tokens/theme/theme-toggle.component.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;;AAS1D,UAAU,UAAU;IAClB,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAG,MAAM,CAAC;CACf;AAED,qBA0Fa,oBAAoB;IAC/B,SAAS,CAAC,KAAK,eAAwB;IAEvC,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAkB7B;yCArBS,oBAAoB;2CAApB,oBAAoB;CAsBhC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.provider.d.ts","sourceRoot":"","sources":["../../../../../libs/shared-ui/src/lib/tokens/theme/theme.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,oBAAoB,EAA4B,MAAM,eAAe,CAAC;AAChG,OAAO,EAAgB,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAY5D,wBAAgB,oBAAoB,CAAC,MAAM,GAAE,WAAgB,GAAG,oBAAoB,CASnF"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { ColorPalette, PrimaryColorPreset, ColorPresetMeta } from './color-presets';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export type ThemeMode = 'light' | 'dark' | 'system';
|
|
4
|
+
export interface ThemeConfig {
|
|
5
|
+
primaryColor?: PrimaryColorPreset | ColorPalette;
|
|
6
|
+
mode?: ThemeMode;
|
|
7
|
+
}
|
|
8
|
+
export declare class ThemeService {
|
|
9
|
+
private platformId;
|
|
10
|
+
private readonly _preset;
|
|
11
|
+
private readonly _palette;
|
|
12
|
+
private readonly _mode;
|
|
13
|
+
/** Currently active preset name (null when a custom palette was set) */
|
|
14
|
+
readonly activePreset: import("@angular/core").Signal<PrimaryColorPreset>;
|
|
15
|
+
/** Resolved full palette */
|
|
16
|
+
readonly activePalette: import("@angular/core").Signal<ColorPalette>;
|
|
17
|
+
/** Currently active mode */
|
|
18
|
+
readonly activeMode: import("@angular/core").Signal<ThemeMode>;
|
|
19
|
+
/** Derived boolean — true when dark is currently active (including system→dark) */
|
|
20
|
+
readonly isDark: import("@angular/core").Signal<boolean>;
|
|
21
|
+
/** All available presets for rendering a picker */
|
|
22
|
+
readonly presets: ColorPresetMeta[];
|
|
23
|
+
constructor();
|
|
24
|
+
/**
|
|
25
|
+
* Set the primary color using a preset name or a full custom palette.
|
|
26
|
+
* Immediately applies CSS custom properties to :root and persists to localStorage.
|
|
27
|
+
*/
|
|
28
|
+
setPrimary(color: PrimaryColorPreset | ColorPalette): void;
|
|
29
|
+
/**
|
|
30
|
+
* Switch between light, dark, and system modes.
|
|
31
|
+
* Persisted to localStorage automatically.
|
|
32
|
+
*/
|
|
33
|
+
setMode(mode: ThemeMode): void;
|
|
34
|
+
/** Toggle between light ↔ dark (ignores system). */
|
|
35
|
+
toggleMode(): void;
|
|
36
|
+
/**
|
|
37
|
+
* Apply a full ThemeConfig at once (used by provideSharedUiTheme).
|
|
38
|
+
* Does NOT override values already restored from localStorage unless
|
|
39
|
+
* the config explicitly provides them.
|
|
40
|
+
*/
|
|
41
|
+
applyConfig(config: ThemeConfig): void;
|
|
42
|
+
private applyPalette;
|
|
43
|
+
private _mqListener?;
|
|
44
|
+
private applyMode;
|
|
45
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ThemeService, never>;
|
|
46
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ThemeService>;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=theme.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.service.d.ts","sourceRoot":"","sources":["../../../../../libs/shared-ui/src/lib/tokens/theme/theme.service.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,EAAE,kBAAkB,EACjB,eAAe,EAC/B,MAAM,iBAAiB,CAAC;;AAEzB,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEpD,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,EAAE,kBAAkB,GAAG,YAAY,CAAC;IACjD,IAAI,CAAC,EAAU,SAAS,CAAC;CAC1B;AAiBD,qBACa,YAAY;IACvB,OAAO,CAAC,UAAU,CAAuB;IAGzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4C;IACpE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqC;IAC9D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IAIvD,wEAAwE;IACxE,QAAQ,CAAC,YAAY,qDAA6B;IAElD,4BAA4B;IAC5B,QAAQ,CAAC,aAAa,+CAKnB;IAEH,4BAA4B;IAC5B,QAAQ,CAAC,UAAU,4CAA2B;IAE9C,mFAAmF;IACnF,QAAQ,CAAC,MAAM,0CAMZ;IAEH,mDAAmD;IACnD,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,CAAgC;;IAoCnE;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,kBAAkB,GAAG,YAAY,GAAG,IAAI;IAa1D;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAK9B,oDAAoD;IACpD,UAAU,IAAI,IAAI;IAIlB;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAgBtC,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,WAAW,CAAC,CAAmC;IAEvD,OAAO,CAAC,SAAS;yCApIN,YAAY;6CAAZ,YAAY;CA0JxB"}
|