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
package/dist/elbe.css ADDED
@@ -0,0 +1,621 @@
1
+ /* BUILD CSS BY:
2
+ - npm install -g sass
3
+ - sass style/elbe.scss dist/elbe.css
4
+ */
5
+ @import url("https://fonts.googleapis.com/css2?display=swap&family=Space+Mono:ital,wght@0,400;0,700;1,400;1,700&family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&family=Calistoga&family=Noto+Color+Emoji");
6
+ /* ========= SPACING ========= */
7
+ .padded,
8
+ .card,
9
+ button,
10
+ .toast,
11
+ select,
12
+ input[type=text],
13
+ input[type=number],
14
+ input[type=password],
15
+ input[type=email],
16
+ input[type=date],
17
+ input[type=time],
18
+ textarea {
19
+ padding: var(--g-padding);
20
+ }
21
+
22
+ .padding-none {
23
+ padding: 0rem;
24
+ }
25
+
26
+ .margined {
27
+ margin: var(--g-padding);
28
+ }
29
+
30
+ .margined-none {
31
+ margin: 0rem;
32
+ }
33
+
34
+ /* ========= ELEMENT_STYLE ========= */
35
+ .sharp {
36
+ border-radius: 0;
37
+ }
38
+
39
+ .rounded,
40
+ .card,
41
+ button,
42
+ .toast,
43
+ select,
44
+ input[type=text],
45
+ input[type=number],
46
+ input[type=password],
47
+ input[type=email],
48
+ input[type=date],
49
+ input[type=time],
50
+ textarea {
51
+ border-radius: var(--g-radius);
52
+ border-color: inherit;
53
+ overflow: hidden;
54
+ }
55
+
56
+ .round {
57
+ border-radius: 50%;
58
+ }
59
+
60
+ img.round,
61
+ img.rounded {
62
+ object-fit: cover;
63
+ }
64
+
65
+ .borderless {
66
+ border: none;
67
+ }
68
+
69
+ .raised, .toast {
70
+ box-shadow: 0 0.1rem 1rem rgba(0, 0, 0, 0.2);
71
+ }
72
+
73
+ .scrollbars-none {
74
+ scrollbar-width: none;
75
+ -ms-overflow-style: none;
76
+ }
77
+ .scrollbars-none::-webkit-scrollbar {
78
+ display: none;
79
+ }
80
+
81
+ .pointer {
82
+ cursor: pointer;
83
+ }
84
+
85
+ .text-centered {
86
+ text-align: center;
87
+ }
88
+
89
+ .text-start {
90
+ text-align: start;
91
+ }
92
+
93
+ .text-end {
94
+ text-align: end;
95
+ }
96
+
97
+ body:has(dialog[open=""]) {
98
+ overflow: hidden;
99
+ }
100
+
101
+ .transparent {
102
+ background-color: transparent;
103
+ }
104
+
105
+ .disabled {
106
+ cursor: not-allowed;
107
+ }
108
+
109
+ /* ========= CARD ========= */
110
+ .box, .header, .base-limited,
111
+ .card,
112
+ button,
113
+ .toast,
114
+ select,
115
+ input[type=text],
116
+ input[type=number],
117
+ input[type=password],
118
+ input[type=email],
119
+ input[type=date],
120
+ input[type=time],
121
+ textarea {
122
+ border-style: solid;
123
+ border-width: var(--g-border-width);
124
+ }
125
+
126
+ /* ========= UTIL ========= */
127
+ .action {
128
+ cursor: pointer;
129
+ }
130
+
131
+ .base-limited {
132
+ max-width: 700px;
133
+ width: 100%;
134
+ margin: 0 auto;
135
+ }
136
+
137
+ /* ========= MARKUP ========= */
138
+ i,
139
+ .i {
140
+ font-style: italic;
141
+ }
142
+
143
+ b,
144
+ .b,
145
+ button,
146
+ .toast {
147
+ font-weight: bold;
148
+ }
149
+
150
+ .u {
151
+ text-decoration: underline;
152
+ }
153
+
154
+ .ni {
155
+ font-style: normal;
156
+ }
157
+
158
+ .nb {
159
+ font-weight: normal;
160
+ }
161
+
162
+ .nu {
163
+ text-decoration: none;
164
+ }
165
+
166
+ .striked {
167
+ text-decoration: line-through;
168
+ }
169
+
170
+ .code {
171
+ font-family: monospace;
172
+ white-space: pre-wrap;
173
+ }
174
+
175
+ /* ========= ANIMATIONS ========= */
176
+ .rotate {
177
+ display: flex;
178
+ align-items: center;
179
+ justify-content: center;
180
+ animation: rotation 1.5s infinite linear;
181
+ }
182
+
183
+ @keyframes rotation {
184
+ from {
185
+ transform: rotate(0deg);
186
+ }
187
+ to {
188
+ transform: rotate(359deg);
189
+ }
190
+ }
191
+ .column, dialog,
192
+ .row,
193
+ button,
194
+ .header,
195
+ .row-resp {
196
+ display: flex;
197
+ justify-content: start;
198
+ align-items: stretch;
199
+ gap: 1rem;
200
+ }
201
+
202
+ .column, dialog {
203
+ flex-direction: column;
204
+ }
205
+
206
+ .row, button, .header {
207
+ flex-direction: row;
208
+ align-items: center;
209
+ }
210
+
211
+ .centered {
212
+ display: flex;
213
+ align-items: center;
214
+ justify-content: center;
215
+ }
216
+
217
+ /* ========== GAP =========== */
218
+ .gap-none {
219
+ gap: 0;
220
+ }
221
+
222
+ .gap-quarter {
223
+ gap: 0.25rem;
224
+ }
225
+
226
+ .gap-half {
227
+ gap: 0.5rem;
228
+ }
229
+
230
+ .gap-one {
231
+ gap: 1rem;
232
+ }
233
+
234
+ .gap-double {
235
+ gap: 2rem;
236
+ }
237
+
238
+ .gap-triple {
239
+ gap: 3rem;
240
+ }
241
+
242
+ /* ========== EXPAND =========== */
243
+ .flex-none {
244
+ flex: 0 0 auto;
245
+ }
246
+
247
+ .flex-1 {
248
+ flex: 1 1 0%;
249
+ }
250
+
251
+ .flex-2 {
252
+ flex: 2 2 0%;
253
+ }
254
+
255
+ .flex-3 {
256
+ flex: 3 3 0%;
257
+ }
258
+
259
+ .flex-4 {
260
+ flex: 4 4 0%;
261
+ }
262
+
263
+ .flex-5 {
264
+ flex: 5 5 0%;
265
+ }
266
+
267
+ .flex-6 {
268
+ flex: 6 6 0%;
269
+ }
270
+
271
+ .flex-7 {
272
+ flex: 7 7 0%;
273
+ }
274
+
275
+ .flex-8 {
276
+ flex: 8 8 0%;
277
+ }
278
+
279
+ .flex-9 {
280
+ flex: 9 9 0%;
281
+ }
282
+
283
+ .flex-10 {
284
+ flex: 10 10 0%;
285
+ }
286
+
287
+ .flex-11 {
288
+ flex: 11 11 0%;
289
+ }
290
+
291
+ .flex-12 {
292
+ flex: 12 12 0%;
293
+ }
294
+
295
+ /* ========== ALIGN =========== */
296
+ .cross-start {
297
+ align-items: flex-start;
298
+ }
299
+
300
+ .cross-center, dialog {
301
+ align-items: center;
302
+ }
303
+
304
+ .cross-end {
305
+ align-items: flex-end;
306
+ }
307
+
308
+ .cross-stretch {
309
+ align-items: stretch;
310
+ }
311
+
312
+ .cross-baseline {
313
+ align-items: baseline;
314
+ }
315
+
316
+ /* ========== JUSTIFY =========== */
317
+ .main-start {
318
+ justify-content: flex-start;
319
+ }
320
+
321
+ .main-center, dialog {
322
+ justify-content: center;
323
+ }
324
+
325
+ .main-end {
326
+ justify-content: flex-end;
327
+ }
328
+
329
+ .main-between {
330
+ justify-content: space-between;
331
+ }
332
+
333
+ .main-around {
334
+ justify-content: space-around;
335
+ }
336
+
337
+ .main-evenly {
338
+ justify-content: space-evenly;
339
+ }
340
+
341
+ /* ========== RESPONSIVE =========== */
342
+ @media (max-width: 700px) {
343
+ .row-resp {
344
+ flex-direction: column;
345
+ }
346
+ .if-wide {
347
+ display: none;
348
+ }
349
+ }
350
+ @media (min-width: 700px) {
351
+ .if-narrow {
352
+ display: none;
353
+ }
354
+ }
355
+ .wrap {
356
+ flex-wrap: wrap;
357
+ }
358
+
359
+ .c_from_context, input[type=text],
360
+ input[type=number],
361
+ input[type=password],
362
+ input[type=email],
363
+ input[type=date],
364
+ input[type=time],
365
+ textarea, select {
366
+ background-color: var(--c-context-back);
367
+ color: var(--c-context-front);
368
+ border: var(--g-border-width) solid var(--c-context-border);
369
+ }
370
+
371
+ .borderless {
372
+ border: none;
373
+ }
374
+
375
+ .bordered {
376
+ border: var(--g-border-width) solid var(--c-context-border);
377
+ }
378
+
379
+ button {
380
+ justify-content: center;
381
+ padding: 0.25rem 0.75rem;
382
+ gap: 0.5rem;
383
+ min-height: 3rem;
384
+ cursor: pointer;
385
+ color: inherit;
386
+ background-color: inherit;
387
+ /*& > .lucide {
388
+ & + div {
389
+ text-align: center;
390
+ flex: 1;
391
+ text-align: center;
392
+ }
393
+ }
394
+
395
+ &.text-left {
396
+ text-align: left;
397
+ div {
398
+ margin-left: 0.25rem;
399
+ text-align: left;
400
+ }
401
+ }*/
402
+ }
403
+ button:not(.dummy_class_001) {
404
+ border: none;
405
+ }
406
+
407
+ .icon {
408
+ aspect-ratio: 1;
409
+ border-radius: 25%;
410
+ object-fit: cover;
411
+ }
412
+
413
+ .toast {
414
+ position: fixed;
415
+ bottom: 1rem;
416
+ right: 1rem;
417
+ z-index: 200;
418
+ left: 50%;
419
+ width: min(40rem, 90%);
420
+ transform: translateX(-50%);
421
+ }
422
+
423
+ select {
424
+ padding: 0 0.75rem;
425
+ height: 3rem;
426
+ min-width: 12rem;
427
+ width: 100%;
428
+ }
429
+
430
+ dialog {
431
+ z-index: 100;
432
+ position: fixed;
433
+ top: 0;
434
+ left: 0;
435
+ width: 100vw;
436
+ height: 100vh;
437
+ border: none;
438
+ pointer-events: none;
439
+ background-color: transparent;
440
+ transition: background-color 0.3s ease-in-out;
441
+ transition: backdrop-filter 0.3s ease-in-out;
442
+ }
443
+ dialog > * {
444
+ display: none;
445
+ }
446
+ dialog[open=""] {
447
+ background-color: rgba(0, 0, 0, 0.2);
448
+ backdrop-filter: blur(5px);
449
+ pointer-events: all;
450
+ }
451
+ dialog[open=""] > * {
452
+ display: unset;
453
+ }
454
+
455
+ .expandable {
456
+ max-height: 0px;
457
+ transition: max-height 0.25s ease-out;
458
+ overflow: hidden;
459
+ }
460
+
461
+ .expandable:has(*) {
462
+ max-height: 500px;
463
+ transition: max-height 0.25s ease-in;
464
+ }
465
+
466
+ .header {
467
+ width: 100%;
468
+ position: fixed;
469
+ left: 0;
470
+ top: 0;
471
+ display: flex;
472
+ font-size: larger;
473
+ font-weight: 900;
474
+ border-width: 20px;
475
+ border-style: solid;
476
+ border-width: 0 0 2px 0;
477
+ padding: 0 0.75rem;
478
+ background-color: color-mix(in srgb, var(--c-context-back) 50%, transparent);
479
+ backdrop-filter: blur(10px);
480
+ -webkit-backdrop-filter: blur(10px);
481
+ z-index: 20;
482
+ box-sizing: border-box;
483
+ height: 4.5rem;
484
+ justify-content: space-between;
485
+ align-items: center;
486
+ }
487
+
488
+ input[type=text],
489
+ input[type=number],
490
+ input[type=password],
491
+ input[type=email],
492
+ input[type=date],
493
+ input[type=time],
494
+ textarea {
495
+ padding: 0 0.75rem;
496
+ height: 3rem;
497
+ min-width: 12rem;
498
+ width: 100%;
499
+ }
500
+
501
+ textarea {
502
+ height: 6rem;
503
+ padding: 0.6rem 0.75rem;
504
+ resize: vertical;
505
+ min-height: 3rem;
506
+ }
507
+
508
+ input[type=range] {
509
+ -webkit-appearance: none;
510
+ appearance: none;
511
+ background: transparent;
512
+ cursor: pointer;
513
+ width: 15rem;
514
+ }
515
+ input[type=range]::-moz-range-track {
516
+ background-color: var(--c-context-border);
517
+ border-radius: 100px;
518
+ border: none;
519
+ height: 0.5rem;
520
+ }
521
+ input[type=range]::-webkit-slider-runnable-track {
522
+ border-radius: 100px;
523
+ border: none;
524
+ height: 0.5rem;
525
+ }
526
+ input[type=range]::-webkit-slider-thumb {
527
+ border: none;
528
+ -webkit-appearance: none;
529
+ appearance: none;
530
+ margin-top: -6px;
531
+ border-radius: 100px;
532
+ height: 1.2rem;
533
+ width: 1.2rem;
534
+ }
535
+
536
+ input[type=checkbox] {
537
+ -webkit-appearance: none;
538
+ appearance: none;
539
+ margin: 0;
540
+ font: inherit;
541
+ color: black;
542
+ width: 1.8rem;
543
+ height: 1.8rem;
544
+ border: 0.16em solid var(--c-context-border);
545
+ border-radius: 25%;
546
+ transform: translateY(-0.075em);
547
+ display: grid;
548
+ place-content: center;
549
+ outline: none;
550
+ }
551
+
552
+ input[type=checkbox]::before {
553
+ content: "";
554
+ width: 0.95rem;
555
+ height: 0.75rem;
556
+ clip-path: polygon(10% 41%, 37% 75%, 91% 0, 100% 13%, 38% 100%, 0 55%);
557
+ transform: scale(0);
558
+ transform-origin: center;
559
+ transition: 0.2s all ease-in-out;
560
+ }
561
+
562
+ input[type=checkbox]:checked {
563
+ border-color: var(--c-accent);
564
+ background: color-mix(in srgb, var(--c-accent) 20%, transparent);
565
+ }
566
+ input[type=checkbox]:checked::before {
567
+ transform: scale(1);
568
+ background-color: var(--c-accent);
569
+ }
570
+
571
+ input[type=checkbox]:focus {
572
+ outline: max(2px, 0.15em) solid var(--c-accent);
573
+ outline-offset: 0;
574
+ }
575
+
576
+ input[type=checkbox]:not(:checked):disabled {
577
+ cursor: not-allowed;
578
+ border: 0.16em solid var(--c-context-border);
579
+ }
580
+
581
+ :root {
582
+ --g-size: 1rem;
583
+ --g-radius: 0.75rem;
584
+ --g-padding: 1rem;
585
+ --g-border-width: 0.125rem;
586
+ --c-context-back: #ffffff;
587
+ --c-context-front: #000;
588
+ --c-context-border: #000;
589
+ line-height: 1.3;
590
+ color: #222;
591
+ background-color: #ffffff;
592
+ font-synthesis: none;
593
+ text-rendering: optimizeLegibility;
594
+ -webkit-font-smoothing: antialiased;
595
+ -moz-osx-font-smoothing: grayscale;
596
+ -webkit-text-size-adjust: 100%;
597
+ box-sizing: border-box;
598
+ font-size: 1rem;
599
+ border-collapse: separate;
600
+ font-family: "Inter", sans-serif;
601
+ }
602
+
603
+ *,
604
+ *:before,
605
+ *:after {
606
+ box-sizing: inherit;
607
+ font-size: inherit;
608
+ font-family: inherit;
609
+ font-weight: inherit;
610
+ border-color: inherit;
611
+ }
612
+
613
+ body,
614
+ #app {
615
+ margin: 0;
616
+ display: block;
617
+ min-height: 100vh;
618
+ background-color: white;
619
+ }
620
+
621
+ /*# sourceMappingURL=elbe.css.map */