@lumston/ds-angular 0.0.3 → 0.0.5

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.
Files changed (30) hide show
  1. package/package.json +7 -9
  2. package/styles/components/data-display/badge/badge.styles.css +244 -0
  3. package/styles/components/data-display/chip/chip.styles.css +245 -0
  4. package/styles/components/dropdown/dropdown.styles.css +14 -0
  5. package/styles/components/feedback/alert/alert.styles.css +304 -0
  6. package/styles/components/feedback/loader/loader.styles.css +132 -0
  7. package/styles/components/feedback/progress-bar/progress-bar.styles.css +193 -0
  8. package/styles/components/icon/icon.styles.css +11 -0
  9. package/styles/components/inputs/button/button.styles.css +377 -0
  10. package/styles/components/inputs/checkbox/checkbox.styles.css +157 -0
  11. package/styles/components/inputs/icon-button/icon-button.styles.css +157 -0
  12. package/styles/components/inputs/radio-button/radio-button.styles.css +274 -0
  13. package/styles/components/inputs/slider/slider.styles.css +228 -0
  14. package/styles/components/inputs/switch/switch.styles.css +483 -0
  15. package/styles/components/media/avatar/avatar.styles.css +112 -0
  16. package/styles/components/media/avatar-group/avatar-group.styles.css +37 -0
  17. package/styles/components/media/logo/logo.styles.css +40 -0
  18. package/styles/components/navigation/breadcrumb/breadcrumb.styles.css +144 -0
  19. package/styles/components/navigation/pagination/pagination.styles.css +336 -0
  20. package/styles/components/overlay/menu/menu.styles.css +138 -0
  21. package/styles/components/overlay/modal/modal.styles.css +178 -0
  22. package/styles/components/overlay/popover/popover.styles.css +112 -0
  23. package/styles/components/overlay/tooltip/tooltip.styles.css +172 -0
  24. package/styles/components/styles/_base.css +10 -0
  25. package/styles/components/styles/_tokens.css +75 -0
  26. package/styles/components/styles/index.css +28 -0
  27. package/styles/components/typography/link/link.styles.css +93 -0
  28. package/styles/components/typography/tag/tag.styles.css +274 -0
  29. package/styles/components/typography/text/text.styles.css +176 -0
  30. package/styles/index.css +1 -0
