@dodlhuat/basix 1.0.0 → 1.1.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.
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 +3 -2
  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
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Basix 1.0.0
1
+ # Basix 1.1.0
2
2
 
3
3
  Basix is intended as a starter for the rapid development of a design. Each design element can be added individually to
4
4
  include only the data required. It is using plain javascript / typescript and therefore is not dependent on any plugin.
@@ -6,7 +6,6 @@
6
6
  border: 1px solid var(--divider);
7
7
  border-radius: $border-radius;
8
8
  overflow: hidden;
9
- box-shadow: $shadow;
10
9
  }
11
10
 
12
11
  .accordion-item {
@@ -25,42 +24,50 @@
25
24
  display: flex;
26
25
  justify-content: space-between;
27
26
  align-items: center;
28
- padding: $spacing calc($spacing * 1.5);
29
- background: var(--divider);
30
- font-weight: 600;
27
+ padding: calc($spacing * 0.85) calc($spacing * 1.25);
28
+ background: transparent;
29
+ font-weight: 500;
31
30
  cursor: pointer;
32
- transition: background-color 0.2s ease;
31
+ transition: background 160ms ease,
32
+ color 160ms ease;
33
33
  user-select: none;
34
- }
34
+ -webkit-tap-highlight-color: transparent;
35
+
36
+ &:hover {
37
+ background: var(--hover);
38
+ }
35
39
 
36
- .accordion-label:hover {
37
- background: var(--accent-color-lighten);
40
+ &:active {
41
+ background: var(--hover);
42
+ }
38
43
  }
39
44
 
40
45
  .accordion-label::after {
41
46
  content: '';
42
- width: 10px;
43
- height: 10px;
44
- border-right: 2px solid currentColor;
45
- border-bottom: 2px solid currentColor;
47
+ width: 8px;
48
+ height: 8px;
49
+ border-right: 1.5px solid var(--secondary-text);
50
+ border-bottom: 1.5px solid var(--secondary-text);
46
51
  transform: rotate(45deg);
47
- transition: transform 0.3s ease;
52
+ transition: transform 250ms cubic-bezier(0.4, 0, 0.2, 1),
53
+ border-color 160ms ease;
48
54
  margin-left: $spacing;
55
+ flex-shrink: 0;
49
56
  }
50
57
 
51
58
  .accordion-input:checked + .accordion-label {
52
- background: var(--accent-color);
53
- color: var(--acc-accent);
54
- }
59
+ color: var(--accent-color);
55
60
 
56
- .accordion-input:checked + .accordion-label::after {
57
- transform: rotate(-135deg);
61
+ &::after {
62
+ transform: rotate(-135deg);
63
+ border-color: var(--accent-color);
64
+ }
58
65
  }
59
66
 
60
67
  .accordion-content {
61
68
  display: grid;
62
69
  grid-template-rows: 0fr;
63
- transition: grid-template-rows 0.3s ease-out;
70
+ transition: grid-template-rows 300ms cubic-bezier(0.4, 0, 0.2, 1);
64
71
  overflow: hidden;
65
72
  }
66
73
 
@@ -69,10 +76,12 @@
69
76
  }
70
77
 
71
78
  .accordion-body > div {
72
- padding: calc($spacing * 1.5);
73
- border-top: 1px solid transparent;
79
+ padding: 0 calc($spacing * 1.25) calc($spacing * 1.25);
80
+ color: var(--secondary-text);
81
+ font-size: 0.9rem;
82
+ line-height: 1.6;
74
83
  }
75
84
 
76
85
  .accordion-input:checked ~ .accordion-content {
77
86
  grid-template-rows: 1fr;
78
- }
87
+ }
package/css/alert.scss CHANGED
@@ -1,23 +1,43 @@
1
1
  @use "properties";
2
2
  @use "parameters" as *;
3
3
 
4
- $alert-border-width: calc($spacing / 2);
5
- $alert-border-darken: 20%;
4
+ $alert-border-width: 4px;
6
5
 
