@dodlhuat/basix 1.0.0 → 1.1.0

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 (142) hide show
  1. package/README.md +1 -1
  2. package/css/accordion.scss +31 -22
  3. package/css/alert.scss +79 -27
  4. package/css/button.scss +151 -102
  5. package/css/card.scss +11 -12
  6. package/css/carousel.scss +123 -87
  7. package/css/chart.scss +9 -11
  8. package/css/chat-bubbles.scss +2 -2
  9. package/css/checkbox.scss +72 -55
  10. package/css/chips.scss +52 -52
  11. package/css/code-viewer.scss +73 -98
  12. package/css/datepicker.scss +20 -0
  13. package/css/dropdown.scss +151 -137
  14. package/css/editor.scss +9 -6
  15. package/css/file-uploader.scss +187 -195
  16. package/css/flyout-menu.scss +20 -13
  17. package/css/form.scss +168 -115
  18. package/css/gallery.scss +62 -63
  19. package/css/grid.scss +0 -1
  20. package/css/modal.scss +117 -72
  21. package/css/placeholder.scss +17 -12
  22. package/css/properties.scss +6 -0
  23. package/css/push-menu.scss +70 -23
  24. package/css/radiobutton.scss +86 -64
  25. package/css/range-slider.scss +136 -0
  26. package/css/scrollbar.scss +69 -69
  27. package/css/spinner.scss +41 -66
  28. package/css/style.css +4351 -3735
  29. package/css/style.css.map +1 -1
  30. package/css/style.scss +2 -1
  31. package/css/switch.scss +43 -42
  32. package/css/table.scss +61 -40
  33. package/css/tabs.scss +12 -7
  34. package/css/timeline.scss +72 -69
  35. package/css/timepicker.scss +151 -72
  36. package/css/toast.scss +49 -48
  37. package/css/tooltip.scss +112 -122
  38. package/css/tree.scss +135 -192
  39. package/css/typography.scss +70 -9
  40. package/css/virtual-dropdown.scss +201 -142
  41. package/js/carousel.js +45 -18
  42. package/js/carousel.ts +217 -173
  43. package/js/datepicker.js +505 -497
  44. package/js/datepicker.ts +9 -0
  45. package/js/editor.js +398 -415
  46. package/js/file-uploader.js +142 -128
  47. package/js/file-uploader.ts +364 -350
  48. package/js/gallery.js +22 -15
  49. package/js/gallery.ts +17 -12
  50. package/js/index.js +718 -720
  51. package/js/index.ts +7 -8
  52. package/js/push-menu.js +113 -101
  53. package/js/push-menu.ts +17 -2
  54. package/js/range-slider.js +26 -0
  55. package/js/range-slider.ts +33 -0
  56. package/js/timepicker.js +144 -98
  57. package/js/timepicker.ts +194 -131
  58. package/js/tree.js +56 -28
  59. package/js/tree.ts +239 -218
  60. package/package.json +1 -1
  61. package/css/accordion.css +0 -109
  62. package/css/accordion.css.map +0 -1
  63. package/css/alert.css +0 -57
  64. package/css/alert.css.map +0 -1
  65. package/css/button.css +0 -69
  66. package/css/button.css.map +0 -1
  67. package/css/card.css +0 -144
  68. package/css/card.css.map +0 -1
  69. package/css/carousel.css +0 -118
  70. package/css/carousel.css.map +0 -1
  71. package/css/chart.css +0 -159
  72. package/css/chart.css.map +0 -1
  73. package/css/chat-bubbles.css +0 -97
  74. package/css/chat-bubbles.css.map +0 -1
  75. package/css/checkbox.css +0 -77
  76. package/css/checkbox.css.map +0 -1
  77. package/css/chips.css +0 -72
  78. package/css/chips.css.map +0 -1
  79. package/css/code-viewer.css +0 -97
  80. package/css/code-viewer.css.map +0 -1
  81. package/css/colors.css +0 -63
  82. package/css/colors.css.map +0 -1
  83. package/css/datepicker.css +0 -264
  84. package/css/datepicker.css.map +0 -1
  85. package/css/defaults.css +0 -118
  86. package/css/defaults.css.map +0 -1
  87. package/css/dropdown.css +0 -146
  88. package/css/dropdown.css.map +0 -1
  89. package/css/editor.css +0 -413
  90. package/css/file-uploader.css +0 -194
  91. package/css/file-uploader.css.map +0 -1
  92. package/css/flyout-menu.css +0 -345
  93. package/css/flyout-menu.css.map +0 -1
  94. package/css/form-builder.css +0 -9
  95. package/css/form-builder.css.map +0 -1
  96. package/css/form-builder.scss +0 -11
  97. package/css/form.css +0 -130
  98. package/css/form.css.map +0 -1
  99. package/css/gallery.css +0 -91
  100. package/css/gallery.css.map +0 -1
  101. package/css/grid.css +0 -44
  102. package/css/grid.css.map +0 -1
  103. package/css/icons.css +0 -327
  104. package/css/icons.css.map +0 -1
  105. package/css/modal.css +0 -97
  106. package/css/modal.css.map +0 -1
  107. package/css/parameters.css +0 -1
  108. package/css/parameters.css.map +0 -1
  109. package/css/placeholder.css +0 -50
  110. package/css/placeholder.css.map +0 -1
  111. package/css/progress.css +0 -51
  112. package/css/progress.css.map +0 -1
  113. package/css/properties.css +0 -31
  114. package/css/properties.css.map +0 -1
  115. package/css/push-menu.css +0 -145
  116. package/css/push-menu.css.map +0 -1
  117. package/css/radiobutton.css +0 -91
  118. package/css/radiobutton.css.map +0 -1
  119. package/css/reset.css +0 -46
  120. package/css/reset.css.map +0 -1
  121. package/css/scrollbar.css +0 -91
  122. package/css/scrollbar.css.map +0 -1
  123. package/css/spinner.css +0 -118
  124. package/css/spinner.css.map +0 -1
  125. package/css/switch.css +0 -66
  126. package/css/switch.css.map +0 -1
  127. package/css/table.css +0 -201
  128. package/css/table.css.map +0 -1
  129. package/css/tabs.css +0 -135
  130. package/css/tabs.css.map +0 -1
  131. package/css/timeline.css +0 -69
  132. package/css/timeline.css.map +0 -1
  133. package/css/toast.css +0 -98
  134. package/css/toast.css.map +0 -1
  135. package/css/tooltip.css +0 -151
  136. package/css/tooltip.css.map +0 -1
  137. package/css/tree.css +0 -199
  138. package/css/tree.css.map +0 -1
  139. package/css/typography.css +0 -137
  140. package/css/typography.css.map +0 -1
  141. package/css/virtual-dropdown.css +0 -149
  142. package/css/virtual-dropdown.css.map +0 -1
