@paroicms/react-ui 0.4.4 → 0.5.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 (130) hide show
  1. package/dist/Accordion.d.ts +10 -0
  2. package/dist/{PuAccordion.jsx → Accordion.js} +5 -8
  3. package/dist/Alert.d.ts +10 -0
  4. package/dist/Alert.js +7 -0
  5. package/dist/Badge.d.ts +8 -0
  6. package/dist/Badge.js +6 -0
  7. package/dist/Breadcrumb.d.ts +14 -0
  8. package/dist/Breadcrumb.js +10 -0
  9. package/dist/Button.d.ts +36 -0
  10. package/dist/Button.js +74 -0
  11. package/dist/Card.d.ts +10 -0
  12. package/dist/Card.js +7 -0
  13. package/dist/Checkbox.d.ts +9 -0
  14. package/dist/Checkbox.js +12 -0
  15. package/dist/Chip.d.ts +8 -0
  16. package/dist/Chip.js +7 -0
  17. package/dist/Column.d.ts +14 -0
  18. package/dist/Column.js +7 -0
  19. package/dist/DataTable.d.ts +30 -0
  20. package/dist/DataTable.js +26 -0
  21. package/dist/DateInput.d.ts +9 -0
  22. package/dist/DateInput.js +7 -0
  23. package/dist/Dialog.d.ts +13 -0
  24. package/dist/Dialog.js +55 -0
  25. package/dist/Inplace.d.ts +12 -0
  26. package/dist/Inplace.js +16 -0
  27. package/dist/InputNumber.d.ts +10 -0
  28. package/dist/InputNumber.js +19 -0
  29. package/dist/InputText.d.ts +14 -0
  30. package/dist/InputText.js +11 -0
  31. package/dist/MenuItem.d.ts +8 -0
  32. package/dist/MenuItem.js +18 -0
  33. package/dist/MultiSelect.d.ts +17 -0
  34. package/dist/MultiSelect.js +50 -0
  35. package/dist/Panel.d.ts +11 -0
  36. package/dist/Panel.js +9 -0
  37. package/dist/PasswordInput.d.ts +8 -0
  38. package/dist/PasswordInput.js +10 -0
  39. package/dist/PopupMenu.d.ts +20 -0
  40. package/dist/{PuPopupMenu.jsx → PopupMenu.js} +45 -36
  41. package/dist/RadioButton.d.ts +9 -0
  42. package/dist/RadioButton.js +12 -0
  43. package/dist/Select.d.ts +18 -0
  44. package/dist/Select.js +11 -0
  45. package/dist/SideMenu.d.ts +5 -0
  46. package/dist/SideMenu.js +13 -0
  47. package/dist/SortableList.d.ts +19 -0
  48. package/dist/SortableList.js +27 -0
  49. package/dist/Spinner.d.ts +2 -0
  50. package/dist/Spinner.js +5 -0
  51. package/dist/SplitButton.d.ts +24 -0
  52. package/dist/SplitButton.js +42 -0
  53. package/dist/Switch.d.ts +9 -0
  54. package/dist/Switch.js +12 -0
  55. package/dist/Tabs.d.ts +22 -0
  56. package/dist/Tabs.js +21 -0
  57. package/dist/Textarea.d.ts +8 -0
  58. package/dist/Textarea.js +7 -0
  59. package/dist/ToggleButton.d.ts +11 -0
  60. package/dist/ToggleButton.js +6 -0
  61. package/dist/ToggleGroup.d.ts +15 -0
  62. package/dist/ToggleGroup.js +6 -0
  63. package/dist/Tooltip.d.ts +10 -0
  64. package/dist/Tooltip.js +50 -0
  65. package/dist/Tree.d.ts +22 -0
  66. package/dist/Tree.js +43 -0
  67. package/dist/alert-stack.d.ts +18 -0
  68. package/dist/alert-stack.js +72 -0
  69. package/dist/index.d.ts +36 -10
  70. package/dist/index.js +45 -10
  71. package/dist/paroi-ui-lib-types.d.ts +4 -4
  72. package/dist/react-ui-provider.d.ts +15 -0
  73. package/dist/react-ui-provider.js +22 -0
  74. package/package.json +16 -2
  75. package/styles/Accordion.css +46 -0
  76. package/styles/Alert.css +76 -0
  77. package/styles/Badge.css +59 -0
  78. package/styles/Breadcrumb.css +57 -0
  79. package/styles/Button.css +167 -0
  80. package/styles/Card.css +28 -0
  81. package/styles/Checkbox.css +61 -0
  82. package/styles/Chip.css +35 -0
  83. package/styles/DataTable.css +176 -0
  84. package/styles/DateInput.css +59 -0
  85. package/styles/Dialog.css +77 -0
  86. package/styles/Inplace.css +44 -0
  87. package/styles/InputNumber.css +60 -0
  88. package/styles/InputText.css +99 -0
  89. package/styles/MenuItem.css +169 -0
  90. package/styles/MultiSelect.css +158 -0
  91. package/styles/Panel.css +40 -0
  92. package/styles/PasswordInput.css +80 -0
  93. package/styles/PopupMenu.css +37 -0
  94. package/styles/RadioButton.css +60 -0
  95. package/styles/Select.css +72 -0
  96. package/styles/SideMenu.css +7 -0
  97. package/styles/SortableList.css +32 -0
  98. package/styles/Spinner.css +30 -0
  99. package/styles/SplitButton.css +143 -0
  100. package/styles/Switch.css +60 -0
  101. package/styles/Tabs.css +94 -0
  102. package/styles/Textarea.css +66 -0
  103. package/styles/ToggleButton.css +36 -0
  104. package/styles/ToggleGroup.css +55 -0
  105. package/styles/Tooltip.css +34 -0
  106. package/styles/Tree.css +161 -0
  107. package/styles/theme/base.css +40 -0
  108. package/styles/theme/common.css +410 -0
  109. package/styles/theme/index.css +15 -0
  110. package/styles/theme/margins.css +119 -0
  111. package/styles/theme/reset.css +119 -0
  112. package/styles/theme/tokens.css +226 -0
  113. package/dist/PuAccordion.d.ts +0 -9
  114. package/dist/PuButton.d.ts +0 -14
  115. package/dist/PuButton.jsx +0 -15
  116. package/dist/PuCheckbox.d.ts +0 -8
  117. package/dist/PuCheckbox.jsx +0 -13
  118. package/dist/PuInput.d.ts +0 -10
  119. package/dist/PuInput.jsx +0 -13
  120. package/dist/PuMenuItem.d.ts +0 -7
  121. package/dist/PuMenuItem.jsx +0 -33
  122. package/dist/PuPopupMenu.d.ts +0 -14
  123. package/dist/PuSelect.d.ts +0 -17
  124. package/dist/PuSelect.jsx +0 -24
  125. package/dist/PuSideMenu.d.ts +0 -4
  126. package/dist/PuSideMenu.jsx +0 -15
  127. package/dist/PuSpinner.d.ts +0 -1
  128. package/dist/PuSpinner.jsx +0 -3
  129. package/dist/svg-icons.d.ts +0 -5
  130. package/dist/svg-icons.jsx +0 -30
