elbe-ui 0.2.23 → 0.2.30

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 (63) hide show
  1. package/dist/elbe.css +621 -0
  2. package/dist/index.d.ts +1548 -16
  3. package/dist/index.js +63 -18505
  4. package/package.json +15 -13
  5. package/dist/bit/bit.d.ts +0 -34
  6. package/dist/bit/ctrl_bit.d.ts +0 -30
  7. package/dist/service/s_api.d.ts +0 -30
  8. package/dist/ui/color_theme.d.ts +0 -5
  9. package/dist/ui/components/badge.d.ts +0 -25
  10. package/dist/ui/components/box.d.ts +0 -1027
  11. package/dist/ui/components/button.d.ts +0 -23
  12. package/dist/ui/components/card.d.ts +0 -14
  13. package/dist/ui/components/dialog.d.ts +0 -8
  14. package/dist/ui/components/error_view.d.ts +0 -15
  15. package/dist/ui/components/flex.d.ts +0 -11
  16. package/dist/ui/components/icon_button.d.ts +0 -19
  17. package/dist/ui/components/input/checkbox.d.ts +0 -6
  18. package/dist/ui/components/input/input_field.d.ts +0 -22
  19. package/dist/ui/components/input/range.d.ts +0 -8
  20. package/dist/ui/components/input/select.d.ts +0 -10
  21. package/dist/ui/components/input/text_area.d.ts +0 -10
  22. package/dist/ui/components/padded.d.ts +0 -25
  23. package/dist/ui/components/spinner.d.ts +0 -3
  24. package/dist/ui/components/text.d.ts +0 -33
  25. package/dist/ui/components/toggle_button.d.ts +0 -12
  26. package/dist/ui/components/util.d.ts +0 -3
  27. package/dist/ui/util/confirm_dialog.d.ts +0 -10
  28. package/dist/ui/util/error_view.d.ts +0 -1
  29. package/dist/ui/util/toast.d.ts +0 -5
  30. package/dist/ui/util/util.d.ts +0 -19
  31. package/elbe.scss +0 -100
  32. package/src/bit/bit.tsx +0 -128
  33. package/src/bit/ctrl_bit.tsx +0 -112
  34. package/src/index.tsx +0 -29
  35. package/src/service/s_api.ts +0 -102
  36. package/src/ui/color_theme.ts +0 -24
  37. package/src/ui/components/badge.tsx +0 -78
  38. package/src/ui/components/box.tsx +0 -49
  39. package/src/ui/components/button.tsx +0 -61
  40. package/src/ui/components/card.tsx +0 -45
  41. package/src/ui/components/dialog.tsx +0 -51
  42. package/src/ui/components/error_view.tsx +0 -72
  43. package/src/ui/components/flex.tsx +0 -64
  44. package/src/ui/components/icon_button.tsx +0 -56
  45. package/src/ui/components/input/checkbox.tsx +0 -32
  46. package/src/ui/components/input/input_field.tsx +0 -57
  47. package/src/ui/components/input/range.tsx +0 -37
  48. package/src/ui/components/input/select.tsx +0 -29
  49. package/src/ui/components/input/text_area.tsx +0 -45
  50. package/src/ui/components/padded.tsx +0 -62
  51. package/src/ui/components/scaffold.tsx +0 -79
  52. package/src/ui/components/spinner.tsx +0 -11
  53. package/src/ui/components/text.tsx +0 -78
  54. package/src/ui/components/toggle_button.tsx +0 -52
  55. package/src/ui/components/util.tsx +0 -3
  56. package/src/ui/util/confirm_dialog.ts +0 -53
  57. package/src/ui/util/error_view.tsx +0 -16
  58. package/src/ui/util/toast.ts +0 -14
  59. package/src/ui/util/util.ts +0 -36
  60. package/style/color_style.scss +0 -149
  61. package/style/components.scss +0 -476
  62. package/style/root.scss +0 -50
  63. package/style/type_style.scss +0 -22
