@paroicms/react-ui 0.5.2 → 0.5.4

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 (53) hide show
  1. package/dist/Breadcrumb.d.ts +1 -0
  2. package/dist/Breadcrumb.js +4 -1
  3. package/dist/DataTable.js +1 -1
  4. package/dist/InputSwitch.d.ts +10 -0
  5. package/dist/InputSwitch.js +10 -0
  6. package/dist/MenuItem.js +2 -2
  7. package/dist/PopupMenu.d.ts +4 -2
  8. package/dist/PopupMenu.js +11 -4
  9. package/dist/SideMenu.js +13 -2
  10. package/dist/SortableList.js +1 -2
  11. package/dist/Spinner.d.ts +5 -1
  12. package/dist/Spinner.js +3 -2
  13. package/dist/SplitButton.js +2 -3
  14. package/dist/Tabs.js +1 -1
  15. package/dist/ToggleButton.d.ts +2 -1
  16. package/dist/ToggleButton.js +2 -2
  17. package/dist/ToggleGroup.js +1 -1
  18. package/dist/index.d.ts +1 -1
  19. package/dist/index.js +1 -1
  20. package/dist/paroi-ui-lib-types.d.ts +5 -1
  21. package/dist/popup-positioning.js +3 -2
  22. package/package.json +1 -1
  23. package/styles/Accordion.css +7 -0
  24. package/styles/Alert.css +7 -1
  25. package/styles/Breadcrumb.css +20 -11
  26. package/styles/Button.css +46 -10
  27. package/styles/Checkbox.css +3 -1
  28. package/styles/Chip.css +7 -1
  29. package/styles/DataTable.css +19 -9
  30. package/styles/DateInput.css +3 -0
  31. package/styles/Dialog.css +7 -1
  32. package/styles/Inplace.css +15 -2
  33. package/styles/InputNumber.css +4 -3
  34. package/styles/{Switch.css → InputSwitch.css} +10 -10
  35. package/styles/InputText.css +18 -13
  36. package/styles/MenuItem.css +47 -45
  37. package/styles/MultiSelect.css +11 -5
  38. package/styles/Panel.css +8 -1
  39. package/styles/PasswordInput.css +17 -5
  40. package/styles/PopupMenu.css +19 -0
  41. package/styles/RadioButton.css +3 -1
  42. package/styles/Select.css +16 -5
  43. package/styles/Spinner.css +8 -4
  44. package/styles/SplitButton.css +128 -36
  45. package/styles/Tabs.css +11 -3
  46. package/styles/Textarea.css +4 -3
  47. package/styles/ToggleButton.css +126 -12
  48. package/styles/ToggleGroup.css +6 -4
  49. package/styles/Tree.css +7 -1
  50. package/styles/theme/common.css +4 -4
  51. package/styles/theme/tokens.css +14 -1
  52. package/dist/Switch.d.ts +0 -9
  53. package/dist/Switch.js +0 -12
@@ -2,7 +2,6 @@
2
2
  Data Table
3
3
  ======================================== */