@@ -0,0 +1,167 @@
1
+ /* ========================================
2
+ Buttons
3
+ ======================================== */
4
+ .PaBtn {
5
+ display: inline-flex;
6
+ gap: var(--space-2);
7
+ align-items: center;
8
+ justify-content: center;
9
+ padding: var(--space-3) var(--space-4);
10
+ font-family: inherit;
11
+ font-size: var(--text-sm);
12
+ font-weight: var(--font-medium);
13
+ line-height: 1;
14
+ white-space: nowrap;
15
+ text-decoration: none;
16
+ cursor: pointer;
17
+ border: none;
18
+ border-radius: var(--radius);
19
+ transition: all var(--transition);
20
+
21
+ &:focus-visible {
22
+ outline: 2px solid var(--color-primary);
23
+ outline-offset: 2px;
24
+ }
25
+
26
+ /* Primary button */
27
+ &.primary {
28
+ color: var(--color-text-inverse);
29
+ background: var(--color-primary);
30
+
31
+ &:hover {
32
+ background: var(--color-primary-hover);
33
+ }
34
+
35
+ &:active {
36
+ background: var(--color-primary-dark);
37
+ }
38
+ }
39
+
40
+ /* Secondary button (outline) */
41
+ &.secondary {
42
+ color: var(--color-text-muted);
43
+ background: transparent;
44
+ border: 1px solid var(--color-border);
45
+
46
+ &:hover {
47
+ color: var(--color-text);
48
+ background: var(--color-bg-subtle);
49
+ border-color: var(--color-text-muted);
50
+ }
51
+
52
+ &.borderless,
53
+ &.borderless:hover {
54
+ border: none;
55
+ }
56
+ }
57
+
58
+ /* Ghost button (transparent) */
59
+ &.ghost {
60
+ color: var(--color-text-muted);
61
+ background: transparent;
62
+
63
+ &:hover {
64
+ color: var(--color-text);
65
+ background: var(--color-bg-subtle);
66
+ }
67
+ }
68
+
69
+ /* Danger button */
70
+ &.danger {
71
+ color: var(--color-text-inverse);
72
+ background: var(--color-danger);
73
+
74
+ &:hover {
75
+ background: var(--color-danger-dark);
76
+ }
77
+ }
78
+
79
+ /* Warning button */
80
+ &.warning {
81
+ color: var(--color-yellow);
82
+ background: transparent;
83
+ border: 2px solid var(--color-yellow);
84
+
85
+ &:hover {
86
+ background: var(--color-yellow-light);
87
+ }
88
+ }
89
+
90
+ /* Icon-only button */
91
+ &.icon {
92
+ aspect-ratio: 1;
93
+ padding: var(--space-2);
94
+ }
95
+
96
+ /* Size variations */
97
+ &.small {
98
+ padding: var(--space-2) var(--space-3);
99
+ font-size: var(--text-xs);
100
+ }
101
+
102
+ &.large {
103
+ padding: var(--space-3) var(--space-6);
104
+ font-size: var(--text-base);
105
+ }
106
+
107
+ /* Disabled state */
108
+ &:disabled,
109
+ &.disabled {
110
+ pointer-events: none;
111
+ cursor: not-allowed;
112
+ opacity: 0.6;
113
+ filter: grayscale(40%);
114
+ }
115
+
116
+ /* Outlined variant */
117
+ &.outlined {
118
+ background-color: transparent;
119
+ border: 1px solid currentColor;
120
+ }
121
+
122
+ &.danger.outlined {
123
+ color: var(--color-danger);
124
+
125
+ &:hover {
126
+ background: var(--color-danger-light);
127
+ }
128
+ }
129
+
130
+ &.primary.outlined {
131
+ color: var(--color-primary);
132
+
133
+ &:hover {
134
+ background: var(--color-primary-light);
135
+ }
136
+ }
137
+ }
138
+
139
+ ._coloredBg .PaBtn {
140
+ border-color: #fff;
141
+ }
142
+
143
+ /* Button icon */
144
+ .PaBtn-icon {
145
+ display: inline-flex;
146
+ flex-shrink: 0;
147
+ align-items: center;
148
+ justify-content: center;
149
+ }
150
+
151
+ /* Async button spinner */
152
+ .PaBtn-spinner {
153
+ animation: paBtn-spin 1s linear infinite;
154
+ }
155
+
156
+ .PaBtn-feedbackIcon {
157
+ flex-shrink: 0;
158
+ }
159
+
160
+ @keyframes paBtn-spin {
161
+ from {
162
+ transform: rotate(0deg);
163
+ }
164
+ to {
165
+ transform: rotate(360deg);
166
+ }
167
+ }
@@ -0,0 +1,28 @@
1
+ /* ========================================
2
+ Cards
3
+ ======================================== */
4
+ .PaCard {
5
+ padding: var(--space-5);
6
+ background: var(--color-bg-elevated);
7
+ border: 1px solid var(--color-border-light);
8
+ border-radius: var(--radius-md);
9
+ }
10
+
11
+ .PaCard-header {
12
+ padding-bottom: var(--space-4);
13
+ margin-bottom: var(--space-4);
14
+ border-bottom: 1px solid var(--color-border-light);
15
+ }
16
+
17
+ .PaCard-title {
18
+ margin: 0;
19
+ font-size: var(--text-lg);
20
+ font-weight: var(--font-semibold);
21
+ color: var(--color-text);
22
+ }
23
+
24
+ .PaCard-subtitle {
25
+ margin-top: var(--space-1);
26
+ font-size: var(--text-sm);
27
+ color: var(--color-text-muted);
28
+ }
@@ -0,0 +1,61 @@
1
+ /* ========================================
2
+ Checkbox Component
3
+ ======================================== */
4
+ .PaCheckbox {
5
+ display: inline-flex;
6
+ gap: var(--space-2);
7
+ align-items: center;
8
+ cursor: pointer;
9
+ user-select: none;
10
+ }
11
+
12
+ .PaCheckbox-input {
13
+ display: flex;
14
+ flex-shrink: 0;
15
+ align-items: center;
16
+ justify-content: center;
17
+ width: 18px;
18
+ height: 18px;
19
+ margin: 0;
20
+ appearance: none;
21
+ cursor: pointer;
22
+ background: var(--color-bg);
23
+ border: 1px solid var(--color-border);
24
+ border-radius: var(--radius-sm);
25
+ transition: all var(--transition);
26
+
27
+ &:hover {
28
+ border-color: var(--color-primary);
29
+ }
30
+
31
+ &:focus {
32
+ outline: none;
33
+ border-color: var(--color-primary);
34
+ box-shadow: 0 0 0 3px var(--color-primary-light);
35
+ }
36
+
37
+ &:checked {
38
+ background: var(--color-primary);
39
+ border-color: var(--color-primary);
40
+ }
41
+
42
+ &:checked::after {
43
+ display: block;
44
+ width: 5px;
45
+ height: 9px;
46
+ content: "";
47
+ border: solid var(--color-text-inverse);
48
+ border-width: 0 2px 2px 0;
49
+ transform: rotate(45deg);
50
+ }
51
+
52
+ &:disabled {
53
+ cursor: not-allowed;
54
+ opacity: 0.5;
55
+ }
56
+ }
57
+
58
+ .PaCheckbox-label {
59
+ font-size: var(--text-sm);
60
+ color: var(--color-text);
61
+ }
@@ -0,0 +1,35 @@
1
+ /* ========================================
2
+ Chip Component
3
+ ======================================== */
4
+ .PaChip {
5
+ display: inline-flex;
6
+ gap: var(--space-1);
7
+ align-items: center;
8
+ padding: var(--space-1) var(--space-3);
9
+ font-size: var(--text-xs);
10
+ background: var(--color-bg-subtle);
11
+ border: 1px solid var(--color-border);
12
+ border-radius: var(--radius-full);
13
+ }
14
+
15
+ .PaChip-label {
16
+ color: var(--color-text);
17
+ }
18
+
19
+ .PaChip-remove {
20
+ display: flex;
21
+ align-items: center;
22
+ justify-content: center;
23
+ padding: var(--space-1);
24
+ color: var(--color-text-muted);
25
+ cursor: pointer;
26
+ background: transparent;
27
+ border: none;
28
+ border-radius: var(--radius-full);
29
+ transition: all var(--transition);
30
+
31
+ &:hover {
32
+ color: var(--color-danger);
33
+ background: var(--color-danger-light);
34
+ }
35
+ }
@@ -0,0 +1,176 @@
1
+ /* ========================================
2
+ Data Table
3
+ ======================================== */
4
+ .PaDataTable {
5
+ width: 100%;
6
+ overflow: hidden;
7
+ border-spacing: 0;
8
+ border-collapse: separate;
9
+ border: 1px solid var(--color-border-light);
10
+ border-radius: var(--radius-md);
11
+ }
12
+
13
+ .PaDataTable-header {
14
+ background: var(--color-bg-subtle);
15
+ }
16
+
17
+ .PaDataTable-headerCell {
18
+ padding: var(--space-3) var(--space-4);
19
+ font-size: var(--text-xs);
20
+ font-weight: var(--font-semibold);
21
+ color: var(--color-text-muted);
22
+ text-align: left;
23
+ text-transform: uppercase;
24
+ letter-spacing: 0.025em;
25
+ border-bottom: 1px solid var(--color-border);
26
+ }
27
+
28
+ .PaDataTable-headerCell.sortable {
29
+ cursor: pointer;
30
+ transition: color var(--transition);
31
+
32
+ &:hover {
33
+ color: var(--color-text);
34
+ }
35
+ }
36
+
37
+ .PaDataTable-row {
38
+ transition: background-color var(--transition);
39
+
40
+ &:not(:last-child) .PaDataTable-cell {
41
+ border-bottom: 1px solid var(--color-border-light);
42
+ }
43
+
44
+ &.clickable {
45
+ cursor: pointer;
46
+ &:hover {
47
+ background: var(--color-primary-light);
48
+ }
49
+ }
50
+
51
+ &.unselectable {
52
+ cursor: not-allowed;
53
+
54
+ &,
55
+ &:hover {
56
+ background-color: var(--color-bg-muted);
57
+ }
58
+
59
+ & .PaDataTable-cell {
60
+ color: var(--color-text-muted);
61
+ }
62
+ }
63
+ }
64
+
65
+ .PaDataTable-cell {
66
+ padding: var(--space-3) var(--space-4);
67
+ font-size: var(--text-sm);
68
+ vertical-align: middle;
69
+ color: var(--color-text);
70
+ }
71
+
72
+ .PaDataTable-cell.actions {
73
+ text-align: right;
74
+ white-space: nowrap;
75
+ }
76
+
77
+ /* DataTable Wrapper & Loading */
78
+ .PaDataTable-wrapper {
79
+ position: relative;
80
+
81
+ &.loading {
82
+ min-height: 100px;
83
+ }
84
+ }
85
+
86
+ .PaDataTable-overlay {
87
+ position: absolute;
88
+ inset: 0;
89
+ z-index: 1;
90
+ display: flex;
91
+ align-items: center;
92
+ justify-content: center;
93
+ background: rgba(255, 255, 255, 0.8);
94
+ }
95
+
96
+ .PaDataTable-emptyCell {
97
+ padding: var(--space-8) var(--space-4);
98
+ font-size: var(--text-sm);
99
+ color: var(--color-text-muted);
100
+ text-align: center;
101
+ }
102
+
103
+ .PaDataTable.small {
104
+ .PaDataTable-headerCell,
105
+ .PaDataTable-cell {
106
+ padding: var(--space-2) var(--space-3);
107
+ font-size: var(--text-xs);
108
+ }
109
+ }
110
+
111
+ /* DataTable Header Content */
112
+ .PaDataTable-headerContent {
113
+ display: inline-flex;
114
+ gap: var(--space-1);
115
+ align-items: center;
116
+ }
117
+
118
+ .PaDataTable-sortIcon {
119
+ display: inline-flex;
120
+ align-items: center;
121
+ }
122
+
123
+ /* DataTable Scrollable */
124
+ .PaDataTable-scrollable {
125
+ overflow-x: auto;
126
+ }
127
+
128
+ /* DataTable Footer */
129
+ .PaDataTable-footer {
130
+ display: flex;
131
+ align-items: center;
132
+ justify-content: space-between;
133
+ padding: var(--space-3) var(--space-4);
134
+ border-top: 1px solid var(--color-border);
135
+ }
136
+
137
+ .PaDataTable-totalCount {
138
+ font-size: var(--text-sm);
139
+ color: var(--color-text-muted);
140
+ }
141
+
142
+ /* DataTable Pagination */
143
+ .PaDataTable-pagination {
144
+ display: flex;
145
+ gap: var(--space-2);
146
+ align-items: center;
147
+ }
148
+
149
+ .PaDataTable-paginationBtn {
150
+ display: flex;
151
+ align-items: center;
152
+ justify-content: center;
153
+ padding: var(--space-1) var(--space-2);
154
+ cursor: pointer;
155
+ background: var(--color-bg);
156
+ border: 1px solid var(--color-border);
157
+ border-radius: var(--radius-sm);
158
+
159
+ &:hover:not(:disabled) {
160
+ background: var(--color-bg-subtle);
161
+ }
162
+
163
+ &:disabled {
164
+ cursor: not-allowed;
165
+ opacity: 0.5;
166
+ }
167
+ }
168
+
169
+ .PaDataTable-paginationText {
170
+ font-size: var(--text-sm);
171
+ color: var(--color-text-muted);
172
+ }
173
+
174
+ .PaDataTable-rowsPerPage {
175
+ margin-left: var(--space-2);
176
+ }
@@ -0,0 +1,59 @@
1
+ /* ========================================
2
+ DateInput Component
3
+ ======================================== */
4
+ .PaDateInput {
5
+ display: flex;
6
+ flex-direction: column;
7
+ gap: var(--space-2);
8
+ }
9
+
10
+ .PaDateInput-wrapper {
11
+ display: flex;
12
+ flex-direction: column;
13
+ gap: var(--space-2);
14
+ }
15
+
16
+ .PaDateInput-label {
17
+ font-size: var(--text-sm);
18
+ font-weight: var(--font-medium);
19
+ color: var(--color-text);
20
+ }
21
+
22
+ .PaDateInput-field {
23
+ padding: var(--space-2) var(--space-3);
24
+ font-family: inherit;
25
+ font-size: var(--text-base);
26
+ line-height: var(--leading-normal);
27
+ color: var(--color-text);
28
+ background: var(--color-bg);
29
+ border: 1px solid var(--color-border);
30
+ border-radius: var(--radius);
31
+ transition:
32
+ border-color var(--transition),
33
+ box-shadow var(--transition);
34
+
35
+ &:hover {
36
+ border-color: var(--color-primary);
37
+ }
38
+
39
+ &:focus {
40
+ outline: none;
41
+ border-color: var(--color-primary);
42
+ box-shadow: 0 0 0 3px var(--color-primary-light);
43
+ }
44
+
45
+ &:disabled {
46
+ cursor: not-allowed;
47
+ background: var(--color-bg-subtle);
48
+ opacity: 0.7;
49
+ }
50
+
51
+ &.error {
52
+ border-color: var(--color-danger);
53
+ }
54
+ }
55
+
56
+ .PaDateInput-error {
57
+ font-size: var(--text-xs);
58
+ color: var(--color-danger);
59
+ }
@@ -0,0 +1,77 @@
1
+ /* ========================================
2
+ Dialog Component
3
+ ======================================== */
4
+ .PaDialog-overlay {
5
+ position: fixed;
6
+ inset: 0;
7
+ z-index: var(--z-modal);
8
+ display: flex;
9
+ align-items: center;
10
+ justify-content: center;
11
+ }
12
+
13
+ .PaDialog-backdrop {
14
+ position: absolute;
15
+ inset: 0;
16
+ background: rgba(0, 0, 0, 0.5);
17
+ }
18
+
19
+ .PaDialog {
20
+ position: relative;
21
+ z-index: 1;
22
+ display: flex;
23
+ flex-direction: column;
24
+ min-width: 320px;
25
+ max-width: 90vw;
26
+ max-height: 90vh;
27
+ background: var(--color-bg-elevated);
28
+ border-radius: var(--radius-lg);
29
+ box-shadow: var(--shadow-lg);
30
+ }
31
+
32
+ .PaDialog-header {
33
+ display: flex;
34
+ gap: var(--space-4);
35
+ align-items: center;
36
+ justify-content: space-between;
37
+ padding: var(--space-4) var(--space-5);
38
+ border-bottom: 1px solid var(--color-border-light);
39
+ }
40
+
41
+ .PaDialog-title {
42
+ font-size: var(--text-lg);
43
+ font-weight: var(--font-semibold);
44
+ color: var(--color-text);
45
+ }
46
+
47
+ .PaDialog-close {
48
+ display: flex;
49
+ align-items: center;
50
+ justify-content: center;
51
+ padding: var(--space-1);
52
+ color: var(--color-text-muted);
53
+ cursor: pointer;
54
+ background: transparent;
55
+ border: none;
56
+ border-radius: var(--radius);
57
+ transition: all var(--transition);
58
+
59
+ &:hover {
60
+ color: var(--color-text);
61
+ background: var(--color-bg-subtle);
62
+ }
63
+ }
64
+
65
+ .PaDialog-content {
66
+ flex: 1;
67
+ padding: var(--space-5);
68
+ overflow-y: auto;
69
+ }
70
+
71
+ .PaDialog-footer {
72
+ display: flex;
73
+ gap: var(--space-3);
74
+ justify-content: flex-end;
75
+ padding: var(--space-4) var(--space-5);
76
+ border-top: 1px solid var(--color-border-light);
77
+ }
@@ -0,0 +1,44 @@
1
+ /* ========================================
2
+ Inplace Component
3
+ ======================================== */
4
+ .PaInplace {
5
+ &.display {
6
+ padding: var(--space-2);
7
+ cursor: pointer;
8
+ border: 1px dashed transparent;
9
+ border-radius: var(--radius);
10
+ transition: all var(--transition);
11
+
12
+ &:hover {
13
+ background: var(--color-bg-subtle);
14
+ border-color: var(--color-border);
15
+ }
16
+ }
17
+
18
+ &.active {
19
+ display: flex;
20
+ flex-direction: column;
21
+ gap: var(--space-3);
22
+ }
23
+ }
24
+
25
+ .PaInplace-content {
26
+ flex: 1;
27
+ }
28
+
29
+ .PaInplace-close {
30
+ align-self: flex-end;
31
+ padding: var(--space-1) var(--space-3);
32
+ font-size: var(--text-sm);
33
+ color: var(--color-text-muted);
34
+ cursor: pointer;
35
+ background: transparent;
36
+ border: 1px solid var(--color-border);
37
+ border-radius: var(--radius);
38
+ transition: all var(--transition);
39
+
40
+ &:hover {
41
+ color: var(--color-text);
42
+ background: var(--color-bg-subtle);
43
+ }
44
+ }
@@ -0,0 +1,60 @@
1
+ /* ========================================
2
+ InputNumber Component
3
+ ======================================== */
4
+ .PaInputNumber {
5
+ display: flex;
6
+ flex-direction: column;
7
+ gap: var(--space-2);
8
+ }
9
+
10
+ .PaInputNumber-wrapper {
11
+ display: flex;
12
+ flex-direction: column;
13
+ gap: var(--space-2);
14
+ }
15
+
16
+ .PaInputNumber-label {
17
+ font-size: var(--text-sm);
18
+ font-weight: var(--font-medium);
19
+ color: var(--color-text);
20
+ }
21
+
22
+ .PaInputNumber-field {
23
+ width: 100%;
24
+ padding: var(--space-2) var(--space-3);
25
+ font-family: inherit;
26
+ font-size: var(--text-base);
27
+ line-height: var(--leading-normal);
28
+ color: var(--color-text);
29
+ background: var(--color-bg);
30
+ border: 1px solid var(--color-border);
31
+ border-radius: var(--radius);
32
+ transition:
33
+ border-color var(--transition),
34
+ box-shadow var(--transition);
35
+
36
+ &:hover {
37
+ border-color: var(--color-primary);
38
+ }
39
+
40
+ &:focus {
41
+ outline: none;
42
+ border-color: var(--color-primary);
43
+ box-shadow: 0 0 0 3px var(--color-primary-light);
44
+ }
45
+
46
+ &:disabled {
47
+ cursor: not-allowed;
48
+ background: var(--color-bg-subtle);
49
+ opacity: 0.7;
50
+ }
51
+
52
+ &.error {
53
+ border-color: var(--color-danger);
54
+ }
55
+ }
56
+
57
+ .PaInputNumber-error {
58
+ font-size: var(--text-xs);
59
+ color: var(--color-danger);
60
+ }