@@ -1,72 +1,151 @@
1
- .timespan-picker {
2
- display: flex;
3
- align-items: flex-end;
4
- gap: 1rem;
5
- padding: 1rem;
6
- background: #f8f9fa;
7
- border-radius: 8px;
8
- max-width: 400px;
9
- }
10
-
11
- .timespan-field {
12
- flex: 1;
13
- display: flex;
14
- flex-direction: column;
15
- gap: 0.5rem;
16
- }
17
-
18
- .timespan-field label {
19
- font-size: 0.875rem;
20
- font-weight: 500;
21
- color: #495057;
22
- }
23
-
24
- .timespan-field input[type="time"] {
25
- padding: 0.75rem;
26
- font-size: 1rem;
27
- border: 1px solid #ced4da;
28
- border-radius: 6px;
29
- background: white;
30
- transition: border-color 0.2s ease;
31
- -webkit-appearance: none;
32
- -moz-appearance: none;
33
- appearance: none;
34
- }
35
-
36
- .timespan-field input[type="time"]:focus {
37
- outline: none;
38
- border-color: #0066cc;
39
- box-shadow: 0 0 0 3px rgba(0, 102, 204, 0.1);
40
- }
41
-
42
- .timespan-field input[type="time"]:invalid {
43
- border-color: #dc3545;
44
- }
45
-
46
- .timespan-separator {
47
- font-size: 1.5rem;
48
- color: #6c757d;
49
- padding-bottom: 0.75rem;
50
- user-select: none;
51
- }
52
-
53
- @media (max-width: 480px) {
54
- .timespan-picker {
55
- flex-direction: column;
56
- align-items: stretch;
57
- gap: 1rem;
58
- padding: 1rem 0.75rem;
59
- }
60
-
61
- .timespan-separator {
62
- text-align: center;
63
- padding: 0;
64
- transform: rotate(90deg);
65
- }
66
-
67
- .timespan-field input[type="time"] {
68
- font-size: 1.125rem;
69
- padding: 1rem;
70
- min-height: 48px;
71
- }
72
- }
1
+ @use "properties";
2
+ @use "parameters" as *;
3
+
4
+ .timespan-picker {
5
+ display: flex;
6
+ align-items: stretch;
7
+ background: var(--secondary-background);
8
+ border: 1px solid var(--divider);
9
+ border-radius: $border-radius;
10
+ overflow: hidden;
11
+ box-shadow: $shadow;
12
+ transition: border-color 0.2s ease;
13
+
14
+ &.is-error {
15
+ border-color: var(--error);
16
+ }
17
+ }
18
+
19
+ .timespan-field {
20
+ flex: 1;
21
+ display: flex;
22
+ flex-direction: column;
23
+ padding: calc($spacing * 0.75) $spacing;
24
+ min-width: 0;
25
+
26
+ label {
27
+ font-size: 0.6875rem;
28
+ font-weight: 600;
29
+ letter-spacing: 0.07em;
30
+ text-transform: uppercase;
31
+ color: var(--secondary-text);
32
+ margin-bottom: calc($spacing / 4);
33
+ pointer-events: none;
34
+ display: block;
35
+ }
36
+
37
+ input[type="time"] {
38
+ // reset form.scss defaults
39
+ border: none;
40
+ box-shadow: none;
41
+ background: transparent;
42
+ padding: 0;
43
+ min-height: unset;
44
+ border-radius: 0;
45
+ // own styles
46
+ font-size: 1.5rem;
47
+ font-weight: 700;
48
+ letter-spacing: -0.02em;
49
+ color: var(--primary-text);
50
+ font-family: inherit;
51
+ width: 100%;
52
+ outline: none;
53
+ cursor: pointer;
54
+ transition: color 0.15s ease;
55
+
56
+ &::-webkit-calendar-picker-indicator {
57
+ display: none;
58
+ }
59
+
60
+ &::-webkit-datetime-edit {
61
+ padding: 0;
62
+ }
63
+
64
+ &::-webkit-datetime-edit-fields-wrapper {
65
+ padding: 0;
66
+ }
67
+ }
68
+ }
69
+
70
+ .timespan-picker.is-error .timespan-field-end input[type="time"] {
71
+ color: var(--error);
72
+ }
73
+
74
+ .timespan-center {
75
+ display: flex;
76
+ flex-direction: column;
77
+ align-items: center;
78
+ justify-content: center;
79
+ padding: 0 calc($spacing * 0.75);
80
+ border-left: 1px solid var(--divider);
81
+ border-right: 1px solid var(--divider);
82
+ background: var(--background);
83
+ min-width: 4.5rem;
84
+ gap: calc($spacing / 5);
85
+ flex-shrink: 0;
86
+ }
87
+
88
+ .timespan-arrow {
89
+ font-size: 1rem;
90
+ color: var(--secondary-text);
91
+ line-height: 1;
92
+ }
93
+
94
+ .timespan-duration {
95
+ font-size: 0.75rem;
96
+ font-weight: 700;
97
+ color: var(--accent-color);
98
+ letter-spacing: 0.02em;
99
+ white-space: nowrap;
100
+ line-height: 1;
101
+ min-height: 0.75rem;
102
+
103
+ .timespan-picker.is-error & {
104
+ color: var(--error);
105
+ }
106
+ }
107
+
108
+ // 24h position bar
109
+ .timespan-bar {
110
+ margin-top: calc($spacing / 2);
111
+ height: 3px;
112
+ background: var(--divider);
113
+ border-radius: 99px;
114
+ overflow: hidden;
115
+ position: relative;
116
+ }
117
+
118
+ .timespan-bar-fill {
119
+ position: absolute;
120
+ left: 0;
121
+ width: 0;
122
+ height: 100%;
123
+ background: var(--accent-color);
124
+ border-radius: inherit;
125
+ transition: left 0.3s ease, width 0.3s ease;
126
+
127
+ .timespan-picker.is-error ~ .timespan-bar & {
128
+ background: var(--error);
129
+ }
130
+ }
131
+
132
+ @media (max-width: 480px) {
133
+ .timespan-picker {
134
+ flex-direction: column;
135
+ }
136
+
137
+ .timespan-center {
138
+ flex-direction: row;
139
+ justify-content: space-between;
140
+ border-left: none;
141
+ border-right: none;
142
+ border-top: 1px solid var(--divider);
143
+ border-bottom: 1px solid var(--divider);
144
+ padding: calc($spacing / 2) $spacing;
145
+ min-width: unset;
146
+ }
147
+
148
+ .timespan-field input[type="time"] {
149
+ font-size: 2rem;
150
+ }
151
+ }
package/css/toast.scss CHANGED
@@ -2,80 +2,81 @@
2
2
  @use "parameters" as *;