4
4
  .PaDataTable {
5
- width: 100%;
6
5
  overflow: hidden;
7
6
  border-spacing: 0;
8
7
  border-collapse: separate;
@@ -29,9 +28,15 @@
29
28
  cursor: pointer;
30
29
  transition: color var(--transition);
31
30
 
32
- &:hover {
31
+ &:hover:not(.disabled) {
33
32
  color: var(--color-text);
34
33
  }
34
+
35
+ &.disabled {
36
+ color: var(--color-text-light);
37
+ pointer-events: none;
38
+ cursor: not-allowed;
39
+ }
35
40
  }
36
41
 
37
42
  .PaDataTable-row {
@@ -43,18 +48,20 @@
43
48
 
44
49
  &.clickable {
45
50
  cursor: pointer;
46
- &:hover {
51
+
52
+ &:hover:not(.disabled):not(.unselectable) {
47
53
  background: var(--color-primary-light);
48
54
  }
55
+
56
+ &.disabled {
57
+ pointer-events: none;
58
+ cursor: not-allowed;
59
+ }
49
60
  }
50
61
 
51
62
  &.unselectable {
52
63
  cursor: not-allowed;
53
-
54
- &,
55
- &:hover {
56
- background-color: var(--color-bg-muted);
57
- }
64
+ background-color: var(--color-bg-muted);
58
65
 
59
66
  & .PaDataTable-cell {
60
67
  color: var(--color-text-muted);
@@ -150,6 +157,8 @@
150
157
  display: flex;
151
158
  align-items: center;
152
159
  justify-content: center;
160
+ width: 40px;
161
+ height: 40px;
153
162
  padding: var(--space-1) var(--space-2);
154
163
  cursor: pointer;
155
164
  background: var(--color-bg);
@@ -161,8 +170,9 @@
161
170
  }
162
171
 
163
172
  &:disabled {
173
+ color: var(--color-text-muted);
164
174
  cursor: not-allowed;
165
- opacity: 0.5;
175
+ background: var(--color-bg-muted);
166
176
  }
167
177
  }
168
178
 
@@ -1,6 +1,9 @@
1
1
  /* ========================================
2
2
  DateInput Component
3
3
  ======================================== */
4
+ ._paForm input[type="date"],
5
+ ._paForm input[type="datetime-local"],
6
+ ._paForm input[type="time"],
4
7
  .PaDateTimeInput {
5
8
  padding: var(--space-2) var(--space-3);
6
9
  font-family: inherit;
package/styles/Dialog.css CHANGED
@@ -69,10 +69,16 @@
69
69
  border-radius: var(--radius);
70
70
  transition: all var(--transition);
71
71
 
72
- &:hover {
72
+ &:hover:not(:disabled) {
73
73
  color: var(--color-text);
74
74
  background: var(--color-bg-subtle);
75
75
  }
76
+
77
+ &:disabled {
78
+ color: var(--color-text-light);
79
+ pointer-events: none;
80
+ cursor: not-allowed;
81
+ }
76
82
  }
77
83
 
78
84
  .PaDialog-content {
@@ -9,10 +9,17 @@
9
9
  border-radius: var(--radius);
10
10
  transition: all var(--transition);
11
11
 
12
- &:hover {
12
+ &:hover:not(:disabled):not(.disabled) {
13
13
  background: var(--color-bg-subtle);
14
14
  border-color: var(--color-border);
15
15
  }
16
+
17
+ &:disabled,
18
+ &.disabled {
19
+ color: var(--color-text-muted);
20
+ pointer-events: none;
21
+ cursor: not-allowed;
22
+ }
16
23
  }
17
24
 
18
25
  &.active {
@@ -37,8 +44,14 @@
37
44
  border-radius: var(--radius);
38
45
  transition: all var(--transition);
39
46
 
40
- &:hover {
47
+ &:hover:not(:disabled) {
41
48
  color: var(--color-text);
42
49
  background: var(--color-bg-subtle);
43
50
  }
51
+
52
+ &:disabled {
53
+ color: var(--color-text-light);
54
+ pointer-events: none;
55
+ cursor: not-allowed;
56
+ }
44
57
  }
@@ -1,8 +1,8 @@
1
1
  /* ========================================
2
2
  InputNumber Component
3
3
  ======================================== */
4
+ ._paForm input[type="number"],
4
5
  .PaNumberInput {
5
- width: 100%;
6
6
  padding: var(--space-2) var(--space-3);
7
7
  font-family: inherit;
8
8
  font-size: var(--text-base);
@@ -26,9 +26,10 @@
26
26
  }
27
27
 
28
28
  &:disabled {
29
+ color: var(--color-text-muted);
29
30
  cursor: not-allowed;
30
- background: var(--color-bg-subtle);
31
- opacity: 0.7;
31
+ background: var(--color-bg-muted);
32
+ border-color: var(--color-border-light);
32
33
  }
33
34
 
34
35
  &.error {
@@ -1,7 +1,7 @@
1
1
  /* ========================================
2
2
  Switch Component
3
3
  ======================================== */
4
- .PaSwitch {
4
+ .PaInputSwitch {
5
5
  display: inline-flex;
6
6
  gap: var(--space-3);
7
7
  align-items: center;
@@ -9,14 +9,14 @@
9
9
  user-select: none;
10
10
  }
11
11
 
12
- .PaSwitch-input {
12
+ .PaInputSwitch-input {
13
13
  position: absolute;
14
14
  width: 0;
15
15
  height: 0;
16
16
  opacity: 0;
17
17
  }
18
18
 
19
- .PaSwitch-track {
19
+ .PaInputSwitch-track {
20
20
  position: relative;
21
21
  width: 42px;
22
22
  height: 22px;
@@ -24,21 +24,21 @@
24
24
  border-radius: var(--radius-full);
25
25
  transition: background-color var(--transition);
26
26
 
27
- .PaSwitch-input:checked + & {
27
+ .PaInputSwitch-input:checked + & {
28
28
  background: var(--color-primary);
29
29
  }
30
30
 
31
- .PaSwitch-input:focus + & {
31
+ .PaInputSwitch-input:focus + & {
32
32
  box-shadow: 0 0 0 3px var(--color-primary-light);
33
33
  }
34
34
 
35
- .PaSwitch-input:disabled + & {
35
+ .PaInputSwitch-input:disabled + & {
36
36
  cursor: not-allowed;
37
- opacity: 0.5;
37
+ background: var(--color-border-disabled);
38
38
  }
39
39
  }
40
40
 
41
- .PaSwitch-thumb {
41
+ .PaInputSwitch-thumb {
42
42
  position: absolute;
43
43
  top: 2px;
44
44
  left: 2px;
@@ -49,12 +49,12 @@
49
49
  box-shadow: var(--shadow-xs);
50
50
  transition: transform var(--transition);
51
51
 
52
- .PaSwitch-input:checked + .PaSwitch-track & {
52
+ .PaInputSwitch-input:checked + .PaInputSwitch-track & {
53
53
  transform: translateX(20px);
54
54
  }
55
55
  }
56
56
 
57
- .PaSwitch-label {
57
+ .PaInputSwitch-label {
58
58
  font-size: var(--text-sm);
59
59
  color: var(--color-text);
60
60
  }
@@ -11,8 +11,22 @@
11
11
  }
12
12
  }
13
13
 
14
+ .PaTextField-row {
15
+ display: flex;
16
+ gap: var(--space-1);
17
+
18
+ .PaTextInput {
19
+ flex: 1;
20
+ min-width: 0;
21
+ }
22
+ }
23
+
24
+ ._paForm input[type="text"],
25
+ ._paForm input[type="email"],
26
+ ._paForm input[type="url"],
27
+ ._paForm input[type="search"],
28
+ ._paForm input[type="tel"],
14
29
  .PaTextInput {
15
- width: 100%;
16
30
  padding: var(--space-2) var(--space-3);
17
31
  font-family: inherit;
18
32
  font-size: var(--text-base);
@@ -36,19 +50,10 @@
36
50
  }
37
51
 
38
52
  &:disabled {
53
+ color: var(--color-text-muted);
39
54
  cursor: not-allowed;
40
- background: var(--color-bg-subtle);
41
- opacity: 0.7;
42
- }
43
- }
44
-
45
- .PaTextField-row {
46
- display: flex;
47
- gap: var(--space-1);
48
-
49
- .PaTextInput {
50
- flex: 1;
51
- min-width: 0;
55
+ background: var(--color-bg-muted);
56
+ border-color: var(--color-border-light);
52
57
  }
53
58
  }
54
59
 
@@ -8,11 +8,6 @@
8
8
  &.active {
9
9
  background: var(--color-bg-subtle);
10
10
  }
11
-
12
- &.disabled {
13
- cursor: not-allowed;
14
- opacity: 0.5;
15
- }
16
11
  }
17
12
 
18
13
  .PaMenuItem-left {
@@ -49,6 +44,13 @@
49
44
  background: transparent;
50
45
  border: none;
51
46
 
47
+ &:disabled,
48
+ &.disabled {
49
+ color: var(--color-text-muted);
50
+ pointer-events: none;
51
+ cursor: not-allowed;
52
+ }
53
+
52
54
  /* Only apply hover to clickable elements (a, button) */
53
55
  /* &:is(a, button):hover {
54
56
  background: var(--color-bg-subtle);
@@ -79,14 +81,14 @@
79
81
 
80
82
  & .PaMenuItem-label {
81
83
  padding: var(--space-3) var(--space-2);
84
+ }
82
85
 
83
- &:is(a, button):hover {
84
- color: #fff;
85
- background: var(--color-hover-sidebar-dark);
86
- }
86
+ &:not(.disabled) .PaMenuItem-label:is(a, button):hover {
87
+ color: #fff;
88
+ background: var(--color-hover-sidebar-dark);
87
89
  }
88
90
 
89
- & .PaMenuItem-left.toggle:hover {
91
+ &:not(.disabled) .PaMenuItem-left.toggle:hover {
90
92
  color: #fff;
91
93
  background: var(--color-hover-sidebar-dark);
92
94
  }
@@ -101,23 +103,23 @@
101
103
  &.active {
102
104
  color: var(--color-text-inverse);
103
105
  background: var(--color-primary);
106
+ }
104
107
 
105
- & .PaMenuItem-label:is(a, button):hover {
106
- color: var(--color-text-inverse);
107
- background: var(--color-primary-hover);
108
- }
109
-
110
- & .PaMenuItem-left.toggle:hover {
111
- color: var(--color-text-inverse);
112
- background: var(--color-primary-hover);
113
- }
114
-
115
- /* & .PaMenuItem-popup .PaBtn.secondary.outlined:hover {
116
- color: var(--color-text-inverse);
117
- background: var(--color-primary-hover);
118
- border-color: var(--color-primary-hover);
119
- } */
108
+ &.active:not(.disabled) .PaMenuItem-label:is(a, button):hover {
109
+ color: var(--color-text-inverse);
110
+ background: var(--color-primary-hover);
111
+ }
112
+
113
+ &.active:not(.disabled) .PaMenuItem-left.toggle:hover {
114
+ color: var(--color-text-inverse);
115
+ background: var(--color-primary-hover);
120
116
  }
117
+
118
+ /* & .PaMenuItem-popup .PaBtn.secondary.outlined:hover {
119
+ color: var(--color-text-inverse);
120
+ background: var(--color-primary-hover);
121
+ border-color: var(--color-primary-hover);
122
+ } */
121
123
  }
122
124
 
123
125
  /* Light Sidebar */
@@ -126,14 +128,14 @@
126
128
 
127
129
  & .PaMenuItem-label {
128
130
  padding: var(--space-3) var(--space-2);
131
+ }
129
132
 
130
- &:is(a, button):hover {
131
- color: var(--color-text);
132
- background: var(--color-hover-sidebar-light);
133
- }
133
+ &:not(.disabled) .PaMenuItem-label:is(a, button):hover {
134
+ color: var(--color-text);
135
+ background: var(--color-hover-sidebar-light);
134
136
  }
135
137
 
136
- & .PaMenuItem-left.toggle:hover {
138
+ &:not(.disabled) .PaMenuItem-left.toggle:hover {
137
139
  color: var(--color-text);
138
140
  background: var(--color-hover-sidebar-light);
139
141
  }
@@ -148,22 +150,22 @@
148
150
  &.active {
149
151
  color: var(--color-text-inverse);
150
152
  background: var(--color-primary);
153
+ }
151
154
 
152
- & .PaMenuItem-label:is(a, button):hover {
153
- color: var(--color-text-inverse);
154
- background: var(--color-primary-hover);
155
- }
156
-
157
- & .PaMenuItem-left.toggle:hover {
158
- color: var(--color-text-inverse);
159
- background: var(--color-primary-hover);
160
- }
161
-
162
- /* & .PaMenuItem-popup .PaBtn.secondary.outlined:hover {
163
- color: var(--color-text-inverse);
164
- background: var(--color-primary-hover);
165
- border-color: var(--color-primary-hover);
166
- } */
155
+ &.active:not(.disabled) .PaMenuItem-label:is(a, button):hover {
156
+ color: var(--color-text-inverse);
157
+ background: var(--color-primary-hover);
158
+ }
159
+
160
+ &.active:not(.disabled) .PaMenuItem-left.toggle:hover {
161
+ color: var(--color-text-inverse);
162
+ background: var(--color-primary-hover);
167
163
  }
164
+
165
+ /* & .PaMenuItem-popup .PaBtn.secondary.outlined:hover {
166
+ color: var(--color-text-inverse);
167
+ background: var(--color-primary-hover);
168
+ border-color: var(--color-primary-hover);
169
+ } */
168
170
  }
169
171
  }
@@ -13,7 +13,12 @@
13
13
 
14
14
  &.disabled {
15
15
  cursor: not-allowed;
16
- opacity: 0.5;
16
+
17
+ .PaMultiSelect-control {
18
+ color: var(--color-text-muted);
19
+ background: var(--color-bg-muted);
20
+ border-color: var(--color-border-light);
21
+ }
17
22
  }
18
23
  }
19
24
 
@@ -41,7 +46,7 @@
41
46
  border-radius: var(--radius);
42
47
  transition: border-color var(--transition);
43
48
 
44
- &:hover {
49
+ .PaMultiSelect:not(.disabled) &:hover {
45
50
  border-color: var(--color-primary);
46
51
  }
47
52
 
@@ -88,7 +93,7 @@
88
93
  border: none;
89
94
  transition: color var(--transition);
90
95
 
91
- &:hover {
96
+ .PaMultiSelect:not(.disabled) &:hover {
92
97
  color: var(--color-danger);
93
98
  }
94
99
  }
@@ -122,7 +127,7 @@
122
127
  border-radius: var(--radius);
123
128
  transition: background-color var(--transition);
124
129
 
125
- &:hover {
130
+ &:hover:not(.disabled) {
126
131
  background: var(--color-bg-subtle);
127
132
  }
128
133
 
@@ -132,8 +137,9 @@
132
137
  }
133
138
 
134
139
  &.disabled {
140
+ color: var(--color-text-muted);
135
141
  cursor: not-allowed;
136
- opacity: 0.5;
142
+ background: var(--color-bg-muted);
137
143
  }
138
144
  }
139
145
 
package/styles/Panel.css CHANGED
@@ -17,9 +17,16 @@
17
17
  cursor: pointer;
18
18
  transition: background-color var(--transition);
19
19
 
20
- &:hover {
20
+ &:hover:not(:disabled):not(.disabled) {
21
21
  background: var(--color-bg-subtle);
22
22
  }
23
+
24
+ &:disabled,
25
+ &.disabled {
26
+ color: var(--color-text-muted);
27
+ pointer-events: none;
28
+ cursor: not-allowed;
29
+ }
23
30
  }
24
31
  }
25
32
 
@@ -16,10 +16,10 @@
16
16
  }
17
17
  }
18
18
 
19
+ ._paForm input[type="password"],
19
20
  .PaPasswordInput-input {
20
21
  flex: 1;
21
- width: 100%;
22
- padding: var(--space-2) var(--space-8) var(--space-2) var(--space-3);
22
+ padding: var(--space-2) var(--space-3);
23
23
  font-family: inherit;
24
24
  font-size: var(--text-base);
25
25
  line-height: var(--leading-normal);
@@ -42,12 +42,18 @@
42
42
  }
43
43
 
44
44
  &:disabled {
45
+ color: var(--color-text-muted);
45
46
  cursor: not-allowed;
46
- background: var(--color-bg-subtle);
47
- opacity: 0.7;
47
+ background: var(--color-bg-muted);
48
+ border-color: var(--color-border-light);
48
49
  }
49
50
  }
50
51
 
52
+ /* Override padding for component wrapper with toggle button */
53
+ .PaPasswordInput-input {
54
+ padding-right: var(--space-8);
55
+ }
56
+
51
57
  .PaPasswordInput-toggle {
52
58
  position: absolute;
53
59
  top: 50%;
@@ -63,7 +69,13 @@
63
69
  transform: translateY(-50%);
64
70
  transition: color var(--transition);
65
71
 
66
- &:hover {
72
+ &:hover:not(:disabled) {
67
73
  color: var(--color-text);
68
74
  }
75
+
76
+ &:disabled {
77
+ color: var(--color-text-light);
78
+ pointer-events: none;
79
+ cursor: not-allowed;
80
+ }
69
81
  }
@@ -22,6 +22,13 @@
22
22
  border-radius: var(--radius);
23
23
  transition: background-color var(--transition);
24
24
 
25
+ &:disabled,
26
+ &.disabled {
27
+ pointer-events: none;
28
+ cursor: not-allowed;
29
+ opacity: 0.5;
30
+ }
31
+
25
32
  /* &:hover {
26
33
  background: var(--color-bg-subtle);
27
34
  } */
@@ -35,3 +42,15 @@
35
42
  border-radius: var(--radius-md);
36
43
  box-shadow: var(--shadow-md);
37
44
  }
45
+
46
+ .PaPopupMenu-separator {
47
+ height: 1px;
48
+ margin: var(--space-1) 0;
49
+ background: var(--color-border-light);
50
+ }
51
+
52
+ .PaPopupMenu-footer {
53
+ padding-top: var(--space-2);
54
+ margin-top: var(--space-2);
55
+ border-top: 1px solid var(--color-border-light);
56
+ }
@@ -9,6 +9,7 @@
9
9
  user-select: none;
10
10
  }
11
11
 
12
+ ._paForm input[type="radio"],
12
13
  .PaRadioInput {
13
14
  display: flex;
14
15
  flex-shrink: 0;
@@ -50,7 +51,8 @@
50
51
 
51
52
  &:disabled {
52
53
  cursor: not-allowed;
53
- opacity: 0.5;
54
+ background: var(--color-bg-muted);
55
+ border-color: var(--color-border-light);
54
56
  }
55
57
  }
56
58
 
package/styles/Select.css CHANGED
@@ -15,13 +15,12 @@
15
15
  position: relative;
16
16
  }
17
17
 
18
+ ._paForm select,
18
19
  .PaSelect {
19
- width: 100%;
20
- padding: var(--space-2) var(--space-8) var(--space-2) var(--space-3);
20
+ padding: var(--space-2) var(--space-3);
21
21
  font-family: inherit;
22
22
  font-size: var(--text-base);
23
23
  color: var(--color-text);
24
- appearance: none;
25
24
  cursor: pointer;
26
25
  background-color: var(--color-bg);
27
26
  border: 1px solid var(--color-border);
@@ -39,12 +38,24 @@
39
38
  }
40
39
 
41
40
  &:disabled {
41
+ color: var(--color-text-muted);
42
42
  cursor: not-allowed;
43
- background: var(--color-bg-subtle);
44
- opacity: 0.7;
43
+ background: var(--color-bg-muted);
44
+ border-color: var(--color-border-light);
45
45
  }
46
46
  }
47
47
 
48
+ /* Native select: show browser chevron */
49
+ ._paForm select {
50
+ appearance: menulist-button;
51
+ }
52
+
53
+ /* Component select: custom chevron icon, extra padding */
54
+ .PaSelect {
55
+ padding-right: var(--space-8);
56
+ appearance: none;
57
+ }
58
+
48
59
  .PaSelectField-icon {
49
60
  position: absolute;
50
61
  top: 50%;
@@ -3,8 +3,6 @@
3
3
  ======================================== */
4
4
  .PaSpinner {
5
5
  display: inline-block;
6
- width: 24px;
7
- height: 24px;
8
6
  border: 3px solid var(--color-primary-light);
9
7
  border-top-color: var(--color-primary);
10
8
  border-radius: 50%;
@@ -16,9 +14,15 @@
16
14
  border-width: 2px;
17
15
  }
18
16
 
17
+ &.medium {
18
+ width: 32px;
19
+ height: 32px;
20
+ border-width: 3px;
21
+ }
22
+
19
23
  &.large {
20
- width: 44px;
21
- height: 44px;
24
+ width: 50px;
25
+ height: 50px;
22
26
  border-width: 4px;
23
27
  }
24
28
  }