@@ -1,476 +0,0 @@
1
- // =============== MARKUP ===============
2
-
3
- i, .i {font-style: italic;}
4
- b, .b {font-weight: bold;}
5
- .u {text-decoration: underline;}
6
- .ni {font-style: normal;}
7
- .nb {font-weight: normal;}
8
- .nu {text-decoration: none;}
9
- .striked {text-decoration: line-through;}
10
- .code {font-family: monospace;}
11
-
12
- // =============== SPACING ===============
13
-
14
- .padded {padding: 1rem;}
15
- .padding-none {padding: 0rem;}
16
-
17
- .margined {margin: 1rem;}
18
- .margined-none {margin: 0rem;}
19
-
20
- // =============== FLEX-Layouts ===============
21
-
22
- .flex {
23
- display: flex;
24
- flex-direction: column;
25
- }
26
-
27
- @for $i from 1 through 12 {
28
- .flex-#{$i} {
29
- @extend .flex;
30
- flex: $i;
31
- }
32
- }
33
-
34
- .centered {
35
- display: flex;
36
- align-items: center;
37
- justify-content: center;
38
- }
39
-
40
- .column {
41
- display: flex;
42
- flex-direction: column;
43
- align-items: center;
44
- gap: 1rem;
45
- }
46
-
47
- .row {
48
- display: flex;
49
- flex-direction: row;
50
- align-items: center;
51
- gap: 1rem;
52
-
53
- &.wrap {flex-wrap: wrap;}
54
- }
55
-
56
- .row-resp,
57
- .row-resp-rev {
58
- display: flex;
59
- flex-direction: row;
60
- justify-content: center;
61
- align-items: start;
62
- gap: 1rem;
63
-
64
- @media (max-width: 700px) {
65
- & {
66
- flex-direction: column;
67
- justify-content: start;
68
- align-items: stretch;
69
- }
70
-
71
- &.row-resp-rev {flex-direction: column-reverse;}
72
- }
73
- }
74
-
75
- .gap-none {gap: 0;}
76
- .gap-quarter {gap: 0.25rem;}
77
- .gap-half {gap: 0.5rem;}
78
- .gap {gap: 1rem;}
79
-
80
- @for $i from 0 through 6 {
81
- .gap-#{$i} {gap: #{$i}rem;}
82
- }
83
-
84
- $cross_modes: (stretch,start,end,center);
85
- @each $name in $cross_modes {
86
- .cross-#{$name} {align-items: $name;}
87
- }
88
-
89
- $main_modes: (stretch,start,end,center,space-between);
90
- @each $name in $main_modes {
91
- .main-#{$name} {justify-content: $name;}
92
- }
93
-
94
- // =============== conditionals ===============
95
-
96
- .if-wide {
97
- @media (max-width: 700px) {
98
- & {display: none;}
99
- }
100
- }
101
-
102
- .if-narrow {
103
- @media (min-width: 700px) {
104
- & {display: none;}
105
- }
106
- }
107
-
108
- // =============== element style ===============
109
-
110
- .sharp {border-radius: 0;}
111
- .rounded {border-radius: $g-radius;}
112
- .round {border-radius: 50%;}
113
-
114
- img.round,
115
- img.rounded {object-fit: cover;}
116
-
117
- .borderless {border: none;}
118
- .raised {box-shadow: 0 0.1rem 1rem #00000033;}
119
-
120
- .scrollbars-none {
121
- scrollbar-width: none;
122
- -ms-overflow-style: none;
123
- &::-webkit-scrollbar {display: none;}
124
- }
125
-
126
- .pointer {cursor: pointer;}
127
-
128
- .text-centered {text-align: center;}
129
- .text-start {text-align: start;}
130
- .text-end {text-align: end;}
131
-
132
- body:has(dialog[open=""]) {overflow: hidden;}
133
-
134
-
135
- // =============== animations ===============
136
-
137
- .rotate-box {
138
- @extend .rotate;
139
- display: flex;
140
- align-items: center;
141
- justify-content: center;
142
- }
143
-
144
- .rotate {
145
- animation: rotation 1.5s infinite linear;
146
- }
147
-
148
- @keyframes rotation {
149
- from {transform: rotate(0deg);}
150
- to {transform: rotate(359deg);}
151
- }
152
-
153
- // =============== COMPONENTS ===============
154
-
155
- .box {
156
- @extend .padded;
157
- @extend .text-m;
158
- @extend .primary;
159
-
160
- &.primary {@extend .primary;}
161
- &.secondary {@extend .secondary;}
162
- &.inverse {@extend .inverse;}
163
- }
164
-
165
- .card {
166
- @extend .box;
167
- border-width: 2px;
168
- border-style: solid;
169
- border-radius: $g-radius;
170
- //overflow: hidden;
171
- }
172
-
173
-
174
- button {
175
- @extend .card;
176
- @extend .accent;
177
- @extend .row;
178
- @extend .text-m;
179
- @extend .b;
180
- justify-content: center;
181
- padding: 0.25rem 0.75rem;
182
- gap: 0.5rem;
183
- min-height: 3rem;
184
- cursor: pointer;
185
-
186
- &:hover:not(&:disabled, .disabled) {
187
- @extend .hovered;
188
- }
189
-
190
- &:active:not(&:disabled, .disabled) {
191
- @extend .pressed;
192
- }
193
-
194
- &:disabled,
195
- &.disabled {
196
- @extend .disabled;
197
- cursor: not-allowed;
198
-
199
- &.action {
200
- opacity: 0.7;
201
- filter: grayscale(1);
202
- }
203
- }
204
-
205
- & > .lucide {
206
- & + div {
207
- text-align: center;
208
- flex: 1;
209
- text-align: center;
210
- }
211
- }
212
-
213
- &.text-left {
214
- text-align: left;
215
- div {
216
- margin-left: 0.25rem;
217
- text-align: left;
218
- }
219
- }
220
- }
221
-
222
- .icon {
223
- aspect-ratio: 1;
224
- border-radius: 25%;
225
- object-fit: cover;
226
- }
227
-
228
- .toast {
229
- @extend .card;
230
- @extend .inverse;
231
- @extend .b;
232
- @extend .raised;
233
- position: fixed;
234
- bottom: 1rem;
235
- right: 1rem;
236
- z-index: 200;
237
- left: 50%;
238
- width: min(40rem, 90%);
239
- transform: translateX(-50%);
240
- }
241
-
242
- select {
243
- @extend .card;
244
- padding: 0 0.75rem;
245
- height: 3rem;
246
- min-width: 12rem;
247
- width: 100%;
248
- }
249
-
250
- textarea {
251
- @extend .card;
252
- height: 6rem;
253
- padding: 0.6rem 0.75rem;
254
- resize: vertical;
255
- min-height: 3rem;
256
- min-width: 12rem;
257
- width: 100%;
258
- }
259
-
260
-
261
- dialog {
262
- @extend .column;
263
- @extend .cross-center;
264
- @extend .main-center;
265
-
266
- z-index: 100;
267
-
268
- position: fixed;
269
- top: 0;
270
- left: 0;
271
- width: 100vw;
272
- height: 100vh;
273
-
274
- border: none;
275
-
276
- pointer-events: none;
277
-
278
- background-color: transparent;
279
-
280
- transition: background-color 0.3s ease-in-out;
281
- transition: backdrop-filter 0.3s ease-in-out;
282
-
283
- & > * {
284
- display: none;
285
- }
286
-
287
- &[open=""] {
288
- background-color: rgba(0, 0, 0, 0.2);
289
- backdrop-filter: blur(5px);
290
- pointer-events: all;
291
- & > * {
292
- display: unset;
293
- }
294
- }
295
- }
296
-
297
- .expandable {
298
- max-height: 0px;
299
- transition: max-height 0.25s ease-out;
300
- overflow: hidden;
301
- }
302
-
303
- .expandable:has(*) {
304
- max-height: 500px;
305
- transition: max-height 0.25s ease-in;
306
- }
307
-
308
- .header {
309
- @extend .box;
310
- @extend .row;
311
- width: 100%;
312
- position: fixed;
313
- left: 0;
314
- top: 0;
315
- display: flex;
316
- font-size: larger;
317
- font-weight: 900;
318
- border-width: 20px;
319
- border-style: solid;
320
- border-width: 0 0 2px 0;
321
- //border-width: 0 0 2px 0;
322
-
323
- background-color: #ffffff70;
324
- backdrop-filter: blur(10px);
325
- -webkit-backdrop-filter: blur(10px);
326
- z-index: 20;
327
- // place border inside the element:
328
- box-sizing: border-box;
329
- height: 4.5rem;
330
- justify-content: space-between;
331
- align-items: center;
332
- }
333
-
334
- // =============== INPUTS ===============
335
-
336
- input[type="text"],
337
- input[type="number"],
338
- input[type="password"],
339
- input[type="email"],
340
- input[type="date"],
341
- input[type="time"] {
342
- @extend .card;
343
- padding: 0 0.75rem;
344
- height: 3rem;
345
- min-width: 12rem;
346
- width: 100%;
347
- }
348
-
349
- input[type="range"] {
350
- -webkit-appearance: none;
351
- appearance: none;
352
- background: transparent;
353
- cursor: pointer;
354
- width: 15rem;
355
-
356
- &::-moz-range-track{
357
- background-color: #707070;
358
- border-radius: 100px;
359
- border: none;
360
- height: 0.5rem;
361
- }
362
-
363
- &::-webkit-slider-runnable-track
364
- {
365
- @extend .secondary;
366
- border-radius: 100px;
367
- border: none;
368
- height: 0.5rem;
369
- }
370
-
371
- &::-webkit-slider-thumb
372
- {
373
- @extend .accent;
374
- border: none;
375
- -webkit-appearance: none; // Override default look
376
- appearance: none;
377
- margin-top: -6px;
378
- border-radius: 100px;
379
- height: 1.2rem;
380
- width: 1.2rem;
381
- }
382
- }
383
-
384
-
385
- input[type="checkbox"] {
386
- -webkit-appearance: none;
387
- appearance: none;
388
- margin: 0;
389
-
390
- font: inherit;
391
- color: black;
392
- //margin: 0.6rem 0.6rem;
393
- width: 1.8rem;
394
- height: 1.8rem;
395
- border: 0.16em solid black;
396
- border-radius: 25%;
397
- transform: translateY(-0.075em);
398
-
399
- display: grid;
400
- place-content: center;
401
- outline: none;
402
- }
403
-
404
- input[type="checkbox"]::before {
405
- content: "";
406
- width: 0.95rem;
407
- height: 0.75rem;
408
- clip-path: polygon(10% 41%, 37% 75%, 91% 0, 100% 13%, 38% 100%, 0 55%);
409
- // check tick clip path outlined:
410
- transform: scale(0);
411
- transform-origin: center;
412
- transition: 0.2s transform ease-in-out;
413
- background-color: black;
414
- //box-shadow: inset 1em 1em green;
415
- }
416
-
417
- input[type="checkbox"]:checked {
418
- @extend .loud;
419
- @extend .minor;
420
- border-color: $c-accent !important;
421
- &::before {
422
- transform: scale(1);
423
- background-color: $c-accent;
424
- }
425
- }
426
-
427
- input[type="checkbox"]:focus {
428
- outline: max(2px, 0.15em) solid blue;
429
- outline-offset: 0;
430
- }
431
-
432
- input[type="checkbox"]:disabled {
433
- //--form-control-color: var(--form-control-disabled);
434
-
435
- color: gray;
436
- cursor: not-allowed;
437
- }
438
-
439
- // =============== TOOLTIP ===============
440
-
441
-
442
- [data-tooltip]:hover:after {
443
- opacity: 1;
444
- transition: all 0.1s ease 0.8s;
445
- visibility: visible;
446
- }
447
-
448
- [data-tooltip]:after {
449
- @extend .inverse;
450
- content: attr(data-tooltip);
451
- position: absolute;
452
- bottom: -1.6em;
453
- left: 50%;
454
- transform: translateX(-50%);
455
- white-space: nowrap;
456
- box-shadow: 0 0.125rem 0.5rem 0.2rem #00000022;
457
- padding: 0.25em 0.5em;
458
- border-radius: 0.25em;
459
- opacity: 0;
460
- z-index: 999;
461
- visibility: hidden;
462
- pointer-events: none;
463
- }
464
- [data-tooltip] {
465
- position: relative;
466
- }
467
-
468
- // =============== LAYOUT ===============
469
-
470
-
471
- .base-limited {
472
- @extend .box;
473
- max-width: 700px;
474
- width: 100%;
475
- margin: 0 auto;
476
- }
package/style/root.scss DELETED
@@ -1,50 +0,0 @@
1
- :root {
2
- /*font-family: "apple color emoji", "segoe ui emoji", "noto color emoji",
3
- "android emoji", "emojisymbols", "emojione mozilla", "twemoji mozilla",
4
- "segoe ui symbol", $t-font-body;*/
5
- font-family: $t-font-body, "Noto Color Emoji";
6
- line-height: 1.3;
7
-
8
- color: #222;
9
- background-color: #ffffff;
10
-
11
- font-synthesis: none;
12
- text-rendering: optimizeLegibility;
13
- -webkit-font-smoothing: antialiased;
14
- -moz-osx-font-smoothing: grayscale;
15
- -webkit-text-size-adjust: 100%;
16
- box-sizing: border-box;
17
- font-size: 16px;
18
- border-collapse: separate;
19
- }
20
-
21
- @media (orientation: portrait) {
22
- :root {
23
- font-size: 13px;
24
- }
25
- }
26
-
27
- *,
28
- *:before,
29
- *:after {
30
- box-sizing: inherit;
31
- font-family: inherit;
32
- font-weight: inherit;
33
- }
34
-
35
- body,
36
- #app,
37
- .elbe-base {
38
- margin: 0;
39
- display: block;
40
- min-height: 100vh;
41
- background-color: white;
42
- }
43
-
44
- body:has(.no-page-scroll) {
45
- overflow: hidden;
46
- }
47
-
48
- .debug {
49
- display: none;
50
- }
@@ -1,22 +0,0 @@
1
- @each $style, $size in $t-styles {
2
- .text-#{$style} {
3
- font-size: $size;
4
- }
5
- }
6
-
7
- @each $name, $size in $t-headers {
8
- .header-#{$name} {
9
- @extend .b;
10
- line-height: 1;
11
- font-size: $size;
12
- font-family: $t-font-accent;
13
- }
14
-
15
- h#{$name} {
16
- @extend .header-#{$name};
17
- }
18
- }
19
-
20
- .text-accent {
21
- font-family: $t-font-accent;
22
- }