3
3
 
4
4
  .toast {
5
- display: inline-block;
6
- box-shadow: 0 1px 2px rgba(56, 65, 74, .15);
7
- background: var(--background);
8
- border-radius: $border-radius;
9
- padding: calc($spacing / 2);
10
- min-width: 250px;
5
+ display: flex;
6
+ flex-direction: column;
11
7
  position: fixed;
12
- left: -200px;
13
8
  bottom: $spacing;
14
- z-index: 1;
15
- transition: all 150ms ease-in;
9
+ left: $spacing;
10
+ right: $spacing;
11
+ max-width: 380px;
12
+ margin: 0 auto;
13
+ background: var(--background);
14
+ border-radius: calc($border-radius * 2);
15
+ box-shadow: $shadow, 0 8px 24px rgba(0, 0, 0, 0.12);
16
+ padding: calc($spacing * 0.75) $spacing;
17
+ z-index: 1000;
18
+ overflow: hidden;
19
+ transform: translateY(calc(100% + $spacing * 2));
20
+ opacity: 0;
21
+ transition: transform 300ms cubic-bezier(0.32, 0.72, 0, 1),
22
+ opacity 200ms ease;
16
23
 
17
24
  .bar {
18
- display: block;
19
- height: 4px;
20
- width: 100%;
21
- background: var(--accent-color);
22
25
  position: absolute;
23
- left: 0;
24
26
  top: 0;
25
- border-top-left-radius: $border-radius;
26
- border-top-right-radius: $border-radius;
27
+ left: 0;
28
+ height: 3px;
29
+ width: 100%;
30
+ background: var(--accent-color);
31
+ border-radius: 0 0 2px 2px;
27
32
  transition: width 250ms linear;
28
33
  }
29
34
 
30
35
  &.show {
31
- left: $spacing;
36
+ transform: translateY(0);
37
+ opacity: 1;
32
38
  }
33
39
 
34
- &.success {
35
- color: inherit;
36
-
37
- .bar {
38
- background: var(--success);
39
- }
40
+ &.success .bar {
41
+ background: var(--success);
40
42
  }
41
43
 
42
- &.warning {
43
- color: inherit;
44
-
45
- .bar {
46
- background: var(--warning);
47
- }
48
-
44
+ &.warning .bar {
45
+ background: var(--warning);
49
46
  }
50
47
 
51
- &.error {
52
- color: inherit;
53
-
54
- .bar {
55
- background: var(--error);
56
- }
48
+ &.error .bar {
49
+ background: var(--error);
57
50
  }
58
51
 
59
52
  .close {
60
53
  cursor: pointer;
61
- float: right;
62
- z-index: 999;
63
- position: relative;
54
+ position: absolute;
55
+ top: calc($spacing * 0.75);
56
+ right: calc($spacing * 0.75);
57
+ display: flex;
58
+ align-items: center;
59
+ justify-content: center;
60
+ width: 1.5rem;
61
+ height: 1.5rem;
62
+ border-radius: $border-radius;
63
+ transition: background 150ms ease;
64
+
65
+ &:hover {
66
+ background: var(--secondary-background);
67
+ }
64
68
  }
65
69
 
66
70
  .header {
67
- position: relative;
68
- width: 100%;
69
- padding-right: calc($spacing / 2);
70
- left: calc(-1 * $spacing / 2);
71
- padding-left: calc($spacing / 2);
72
- padding-bottom: calc($spacing / 2);
73
- border-bottom: 1px solid var(--divider);
74
- font-weight: bold;
71
+ padding-right: 1.5rem;
72
+ padding-bottom: calc($spacing / 3);
73
+ font-weight: 700;
75
74
  }
76
75
 
77
76
  .content {
78
- padding-top: calc($spacing / 2);
79
77
  margin: 0;
78
+ color: var(--secondary-text);
79
+ font-size: 0.875rem;
80
+ line-height: 1.5;
80
81
  }
81
82
  }
package/css/tooltip.scss CHANGED
@@ -1,122 +1,112 @@
1
- @use "properties";
2
- @use "parameters" as *;
3
-
4
- .tooltip {
5
- position: fixed;
6
- z-index: 10000;
7
- background: var(--disabled);
8
- color: var(--secondary-text);
9
- border-radius: $border-radius;
10
- padding: $spacing calc($spacing * 1.5);
11
- max-width: 300px;
12
- opacity: 0;
13
- pointer-events: none;
14
- transition: opacity 0.2s ease;
15
- box-shadow: $shadow;
16
- }
17
-
18
- .tooltip.visible {
19
- opacity: 1;
20
- }
21
-
22
- .tooltip-content {
23
- position: relative;
24
- }
25
-
26
- /* Arrow styles */
27
- .tooltip::before {
28
- content: "";
29
- position: absolute;
30
- width: 0;
31
- height: 0;
32
- border: calc($spacing * 0.5) solid transparent;
33
- }
34
-
35
- .tooltip[data-position="top"]::before {
36
- bottom: calc(($spacing / 2) * -1);
37
- left: 50%;
38
- transform: translateX(-50%);
39
- border-top-color: var(--disabled);
40
- border-bottom: 0;
41
- }
42
-
43
- .tooltip[data-position="bottom"]::before {
44
- top: calc(($spacing / 2) * -1);
45
- left: 50%;
46
- transform: translateX(-50%);
47
- border-bottom-color: var(--disabled);
48
- border-top: 0;
49
- }
50
-
51
- .tooltip[data-position="left"]::before {
52
- right: calc(($spacing / 2) * -1);
53
- top: 50%;
54
- transform: translateY(-50%);
55
- border-left-color: var(--disabled);
56
- border-right: 0;
57
- }
58
-
59
- .tooltip[data-position="right"]::before {
60
- left: calc(($spacing / 2) * -1);
61
- top: 50%;
62
- transform: translateY(-50%);
63
- border-right-color: var(--disabled);
64
- border-left: 0;
65
- }
66
-
67
- .tooltip-content code {
68
- padding: 2px 6px;
69
- font-family: "Courier New", monospace;
70
- font-size: 0.9em;
71
- }
72
-
73
- .tooltip.tooltip-info {
74
- background: var(--accent-color);
75
- }
76
-
77
- .tooltip.tooltip-info::before {
78
- border-top-color: var(--accent-color);
79
- border-bottom-color: var(--accent-color);
80
- border-left-color: var(--accent-color);
81
- border-right-color: var(--accent-color);
82
- }
83
-
84
- .tooltip.tooltip-success {
85
- background: var(--success);
86
- }
87
-
88
- .tooltip.tooltip-success::before {
89
- border-top-color: var(--success);
90
- border-bottom-color: var(--success);
91
- border-left-color: var(--success);
92
- border-right-color: var(--success);
93
- }
94
-
95
- .tooltip.tooltip-warning {
96
- background: var(--warning);
97
- color: var(--disabled);
98
- }
99
-
100
- .tooltip.tooltip-warning::before {
101
- border-top-color: var(--warning);
102
- border-bottom-color: var(--warning);
103
- border-left-color: var(--warning);
104
- border-right-color: var(--warning);
105
- }
106
-
107
- .tooltip.tooltip-error {
108
- background: var(--error);
109
- }
110
-
111
- .tooltip.tooltip-error::before {
112
- border-top-color: var(--error);
113
- border-bottom-color: var(--error);
114
- border-left-color: var(--error);
115
- border-right-color: var(--error);
116
- }
117
-
118
- /* Large tooltip variant */
119
- .tooltip.tooltip-large {
120
- max-width: 500px;
121
- padding: $spacing calc($spacing * 1.5);
122
- }
1
+ @use "properties";
2
+ @use "parameters" as *;
3
+
4
+ .tooltip {
5
+ --tooltip-bg: var(--divider);
6
+ position: fixed;
7
+ z-index: 10000;
8
+ background: var(--divider);
9
+ color: var(--primary-text);
10
+ border-radius: $border-radius;
11
+ padding: 0.4rem 0.7rem;
12
+ max-width: 300px;
13
+ font-size: 0.8rem;
14
+ line-height: 1.4;
15
+ word-break: break-word;
16
+ opacity: 0;
17
+ pointer-events: none;
18
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
19
+ transition: opacity 0.2s ease, transform 0.2s ease;
20
+
21
+ &[data-position="top"] { transform: translateY(4px); }
22
+ &[data-position="bottom"] { transform: translateY(-4px); }
23
+ &[data-position="left"] { transform: translateX(4px); }
24
+ &[data-position="right"] { transform: translateX(-4px); }
25
+
26
+ &.visible {
27
+ opacity: 1;
28
+ transform: translate(0);
29
+ }
30
+
31
+ // ── Arrow ─────────────────────────────────────────────────
32
+ &::before {
33
+ content: "";
34
+ position: absolute;
35
+ width: 0;
36
+ height: 0;
37
+ border: 5px solid transparent;
38
+ }
39
+
40
+ &[data-position="top"]::before {
41
+ bottom: -5px;
42
+ left: 50%;
43
+ transform: translateX(-50%);
44
+ border-top-color: var(--tooltip-bg);
45
+ border-bottom: none;
46
+ }
47
+
48
+ &[data-position="bottom"]::before {
49
+ top: -5px;
50
+ left: 50%;
51
+ transform: translateX(-50%);
52
+ border-bottom-color: var(--tooltip-bg);
53
+ border-top: none;
54
+ }
55
+
56
+ &[data-position="left"]::before {
57
+ right: -5px;
58
+ top: 50%;
59
+ transform: translateY(-50%);
60
+ border-left-color: var(--tooltip-bg);
61
+ border-right: none;
62
+ }
63
+
64
+ &[data-position="right"]::before {
65
+ left: -5px;
66
+ top: 50%;
67
+ transform: translateY(-50%);
68
+ border-right-color: var(--tooltip-bg);
69
+ border-left: none;
70
+ }
71
+
72
+ // ── Variants ──────────────────────────────────────────────
73
+ &.tooltip-info {
74
+ --tooltip-bg: var(--accent-color);
75
+ background: var(--accent-color);
76
+ color: var(--accent-color-text);
77
+ }
78
+
79
+ &.tooltip-success {
80
+ --tooltip-bg: var(--success);
81
+ background: var(--success);
82
+ color: var(--background);
83
+ }
84
+
85
+ &.tooltip-warning {
86
+ --tooltip-bg: var(--warning);
87
+ background: var(--warning);
88
+ color: var(--background);
89
+ }
90
+
91
+ &.tooltip-error {
92
+ --tooltip-bg: var(--error);
93
+ background: var(--error);
94
+ color: var(--background);
95
+ }
96
+
97
+ // ── Size variant ──────────────────────────────────────────
98
+ &.tooltip-large {
99
+ max-width: 500px;
100
+ font-size: 0.875rem;
101
+ padding: 0.6rem 0.9rem;
102
+ }
103
+
104
+ // ── Code inside tooltip ───────────────────────────────────
105
+ code {
106
+ padding: 1px 5px;
107
+ font-family: "Courier New", monospace;
108
+ font-size: 0.9em;
109
+ background: rgba(255, 255, 255, 0.15);
110
+ border-radius: calc($border-radius / 2);
111
+ }
112
+ }