7
- @mixin alert-variant($bg-color, $text-color: var(--divider)) {
8
- background: $bg-color;
9
- border-left-color: color-mix(in srgb, $bg-color 80%, black);
10
- color: $text-color;
6
+ @mixin alert-variant($accent, $bg-tint) {
7
+ background: $bg-tint;
8
+ border-left-color: $accent;
9
+ color: var(--primary-text);
10
+
11
+ strong {
12
+ color: $accent;
13
+ }
14
+
15
+ .alert-icon {
16
+ fill: $accent;
17
+ }
18
+
19
+ .alert-close:hover {
20
+ background: color-mix(in srgb, $accent 12%, transparent);
21
+ }
11
22
  }
12
23
 
13
24
  .alert {
14
25
  position: relative;
15
26
  border-radius: $border-radius;
16
- padding: calc($spacing) calc($spacing) calc($spacing) calc($spacing + $alert-border-width);
17
- border-left: $alert-border-width solid;
27
+ padding: calc($spacing * 0.75) $spacing calc($spacing * 0.75) calc($spacing + $alert-border-width);
28
+ border-left: $alert-border-width solid transparent;
18
29
  color: var(--primary-text);
19
- box-shadow: $shadow;
20
- line-height: 1.5;
30
+ line-height: 1.6;
31
+ font-size: 0.9rem;
32
+
33
+ & + & {
34
+ margin-top: calc($spacing / 2);
35
+ }
36
+
37
+ strong {
38
+ font-weight: 600;
39
+ letter-spacing: -0.01em;
40
+ }
21
41
 
22
42
  &-default {
23
43
  background: var(--secondary-background);
@@ -26,36 +46,49 @@ $alert-border-darken: 20%;
26
46
  }
27
47
 
28
48
  &-info {
29
- @include alert-variant(var(--accent-color));
49
+ @include alert-variant(
50
+ var(--accent-color),
51
+ color-mix(in srgb, var(--accent-color) 8%, var(--background))
52
+ );
30
53
  }
31
54
 
32
55
  &-success {
33
- @include alert-variant(var(--success));
56
+ @include alert-variant(
57
+ var(--success),
58
+ color-mix(in srgb, var(--success) 8%, var(--background))
59
+ );
34
60
  }
35
61
 
36
62
  &-warning {
37
- @include alert-variant(var(--warning));
63
+ @include alert-variant(
64
+ var(--warning),
65
+ color-mix(in srgb, var(--warning) 8%, var(--background))
66
+ );
38
67
  }
39
68
 
40
69
  &-error {
41
- @include alert-variant(var(--error));
70
+ @include alert-variant(
71
+ var(--error),
72
+ color-mix(in srgb, var(--error) 8%, var(--background))
73
+ );
42
74
  }
43
75
 
44
76
  &-dismissible {
45
- padding-right: calc($spacing * 5);
77
+ padding-right: calc($spacing * 3);
46
78
 
47
79
  .alert-close {
48
80
  position: absolute;
49
81
  top: 50%;
50
- right: calc($spacing * 1.5);
82
+ right: calc($spacing * 0.75);
51
83
  transform: translateY(-50%);
52
84
  background: transparent;
53
85
  border: none;
86
+ border-radius: $border-radius;
54
87
  cursor: pointer;
55
- padding: calc($spacing) calc($spacing * 1.5) calc($spacing) calc($spacing * 1.5 + $alert-border-width);
88
+ padding: calc($spacing / 4) calc($spacing / 2);
56
89
  color: inherit;
57
- opacity: 0.7;
58
- transition: opacity 0.2s ease;
90
+ opacity: 0.5;
91
+ transition: opacity 0.2s ease, background 0.2s ease;
59
92
 
60
93
  &:hover {
61
94
  opacity: 1;
@@ -64,23 +97,42 @@ $alert-border-darken: 20%;
64
97
  }
65
98
 
66
99
  .alert-icon {
100
+ width: 1.1em;
101
+ height: 1.1em;
67
102
  margin-right: calc($spacing / 2);
68
- vertical-align: middle;
103
+ vertical-align: -0.15em;
104
+ fill: currentColor;
69
105
  }
70
106
  }
71
107
 
72
108
  [data-theme="dark"] {
73
109
  .alert {
74
- &-default {
75
- background: var(--secondary-background);
76
- border-left-color: var(--divider);
110
+ &-info {
111
+ @include alert-variant(
112
+ var(--accent-color),
113
+ color-mix(in srgb, var(--accent-color) 10%, var(--background))
114
+ );
115
+ }
116
+
117
+ &-success {
118
+ @include alert-variant(
119
+ var(--success),
120
+ color-mix(in srgb, var(--success) 10%, var(--background))
121
+ );
122
+ }
123
+
124
+ &-warning {
125
+ @include alert-variant(
126
+ var(--warning),
127
+ color-mix(in srgb, var(--warning) 10%, var(--background))
128
+ );
77
129
  }
78
130
 
79
- &-info,
80
- &-success,
81
- &-warning,
82
131
  &-error {
83
- filter: brightness(0.9);
132
+ @include alert-variant(
133
+ var(--error),
134
+ color-mix(in srgb, var(--error) 10%, var(--background))
135
+ );
84
136
  }
85
137
  }
86
138
  }
package/css/button.scss CHANGED
@@ -1,102 +1,151 @@
1
- @use "properties";
2
- @use "parameters" as *;
3
-
4
- // Base button styles
5
- button,
6
- .button {
7
- padding: $spacing $spacing * 2;
8
- border-radius: $border-radius;
9
- background: var(--divider);
10
- color: var(--primary-text);
11
- border: none;
12
- cursor: pointer;
13
- font-family: inherit;
14
- font-size: inherit;
15
- line-height: 1;
16
- transition: filter 0.2s ease;
17
-
18
- // Hover state
19
- &:hover:not(:disabled) {
20
- filter: brightness(115%);
21
- }
22
-
23
- // Focus state for accessibility
24
- &:focus-visible {
25
- outline: 2px solid var(--accent-color);
26
- outline-offset: 2px;
27
- }
28
-
29
- // Active state
30
- &.active {
31
- background: var(--accent-color-lighten);
32
- }
33
-
34
- // Disabled state
35
- &:disabled {
36
- opacity: 0.5;
37
- cursor: not-allowed;
38
- }
39
- }
40
-
41
- // Button variants
42
- .button-primary,
43
- button.button-primary {
44
- background: var(--accent-color);
45
- color: var(--divider);
46
- }
47
-
48
- .button-success,
49
- button.button-success {
50
- background: var(--success);
51
- color: var(--divider);
52
- }
53
-
54
- .button-warning,
55
- button.button-warning {
56
- background: var(--warning);
57
- color: var(--divider);
58
- }
59
-
60
- .button-error,
61
- button.button-error {
62
- background: var(--error);
63
- color: var(--divider);
64
- }
65
-
66
- // Button group
67
- .button-group {
68
- display: inline-flex;
69
- gap: 0;
70
-
71
- button,
72
- .button {
73
- border-radius: 0;
74
-
75
- &:first-child {
76
- border-radius: $border-radius 0 0 $border-radius;
77
- }
78
-
79
- &:last-child {
80
- border-radius: 0 $border-radius $border-radius 0;
81
- }
82
-
83
- &:only-child {
84
- border-radius: $border-radius;
85
- }
86
- }
87
- }
88
-
89
- // Dark theme overrides
90
- [data-theme="dark"] {
91
- button,
92
- .button {
93
- &:hover:not(:disabled) {
94
- filter: brightness(85%);
95
- }
96
- }
97
-
98
- .button-primary,
99
- button.button-primary {
100
- color: var(--primary-text);
101
- }
102
- }
1
+ @use "properties";
2
+ @use "parameters" as *;
3
+
4
+ @mixin button-variant($bg) {
5
+ background: $bg;
6
+ color: var(--background);
7
+
8
+ &:hover:not(:disabled) {
9
+ background: color-mix(in srgb, $bg 85%, black);
10
+ }
11
+
12
+ &:active:not(:disabled) {
13
+ background: color-mix(in srgb, $bg 75%, black);
14
+ }
15
+ }
16
+
17
+ @mixin button-variant-dark($bg) {
18
+ color: var(--primary-text);
19
+
20
+ &:hover:not(:disabled) {
21
+ background: color-mix(in srgb, $bg 82%, white);
22
+ }
23
+
24
+ &:active:not(:disabled) {
25
+ background: color-mix(in srgb, $bg 70%, white);
26
+ }
27
+ }
28
+
29
+ button,
30
+ .button {
31
+ display: inline-flex;
32
+ align-items: center;
33
+ justify-content: center;
34
+ gap: calc($spacing / 3);
35
+ padding: calc($spacing * 0.6) calc($spacing * 1.25);
36
+ border-radius: $border-radius;
37
+ background: var(--secondary-background);
38
+ color: var(--primary-text);
39
+ border: none;
40
+ cursor: pointer;
41
+ font-family: inherit;
42
+ font-size: inherit;
43
+ font-weight: 500;
44
+ line-height: 1;
45
+ white-space: nowrap;
46
+ transition: background 0.15s ease, transform 0.1s ease, box-shadow 0.15s ease;
47
+
48
+ &:hover:not(:disabled) {
49
+ background: var(--divider);
50
+ }
51
+
52
+ &:active:not(:disabled) {
53
+ transform: scale(0.97);
54
+ }
55
+
56
+ &:focus-visible {
57
+ outline: none;
58
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent-color) 35%, transparent);
59
+ }
60
+
61
+ &.active {
62
+ background: var(--divider);
63
+ color: var(--accent-color);
64
+ }
65
+
66
+ &:disabled {
67
+ opacity: 0.45;
68
+ cursor: not-allowed;
69
+ }
70
+ }
71
+
72
+ .button-primary,
73
+ button.button-primary {
74
+ @include button-variant(var(--accent-color));
75
+ }
76
+
77
+ .button-success,
78
+ button.button-success {
79
+ @include button-variant(var(--success));
80
+ }
81
+
82
+ .button-warning,
83
+ button.button-warning {
84
+ @include button-variant(var(--warning));
85
+ }
86
+
87
+ .button-error,
88
+ button.button-error {
89
+ @include button-variant(var(--error));
90
+ }
91
+
92
+ .button-group {
93
+ display: inline-flex;
94
+
95
+ button,
96
+ .button {
97
+ border-radius: 0;
98
+ position: relative;
99
+
100
+ &:not(:last-child)::after {
101
+ content: "";
102
+ position: absolute;
103
+ right: 0;
104
+ top: 20%;
105
+ height: 60%;
106
+ width: 1px;
107
+ background: color-mix(in srgb, currentColor 15%, transparent);
108
+ }
109
+
110
+ &:first-child {
111
+ border-radius: $border-radius 0 0 $border-radius;
112
+ }
113
+
114
+ &:last-child {
115
+ border-radius: 0 $border-radius $border-radius 0;
116
+ }
117
+
118
+ &:only-child {
119
+ border-radius: $border-radius;
120
+ }
121
+ }
122
+ }
123
+
124
+ [data-theme="dark"] {
125
+ button,
126
+ .button {
127
+ &:hover:not(:disabled) {
128
+ background: var(--divider);
129
+ }
130
+ }
131
+
132
+ .button-primary,
133
+ button.button-primary {
134
+ @include button-variant-dark(var(--accent-color));
135
+ }
136
+
137
+ .button-success,
138
+ button.button-success {
139
+ @include button-variant-dark(var(--success));
140
+ }
141
+
142
+ .button-warning,
143
+ button.button-warning {
144
+ @include button-variant-dark(var(--warning));
145
+ }
146
+
147
+ .button-error,
148
+ button.button-error {
149
+ @include button-variant-dark(var(--error));
150
+ }
151
+ }
package/css/card.scss CHANGED
@@ -10,26 +10,26 @@
10
10
  padding: $spacing;
11
11
  position: relative;
12
12
  overflow: hidden;
13
+ display: flex;
14
+ flex-direction: column;
15
+
16
+ &.row {
17
+ flex-direction: row;
18
+ }
13
19
 
14
20
  // Card header
15
- .header {
21
+ .card-header {
16
22
  border-bottom: 1px solid var(--divider);
17
- margin: -$spacing -$spacing $spacing -$spacing;
23
+ margin: (-$spacing) (-$spacing) $spacing (-$spacing);
18
24
  padding: $spacing;
19
25
  }
20
26
 
21
27
  // Card footer
22
- .footer {
28
+ .card-footer {
23
29
  border-top: 1px solid var(--divider);
24
- margin: $spacing -$spacing -$spacing -$spacing;
30
+ margin: auto (-$spacing) (-$spacing) (-$spacing);
25
31
  padding: $spacing;
26
32
  }
27
-
28
- // Card body/content
29
- .body,
30
- .content {
31
- padding: 0;
32
- }
33
33
  }
34
34
 
35
35
  // Card variants
@@ -46,7 +46,7 @@
46
46
  transition: box-shadow 0.3s ease, transform 0.3s ease;
47
47
 
48
48
  &:hover {
49
- box-shadow: 0 4px 8px rgba(56, 65, 74, 0.2);
49
+ box-shadow: 0 4px 8px var(--divider);
50
50
  transform: translateY(-2px);
51
51
  }
52
52
  }
@@ -63,4 +63,3 @@
63
63
  .card-padding-lg {
64
64
  padding: calc($spacing * 2);
65
65
  }
66
-