ngx-pk-ui 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/package.json ADDED
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "ngx-pk-ui",
3
+ "version": "0.0.1",
4
+ "license": "MIT",
5
+ "peerDependencies": {
6
+ "@angular/common": "^21.2.0",
7
+ "@angular/core": "^21.2.0"
8
+ },
9
+ "dependencies": {
10
+ "tslib": "^2.3.0"
11
+ },
12
+ "sideEffects": false,
13
+ "module": "fesm2022/ngx-pk-ui.mjs",
14
+ "typings": "types/ngx-pk-ui.d.ts",
15
+ "exports": {
16
+ "./package.json": {
17
+ "default": "./package.json"
18
+ },
19
+ ".": {
20
+ "types": "./types/ngx-pk-ui.d.ts",
21
+ "default": "./fesm2022/ngx-pk-ui.mjs"
22
+ }
23
+ },
24
+ "type": "module"
25
+ }
File without changes
@@ -0,0 +1,129 @@
1
+ /**
2
+ * pk-badge — Badge / pill CSS for ngx-pk-ui
3
+ *
4
+ * Variants: pk-badge-primary (default) | pk-badge-success | pk-badge-warn | pk-badge-error
5
+ * Modifiers: pk-badge-outline | pk-badge-sm | pk-badge-lg | pk-badge-pill | pk-badge-dot
6
+ *
7
+ * Usage:
8
+ * <span class="pk-badge">New</span>
9
+ * <span class="pk-badge pk-badge-success">Active</span>
10
+ * <span class="pk-badge pk-badge-error pk-badge-outline">3</span>
11
+ * <span class="pk-badge pk-badge-warn pk-badge-dot"></span>
12
+ */
13
+
14
+ /* ─── Base ────────────────────────────────────────────────────────── */
15
+
16
+ .pk-badge {
17
+ display: inline-flex;
18
+ align-items: center;
19
+ justify-content: center;
20
+ padding: 2px 9px;
21
+ min-width: 22px;
22
+ height: 22px;
23
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
24
+ font-size: 12px;
25
+ font-weight: 600;
26
+ line-height: 1;
27
+ letter-spacing: 0.02em;
28
+ white-space: nowrap;
29
+ border-radius: 11px;
30
+ border: 2px solid transparent;
31
+ vertical-align: middle;
32
+
33
+ /* Default = primary */
34
+ background-color: var(--pk-btn-primary, #1976d2);
35
+ color: #fff;
36
+ }
37
+
38
+ /* ─── Variants ────────────────────────────────────────────────────── */
39
+
40
+ .pk-badge-primary {
41
+ background-color: var(--pk-btn-primary, #1976d2);
42
+ border-color: transparent;
43
+ color: #fff;
44
+ }
45
+
46
+ .pk-badge-success {
47
+ background-color: var(--pk-btn-success, #43a047);
48
+ border-color: transparent;
49
+ color: #fff;
50
+ }
51
+
52
+ .pk-badge-warn {
53
+ background-color: var(--pk-btn-warn, #fb8c00);
54
+ border-color: transparent;
55
+ color: #fff;
56
+ }
57
+
58
+ .pk-badge-error {
59
+ background-color: var(--pk-btn-error, #e53935);
60
+ border-color: transparent;
61
+ color: #fff;
62
+ }
63
+
64
+ /* ─── Outline modifier ────────────────────────────────────────────── */
65
+
66
+ .pk-badge.pk-badge-outline,
67
+ .pk-badge-primary.pk-badge-outline {
68
+ background-color: transparent;
69
+ border-color: var(--pk-btn-primary, #1976d2);
70
+ color: var(--pk-btn-primary, #1976d2);
71
+ }
72
+
73
+ .pk-badge-success.pk-badge-outline {
74
+ background-color: transparent;
75
+ border-color: var(--pk-btn-success, #43a047);
76
+ color: var(--pk-btn-success, #43a047);
77
+ }
78
+
79
+ .pk-badge-warn.pk-badge-outline {
80
+ background-color: transparent;
81
+ border-color: var(--pk-btn-warn, #fb8c00);
82
+ color: var(--pk-btn-warn, #fb8c00);
83
+ }
84
+
85
+ .pk-badge-error.pk-badge-outline {
86
+ background-color: transparent;
87
+ border-color: var(--pk-btn-error, #e53935);
88
+ color: var(--pk-btn-error, #e53935);
89
+ }
90
+
91
+ /* ─── Size modifiers ──────────────────────────────────────────────── */
92
+
93
+ .pk-badge-sm {
94
+ padding: 1px 6px;
95
+ min-width: 16px;
96
+ height: 16px;
97
+ font-size: 10px;
98
+ border-radius: 8px;
99
+ }
100
+
101
+ .pk-badge-lg {
102
+ padding: 4px 12px;
103
+ min-width: 28px;
104
+ height: 28px;
105
+ font-size: 14px;
106
+ border-radius: 14px;
107
+ }
108
+
109
+ /* ─── Pill (rectangular with rounded ends) ────────────────────────── */
110
+
111
+ .pk-badge-pill {
112
+ border-radius: 4px;
113
+ }
114
+
115
+ /* ─── Dot (empty circle indicator, no text) ──────────────────────── */
116
+
117
+ .pk-badge-dot {
118
+ padding: 0;
119
+ min-width: 10px;
120
+ width: 10px;
121
+ height: 10px;
122
+ border-radius: 50%;
123
+ border-width: 0;
124
+ }
125
+
126
+ .pk-badge-dot.pk-badge-outline {
127
+ border-width: 2px;
128
+ background-color: transparent;
129
+ }
@@ -0,0 +1,279 @@
1
+ /**
2
+ * pk-btn — Button CSS for ngx-pk-ui
3
+ *
4
+ * Variants: pk-btn-primary (default) | pk-btn-secondary | pk-btn-success | pk-btn-warn | pk-btn-error
5
+ * Modifiers: pk-btn-outline | pk-btn-shadow | pk-btn-sm | pk-btn-lg
6
+ * Group: pk-btn-group (wraps multiple pk-btn, joined borders)
7
+ *
8
+ * Usage:
9
+ * <button class="pk-btn">Primary</button>
10
+ * <button class="pk-btn pk-btn-success pk-btn-outline">Outline Success</button>
11
+ * <div class="pk-btn-group">
12
+ * <button class="pk-btn pk-btn-secondary">Left</button>
13
+ * <button class="pk-btn pk-btn-secondary">Right</button>
14
+ * </div>
15
+ */
16
+
17
+ /* ─── CSS custom properties ───────────────────────────────────────── */
18
+
19
+ :root {
20
+ --pk-btn-primary: #1976d2;
21
+ --pk-btn-primary-h: #1565c0;
22
+ --pk-btn-primary-a: #0d47a1;
23
+
24
+ --pk-btn-secondary: #757575;
25
+ --pk-btn-secondary-h: #616161;
26
+ --pk-btn-secondary-a: #424242;
27
+
28
+ --pk-btn-success: #43a047;
29
+ --pk-btn-success-h: #388e3c;
30
+ --pk-btn-success-a: #2e7d32;
31
+
32
+ --pk-btn-error: #e53935;
33
+ --pk-btn-error-h: #c62828;
34
+ --pk-btn-error-a: #b71c1c;
35
+
36
+ --pk-btn-warn: #fb8c00;
37
+ --pk-btn-warn-h: #ef6c00;
38
+ --pk-btn-warn-a: #e65100;
39
+
40
+ --pk-btn-radius: 6px;
41
+ --pk-btn-font: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
42
+ }
43
+
44
+ /* ─── Base ────────────────────────────────────────────────────────── */
45
+
46
+ .pk-btn {
47
+ /* Layout */
48
+ display: inline-flex;
49
+ align-items: center;
50
+ justify-content: center;
51
+ gap: 6px;
52
+
53
+ /* Sizing */
54
+ padding: 8px 20px;
55
+ min-height: 38px;
56
+ min-width: 64px;
57
+
58
+ /* Typography */
59
+ font-family: var(--pk-btn-font);
60
+ font-size: 14px;
61
+ font-weight: 500;
62
+ line-height: 1;
63
+ letter-spacing: 0.02em;
64
+ white-space: nowrap;
65
+ text-decoration: none;
66
+
67
+ /* Appearance — default to primary */
68
+ background-color: var(--pk-btn-primary);
69
+ color: #fff;
70
+ border: 2px solid transparent;
71
+ border-radius: var(--pk-btn-radius);
72
+ cursor: pointer;
73
+ user-select: none;
74
+ vertical-align: middle;
75
+
76
+ /* Transition */
77
+ transition: background-color 0.15s ease, border-color 0.15s ease,
78
+ color 0.15s ease, box-shadow 0.15s ease, opacity 0.15s ease;
79
+ }
80
+
81
+ .pk-btn:hover { background-color: var(--pk-btn-primary-h); }
82
+ .pk-btn:active { background-color: var(--pk-btn-primary-a); }
83
+
84
+ .pk-btn:focus-visible {
85
+ outline: 3px solid rgba(25, 118, 210, 0.4);
86
+ outline-offset: 2px;
87
+ }
88
+
89
+ .pk-btn:disabled,
90
+ .pk-btn[disabled] {
91
+ opacity: 0.45;
92
+ cursor: not-allowed;
93
+ pointer-events: none;
94
+ }
95
+
96
+ /* ─── Variants ────────────────────────────────────────────────────── */
97
+
98
+ .pk-btn-primary {
99
+ background-color: var(--pk-btn-primary);
100
+ border-color: transparent;
101
+ color: #fff;
102
+ }
103
+ .pk-btn-primary:hover { background-color: var(--pk-btn-primary-h); }
104
+ .pk-btn-primary:active { background-color: var(--pk-btn-primary-a); }
105
+ .pk-btn-primary:focus-visible { outline-color: rgba(25, 118, 210, 0.45); }
106
+
107
+ .pk-btn-secondary {
108
+ background-color: var(--pk-btn-secondary);
109
+ border-color: transparent;
110
+ color: #fff;
111
+ }
112
+ .pk-btn-secondary:hover { background-color: var(--pk-btn-secondary-h); }
113
+ .pk-btn-secondary:active { background-color: var(--pk-btn-secondary-a); }
114
+ .pk-btn-secondary:focus-visible { outline-color: rgba(117, 117, 117, 0.45); }
115
+
116
+ .pk-btn-success {
117
+ background-color: var(--pk-btn-success);
118
+ border-color: transparent;
119
+ color: #fff;
120
+ }
121
+ .pk-btn-success:hover { background-color: var(--pk-btn-success-h); }
122
+ .pk-btn-success:active { background-color: var(--pk-btn-success-a); }
123
+ .pk-btn-success:focus-visible { outline-color: rgba(67, 160, 71, 0.45); }
124
+
125
+ .pk-btn-warn {
126
+ background-color: var(--pk-btn-warn);
127
+ border-color: transparent;
128
+ color: #fff;
129
+ }
130
+ .pk-btn-warn:hover { background-color: var(--pk-btn-warn-h); }
131
+ .pk-btn-warn:active { background-color: var(--pk-btn-warn-a); }
132
+ .pk-btn-warn:focus-visible { outline-color: rgba(251, 140, 0, 0.45); }
133
+
134
+ .pk-btn-error {
135
+ background-color: var(--pk-btn-error);
136
+ border-color: transparent;
137
+ color: #fff;
138
+ }
139
+ .pk-btn-error:hover { background-color: var(--pk-btn-error-h); }
140
+ .pk-btn-error:active { background-color: var(--pk-btn-error-a); }
141
+ .pk-btn-error:focus-visible { outline-color: rgba(229, 57, 53, 0.45); }
142
+
143
+ /* ─── Outline modifier ────────────────────────────────────────────── */
144
+
145
+ .pk-btn.pk-btn-outline,
146
+ .pk-btn-primary.pk-btn-outline {
147
+ background-color: transparent;
148
+ border-color: var(--pk-btn-primary);
149
+ color: var(--pk-btn-primary);
150
+ }
151
+ .pk-btn.pk-btn-outline:hover,
152
+ .pk-btn-primary.pk-btn-outline:hover {
153
+ background-color: var(--pk-btn-primary);
154
+ color: #fff;
155
+ }
156
+ .pk-btn.pk-btn-outline:active,
157
+ .pk-btn-primary.pk-btn-outline:active {
158
+ background-color: var(--pk-btn-primary-h);
159
+ border-color: var(--pk-btn-primary-h);
160
+ color: #fff;
161
+ }
162
+
163
+ .pk-btn-secondary.pk-btn-outline {
164
+ background-color: transparent;
165
+ border-color: var(--pk-btn-secondary);
166
+ color: var(--pk-btn-secondary);
167
+ }
168
+ .pk-btn-secondary.pk-btn-outline:hover {
169
+ background-color: var(--pk-btn-secondary);
170
+ color: #fff;
171
+ }
172
+ .pk-btn-secondary.pk-btn-outline:active {
173
+ background-color: var(--pk-btn-secondary-h);
174
+ border-color: var(--pk-btn-secondary-h);
175
+ color: #fff;
176
+ }
177
+
178
+ .pk-btn-success.pk-btn-outline {
179
+ background-color: transparent;
180
+ border-color: var(--pk-btn-success);
181
+ color: var(--pk-btn-success);
182
+ }
183
+ .pk-btn-success.pk-btn-outline:hover {
184
+ background-color: var(--pk-btn-success);
185
+ color: #fff;
186
+ }
187
+ .pk-btn-success.pk-btn-outline:active {
188
+ background-color: var(--pk-btn-success-h);
189
+ border-color: var(--pk-btn-success-h);
190
+ color: #fff;
191
+ }
192
+
193
+ .pk-btn-warn.pk-btn-outline {
194
+ background-color: transparent;
195
+ border-color: var(--pk-btn-warn);
196
+ color: var(--pk-btn-warn);
197
+ }
198
+ .pk-btn-warn.pk-btn-outline:hover {
199
+ background-color: var(--pk-btn-warn);
200
+ color: #fff;
201
+ }
202
+ .pk-btn-warn.pk-btn-outline:active {
203
+ background-color: var(--pk-btn-warn-h);
204
+ border-color: var(--pk-btn-warn-h);
205
+ color: #fff;
206
+ }
207
+
208
+ .pk-btn-error.pk-btn-outline {
209
+ background-color: transparent;
210
+ border-color: var(--pk-btn-error);
211
+ color: var(--pk-btn-error);
212
+ }
213
+ .pk-btn-error.pk-btn-outline:hover {
214
+ background-color: var(--pk-btn-error);
215
+ color: #fff;
216
+ }
217
+ .pk-btn-error.pk-btn-outline:active {
218
+ background-color: var(--pk-btn-error-h);
219
+ border-color: var(--pk-btn-error-h);
220
+ color: #fff;
221
+ }
222
+
223
+ /* ─── Shadow modifier ─────────────────────────────────────────────── */
224
+
225
+ .pk-btn.pk-btn-shadow {
226
+ box-shadow: 0 3px 8px rgba(0, 0, 0, 0.20), 0 1px 3px rgba(0, 0, 0, 0.12);
227
+ }
228
+ .pk-btn.pk-btn-shadow:hover {
229
+ box-shadow: 0 5px 14px rgba(0, 0, 0, 0.22), 0 2px 6px rgba(0, 0, 0, 0.14);
230
+ }
231
+ .pk-btn.pk-btn-shadow:active {
232
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.18);
233
+ }
234
+
235
+ /* ─── Size modifiers ──────────────────────────────────────────────── */
236
+
237
+ .pk-btn-sm {
238
+ padding: 5px 14px;
239
+ min-height: 30px;
240
+ font-size: 12px;
241
+ }
242
+
243
+ .pk-btn-lg {
244
+ padding: 11px 28px;
245
+ min-height: 46px;
246
+ font-size: 16px;
247
+ }
248
+
249
+ /* ─── Button group ────────────────────────────────────────────────── */
250
+
251
+ .pk-btn-group {
252
+ display: inline-flex;
253
+ align-items: stretch;
254
+ }
255
+
256
+ .pk-btn-group > .pk-btn {
257
+ border-radius: 0;
258
+ margin-left: -2px; /* collapse shared border */
259
+ position: relative;
260
+ }
261
+
262
+ .pk-btn-group > .pk-btn:first-child {
263
+ border-radius: var(--pk-btn-radius) 0 0 var(--pk-btn-radius);
264
+ margin-left: 0;
265
+ }
266
+
267
+ .pk-btn-group > .pk-btn:last-child {
268
+ border-radius: 0 var(--pk-btn-radius) var(--pk-btn-radius) 0;
269
+ }
270
+
271
+ .pk-btn-group > .pk-btn:only-child {
272
+ border-radius: var(--pk-btn-radius);
273
+ margin-left: 0;
274
+ }
275
+
276
+ .pk-btn-group > .pk-btn:hover,
277
+ .pk-btn-group > .pk-btn:focus-visible {
278
+ z-index: 1;
279
+ }
@@ -0,0 +1,160 @@
1
+ /**
2
+ * pk-card — Card CSS for ngx-pk-ui
3
+ *
4
+ * Structure:
5
+ * pk-card
6
+ * pk-card-header
7
+ * pk-card-body
8
+ * pk-card-footer
9
+ *
10
+ * Variants: pk-card-primary | pk-card-secondary | pk-card-success | pk-card-error
11
+ * Modifiers: pk-card-shadow | pk-card-flat | pk-card-outlined
12
+ *
13
+ * Usage:
14
+ * <div class="pk-card">
15
+ * <div class="pk-card-header">Title</div>
16
+ * <div class="pk-card-body">Content</div>
17
+ * <div class="pk-card-footer">Actions</div>
18
+ * </div>
19
+ *
20
+ * <div class="pk-card pk-card-success">...</div>
21
+ */
22
+
23
+ /* ─── CSS Custom Properties ───────────────────────────────────────── */
24
+
25
+ :root {
26
+ --pk-card-bg: #fff;
27
+ --pk-card-border: #e0e0e0;
28
+ --pk-card-radius: 8px;
29
+ --pk-card-shadow: 0 2px 8px rgba(0, 0, 0, 0.10);
30
+ --pk-card-header-bg: transparent;
31
+ --pk-card-header-border: #e0e0e0;
32
+ --pk-card-footer-bg: #f9f9f9;
33
+ --pk-card-footer-border: #e0e0e0;
34
+ --pk-card-padding: 16px;
35
+ }
36
+
37
+ /* ─── Base ────────────────────────────────────────────────────────── */
38
+
39
+ .pk-card {
40
+ display: flex;
41
+ flex-direction: column;
42
+ background-color: var(--pk-card-bg);
43
+ border: 1px solid var(--pk-card-border);
44
+ border-radius: var(--pk-card-radius);
45
+ box-shadow: var(--pk-card-shadow);
46
+ overflow: hidden;
47
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
48
+ font-size: 14px;
49
+ color: #212121;
50
+ }
51
+
52
+ /* ─── Sections ────────────────────────────────────────────────────── */
53
+
54
+ .pk-card-header {
55
+ padding: var(--pk-card-padding);
56
+ background-color: var(--pk-card-header-bg);
57
+ border-bottom: 1px solid var(--pk-card-header-border);
58
+ font-size: 16px;
59
+ font-weight: 600;
60
+ line-height: 1.4;
61
+ }
62
+
63
+ .pk-card-body {
64
+ padding: var(--pk-card-padding);
65
+ flex: 1;
66
+ line-height: 1.6;
67
+ }
68
+
69
+ .pk-card-footer {
70
+ padding: calc(var(--pk-card-padding) * 0.75) var(--pk-card-padding);
71
+ background-color: var(--pk-card-footer-bg);
72
+ border-top: 1px solid var(--pk-card-footer-border);
73
+ display: flex;
74
+ align-items: center;
75
+ gap: 8px;
76
+ }
77
+
78
+ /* Section without siblings: remove unnecessary borders */
79
+ .pk-card > .pk-card-body:first-child {
80
+ border-top: none;
81
+ }
82
+ .pk-card > .pk-card-body:last-child {
83
+ border-bottom: none;
84
+ }
85
+
86
+ /* ─── Color Variants ──────────────────────────────────────────────── */
87
+
88
+ /* primary */
89
+ .pk-card-primary {
90
+ border-color: var(--pk-btn-primary, #1976d2);
91
+ }
92
+ .pk-card-primary > .pk-card-header {
93
+ background-color: var(--pk-btn-primary, #1976d2);
94
+ border-bottom-color: var(--pk-btn-primary, #1976d2);
95
+ color: #fff;
96
+ }
97
+ .pk-card-primary > .pk-card-footer {
98
+ background-color: color-mix(in srgb, var(--pk-btn-primary, #1976d2) 10%, #fff);
99
+ border-top-color: color-mix(in srgb, var(--pk-btn-primary, #1976d2) 30%, #fff);
100
+ }
101
+
102
+ /* secondary */
103
+ .pk-card-secondary {
104
+ border-color: var(--pk-btn-secondary, #546e7a);
105
+ }
106
+ .pk-card-secondary > .pk-card-header {
107
+ background-color: var(--pk-btn-secondary, #546e7a);
108
+ border-bottom-color: var(--pk-btn-secondary, #546e7a);
109
+ color: #fff;
110
+ }
111
+ .pk-card-secondary > .pk-card-footer {
112
+ background-color: color-mix(in srgb, var(--pk-btn-secondary, #546e7a) 10%, #fff);
113
+ border-top-color: color-mix(in srgb, var(--pk-btn-secondary, #546e7a) 30%, #fff);
114
+ }
115
+
116
+ /* success */
117
+ .pk-card-success {
118
+ border-color: var(--pk-btn-success, #43a047);
119
+ }
120
+ .pk-card-success > .pk-card-header {
121
+ background-color: var(--pk-btn-success, #43a047);
122
+ border-bottom-color: var(--pk-btn-success, #43a047);
123
+ color: #fff;
124
+ }
125
+ .pk-card-success > .pk-card-footer {
126
+ background-color: color-mix(in srgb, var(--pk-btn-success, #43a047) 10%, #fff);
127
+ border-top-color: color-mix(in srgb, var(--pk-btn-success, #43a047) 30%, #fff);
128
+ }
129
+
130
+ /* error */
131
+ .pk-card-error {
132
+ border-color: var(--pk-btn-error, #e53935);
133
+ }
134
+ .pk-card-error > .pk-card-header {
135
+ background-color: var(--pk-btn-error, #e53935);
136
+ border-bottom-color: var(--pk-btn-error, #e53935);
137
+ color: #fff;
138
+ }
139
+ .pk-card-error > .pk-card-footer {
140
+ background-color: color-mix(in srgb, var(--pk-btn-error, #e53935) 10%, #fff);
141
+ border-top-color: color-mix(in srgb, var(--pk-btn-error, #e53935) 30%, #fff);
142
+ }
143
+
144
+ /* ─── Optional Modifiers ──────────────────────────────────────────── */
145
+
146
+ /* Elevated shadow */
147
+ .pk-card-shadow {
148
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.16);
149
+ }
150
+
151
+ /* No shadow */
152
+ .pk-card-flat {
153
+ box-shadow: none;
154
+ }
155
+
156
+ /* Border only, no shadow */
157
+ .pk-card-outlined {
158
+ box-shadow: none;
159
+ border-width: 1px;
160
+ }