satu-component-library 0.0.1

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 ADDED
@@ -0,0 +1,64 @@
1
+ # SatuComponentLibrary
2
+
3
+ This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 21.2.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Angular CLI includes powerful code scaffolding tools. To generate a new component, run:
8
+
9
+ ```bash
10
+ ng generate component component-name
11
+ ```
12
+
13
+ For a complete list of available schematics (such as `components`, `directives`, or `pipes`), run:
14
+
15
+ ```bash
16
+ ng generate --help
17
+ ```
18
+
19
+ ## Building
20
+
21
+ To build the library, run:
22
+
23
+ ```bash
24
+ ng build satu-component-library
25
+ ```
26
+
27
+ This command will compile your project, and the build artifacts will be placed in the `dist/` directory.
28
+
29
+ ### Publishing the Library
30
+
31
+ Once the project is built, you can publish your library by following these steps:
32
+
33
+ 1. Navigate to the `dist` directory:
34
+
35
+ ```bash
36
+ cd dist/satu-component-library
37
+ ```
38
+
39
+ 2. Run the `npm publish` command to publish your library to the npm registry:
40
+ ```bash
41
+ npm publish
42
+ ```
43
+
44
+ ## Running unit tests
45
+
46
+ To execute unit tests with the [Karma](https://karma-runner.github.io) test runner, use the following command:
47
+
48
+ ```bash
49
+ ng test
50
+ ```
51
+
52
+ ## Running end-to-end tests
53
+
54
+ For end-to-end (e2e) testing, run:
55
+
56
+ ```bash
57
+ ng e2e
58
+ ```
59
+
60
+ Angular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs.
61
+
62
+ ## Additional Resources
63
+
64
+ For more information on using the Angular CLI, including detailed command references, visit the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.
@@ -0,0 +1,142 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, computed, Component } from '@angular/core';
3
+
4
+ class SatuButtonComponent {
5
+ // --- Signal Inputs (Angular Modern API) ---
6
+ variant = input('primary', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
7
+ size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
8
+ disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
9
+ loading = input(false, ...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
10
+ type = input('button', ...(ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []));
11
+ // --- Computed Signals untuk Class Binding Dinamis ---
12
+ dynamicClasses = computed(() => {
13
+ const baseClass = 'inline-flex items-center justify-center font-semibold rounded-satu-md transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none active:scale-[0.98] select-none cursor-pointer';
14
+ const variants = {
15
+ primary: 'bg-satu-primary text-satu-primary-foreground hover:bg-satu-primary-hover focus-visible:ring-satu-primary',
16
+ secondary: 'bg-satu-secondary text-satu-secondary-foreground hover:bg-satu-secondary-hover focus-visible:ring-satu-secondary',
17
+ outline: 'border border-satu-border bg-transparent text-satu-foreground hover:bg-satu-muted focus-visible:ring-satu-primary',
18
+ ghost: 'hover:bg-satu-muted text-satu-foreground focus-visible:ring-satu-primary',
19
+ danger: 'bg-satu-danger text-satu-danger-foreground hover:bg-satu-danger-hover focus-visible:ring-satu-danger'
20
+ };
21
+ const sizes = {
22
+ sm: 'h-8 px-3 text-xs gap-1.5',
23
+ md: 'h-10 px-4 text-sm gap-2',
24
+ lg: 'h-12 px-6 text-base gap-2.5'
25
+ };
26
+ return `${baseClass} ${variants[this.variant()]} ${sizes[this.size()]}`;
27
+ }, ...(ngDevMode ? [{ debugName: "dynamicClasses" }] : /* istanbul ignore next */ []));
28
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SatuButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
29
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: SatuButtonComponent, isStandalone: true, selector: "button[satu-button], satu-button", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "dynamicClasses()", "attr.disabled": "disabled() || loading() ? \"\" : null", "attr.aria-disabled": "disabled() || loading() ? \"true\" : null", "attr.type": "type()" } }, ngImport: i0, template: `
30
+ @if (loading()) {
31
+ <svg
32
+ class="animate-spin -ml-1 mr-2 h-4 w-4 text-current"
33
+ xmlns="http://www.w3.org/2000/svg"
34
+ fill="none"
35
+ viewBox="0 0 24 24"
36
+ aria-hidden="true"
37
+ >
38
+ <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
39
+ <path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>
40
+ </svg>
41
+ }
42
+ <span class="inline-flex items-center gap-2">
43
+ <!-- Content Projection untuk Slot Kiri (Ikon/Aksesoris) -->
44
+ <ng-content select="[satu-icon-left]"></ng-content>
45
+
46
+ <!-- Default Slot (Teks/Label Button) -->
47
+ <ng-content></ng-content>
48
+
49
+ <!-- Content Projection untuk Slot Kanan (Ikon/Aksesoris) -->
50
+ <ng-content select="[satu-icon-right]"></ng-content>
51
+ </span>
52
+ `, isInline: true });
53
+ }
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SatuButtonComponent, decorators: [{
55
+ type: Component,
56
+ args: [{
57
+ selector: 'button[satu-button], satu-button',
58
+ standalone: true,
59
+ template: `
60
+ @if (loading()) {
61
+ <svg
62
+ class="animate-spin -ml-1 mr-2 h-4 w-4 text-current"
63
+ xmlns="http://www.w3.org/2000/svg"
64
+ fill="none"
65
+ viewBox="0 0 24 24"
66
+ aria-hidden="true"
67
+ >
68
+ <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
69
+ <path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>
70
+ </svg>
71
+ }
72
+ <span class="inline-flex items-center gap-2">
73
+ <!-- Content Projection untuk Slot Kiri (Ikon/Aksesoris) -->
74
+ <ng-content select="[satu-icon-left]"></ng-content>
75
+
76
+ <!-- Default Slot (Teks/Label Button) -->
77
+ <ng-content></ng-content>
78
+
79
+ <!-- Content Projection untuk Slot Kanan (Ikon/Aksesoris) -->
80
+ <ng-content select="[satu-icon-right]"></ng-content>
81
+ </span>
82
+ `,
83
+ host: {
84
+ '[class]': 'dynamicClasses()',
85
+ '[attr.disabled]': 'disabled() || loading() ? "" : null',
86
+ '[attr.aria-disabled]': 'disabled() || loading() ? "true" : null',
87
+ '[attr.type]': 'type()'
88
+ }
89
+ }]
90
+ }], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }] } });
91
+
92
+ class SatuLabelComponent {
93
+ // --- Signal Inputs ---
94
+ htmlFor = input(undefined, ...(ngDevMode ? [{ debugName: "htmlFor" }] : /* istanbul ignore next */ []));
95
+ required = input(false, ...(ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []));
96
+ variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
97
+ // --- Computed Classes ---
98
+ dynamicClasses = computed(() => {
99
+ const baseClass = 'text-sm font-semibold leading-none select-none transition-colors duration-200 cursor-pointer';
100
+ const variants = {
101
+ default: 'text-satu-foreground',
102
+ error: 'text-satu-danger',
103
+ success: 'text-satu-success'
104
+ };
105
+ return `${baseClass} ${variants[this.variant()]}`;
106
+ }, ...(ngDevMode ? [{ debugName: "dynamicClasses" }] : /* istanbul ignore next */ []));
107
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SatuLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
108
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: SatuLabelComponent, isStandalone: true, selector: "label[satu-label], satu-label", inputs: { htmlFor: { classPropertyName: "htmlFor", publicName: "htmlFor", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "dynamicClasses()", "attr.for": "htmlFor()" } }, ngImport: i0, template: `
109
+ <ng-content></ng-content>
110
+ @if (required()) {
111
+ <span class="text-satu-danger ml-0.5" aria-hidden="true">*</span>
112
+ }
113
+ `, isInline: true });
114
+ }
115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SatuLabelComponent, decorators: [{
116
+ type: Component,
117
+ args: [{
118
+ selector: 'label[satu-label], satu-label',
119
+ standalone: true,
120
+ template: `
121
+ <ng-content></ng-content>
122
+ @if (required()) {
123
+ <span class="text-satu-danger ml-0.5" aria-hidden="true">*</span>
124
+ }
125
+ `,
126
+ host: {
127
+ '[class]': 'dynamicClasses()',
128
+ '[attr.for]': 'htmlFor()'
129
+ }
130
+ }]
131
+ }], propDecorators: { htmlFor: [{ type: i0.Input, args: [{ isSignal: true, alias: "htmlFor", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
132
+
133
+ /*
134
+ * Public API Surface of satu-component-library
135
+ */
136
+
137
+ /**
138
+ * Generated bundle index. Do not edit.
139
+ */
140
+
141
+ export { SatuButtonComponent, SatuLabelComponent };
142
+ //# sourceMappingURL=satu-component-library.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"satu-component-library.mjs","sources":["../../../projects/satu-component-library/src/lib/components/button/button.component.ts","../../../projects/satu-component-library/src/lib/components/label/label.component.ts","../../../projects/satu-component-library/src/public-api.ts","../../../projects/satu-component-library/src/satu-component-library.ts"],"sourcesContent":["import { Component, input, computed } from '@angular/core';\n\nexport type SatuButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger';\nexport type SatuButtonSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'button[satu-button], satu-button',\n standalone: true,\n template: `\n @if (loading()) {\n <svg \n class=\"animate-spin -ml-1 mr-2 h-4 w-4 text-current\" \n xmlns=\"http://www.w3.org/2000/svg\" \n fill=\"none\" \n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n <path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n </svg>\n }\n <span class=\"inline-flex items-center gap-2\">\n <!-- Content Projection untuk Slot Kiri (Ikon/Aksesoris) -->\n <ng-content select=\"[satu-icon-left]\"></ng-content>\n \n <!-- Default Slot (Teks/Label Button) -->\n <ng-content></ng-content>\n \n <!-- Content Projection untuk Slot Kanan (Ikon/Aksesoris) -->\n <ng-content select=\"[satu-icon-right]\"></ng-content>\n </span>\n `,\n host: {\n '[class]': 'dynamicClasses()',\n '[attr.disabled]': 'disabled() || loading() ? \"\" : null',\n '[attr.aria-disabled]': 'disabled() || loading() ? \"true\" : null',\n '[attr.type]': 'type()'\n }\n})\nexport class SatuButtonComponent {\n // --- Signal Inputs (Angular Modern API) ---\n variant = input<SatuButtonVariant>('primary');\n size = input<SatuButtonSize>('md');\n disabled = input<boolean>(false);\n loading = input<boolean>(false);\n type = input<'button' | 'submit' | 'reset'>('button');\n\n // --- Computed Signals untuk Class Binding Dinamis ---\n dynamicClasses = computed(() => {\n const baseClass = 'inline-flex items-center justify-center font-semibold rounded-satu-md transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none active:scale-[0.98] select-none cursor-pointer';\n\n const variants: Record<SatuButtonVariant, string> = {\n primary: 'bg-satu-primary text-satu-primary-foreground hover:bg-satu-primary-hover focus-visible:ring-satu-primary',\n secondary: 'bg-satu-secondary text-satu-secondary-foreground hover:bg-satu-secondary-hover focus-visible:ring-satu-secondary',\n outline: 'border border-satu-border bg-transparent text-satu-foreground hover:bg-satu-muted focus-visible:ring-satu-primary',\n ghost: 'hover:bg-satu-muted text-satu-foreground focus-visible:ring-satu-primary',\n danger: 'bg-satu-danger text-satu-danger-foreground hover:bg-satu-danger-hover focus-visible:ring-satu-danger'\n };\n\n const sizes: Record<SatuButtonSize, string> = {\n sm: 'h-8 px-3 text-xs gap-1.5',\n md: 'h-10 px-4 text-sm gap-2',\n lg: 'h-12 px-6 text-base gap-2.5'\n };\n\n return `${baseClass} ${variants[this.variant()]} ${sizes[this.size()]}`;\n });\n}\n","import { Component, input, computed } from '@angular/core';\n\nexport type SatuLabelVariant = 'default' | 'error' | 'success';\n\n@Component({\n selector: 'label[satu-label], satu-label',\n standalone: true,\n template: `\n <ng-content></ng-content>\n @if (required()) {\n <span class=\"text-satu-danger ml-0.5\" aria-hidden=\"true\">*</span>\n }\n `,\n host: {\n '[class]': 'dynamicClasses()',\n '[attr.for]': 'htmlFor()'\n }\n})\nexport class SatuLabelComponent {\n // --- Signal Inputs ---\n htmlFor = input<string | undefined>(undefined);\n required = input<boolean>(false);\n variant = input<SatuLabelVariant>('default');\n\n // --- Computed Classes ---\n dynamicClasses = computed(() => {\n const baseClass = 'text-sm font-semibold leading-none select-none transition-colors duration-200 cursor-pointer';\n\n const variants: Record<SatuLabelVariant, string> = {\n default: 'text-satu-foreground',\n error: 'text-satu-danger',\n success: 'text-satu-success'\n };\n\n return `${baseClass} ${variants[this.variant()]}`;\n });\n}\n","/*\n * Public API Surface of satu-component-library\n */\n\nexport * from './lib/components/button/button.component';\nexport * from './lib/components/label/label.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "satu-component-library",
3
+ "version": "0.0.1",
4
+ "peerDependencies": {
5
+ "@angular/common": "^21.2.0",
6
+ "@angular/core": "^21.2.0"
7
+ },
8
+ "dependencies": {
9
+ "tslib": "^2.3.0"
10
+ },
11
+ "sideEffects": false,
12
+ "module": "fesm2022/satu-component-library.mjs",
13
+ "typings": "types/satu-component-library.d.ts",
14
+ "exports": {
15
+ "./package.json": {
16
+ "default": "./package.json"
17
+ },
18
+ ".": {
19
+ "types": "./types/satu-component-library.d.ts",
20
+ "default": "./fesm2022/satu-component-library.mjs"
21
+ }
22
+ },
23
+ "type": "module"
24
+ }
@@ -0,0 +1,27 @@
1
+ import * as _angular_core from '@angular/core';
2
+
3
+ type SatuButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger';
4
+ type SatuButtonSize = 'sm' | 'md' | 'lg';
5
+ declare class SatuButtonComponent {
6
+ variant: _angular_core.InputSignal<SatuButtonVariant>;
7
+ size: _angular_core.InputSignal<SatuButtonSize>;
8
+ disabled: _angular_core.InputSignal<boolean>;
9
+ loading: _angular_core.InputSignal<boolean>;
10
+ type: _angular_core.InputSignal<"button" | "submit" | "reset">;
11
+ dynamicClasses: _angular_core.Signal<string>;
12
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SatuButtonComponent, never>;
13
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SatuButtonComponent, "button[satu-button], satu-button", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; }, {}, never, ["[satu-icon-left]", "*", "[satu-icon-right]"], true, never>;
14
+ }
15
+
16
+ type SatuLabelVariant = 'default' | 'error' | 'success';
17
+ declare class SatuLabelComponent {
18
+ htmlFor: _angular_core.InputSignal<string | undefined>;
19
+ required: _angular_core.InputSignal<boolean>;
20
+ variant: _angular_core.InputSignal<SatuLabelVariant>;
21
+ dynamicClasses: _angular_core.Signal<string>;
22
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SatuLabelComponent, never>;
23
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SatuLabelComponent, "label[satu-label], satu-label", never, { "htmlFor": { "alias": "htmlFor"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
24
+ }
25
+
26
+ export { SatuButtonComponent, SatuLabelComponent };
27
+ export type { SatuButtonSize, SatuButtonVariant, SatuLabelVariant };