@@ -0,0 +1,377 @@
1
+ /* Button Component — Pure CSS */
2
+
3
+ /* === Host === */
4
+ :host {
5
+ display: contents;
6
+ }
7
+
8
+ /* === Base === */
9
+ .btn {
10
+ position: relative;
11
+ display: inline-flex;
12
+ align-items: center;
13
+ justify-content: center;
14
+ border-radius: var(--ls-border-radius-md);
15
+ border: 1px solid;
16
+ padding: 0.5rem 1.25rem;
17
+ font-size: 0.875rem;
18
+ line-height: 1.25rem;
19
+ font-weight: 600;
20
+ box-shadow: 0 10px 20px -10px;
21
+ outline: none;
22
+ transition: all var(--ls-transition-duration) ease;
23
+ cursor: pointer;
24
+ }
25
+
26
+ /* === Sizes === */
27
+ .btn-lg {
28
+ padding: 0.625rem 1.75rem;
29
+ font-size: 1rem;
30
+ line-height: 1.5rem;
31
+ }
32
+
33
+ .btn-sm {
34
+ padding: 0.375rem 0.625rem;
35
+ font-size: 0.75rem;
36
+ line-height: 1rem;
37
+ }
38
+
39
+ /* === Disabled === */
40
+ .btn[disabled] {
41
+ cursor: not-allowed;
42
+ opacity: 0.6;
43
+ }
44
+
45
+ /* === Contained variants === */
46
+ .btn-primary {
47
+ border-color: var(--ls-color-primary);
48
+ background-color: var(--ls-color-primary);
49
+ color: var(--ls-color-white);
50
+ box-shadow: 0 10px 20px -10px rgb(67 97 238 / 0.6);
51
+ }
52
+
53
+ .btn-primary:hover {
54
+ filter: brightness(0.9);
55
+ }
56
+
57
+ .btn-secondary {
58
+ border-color: var(--ls-color-secondary);
59
+ background-color: var(--ls-color-secondary);
60
+ color: var(--ls-color-white);
61
+ box-shadow: 0 10px 20px -10px rgb(128 93 202 / 0.6);
62
+ }
63
+
64
+ .btn-secondary:hover {
65
+ filter: brightness(0.9);
66
+ }
67
+
68
+ .btn-success {
69
+ border-color: var(--ls-color-success);
70
+ background-color: var(--ls-color-success);
71
+ color: var(--ls-color-white);
72
+ box-shadow: 0 10px 20px -10px rgb(0 171 85 / 0.6);
73
+ }
74
+
75
+ .btn-success:hover {
76
+ filter: brightness(0.9);
77
+ }
78
+
79
+ .btn-error {
80
+ border-color: var(--ls-color-danger);
81
+ background-color: var(--ls-color-danger);
82
+ color: var(--ls-color-white);
83
+ box-shadow: 0 10px 20px -10px rgb(231 81 90 / 0.6);
84
+ }
85
+
86
+ .btn-error:hover {
87
+ filter: brightness(0.9);
88
+ }
89
+
90
+ .btn-warning {
91
+ border-color: var(--ls-color-warning);
92
+ background-color: var(--ls-color-warning);
93
+ color: var(--ls-color-white);
94
+ box-shadow: 0 10px 20px -10px rgb(226 160 63 / 0.6);
95
+ }
96
+
97
+ .btn-warning:hover {
98
+ filter: brightness(0.9);
99
+ }
100
+
101
+ .btn-info {
102
+ border-color: var(--ls-color-info);
103
+ background-color: var(--ls-color-info);
104
+ color: var(--ls-color-white);
105
+ box-shadow: 0 10px 20px -10px rgb(33 150 243 / 0.6);
106
+ }
107
+
108
+ .btn-info:hover {
109
+ filter: brightness(0.9);
110
+ }
111
+
112
+ .btn-dark {
113
+ border-color: var(--ls-color-dark);
114
+ background-color: var(--ls-color-dark);
115
+ color: var(--ls-color-white);
116
+ box-shadow: 0 10px 20px -10px rgb(59 63 92 / 0.6);
117
+ }
118
+
119
+ .btn-dark:hover {
120
+ filter: brightness(0.9);
121
+ }
122
+
123
+ /* === Outline variants === */
124
+ .btn-outline-primary {
125
+ border-color: var(--ls-color-primary);
126
+ color: var(--ls-color-primary);
127
+ background-color: transparent;
128
+ box-shadow: none;
129
+ }
130
+
131
+ .btn-outline-primary:hover {
132
+ background-color: var(--ls-color-primary);
133
+ color: var(--ls-color-white);
134
+ }
135
+
136
+ .btn-outline-secondary {
137
+ border-color: var(--ls-color-secondary);
138
+ color: var(--ls-color-secondary);
139
+ background-color: transparent;
140
+ box-shadow: none;
141
+ }
142
+
143
+ .btn-outline-secondary:hover {
144
+ background-color: var(--ls-color-secondary);
145
+ color: var(--ls-color-white);
146
+ }
147
+
148
+ .btn-outline-success {
149
+ border-color: var(--ls-color-success);
150
+ color: var(--ls-color-success);
151
+ background-color: transparent;
152
+ box-shadow: none;
153
+ }
154
+
155
+ .btn-outline-success:hover {
156
+ background-color: var(--ls-color-success);
157
+ color: var(--ls-color-white);
158
+ }
159
+
160
+ .btn-outline-error {
161
+ border-color: var(--ls-color-danger);
162
+ color: var(--ls-color-danger);
163
+ background-color: transparent;
164
+ box-shadow: none;
165
+ }
166
+
167
+ .btn-outline-error:hover {
168
+ background-color: var(--ls-color-danger);
169
+ color: var(--ls-color-white);
170
+ }
171
+
172
+ .btn-outline-warning {
173
+ border-color: var(--ls-color-warning);
174
+ color: var(--ls-color-warning);
175
+ background-color: transparent;
176
+ box-shadow: none;
177
+ }
178
+
179
+ .btn-outline-warning:hover {
180
+ background-color: var(--ls-color-warning);
181
+ color: var(--ls-color-white);
182
+ }
183
+
184
+ .btn-outline-info {
185
+ border-color: var(--ls-color-info);
186
+ color: var(--ls-color-info);
187
+ background-color: transparent;
188
+ box-shadow: none;
189
+ }
190
+
191
+ .btn-outline-info:hover {
192
+ background-color: var(--ls-color-info);
193
+ color: var(--ls-color-white);
194
+ }
195
+
196
+ .btn-outline-dark {
197
+ border-color: var(--ls-color-dark);
198
+ color: var(--ls-color-dark);
199
+ background-color: transparent;
200
+ box-shadow: none;
201
+ }
202
+
203
+ .btn-outline-dark:hover {
204
+ background-color: var(--ls-color-dark);
205
+ color: var(--ls-color-white);
206
+ }
207
+
208
+ /* === Text variants === */
209
+ .btn-text-primary {
210
+ border-color: transparent;
211
+ background-color: transparent;
212
+ color: var(--ls-color-primary);
213
+ box-shadow: none;
214
+ }
215
+
216
+ .btn-text-primary:hover {
217
+ background-color: rgb(67 97 238 / 0.1);
218
+ }
219
+
220
+ .btn-text-secondary {
221
+ border-color: transparent;
222
+ background-color: transparent;
223
+ color: var(--ls-color-secondary);
224
+ box-shadow: none;
225
+ }
226
+
227
+ .btn-text-secondary:hover {
228
+ background-color: rgb(128 93 202 / 0.1);
229
+ }
230
+
231
+ .btn-text-success {
232
+ border-color: transparent;
233
+ background-color: transparent;
234
+ color: var(--ls-color-success);
235
+ box-shadow: none;
236
+ }
237
+
238
+ .btn-text-success:hover {
239
+ background-color: rgb(0 171 85 / 0.1);
240
+ }
241
+
242
+ .btn-text-error {
243
+ border-color: transparent;
244
+ background-color: transparent;
245
+ color: var(--ls-color-danger);
246
+ box-shadow: none;
247
+ }
248
+
249
+ .btn-text-error:hover {
250
+ background-color: rgb(231 81 90 / 0.1);
251
+ }
252
+
253
+ .btn-text-warning {
254
+ border-color: transparent;
255
+ background-color: transparent;
256
+ color: var(--ls-color-warning);
257
+ box-shadow: none;
258
+ }
259
+
260
+ .btn-text-warning:hover {
261
+ background-color: rgb(226 160 63 / 0.1);
262
+ }
263
+
264
+ .btn-text-info {
265
+ border-color: transparent;
266
+ background-color: transparent;
267
+ color: var(--ls-color-info);
268
+ box-shadow: none;
269
+ }
270
+
271
+ .btn-text-info:hover {
272
+ background-color: rgb(33 150 243 / 0.1);
273
+ }
274
+
275
+ .btn-text-dark {
276
+ border-color: transparent;
277
+ background-color: transparent;
278
+ color: var(--ls-color-dark);
279
+ box-shadow: none;
280
+ }
281
+
282
+ .btn-text-dark:hover {
283
+ background-color: rgb(59 63 92 / 0.1);
284
+ }
285
+
286
+ /* === Gradient === */
287
+ .btn-gradient {
288
+ background: linear-gradient(to right, var(--ls-gradient-start), var(--ls-gradient-end));
289
+ color: var(--ls-color-white);
290
+ border-color: transparent;
291
+ }
292
+
293
+ .btn-gradient:hover {
294
+ background: linear-gradient(to right, var(--ls-gradient-end), var(--ls-gradient-start));
295
+ }
296
+
297
+ /* === Modifiers === */
298
+ .btn-full-width {
299
+ width: 100%;
300
+ }
301
+
302
+ .btn-rounded {
303
+ border-radius: var(--ls-border-radius-full);
304
+ }
305
+
306
+ /* === Internal layout classes (used by component template) === */
307
+ .btn-spinner {
308
+ animation: ls-spin 1s linear infinite;
309
+ height: 1rem;
310
+ width: 1rem;
311
+ }
312
+
313
+ .btn-spinner-circle {
314
+ opacity: 0.25;
315
+ }
316
+
317
+ .btn-spinner-path {
318
+ opacity: 0.75;
319
+ }
320
+
321
+ .btn-icon {
322
+ flex-shrink: 0;
323
+ display: inline-flex;
324
+ }
325
+
326
+ .btn-icon > svg {
327
+ height: 100%;
328
+ width: 100%;
329
+ }
330
+
331
+ .btn-icon--start {
332
+ margin-inline-end: 0.375rem;
333
+ }
334
+
335
+ .btn-icon--end {
336
+ margin-inline-start: 0.375rem;
337
+ }
338
+
339
+ .btn-icon--sm {
340
+ height: 0.875rem;
341
+ width: 0.875rem;
342
+ }
343
+
344
+ .btn-icon--md {
345
+ height: 1rem;
346
+ width: 1rem;
347
+ }
348
+
349
+ .btn-icon--lg {
350
+ height: 1.25rem;
351
+ width: 1.25rem;
352
+ }
353
+
354
+ .btn-loading-overlay {
355
+ position: absolute;
356
+ inset: 0;
357
+ display: flex;
358
+ align-items: center;
359
+ justify-content: center;
360
+ }
361
+
362
+ .btn-loading-inline {
363
+ display: inline-flex;
364
+ align-items: center;
365
+ }
366
+
367
+ .btn-loading-inline--start {
368
+ margin-inline-end: 0.5rem;
369
+ }
370
+
371
+ .btn-loading-inline--end {
372
+ margin-inline-start: 0.5rem;
373
+ }
374
+
375
+ .btn-content--hidden {
376
+ visibility: hidden;
377
+ }
@@ -0,0 +1,157 @@
1
+ /* Checkbox Component — Pure CSS */
2
+
3
+ :host {
4
+ display: inline-flex;
5
+ }
6
+
7
+ .checkbox {
8
+ display: inline-flex;
9
+ align-items: center;
10
+ gap: 8px;
11
+ cursor: pointer;
12
+ position: relative;
13
+ transition: opacity var(--ls-transition-duration);
14
+ }
15
+
16
+ .checkbox-input {
17
+ position: absolute;
18
+ opacity: 0;
19
+ width: 0;
20
+ height: 0;
21
+ margin: 0;
22
+ padding: 0;
23
+ pointer-events: none;
24
+ }
25
+
26
+ .checkbox-icon {
27
+ display: inline-flex;
28
+ align-items: center;
29
+ justify-content: center;
30
+ flex-shrink: 0;
31
+ line-height: 0;
32
+ }
33
+
34
+ .checkbox-icon svg {
35
+ width: 100%;
36
+ height: 100%;
37
+ }
38
+
39
+ .checkbox-label {
40
+ user-select: none;
41
+ cursor: pointer;
42
+ }
43
+
44
+ /* ── Sizes ── */
45
+
46
+ .checkbox-sm .checkbox-icon {
47
+ width: 18px;
48
+ height: 18px;
49
+ }
50
+
51
+ .checkbox-sm .checkbox-label {
52
+ font-size: 0.875rem;
53
+ }
54
+
55
+ .checkbox-md .checkbox-icon {
56
+ width: 1.25rem;
57
+ height: 1.25rem;
58
+ }
59
+
60
+ .checkbox-md .checkbox-label {
61
+ font-size: 0.875rem;
62
+ }
63
+
64
+ /* ── Label placement ── */
65
+
66
+ .checkbox-label-end {
67
+ flex-direction: row;
68
+ }
69
+
70
+ .checkbox-label-start {
71
+ flex-direction: row-reverse;
72
+ }
73
+
74
+ .checkbox-label-top {
75
+ flex-direction: column-reverse;
76
+ align-items: center;
77
+ }
78
+
79
+ .checkbox-label-bottom {
80
+ flex-direction: column;
81
+ align-items: center;
82
+ }
83
+
84
+ /* ── Colors (checked / indeterminate state) ── */
85
+
86
+ .checkbox-color-inherit.checkbox-checked .checkbox-icon,
87
+ .checkbox-color-inherit.checkbox-indeterminate .checkbox-icon {
88
+ color: inherit;
89
+ }
90
+
91
+ .checkbox-color-primary.checkbox-checked .checkbox-icon,
92
+ .checkbox-color-primary.checkbox-indeterminate .checkbox-icon {
93
+ color: var(--ls-color-primary);
94
+ }
95
+
96
+ .checkbox-color-secondary.checkbox-checked .checkbox-icon,
97
+ .checkbox-color-secondary.checkbox-indeterminate .checkbox-icon {
98
+ color: var(--ls-color-secondary);
99
+ }
100
+
101
+ .checkbox-color-success.checkbox-checked .checkbox-icon,
102
+ .checkbox-color-success.checkbox-indeterminate .checkbox-icon {
103
+ color: var(--ls-color-success);
104
+ }
105
+
106
+ .checkbox-color-error.checkbox-checked .checkbox-icon,
107
+ .checkbox-color-error.checkbox-indeterminate .checkbox-icon {
108
+ color: var(--ls-color-danger);
109
+ }
110
+
111
+ .checkbox-color-info.checkbox-checked .checkbox-icon,
112
+ .checkbox-color-info.checkbox-indeterminate .checkbox-icon {
113
+ color: var(--ls-color-info);
114
+ }
115
+
116
+ .checkbox-color-warning.checkbox-checked .checkbox-icon,
117
+ .checkbox-color-warning.checkbox-indeterminate .checkbox-icon {
118
+ color: var(--ls-color-warning);
119
+ }
120
+
121
+ /* ── Unchecked state — muted icon ── */
122
+
123
+ .checkbox:not(.checkbox-checked):not(.checkbox-indeterminate)
124
+ .checkbox-icon {
125
+ color: var(--ls-color-dark);
126
+ }
127
+
128
+ /* ── Disabled ── */
129
+
130
+ .checkbox-disabled {
131
+ cursor: not-allowed;
132
+ opacity: 0.5;
133
+ }
134
+
135
+ .checkbox-disabled .checkbox-label {
136
+ cursor: not-allowed;
137
+ }
138
+
139
+ /* ── Focus-visible ── */
140
+
141
+ .checkbox-input:focus-visible + .checkbox-icon {
142
+ outline: 2px solid currentColor;
143
+ outline-offset: 2px;
144
+ border-radius: 2px;
145
+ }
146
+
147
+ /* ── Dark mode ── */
148
+
149
+ body.dark
150
+ .checkbox:not(.checkbox-checked):not(.checkbox-indeterminate)
151
+ .checkbox-icon {
152
+ color: #e0e6ed;
153
+ }
154
+
155
+ body.dark .checkbox-label {
156
+ color: #e0e6ed;
157
+ }
@@ -0,0 +1,157 @@
1
+ /* IconButton Component — Pure CSS */
2
+
3
+ /* === Host === */
4
+ :host {
5
+ display: inline-flex;
6
+ }
7
+
8
+ /* === Base === */
9
+ .icon-btn {
10
+ position: relative;
11
+ display: inline-flex;
12
+ align-items: center;
13
+ justify-content: center;
14
+ border: 1px solid transparent;
15
+ border-radius: var(--ls-border-radius-full);
16
+ background-color: transparent;
17
+ padding: 0;
18
+ outline: none;
19
+ cursor: pointer;
20
+ transition: all var(--ls-transition-duration) ease;
21
+ box-shadow: none;
22
+ }
23
+
24
+ /* === Sizes (equal width & height) === */
25
+ .icon-btn-sm {
26
+ width: 32px;
27
+ height: 32px;
28
+ }
29
+
30
+ .icon-btn-md {
31
+ width: 40px;
32
+ height: 40px;
33
+ }
34
+
35
+ .icon-btn-lg {
36
+ width: 48px;
37
+ height: 48px;
38
+ }
39
+
40
+ /* === Icon sizes (centered within button) === */
41
+ .icon-btn-sm .icon-btn-icon,
42
+ .icon-btn-sm .icon-btn-spinner {
43
+ width: 18px;
44
+ height: 18px;
45
+ }
46
+
47
+ .icon-btn-md .icon-btn-icon,
48
+ .icon-btn-md .icon-btn-spinner {
49
+ width: 24px;
50
+ height: 24px;
51
+ }
52
+
53
+ .icon-btn-lg .icon-btn-icon,
54
+ .icon-btn-lg .icon-btn-spinner {
55
+ width: 28px;
56
+ height: 28px;
57
+ }
58
+
59
+ /* === Color variants (text variant pattern from Button) === */
60
+ .icon-btn-primary {
61
+ color: var(--ls-color-primary);
62
+ }
63
+
64
+ .icon-btn-primary:hover {
65
+ background-color: rgb(67 97 238 / 0.1);
66
+ }
67
+
68
+ .icon-btn-secondary {
69
+ color: var(--ls-color-secondary);
70
+ }
71
+
72
+ .icon-btn-secondary:hover {
73
+ background-color: rgb(128 93 202 / 0.1);
74
+ }
75
+
76
+ .icon-btn-success {
77
+ color: var(--ls-color-success);
78
+ }
79
+
80
+ .icon-btn-success:hover {
81
+ background-color: rgb(0 171 85 / 0.1);
82
+ }
83
+
84
+ .icon-btn-error {
85
+ color: var(--ls-color-danger);
86
+ }
87
+
88
+ .icon-btn-error:hover {
89
+ background-color: rgb(231 81 90 / 0.1);
90
+ }
91
+
92
+ .icon-btn-warning {
93
+ color: var(--ls-color-warning);
94
+ }
95
+
96
+ .icon-btn-warning:hover {
97
+ background-color: rgb(226 160 63 / 0.1);
98
+ }
99
+
100
+ .icon-btn-info {
101
+ color: var(--ls-color-info);
102
+ }
103
+
104
+ .icon-btn-info:hover {
105
+ background-color: rgb(33 150 243 / 0.1);
106
+ }
107
+
108
+ .icon-btn-dark {
109
+ color: var(--ls-color-dark);
110
+ }
111
+
112
+ .icon-btn-dark:hover {
113
+ background-color: rgb(59 63 92 / 0.1);
114
+ }
115
+
116
+ /* === Focus visible (keyboard navigation) === */
117
+ .icon-btn:focus-visible {
118
+ outline: 2px solid currentColor;
119
+ outline-offset: 2px;
120
+ }
121
+
122
+ /* === Disabled === */
123
+ .icon-btn[disabled] {
124
+ cursor: not-allowed;
125
+ opacity: 0.6;
126
+ }
127
+
128
+ .icon-btn[disabled]:hover {
129
+ background-color: transparent;
130
+ }
131
+
132
+ /* === Icon display === */
133
+ .icon-btn-icon {
134
+ display: inline-flex;
135
+ align-items: center;
136
+ justify-content: center;
137
+ flex-shrink: 0;
138
+ }
139
+
140
+ .icon-btn-icon > svg,
141
+ .icon-btn-icon svg {
142
+ width: 100%;
143
+ height: 100%;
144
+ }
145
+
146
+ /* === Spinner === */
147
+ .icon-btn-spinner {
148
+ animation: ls-spin 1s linear infinite;
149
+ }
150
+
151
+ .icon-btn-spinner-circle {
152
+ opacity: 0.25;
153
+ }
154
+
155
+ .icon-btn-spinner-path {
156
+ opacity: 0.75;
157
+ }