@nuralyui/button 0.0.10 → 0.0.12
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.
- package/demo/{hy-buttons-demo.d.ts → nr-buttons-demo.d.ts} +3 -3
- package/demo/nr-buttons-demo.d.ts.map +1 -0
- package/demo/nr-buttons-demo.js +211 -0
- package/demo/nr-buttons-demo.js.map +1 -0
- package/index.d.ts +1 -1
- package/index.js +1 -1
- package/index.js.map +1 -1
- package/nr-button.component.d.ts +36 -0
- package/nr-button.component.d.ts.map +1 -0
- package/{hy-button.component.js → nr-button.component.js} +45 -19
- package/nr-button.component.js.map +1 -0
- package/nr-button.style.d.ts +19 -0
- package/nr-button.style.d.ts.map +1 -0
- package/{hy-button.style.js → nr-button.style.js} +182 -111
- package/nr-button.style.js.map +1 -0
- package/nr-button.style.variables.d.ts +11 -0
- package/nr-button.style.variables.d.ts.map +1 -0
- package/nr-button.style.variables.js +194 -0
- package/nr-button.style.variables.js.map +1 -0
- package/{hy-button.constants.d.ts → nr-button.types.d.ts} +2 -2
- package/nr-button.types.d.ts.map +1 -0
- package/nr-button.types.js +2 -0
- package/nr-button.types.js.map +1 -0
- package/package.json +11 -3
- package/react.d.ts +2 -2
- package/react.d.ts.map +1 -1
- package/react.js +4 -4
- package/react.js.map +1 -1
- package/test/nr-button_test.d.ts +2 -0
- package/test/nr-button_test.d.ts.map +1 -0
- package/test/{hy-button_test.js → nr-button_test.js} +15 -15
- package/test/nr-button_test.js.map +1 -0
- package/demo/hy-buttons-demo.d.ts.map +0 -1
- package/demo/hy-buttons-demo.js +0 -211
- package/demo/hy-buttons-demo.js.map +0 -1
- package/hy-button.component.d.ts +0 -21
- package/hy-button.component.d.ts.map +0 -1
- package/hy-button.component.js.map +0 -1
- package/hy-button.constants.d.ts.map +0 -1
- package/hy-button.constants.js +0 -2
- package/hy-button.constants.js.map +0 -1
- package/hy-button.style.d.ts +0 -2
- package/hy-button.style.d.ts.map +0 -1
- package/hy-button.style.js.map +0 -1
- package/test/hy-button_test.d.ts +0 -2
- package/test/hy-button_test.d.ts.map +0 -1
- package/test/hy-button_test.js.map +0 -1
|
@@ -1,17 +1,36 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
+
import { buttonVariables } from './nr-button.style.variables.js';
|
|
3
|
+
/**
|
|
4
|
+
* Button component styles for the Hybrid UI Library
|
|
5
|
+
*
|
|
6
|
+
* This file contains all the styling for the nr-button component, including:
|
|
7
|
+
* - Base button styles with CSS custom properties for theming
|
|
8
|
+
* - Multiple button variants (primary, secondary, ghost, danger)
|
|
9
|
+
* - Size variations (small, large)
|
|
10
|
+
* - State styles (hover, active, disabled, loading)
|
|
11
|
+
* - Dark theme support
|
|
12
|
+
* - Icon positioning and styling
|
|
13
|
+
* - Responsive design considerations
|
|
14
|
+
*
|
|
15
|
+
* The styling system uses CSS custom properties with fallbacks to allow
|
|
16
|
+
* for both global and local customization of button appearance.
|
|
17
|
+
*/
|
|
2
18
|
const buttonStyles = css `
|
|
19
|
+
/* Container for button content and icon positioning */
|
|
3
20
|
#container {
|
|
4
21
|
display: flex;
|
|
5
22
|
justify-content: center;
|
|
6
23
|
align-items: center;
|
|
7
|
-
width:100%;
|
|
8
|
-
height:100%;
|
|
24
|
+
width: 100%;
|
|
25
|
+
height: 100%;
|
|
9
26
|
}
|
|
10
27
|
|
|
28
|
+
/* Icon positioned to the right of text when iconPosition='right' */
|
|
11
29
|
:host([iconPosition='right']) #container {
|
|
12
30
|
flex-direction: row-reverse;
|
|
13
31
|
}
|
|
14
32
|
|
|
33
|
+
/* Icon styling within button */
|
|
15
34
|
hy-icon {
|
|
16
35
|
display: flex;
|
|
17
36
|
justify-content: center;
|
|
@@ -19,55 +38,104 @@ const buttonStyles = css `
|
|
|
19
38
|
padding: 2px;
|
|
20
39
|
}
|
|
21
40
|
|
|
41
|
+
/*
|
|
42
|
+
* Base button element styles
|
|
43
|
+
* Uses CSS custom properties with fallbacks for comprehensive theming support
|
|
44
|
+
* Properties follow the pattern: --hybrid-button-{property}, --hybrid-button-local-{property}
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
/*
|
|
48
|
+
* Base button element styles
|
|
49
|
+
* Uses CSS custom properties with fallbacks for comprehensive theming support
|
|
50
|
+
* Properties follow the pattern: --hybrid-button-{property}, --hybrid-button-local-{property}
|
|
51
|
+
*/
|
|
22
52
|
button {
|
|
53
|
+
/* Dimensions */
|
|
23
54
|
height: var(--hybrid-button-height,var(--hybrid-button-local-height));
|
|
24
55
|
width: var(--hybrid-button-width,var(--hybrid-button-local-width));
|
|
56
|
+
|
|
57
|
+
/* Border properties - individual sides for granular control */
|
|
25
58
|
border-left: var(--hybrid-button-border-left,var(--hybrid-button-local-border-left));
|
|
26
59
|
border-right: var(--hybrid-button-border-right,var(--hybrid-button-local-border-right));
|
|
27
60
|
border-top: var(--hybrid-button-border-top,var(--hybrid-button-local-border-top));
|
|
28
61
|
border-bottom: var(--hybrid-button-border-bottom,var(--hybrid-button-local-border-bottom));
|
|
62
|
+
|
|
63
|
+
/* Border radius - individual corners for design flexibility */
|
|
29
64
|
border-top-left-radius:var(--hybrid-button-border-top-left-radius,var(--hybrid-button-local-border-top-left-radius)) ;
|
|
30
65
|
border-top-right-radius: var(--hybrid-button-border-top-right-radius,var(--hybrid-button-local-border-top-right-radius));
|
|
31
66
|
border-bottom-left-radius: var(--hybrid-button-border-bottom-left-radius,var(--hybrid-button-local-border-bottom-left-radius));
|
|
32
67
|
border-bottom-right-radius: var(--hybrid-button-border-bottom-right-radius,var(--hybrid-button-local-border-bottom-right-radius));
|
|
68
|
+
|
|
69
|
+
/* Colors */
|
|
33
70
|
background-color: var(--hybrid-button-background-color,var(--hybrid-button-local-background-color));
|
|
34
71
|
color: var(--hybrid-button-text-color,var(--hybrid-button-local-text-color));
|
|
72
|
+
|
|
73
|
+
/* Typography */
|
|
35
74
|
font-size: var(--hybrid-button-font-size,var(--hybrid-button-local-font-size));
|
|
36
75
|
font-weight: var(--hybrid-button-font-weight,var(--hybrid-button-local-font-weight));
|
|
37
76
|
text-transform: var(--hybrid-button-text-transform,var(--hybrid-button-local-text-transform));
|
|
77
|
+
|
|
78
|
+
/* Spacing */
|
|
38
79
|
padding-top: var(--hybrid-button-padding-y,var(--hybrid-button-local-padding-y));
|
|
39
|
-
|
|
80
|
+
margin-top: var(--hybrid-button-margin-y,var(--hybrid-button-local-margin-y));
|
|
40
81
|
padding-bottom: var(--hybrid-button-padding-y,var(--hybrid-button-local-padding-y));
|
|
41
82
|
padding-right: var(--hybrid-button-padding-x,var(--hybrid-button-local-padding-x));
|
|
42
83
|
padding-left: var(--hybrid-button-padding-x,var(--hybrid-button-local-padding-x));
|
|
43
84
|
font-size: var(--hybrid-button-font-size,var(--hybrid-button-local-font-size));
|
|
44
85
|
}
|
|
86
|
+
|
|
87
|
+
/* Icon styling within button - inherits text color and size */
|
|
45
88
|
button hy-icon {
|
|
46
89
|
--hybrid-icon-color: var(--hybrid-button-text-color,var(--hybrid-button-local-text-color));
|
|
47
90
|
--hybrid-icon-width: var(--hybrid-button-icon-width,var(--hybrid-button-local-icon-width));
|
|
48
91
|
--hybrid-icon-height: var(--hybrid-button-icon-height,var(--hybrid-button-local-icon-height));
|
|
49
|
-
|
|
50
92
|
}
|
|
51
93
|
|
|
94
|
+
/*
|
|
95
|
+
* Hover state styles
|
|
96
|
+
* Applied when button is hovered but not disabled
|
|
97
|
+
*/
|
|
98
|
+
|
|
99
|
+
/*
|
|
100
|
+
* Hover state styles
|
|
101
|
+
* Applied when button is hovered but not disabled
|
|
102
|
+
*/
|
|
52
103
|
button:hover:not(:disabled) {
|
|
53
104
|
cursor: pointer;
|
|
54
105
|
border-color: var(--hybrid-button-hover-border-color,var(--hybrid-button-local-hover-border-color));
|
|
55
106
|
background-color: var(--hybrid-button-hover-background-color,var(--hybrid-button-local-hover-background-color));
|
|
56
107
|
color: var(--hybrid-button-hover-color,var(--hybrid-button-local-hover-color));
|
|
57
108
|
}
|
|
109
|
+
|
|
110
|
+
/* Icon color on hover */
|
|
58
111
|
button:hover:not(:disabled) hy-icon {
|
|
59
112
|
--hybrid-icon-color: var(--hybrid-button-hover-color,var(--hybrid-button-local-hover-color));
|
|
60
113
|
}
|
|
61
114
|
|
|
115
|
+
/*
|
|
116
|
+
* Active state styles
|
|
117
|
+
* Applied when button is being clicked/pressed but not disabled
|
|
118
|
+
*/
|
|
62
119
|
button:active:not(:disabled) {
|
|
63
120
|
outline: none;
|
|
64
121
|
border-color: var(--hybrid-button-active-border-color,var(--hybrid-button-local-active-border-color));
|
|
65
122
|
color: var(--hybrid-button-active-color,var(--hybrid-button-local-active-color));
|
|
66
123
|
}
|
|
124
|
+
|
|
125
|
+
/* Icon color on active state */
|
|
67
126
|
button:active:not(:disabled) hy-icon {
|
|
68
127
|
--hybrid-icon-color: var(--hybrid-button-active-color,var(--hybrid-button-local-active-color));
|
|
69
128
|
}
|
|
70
129
|
|
|
130
|
+
/*
|
|
131
|
+
* Disabled state styles
|
|
132
|
+
* Applied when button is disabled - removes interactivity and applies muted colors
|
|
133
|
+
*/
|
|
134
|
+
|
|
135
|
+
/*
|
|
136
|
+
* Disabled state styles
|
|
137
|
+
* Applied when button is disabled - removes interactivity and applies muted colors
|
|
138
|
+
*/
|
|
71
139
|
button:disabled {
|
|
72
140
|
cursor: auto;
|
|
73
141
|
background-color: var(--hybrid-button-disabled-background-color,var(--hybrid-button-local-disabled-background-color));
|
|
@@ -75,6 +143,13 @@ const buttonStyles = css `
|
|
|
75
143
|
border-color: var(--hybrid-button-disabled-border-color,var(--hybrid-button-local-disabled-border-color));
|
|
76
144
|
}
|
|
77
145
|
|
|
146
|
+
/* ========================================
|
|
147
|
+
* SIZE VARIATIONS
|
|
148
|
+
* ======================================== */
|
|
149
|
+
|
|
150
|
+
/* Small button size variant */
|
|
151
|
+
|
|
152
|
+
/* Small button size variant */
|
|
78
153
|
button[data-size='small'] {
|
|
79
154
|
padding-top: var(--hybrid-small-button-padding-y,var(--hybrid-small-button-local-padding-y));
|
|
80
155
|
padding-bottom: var(--hybrid-small-button-padding-y,var(--hybrid-small-button-local-padding-y));
|
|
@@ -83,6 +158,7 @@ const buttonStyles = css `
|
|
|
83
158
|
font-size: var(--hybrid-small-button-font-size,var(--hybrid-small-button-local-font-size));
|
|
84
159
|
}
|
|
85
160
|
|
|
161
|
+
/* Large button size variant */
|
|
86
162
|
button[data-size='large'] {
|
|
87
163
|
padding-top: var(--hybrid-large-button-padding-y,var(--hybrid-large-button-local-padding-y));
|
|
88
164
|
padding-bottom: var(--hybrid-large-button-padding-y,var(--hybrid-large-button-local-padding-y));
|
|
@@ -91,9 +167,23 @@ const buttonStyles = css `
|
|
|
91
167
|
font-size: var(--hybrid-large-button-font-size,var(--hybrid-large-button-local-font-size));
|
|
92
168
|
}
|
|
93
169
|
|
|
170
|
+
/* ========================================
|
|
171
|
+
* BUTTON STATES
|
|
172
|
+
* ======================================== */
|
|
173
|
+
|
|
174
|
+
/* Loading state - reduces opacity to indicate processing */
|
|
94
175
|
button[data-state='loading'] {
|
|
95
176
|
opacity: 0.5;
|
|
96
177
|
}
|
|
178
|
+
|
|
179
|
+
/* ========================================
|
|
180
|
+
* BUTTON TYPE VARIANTS
|
|
181
|
+
* ======================================== */
|
|
182
|
+
|
|
183
|
+
/* DANGER BUTTON VARIANT */
|
|
184
|
+
/* DANGER BUTTON VARIANT */
|
|
185
|
+
|
|
186
|
+
/* Danger button base styles and icon */
|
|
97
187
|
button[data-type='danger'] hy-icon {
|
|
98
188
|
--hybrid-icon-color: var(--hybrid-button-danger-text-color,var(--hybrid-button-local-danger-text-color));
|
|
99
189
|
}
|
|
@@ -102,15 +192,20 @@ const buttonStyles = css `
|
|
|
102
192
|
background-color: var(--hybrid-button-danger-background-color,var(--hybrid-button-local-danger-background-color));
|
|
103
193
|
color: var(--hybrid-button-danger-text-color,var(--hybrid-button-local-danger-text-color));
|
|
104
194
|
}
|
|
195
|
+
|
|
196
|
+
/* Danger button with dashed border variant */
|
|
105
197
|
button[data-type='danger'].button-dashed {
|
|
106
198
|
border-color: var(--hybrid-button-danger-dashed-border-color,var(--hybrid-button-local-danger-dashed-border-color));
|
|
107
199
|
}
|
|
200
|
+
|
|
201
|
+
/* Danger button disabled state */
|
|
108
202
|
button[data-type='danger']:disabled {
|
|
109
203
|
border-color: var(--hybrid-button-danger-disabled-border-color,var(--hybrid-button-local-danger-disabled-border-color));
|
|
110
204
|
background-color: var(--hybrid-button-danger-disabled-background-color,var(--hybrid-button-local-danger-disabled-background-color));
|
|
111
205
|
color: var(--hybrid-button-danger-disabled-text-color,var(--hybrid-button-local-danger-disabled-text-color));
|
|
112
206
|
}
|
|
113
207
|
|
|
208
|
+
/* Danger button hover state */
|
|
114
209
|
button[data-type='danger']:hover:not(:disabled) {
|
|
115
210
|
background-color: var(--hybrid-button-danger-hover-background-color,var(--hybrid-button-local-danger-hover-background-color));
|
|
116
211
|
border-color: var(--hybrid-button-danger-hover-border-color,var(--hybrid-button-local-danger-hover-border-color));
|
|
@@ -120,12 +215,18 @@ const buttonStyles = css `
|
|
|
120
215
|
--hybrid-icon-color: var(--hybrid-button-danger-text-color,var(--hybrid-button-local-danger-text-color));
|
|
121
216
|
}
|
|
122
217
|
|
|
218
|
+
/* Danger button active state */
|
|
123
219
|
button[data-type='danger']:active:not(:disabled) {
|
|
124
220
|
background-color: var(--hybrid-button-danger-active-background-color,var(--hybrid-button-local-danger-active-background-color));
|
|
125
221
|
border-color: var(--hybrid-button-danger-active-border-color,var(--hybrid-button-local-danger-active-border-color));
|
|
126
222
|
outline: var(--hybrid-button-danger-outline,var(--hybrid-button-local-danger-outline));
|
|
127
223
|
outline-offset: var(--hybrid-button-danger-outline-offset,var(--hybrid-button-local-danger-outline-offset));
|
|
128
224
|
}
|
|
225
|
+
|
|
226
|
+
/* PRIMARY BUTTON VARIANT */
|
|
227
|
+
/* PRIMARY BUTTON VARIANT */
|
|
228
|
+
|
|
229
|
+
/* Primary button base styles and icon */
|
|
129
230
|
button[data-type='primary'] hy-icon {
|
|
130
231
|
--hybrid-icon-color: var(--hybrid-button-primary-text-color,var(--hybrid-button-local-primary-text-color));
|
|
131
232
|
}
|
|
@@ -134,16 +235,20 @@ const buttonStyles = css `
|
|
|
134
235
|
background-color: var(--hybrid-button-primary-background-color,var(--hybrid-button-local-primary-background-color));
|
|
135
236
|
color: var(--hybrid-button-primary-text-color,var(--hybrid-button-local-primary-text-color));
|
|
136
237
|
}
|
|
238
|
+
|
|
239
|
+
/* Primary button with dashed border variant */
|
|
137
240
|
button[data-type='primary'].button-dashed {
|
|
138
241
|
border-color: var(--hybrid-button-primary-dashed-border-color,var(--hybrid-button-local-primary-dashed-border-color));
|
|
139
242
|
}
|
|
140
243
|
|
|
244
|
+
/* Primary button disabled state */
|
|
141
245
|
button[data-type='primary']:disabled {
|
|
142
246
|
border-color: var(--hybrid-button-primary-disabled-border-color,var(--hybrid-button-local-primary-disabled-border-color));
|
|
143
247
|
background-color: var(--hybrid-button-primary-disabled-background-color,var(--hybrid-button-local-primary-disabled-background-color));
|
|
144
248
|
color: var(--hybrid-button-primary-disabled-text-color,var(--hybrid-button-local-primary-disabled-text-color));
|
|
145
249
|
}
|
|
146
250
|
|
|
251
|
+
/* Primary button hover state */
|
|
147
252
|
button[data-type='primary']:hover:not(:disabled) {
|
|
148
253
|
background-color: var(--hybrid-button-primary-hover-background-color,var(--hybrid-button-local-primary-hover-background-color));
|
|
149
254
|
border-color: var(--hybrid-button-primary-hover-border-color,var(--hybrid-button-local-primary-hover-border-color));
|
|
@@ -152,12 +257,19 @@ const buttonStyles = css `
|
|
|
152
257
|
button[data-type='primary']:hover:not(:disabled) hy-icon {
|
|
153
258
|
--hybrid-icon-color: var(--hybrid-button-primary-text-color,var(--hybrid-button-local-primary-text-color));
|
|
154
259
|
}
|
|
260
|
+
|
|
261
|
+
/* Primary button active state */
|
|
155
262
|
button[data-type='primary']:active:not(:disabled) {
|
|
156
263
|
border-color: var(--hybrid-button-primary-active-border-color,var(--hybrid-button-local-primary-active-border-color));
|
|
157
264
|
background-color: var(--hybrid-button-primary-active-background-color,var(--hybrid-button-local-primary-active-background-color));
|
|
158
265
|
outline: var(--hybrid-button-primary-outline,var(--hybrid-button-local-primary-outline));
|
|
159
266
|
outline-offset: var(--hybrid-button-primary-outline-offset,var(--hybrid-button-local-primary-outline-offset));
|
|
160
267
|
}
|
|
268
|
+
|
|
269
|
+
/* GHOST BUTTON VARIANT */
|
|
270
|
+
/* GHOST BUTTON VARIANT */
|
|
271
|
+
|
|
272
|
+
/* Ghost button base styles and icon */
|
|
161
273
|
button[data-type='ghost'] hy-icon {
|
|
162
274
|
--hybrid-icon-color: var(--hybrid-button-ghost-text-color,var(--hybrid-button-local-ghost-text-color));
|
|
163
275
|
}
|
|
@@ -166,15 +278,20 @@ const buttonStyles = css `
|
|
|
166
278
|
color: var(--hybrid-button-ghost-text-color,var(--hybrid-button-local-ghost-text-color));
|
|
167
279
|
border-color: var(--hybrid-button-ghost-border-color,var(--hybrid-button-local-ghost-border-color));
|
|
168
280
|
}
|
|
281
|
+
|
|
282
|
+
/* Ghost button with dashed border variant */
|
|
169
283
|
button[data-type='ghost'].button-dashed {
|
|
170
284
|
border-color: var(--hybrid-button-ghost-dashed-border-color,var(--hybrid-button-local-ghost-dashed-border-color));
|
|
171
285
|
}
|
|
286
|
+
|
|
287
|
+
/* Ghost button disabled state */
|
|
172
288
|
button[data-type='ghost']:disabled {
|
|
173
289
|
background-color: var(--hybrid-button-ghost-disabled-background-color,var(--hybrid-button-local-ghost-disabled-background-color));
|
|
174
290
|
color: var(--hybrid-button-ghost-disabled-text-color,var(--hybrid-button-local-ghost-disabled-text-color));
|
|
175
291
|
border-color: var(--hybrid-button-ghost-disabled-border-color,var(--hybrid-button-local-ghost-disabled-border-color));
|
|
176
292
|
}
|
|
177
293
|
|
|
294
|
+
/* Ghost button hover state */
|
|
178
295
|
button[data-type='ghost']:hover:not(:disabled) {
|
|
179
296
|
background-color: var(--hybrid-button-ghost-hover-background-color,var(--hybrid-button-local-ghost-hover-background-color));
|
|
180
297
|
color: var(--hybrid-button-ghost-hover-text-color,var(--hybrid-button-local-ghost-hover-text-color));
|
|
@@ -183,10 +300,17 @@ const buttonStyles = css `
|
|
|
183
300
|
button[data-type='ghost']:hover:not(:disabled) hy-icon {
|
|
184
301
|
--hybrid-icon-color: var(--hybrid-button-ghost-hover-text-color,var(--hybrid-button-local-ghost-hover-text-color));
|
|
185
302
|
}
|
|
303
|
+
|
|
304
|
+
/* Ghost button active state */
|
|
186
305
|
button[data-type='ghost']:active:not(:disabled) {
|
|
187
306
|
background-color: var(--hybrid-button-ghost-active-background-color,var(--hybrid-button-local-ghost-active-background-color));
|
|
188
307
|
border-color: var(--hybrid-button-ghost-active-border-color,var(--hybrid-button-local-ghost-active-border-color));
|
|
189
308
|
}
|
|
309
|
+
|
|
310
|
+
/* SECONDARY BUTTON VARIANT */
|
|
311
|
+
/* SECONDARY BUTTON VARIANT */
|
|
312
|
+
|
|
313
|
+
/* Secondary button base styles and icon */
|
|
190
314
|
button[data-type='secondary'] hy-icon {
|
|
191
315
|
--hybrid-icon-color: var(--hybrid-button-secondary-text-color,var(--hybrid-button-local-secondary-text-color));
|
|
192
316
|
}
|
|
@@ -195,14 +319,20 @@ const buttonStyles = css `
|
|
|
195
319
|
color: var(--hybrid-button-secondary-text-color,var(--hybrid-button-local-secondary-text-color));
|
|
196
320
|
border-color: var(--hybrid-button-secondary-border-color,var(--hybrid-button-local-secondary-border-color));
|
|
197
321
|
}
|
|
322
|
+
|
|
323
|
+
/* Secondary button with dashed border variant */
|
|
198
324
|
button[data-type='secondary'].button-dashed {
|
|
199
325
|
border-color: var(--hybrid-button-secondary-dashed-border-color,var(--hybrid-button-local-secondary-dashed-border-color));
|
|
200
326
|
}
|
|
327
|
+
|
|
328
|
+
/* Secondary button disabled state */
|
|
201
329
|
button[data-type='secondary']:disabled {
|
|
202
330
|
background-color: var(--hybrid-button-secondary-disabled-background-color,var(--hybrid-button-local-secondary-disabled-background-color));
|
|
203
331
|
color: var(--hybrid-button-secondary-disabled-text-color,var(--hybrid-button-local-secondary-disabled-text-color));
|
|
204
332
|
border-color: var(--hybrid-button-secondary-disabled-border-color,var(--hybrid-button-local-secondary-disabled-border-color));
|
|
205
333
|
}
|
|
334
|
+
|
|
335
|
+
/* Secondary button hover state */
|
|
206
336
|
button[data-type='secondary']:hover:not(:disabled) {
|
|
207
337
|
background-color: var(--hybrid-button-secondary-hover-background-color,var(--hybrid-button-local-secondary-hover-background-color));
|
|
208
338
|
color: var(--hybrid-button-secondary-text-color,var(--hybrid-button-local-secondary-text-color));
|
|
@@ -212,119 +342,43 @@ const buttonStyles = css `
|
|
|
212
342
|
--hybrid-icon-color: var(--hybrid-button-secondary-text-color,var(--hybrid-button-local-secondary-text-color));
|
|
213
343
|
}
|
|
214
344
|
|
|
345
|
+
/* Secondary button active state */
|
|
215
346
|
button[data-type='secondary']:active:not(:disabled) {
|
|
216
347
|
background-color: var(--hybrid-button-secondary-active-background-color,var(--hybrid-button-local-secondary-active-background-color));
|
|
217
348
|
border-color: var(--hybrid-button-secondary-active-border-color,var(--hybrid-button-local-secondary-active-border-color));
|
|
218
349
|
outline: var(--hybrid-button-secondary-outline,var(--hybrid-button-local-secondary-outline));
|
|
219
350
|
outline-offset: var(--hybrid-button-secondary-outline-offset,var(--hybrid-button-local-secondary-outline-offset));
|
|
220
351
|
}
|
|
352
|
+
|
|
353
|
+
/* ========================================
|
|
354
|
+
* UTILITY CLASSES
|
|
355
|
+
* ======================================== */
|
|
356
|
+
|
|
357
|
+
/* Dashed border style modifier */
|
|
221
358
|
.button-dashed {
|
|
222
359
|
border-style: dashed;
|
|
223
360
|
}
|
|
224
|
-
:host {
|
|
225
|
-
/* Default Button Style */
|
|
226
|
-
--hybrid-button-local-border-top: 2px solid #d0d0d0;
|
|
227
|
-
--hybrid-button-local-border-bottom: 2px solid #d0d0d0;
|
|
228
|
-
--hybrid-button-local-border-left: 2px solid #d0d0d0;
|
|
229
|
-
--hybrid-button-local-border-right: 2px solid #d0d0d0;
|
|
230
|
-
--hybrid-button-local-border-top-left-radius: 0px;
|
|
231
|
-
--hybrid-button-local-border-top-right-radius: 0px;
|
|
232
|
-
--hybrid-button-local-border-bottom-left-radius: 0px;
|
|
233
|
-
--hybrid-button-local-border-bottom-right-radius: 0px;
|
|
234
|
-
--hybrid-button-local-background-color: #f9f9f9;
|
|
235
|
-
--hybrid-button-local-text-color: #393939;
|
|
236
|
-
--hybrid-button-local-hover-border-color: #1677ff;
|
|
237
|
-
--hybrid-button-local-hover-color: #1677ff;
|
|
238
|
-
--hybrid-button-local-font-size: 0.9rem;
|
|
239
|
-
--hybrid-button-local-font-weight: normal;
|
|
240
|
-
--hybrid-button-local-text-transform: none;
|
|
241
|
-
--hybrid-button-local-active-border-color: #1661b1;
|
|
242
|
-
--hybrid-button-local-active-color: #184d86;
|
|
243
|
-
--hybrid-button-local-disabled-background-color: #c6c6c6;
|
|
244
|
-
--hybrid-button-local-disabled-text-color: #8d8d8d;
|
|
245
|
-
--hybrid-button-local-disabled-border-color: #bbb;
|
|
246
|
-
--hybrid-button-local-height: auto;
|
|
247
|
-
--hybrid-button-local-width: auto;
|
|
248
|
-
--hybrid-button-local-padding-y: 0.5rem;
|
|
249
|
-
--hybrid-button-local-padding-x: 0.6rem;
|
|
250
|
-
--hybrid-button-local-icon-width:18px;
|
|
251
|
-
--hybrid-button-local-icon-height:14px;
|
|
252
|
-
|
|
253
|
-
/* Primary Button Style */
|
|
254
|
-
--hybrid-button-local-primary-border-color: #0f62fe;
|
|
255
|
-
--hybrid-button-local-primary-background-color: #0f62fe;
|
|
256
|
-
--hybrid-button-local-primary-text-color: #ffffff;
|
|
257
|
-
--hybrid-button-local-primary-outline: 1px solid white;
|
|
258
|
-
--hybrid-button-local-primary-outline-offset: -3px;
|
|
259
|
-
--hybrid-button-local-primary-hover-background-color: #0353e9;
|
|
260
|
-
--hybrid-button-local-primary-hover-border-color: #0353e9;
|
|
261
|
-
--hybrid-button-local-primary-active-background-color: #0f62fe;
|
|
262
|
-
--hybrid-button-local-primary-active-border-color: #0f62fe;
|
|
263
|
-
--hybrid-button-local-primary-disabled-text-color: #8d8d8d;
|
|
264
|
-
--hybrid-button-local-primary-disabled-background-color: #c6c6c6;
|
|
265
|
-
--hybrid-button-local-primary-disabled-border-color: #c6c6c6;
|
|
266
|
-
--hybrid-button-local-primary-dashed-border-color: #ffffff;
|
|
267
|
-
|
|
268
|
-
/* Danger button style */
|
|
269
|
-
--hybrid-button-local-danger-background-color: #da1e28;
|
|
270
|
-
--hybrid-button-local-danger-text-color: #ffffff;
|
|
271
|
-
--hybrid-button-local-danger-border-color: #da1e28;
|
|
272
|
-
--hybrid-button-local-danger-outline: 1px solid white;
|
|
273
|
-
--hybrid-button-local-danger-outline-offset: -3px;
|
|
274
|
-
--hybrid-button-local-danger-hover-background-color: #ba1b23;
|
|
275
|
-
--hybrid-button-local-danger-hover-border-color: #ba1b23;
|
|
276
|
-
--hybrid-button-local-danger-active-background-color: #da1e28;
|
|
277
|
-
--hybrid-button-local-danger-active-border-color: #0f62fe;
|
|
278
|
-
--hybrid-button-local-danger-disabled-background-color: #c6c6c6;
|
|
279
|
-
--hybrid-button-local-danger-disabled-text-color: #8d8d8d;
|
|
280
|
-
--hybrid-button-local-danger-disabled-border-color: #c6c6c6;
|
|
281
|
-
--hybrid-button-local-danger-dashed-border-color: #ffffff;
|
|
282
|
-
|
|
283
|
-
/* Ghost button style */
|
|
284
|
-
--hybrid-button-local-ghost-background-color: #ffffff;
|
|
285
|
-
--hybrid-button-local-ghost-text-color: #0f62fe;
|
|
286
|
-
--hybrid-button-local-ghost-border-color: #ffffff;
|
|
287
|
-
--hybrid-button-local-ghost-active-background-color: #ffffff;
|
|
288
|
-
--hybrid-button-local-ghost-active-text-color: #054ada;
|
|
289
|
-
--hybrid-button-local-ghost-active-border-color: #0f62fe;
|
|
290
|
-
--hybrid-button-local-ghost-hover-background-color: #e5e5e5;
|
|
291
|
-
--hybrid-button-local-ghost-hover-border-color: #e5e5e5;
|
|
292
|
-
--hybrid-button-local-ghost-hover-text-color: #054ada;
|
|
293
|
-
--hybrid-button-local-ghost-disabled-background-color: #ffffff;
|
|
294
|
-
--hybrid-button-local-ghost-disabled-text-color: #c6c6c6;
|
|
295
|
-
--hybrid-button-local-ghost-disabled-border-color: #ffffff;
|
|
296
|
-
--hybrid-button-local-ghost-dashed-border-color: #c6c6c6;
|
|
297
|
-
|
|
298
|
-
/* Secondary button style */
|
|
299
361
|
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
--hybrid-button-local-secondary-outline: 1px solid white;
|
|
304
|
-
--hybrid-button-local-secondary-outline-offset: -3px;
|
|
305
|
-
--hybrid-button-local-secondary-hover-background-color: #4c4c4c;
|
|
306
|
-
--hybrid-button-local-secondary-hover-border-color: #4c4c4c;
|
|
307
|
-
--hybrid-button-local-secondary-active-background-color: #393939;
|
|
308
|
-
--hybrid-button-local-secondary-active-border-color: #0f62fe;
|
|
309
|
-
--hybrid-button-local-secondary-disabled-background-color: #c6c6c6;
|
|
310
|
-
--hybrid-button-local-secondary-disabled-text-color: #8d8d8d;
|
|
311
|
-
--hybrid-button-local-secondary-disabled-border-color: #c6c6c6;
|
|
312
|
-
--hybrid-button-local-secondary-dashed-border-color: #ffffff;
|
|
313
|
-
|
|
314
|
-
/* Sizes */
|
|
315
|
-
|
|
316
|
-
--hybrid-large-button-local-padding-y: 0.5rem;
|
|
317
|
-
--hybrid-large-button-local-padding-x: 0.9rem;
|
|
318
|
-
--hybrid-large-button-local-font-size: 1rem;
|
|
319
|
-
|
|
320
|
-
--hybrid-small-button-local-padding-y: 0.5rem;
|
|
321
|
-
--hybrid-small-button-local-padding-x: 0.4rem;
|
|
322
|
-
--hybrid-small-button-local-font-size: 0.7rem;
|
|
323
|
-
}
|
|
362
|
+
/* ========================================
|
|
363
|
+
* VARIANT STYLES
|
|
364
|
+
* ======================================== */
|
|
324
365
|
|
|
325
|
-
/*
|
|
326
|
-
button[data-theme="dark"] {
|
|
366
|
+
/* Primary button variant */
|
|
327
367
|
|
|
368
|
+
/* ========================================
|
|
369
|
+
* DARK THEME OVERRIDES
|
|
370
|
+
* ======================================== */
|
|
371
|
+
|
|
372
|
+
/**
|
|
373
|
+
* Dark theme styles using data-theme attribute on button element
|
|
374
|
+
* These override the light theme defaults when data-theme="dark" is applied
|
|
375
|
+
*/
|
|
376
|
+
/**
|
|
377
|
+
* Dark theme styles using data-theme attribute on button element
|
|
378
|
+
* These override the light theme defaults when data-theme="dark" is applied
|
|
379
|
+
*/
|
|
380
|
+
button[data-theme="dark"] {
|
|
381
|
+
/* Default button dark theme overrides */
|
|
328
382
|
--hybrid-button-local-background-color: #000000;
|
|
329
383
|
--hybrid-button-local-text-color: #ffffff;
|
|
330
384
|
--hybrid-button-local-hover-border-color: #6f6f6f;
|
|
@@ -333,7 +387,7 @@ const buttonStyles = css `
|
|
|
333
387
|
--hybrid-button-local-active-color: #c6c6c6;
|
|
334
388
|
--hybrid-button-local-disabled-background-color: #c6c6c6;
|
|
335
389
|
|
|
336
|
-
/* Primary button
|
|
390
|
+
/* Primary button dark theme overrides */
|
|
337
391
|
--hybrid-button-local-primary-outline: 1px solid black;
|
|
338
392
|
--hybrid-button-local-primary-outline-offset: -3px;
|
|
339
393
|
--hybrid-button-local-primary-active-border-color: #ffffff;
|
|
@@ -341,7 +395,7 @@ const buttonStyles = css `
|
|
|
341
395
|
--hybrid-button-local-primary-disabled-background-color: #8d8d8d;
|
|
342
396
|
--hybrid-button-local-primary-disabled-border-color: #8d8d8d;
|
|
343
397
|
|
|
344
|
-
/* Secondary button
|
|
398
|
+
/* Secondary button dark theme overrides */
|
|
345
399
|
--hybrid-button-local-secondary-background-color: #6f6f6f;
|
|
346
400
|
--hybrid-button-local-secondary-border-color: #6f6f6f;
|
|
347
401
|
--hybrid-button-local-secondary-text-color: #ffffff;
|
|
@@ -356,7 +410,7 @@ const buttonStyles = css `
|
|
|
356
410
|
--hybrid-button-local-secondary-disabled-border-color: #6f6f6f;
|
|
357
411
|
--hybrid-button-local-secondary-dashed-border-color: #ffffff;
|
|
358
412
|
|
|
359
|
-
/* Ghost button
|
|
413
|
+
/* Ghost button dark theme overrides */
|
|
360
414
|
--hybrid-button-local-ghost-background-color: transparent;
|
|
361
415
|
--hybrid-button-local-ghost-text-color: #78a9ff;
|
|
362
416
|
--hybrid-button-local-ghost-border-color: transparent;
|
|
@@ -371,7 +425,7 @@ const buttonStyles = css `
|
|
|
371
425
|
--hybrid-button-local-ghost-disabled-border-color: transparent;
|
|
372
426
|
--hybrid-button-local-ghost-dashed-border-color: #c6c6c6;
|
|
373
427
|
|
|
374
|
-
/* Danger button
|
|
428
|
+
/* Danger button dark theme overrides */
|
|
375
429
|
--hybrid-button-local-danger-outline: 1px solid #000000;
|
|
376
430
|
--hybrid-button-local-danger-outline-offset: -3px;
|
|
377
431
|
--hybrid-button-local-danger-hover-background-color: #ba1b23;
|
|
@@ -384,5 +438,22 @@ const buttonStyles = css `
|
|
|
384
438
|
--hybrid-button-local-danger-dashed-border-color: #ffffff;
|
|
385
439
|
}
|
|
386
440
|
`;
|
|
387
|
-
|
|
388
|
-
|
|
441
|
+
/**
|
|
442
|
+
* Exported styles for the nr-button component
|
|
443
|
+
*
|
|
444
|
+
* @description
|
|
445
|
+
* This export provides the complete styling system for the button component,
|
|
446
|
+
* including all variants, states, sizes, theme support, and CSS custom properties.
|
|
447
|
+
*
|
|
448
|
+
* @usage
|
|
449
|
+
* Import and use in the component's styles property:
|
|
450
|
+
* ```typescript
|
|
451
|
+
* import { styles } from './nr-button.style.ts';
|
|
452
|
+
*
|
|
453
|
+
* @Component({
|
|
454
|
+
* styles: styles
|
|
455
|
+
* })
|
|
456
|
+
* ```
|
|
457
|
+
*/
|
|
458
|
+
export const styles = [buttonStyles, buttonVariables];
|
|
459
|
+
//# sourceMappingURL=nr-button.style.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nr-button.style.js","sourceRoot":"","sources":["../../../src/components/button/nr-button.style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE;;;;;;;;;;;;;;GAcG;AACH,MAAM,YAAY,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsavB,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC","sourcesContent":["import { css } from 'lit';\nimport { buttonVariables } from './nr-button.style.variables.js';\n\n/**\n * Button component styles for the Hybrid UI Library\n * \n * This file contains all the styling for the nr-button component, including:\n * - Base button styles with CSS custom properties for theming\n * - Multiple button variants (primary, secondary, ghost, danger)\n * - Size variations (small, large)\n * - State styles (hover, active, disabled, loading)\n * - Dark theme support\n * - Icon positioning and styling\n * - Responsive design considerations\n * \n * The styling system uses CSS custom properties with fallbacks to allow\n * for both global and local customization of button appearance.\n */\nconst buttonStyles = css`\n /* Container for button content and icon positioning */\n #container {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n }\n\n /* Icon positioned to the right of text when iconPosition='right' */\n :host([iconPosition='right']) #container {\n flex-direction: row-reverse;\n }\n\n /* Icon styling within button */\n hy-icon {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 2px;\n }\n\n /* \n * Base button element styles\n * Uses CSS custom properties with fallbacks for comprehensive theming support\n * Properties follow the pattern: --hybrid-button-{property}, --hybrid-button-local-{property}\n */\n\n /* \n * Base button element styles\n * Uses CSS custom properties with fallbacks for comprehensive theming support\n * Properties follow the pattern: --hybrid-button-{property}, --hybrid-button-local-{property}\n */\n button {\n /* Dimensions */\n height: var(--hybrid-button-height,var(--hybrid-button-local-height));\n width: var(--hybrid-button-width,var(--hybrid-button-local-width));\n \n /* Border properties - individual sides for granular control */\n border-left: var(--hybrid-button-border-left,var(--hybrid-button-local-border-left));\n border-right: var(--hybrid-button-border-right,var(--hybrid-button-local-border-right));\n border-top: var(--hybrid-button-border-top,var(--hybrid-button-local-border-top));\n border-bottom: var(--hybrid-button-border-bottom,var(--hybrid-button-local-border-bottom));\n \n /* Border radius - individual corners for design flexibility */\n border-top-left-radius:var(--hybrid-button-border-top-left-radius,var(--hybrid-button-local-border-top-left-radius)) ;\n border-top-right-radius: var(--hybrid-button-border-top-right-radius,var(--hybrid-button-local-border-top-right-radius));\n border-bottom-left-radius: var(--hybrid-button-border-bottom-left-radius,var(--hybrid-button-local-border-bottom-left-radius));\n border-bottom-right-radius: var(--hybrid-button-border-bottom-right-radius,var(--hybrid-button-local-border-bottom-right-radius));\n \n /* Colors */\n background-color: var(--hybrid-button-background-color,var(--hybrid-button-local-background-color));\n color: var(--hybrid-button-text-color,var(--hybrid-button-local-text-color));\n \n /* Typography */\n font-size: var(--hybrid-button-font-size,var(--hybrid-button-local-font-size));\n font-weight: var(--hybrid-button-font-weight,var(--hybrid-button-local-font-weight));\n text-transform: var(--hybrid-button-text-transform,var(--hybrid-button-local-text-transform));\n \n /* Spacing */\n padding-top: var(--hybrid-button-padding-y,var(--hybrid-button-local-padding-y));\n margin-top: var(--hybrid-button-margin-y,var(--hybrid-button-local-margin-y));\n padding-bottom: var(--hybrid-button-padding-y,var(--hybrid-button-local-padding-y));\n padding-right: var(--hybrid-button-padding-x,var(--hybrid-button-local-padding-x));\n padding-left: var(--hybrid-button-padding-x,var(--hybrid-button-local-padding-x));\n font-size: var(--hybrid-button-font-size,var(--hybrid-button-local-font-size));\n }\n \n /* Icon styling within button - inherits text color and size */\n button hy-icon {\n --hybrid-icon-color: var(--hybrid-button-text-color,var(--hybrid-button-local-text-color));\n --hybrid-icon-width: var(--hybrid-button-icon-width,var(--hybrid-button-local-icon-width));\n --hybrid-icon-height: var(--hybrid-button-icon-height,var(--hybrid-button-local-icon-height));\n }\n\n /* \n * Hover state styles\n * Applied when button is hovered but not disabled\n */\n\n /* \n * Hover state styles\n * Applied when button is hovered but not disabled\n */\n button:hover:not(:disabled) {\n cursor: pointer;\n border-color: var(--hybrid-button-hover-border-color,var(--hybrid-button-local-hover-border-color));\n background-color: var(--hybrid-button-hover-background-color,var(--hybrid-button-local-hover-background-color));\n color: var(--hybrid-button-hover-color,var(--hybrid-button-local-hover-color));\n }\n \n /* Icon color on hover */\n button:hover:not(:disabled) hy-icon {\n --hybrid-icon-color: var(--hybrid-button-hover-color,var(--hybrid-button-local-hover-color));\n }\n\n /* \n * Active state styles\n * Applied when button is being clicked/pressed but not disabled\n */\n button:active:not(:disabled) {\n outline: none;\n border-color: var(--hybrid-button-active-border-color,var(--hybrid-button-local-active-border-color));\n color: var(--hybrid-button-active-color,var(--hybrid-button-local-active-color));\n }\n \n /* Icon color on active state */\n button:active:not(:disabled) hy-icon {\n --hybrid-icon-color: var(--hybrid-button-active-color,var(--hybrid-button-local-active-color));\n }\n\n /* \n * Disabled state styles\n * Applied when button is disabled - removes interactivity and applies muted colors\n */\n\n /* \n * Disabled state styles\n * Applied when button is disabled - removes interactivity and applies muted colors\n */\n button:disabled {\n cursor: auto;\n background-color: var(--hybrid-button-disabled-background-color,var(--hybrid-button-local-disabled-background-color));\n color: var(--hybrid-button-disabled-text-color,var(--hybrid-button-local-disabled-text-color));\n border-color: var(--hybrid-button-disabled-border-color,var(--hybrid-button-local-disabled-border-color));\n }\n\n /* ========================================\n * SIZE VARIATIONS\n * ======================================== */\n\n /* Small button size variant */\n\n /* Small button size variant */\n button[data-size='small'] {\n padding-top: var(--hybrid-small-button-padding-y,var(--hybrid-small-button-local-padding-y));\n padding-bottom: var(--hybrid-small-button-padding-y,var(--hybrid-small-button-local-padding-y));\n padding-right: var(--hybrid-small-button-padding-x,var(--hybrid-small-button-local-padding-x));\n padding-left: var(--hybrid-small-button-padding-x,var(--hybrid-small-button-local-padding-x));\n font-size: var(--hybrid-small-button-font-size,var(--hybrid-small-button-local-font-size));\n }\n\n /* Large button size variant */\n button[data-size='large'] {\n padding-top: var(--hybrid-large-button-padding-y,var(--hybrid-large-button-local-padding-y));\n padding-bottom: var(--hybrid-large-button-padding-y,var(--hybrid-large-button-local-padding-y));\n padding-right: var(--hybrid-large-button-padding-x,var(--hybrid-large-button-local-padding-x));\n padding-left: var(--hybrid-large-button-padding-x,var(--hybrid-large-button-local-padding-x));\n font-size: var(--hybrid-large-button-font-size,var(--hybrid-large-button-local-font-size));\n }\n\n /* ========================================\n * BUTTON STATES\n * ======================================== */\n\n /* Loading state - reduces opacity to indicate processing */\n button[data-state='loading'] {\n opacity: 0.5;\n }\n\n /* ========================================\n * BUTTON TYPE VARIANTS\n * ======================================== */\n\n /* DANGER BUTTON VARIANT */\n /* DANGER BUTTON VARIANT */\n \n /* Danger button base styles and icon */\n button[data-type='danger'] hy-icon {\n --hybrid-icon-color: var(--hybrid-button-danger-text-color,var(--hybrid-button-local-danger-text-color));\n }\n button[data-type='danger'] {\n border-color: var(--hybrid-button-danger-border-color,var(--hybrid-button-local-danger-border-color));\n background-color: var(--hybrid-button-danger-background-color,var(--hybrid-button-local-danger-background-color));\n color: var(--hybrid-button-danger-text-color,var(--hybrid-button-local-danger-text-color));\n }\n \n /* Danger button with dashed border variant */\n button[data-type='danger'].button-dashed {\n border-color: var(--hybrid-button-danger-dashed-border-color,var(--hybrid-button-local-danger-dashed-border-color));\n }\n \n /* Danger button disabled state */\n button[data-type='danger']:disabled {\n border-color: var(--hybrid-button-danger-disabled-border-color,var(--hybrid-button-local-danger-disabled-border-color));\n background-color: var(--hybrid-button-danger-disabled-background-color,var(--hybrid-button-local-danger-disabled-background-color));\n color: var(--hybrid-button-danger-disabled-text-color,var(--hybrid-button-local-danger-disabled-text-color));\n }\n\n /* Danger button hover state */\n button[data-type='danger']:hover:not(:disabled) {\n background-color: var(--hybrid-button-danger-hover-background-color,var(--hybrid-button-local-danger-hover-background-color));\n border-color: var(--hybrid-button-danger-hover-border-color,var(--hybrid-button-local-danger-hover-border-color));\n color: var(--hybrid-button-danger-text-color,var(--hybrid-button-local-danger-text-color));\n }\n button[data-type='danger']:hover:not(:disabled) hy-icon {\n --hybrid-icon-color: var(--hybrid-button-danger-text-color,var(--hybrid-button-local-danger-text-color));\n }\n\n /* Danger button active state */\n button[data-type='danger']:active:not(:disabled) {\n background-color: var(--hybrid-button-danger-active-background-color,var(--hybrid-button-local-danger-active-background-color));\n border-color: var(--hybrid-button-danger-active-border-color,var(--hybrid-button-local-danger-active-border-color));\n outline: var(--hybrid-button-danger-outline,var(--hybrid-button-local-danger-outline));\n outline-offset: var(--hybrid-button-danger-outline-offset,var(--hybrid-button-local-danger-outline-offset));\n }\n\n /* PRIMARY BUTTON VARIANT */\n /* PRIMARY BUTTON VARIANT */\n \n /* Primary button base styles and icon */\n button[data-type='primary'] hy-icon {\n --hybrid-icon-color: var(--hybrid-button-primary-text-color,var(--hybrid-button-local-primary-text-color));\n }\n button[data-type='primary'] {\n border-color: var(--hybrid-button-primary-border-color,var(--hybrid-button-local-primary-border-color));\n background-color: var(--hybrid-button-primary-background-color,var(--hybrid-button-local-primary-background-color));\n color: var(--hybrid-button-primary-text-color,var(--hybrid-button-local-primary-text-color));\n }\n \n /* Primary button with dashed border variant */\n button[data-type='primary'].button-dashed {\n border-color: var(--hybrid-button-primary-dashed-border-color,var(--hybrid-button-local-primary-dashed-border-color));\n }\n\n /* Primary button disabled state */\n button[data-type='primary']:disabled {\n border-color: var(--hybrid-button-primary-disabled-border-color,var(--hybrid-button-local-primary-disabled-border-color));\n background-color: var(--hybrid-button-primary-disabled-background-color,var(--hybrid-button-local-primary-disabled-background-color));\n color: var(--hybrid-button-primary-disabled-text-color,var(--hybrid-button-local-primary-disabled-text-color));\n }\n\n /* Primary button hover state */\n button[data-type='primary']:hover:not(:disabled) {\n background-color: var(--hybrid-button-primary-hover-background-color,var(--hybrid-button-local-primary-hover-background-color));\n border-color: var(--hybrid-button-primary-hover-border-color,var(--hybrid-button-local-primary-hover-border-color));\n color: var(--hybrid-button-primary-text-color,var(--hybrid-button-local-primary-text-color));\n }\n button[data-type='primary']:hover:not(:disabled) hy-icon {\n --hybrid-icon-color: var(--hybrid-button-primary-text-color,var(--hybrid-button-local-primary-text-color));\n }\n \n /* Primary button active state */\n button[data-type='primary']:active:not(:disabled) {\n border-color: var(--hybrid-button-primary-active-border-color,var(--hybrid-button-local-primary-active-border-color));\n background-color: var(--hybrid-button-primary-active-background-color,var(--hybrid-button-local-primary-active-background-color));\n outline: var(--hybrid-button-primary-outline,var(--hybrid-button-local-primary-outline));\n outline-offset: var(--hybrid-button-primary-outline-offset,var(--hybrid-button-local-primary-outline-offset));\n }\n\n /* GHOST BUTTON VARIANT */\n /* GHOST BUTTON VARIANT */\n \n /* Ghost button base styles and icon */\n button[data-type='ghost'] hy-icon {\n --hybrid-icon-color: var(--hybrid-button-ghost-text-color,var(--hybrid-button-local-ghost-text-color));\n }\n button[data-type='ghost'] {\n background-color: var(--hybrid-button-ghost-background-color,var(--hybrid-button-local-ghost-background-color));\n color: var(--hybrid-button-ghost-text-color,var(--hybrid-button-local-ghost-text-color));\n border-color: var(--hybrid-button-ghost-border-color,var(--hybrid-button-local-ghost-border-color));\n }\n \n /* Ghost button with dashed border variant */\n button[data-type='ghost'].button-dashed {\n border-color: var(--hybrid-button-ghost-dashed-border-color,var(--hybrid-button-local-ghost-dashed-border-color));\n }\n \n /* Ghost button disabled state */\n button[data-type='ghost']:disabled {\n background-color: var(--hybrid-button-ghost-disabled-background-color,var(--hybrid-button-local-ghost-disabled-background-color));\n color: var(--hybrid-button-ghost-disabled-text-color,var(--hybrid-button-local-ghost-disabled-text-color));\n border-color: var(--hybrid-button-ghost-disabled-border-color,var(--hybrid-button-local-ghost-disabled-border-color));\n }\n\n /* Ghost button hover state */\n button[data-type='ghost']:hover:not(:disabled) {\n background-color: var(--hybrid-button-ghost-hover-background-color,var(--hybrid-button-local-ghost-hover-background-color));\n color: var(--hybrid-button-ghost-hover-text-color,var(--hybrid-button-local-ghost-hover-text-color));\n border-color: var(--hybrid-button-local-ghost-hover-border-color,var(--hybrid-button-local-ghost-hover-border-color));\n }\n button[data-type='ghost']:hover:not(:disabled) hy-icon {\n --hybrid-icon-color: var(--hybrid-button-ghost-hover-text-color,var(--hybrid-button-local-ghost-hover-text-color));\n }\n \n /* Ghost button active state */\n button[data-type='ghost']:active:not(:disabled) {\n background-color: var(--hybrid-button-ghost-active-background-color,var(--hybrid-button-local-ghost-active-background-color));\n border-color: var(--hybrid-button-ghost-active-border-color,var(--hybrid-button-local-ghost-active-border-color));\n }\n\n /* SECONDARY BUTTON VARIANT */\n /* SECONDARY BUTTON VARIANT */\n \n /* Secondary button base styles and icon */\n button[data-type='secondary'] hy-icon {\n --hybrid-icon-color: var(--hybrid-button-secondary-text-color,var(--hybrid-button-local-secondary-text-color));\n }\n button[data-type='secondary'] {\n background-color: var(--hybrid-button-secondary-background-color,var(--hybrid-button-local-secondary-background-color));\n color: var(--hybrid-button-secondary-text-color,var(--hybrid-button-local-secondary-text-color));\n border-color: var(--hybrid-button-secondary-border-color,var(--hybrid-button-local-secondary-border-color));\n }\n \n /* Secondary button with dashed border variant */\n button[data-type='secondary'].button-dashed {\n border-color: var(--hybrid-button-secondary-dashed-border-color,var(--hybrid-button-local-secondary-dashed-border-color));\n }\n \n /* Secondary button disabled state */\n button[data-type='secondary']:disabled {\n background-color: var(--hybrid-button-secondary-disabled-background-color,var(--hybrid-button-local-secondary-disabled-background-color));\n color: var(--hybrid-button-secondary-disabled-text-color,var(--hybrid-button-local-secondary-disabled-text-color));\n border-color: var(--hybrid-button-secondary-disabled-border-color,var(--hybrid-button-local-secondary-disabled-border-color));\n }\n \n /* Secondary button hover state */\n button[data-type='secondary']:hover:not(:disabled) {\n background-color: var(--hybrid-button-secondary-hover-background-color,var(--hybrid-button-local-secondary-hover-background-color));\n color: var(--hybrid-button-secondary-text-color,var(--hybrid-button-local-secondary-text-color));\n border-color: var(--hybrid-button-secondary-hover-border-color,var(--hybrid-button-local-secondary-hover-border-color));\n }\n button[data-type='secondary']:hover:not(:disabled) hy-icon {\n --hybrid-icon-color: var(--hybrid-button-secondary-text-color,var(--hybrid-button-local-secondary-text-color));\n }\n\n /* Secondary button active state */\n button[data-type='secondary']:active:not(:disabled) {\n background-color: var(--hybrid-button-secondary-active-background-color,var(--hybrid-button-local-secondary-active-background-color));\n border-color: var(--hybrid-button-secondary-active-border-color,var(--hybrid-button-local-secondary-active-border-color));\n outline: var(--hybrid-button-secondary-outline,var(--hybrid-button-local-secondary-outline));\n outline-offset: var(--hybrid-button-secondary-outline-offset,var(--hybrid-button-local-secondary-outline-offset));\n }\n\n /* ========================================\n * UTILITY CLASSES\n * ======================================== */\n\n /* Dashed border style modifier */\n .button-dashed {\n border-style: dashed;\n }\n\n /* ========================================\n * VARIANT STYLES\n * ======================================== */\n\n /* Primary button variant */\n\n /* ========================================\n * DARK THEME OVERRIDES\n * ======================================== */\n \n /**\n * Dark theme styles using data-theme attribute on button element\n * These override the light theme defaults when data-theme=\"dark\" is applied\n */\n /**\n * Dark theme styles using data-theme attribute on button element\n * These override the light theme defaults when data-theme=\"dark\" is applied\n */\n button[data-theme=\"dark\"] {\n /* Default button dark theme overrides */\n --hybrid-button-local-background-color: #000000;\n --hybrid-button-local-text-color: #ffffff;\n --hybrid-button-local-hover-border-color: #6f6f6f;\n --hybrid-button-local-hover-color: #6f6f6f;\n --hybrid-button-local-active-border-color: #c6c6c6;\n --hybrid-button-local-active-color: #c6c6c6;\n --hybrid-button-local-disabled-background-color: #c6c6c6;\n\n /* Primary button dark theme overrides */\n --hybrid-button-local-primary-outline: 1px solid black;\n --hybrid-button-local-primary-outline-offset: -3px;\n --hybrid-button-local-primary-active-border-color: #ffffff;\n --hybrid-button-local-primary-disabled-text-color: #c6c6c6;\n --hybrid-button-local-primary-disabled-background-color: #8d8d8d;\n --hybrid-button-local-primary-disabled-border-color: #8d8d8d;\n\n /* Secondary button dark theme overrides */\n --hybrid-button-local-secondary-background-color: #6f6f6f;\n --hybrid-button-local-secondary-border-color: #6f6f6f;\n --hybrid-button-local-secondary-text-color: #ffffff;\n --hybrid-button-local-secondary-active-border-color: #ffffff;\n --hybrid-button-local-secondary-active-background-color: #6f6f6f;\n --hybrid-button-local-secondary-outline: 1px solid black;\n --hybrid-button-local-secondary-outline-offset: -3px;\n --hybrid-button-local-secondary-hover-background-color: #606060;\n --hybrid-button-local-secondary-hover-border-color: #606060;\n --hybrid-button-local-secondary-disabled-background-color: #6f6f6f;\n --hybrid-button-local-secondary-disabled-text-color: #8d8d8d;\n --hybrid-button-local-secondary-disabled-border-color: #6f6f6f;\n --hybrid-button-local-secondary-dashed-border-color: #ffffff;\n\n /* Ghost button dark theme overrides */\n --hybrid-button-local-ghost-background-color: transparent;\n --hybrid-button-local-ghost-text-color: #78a9ff;\n --hybrid-button-local-ghost-border-color: transparent;\n --hybrid-button-local-ghost-active-background-color: transparent;\n --hybrid-button-local-ghost-active-text-color: #a6c8ff;\n --hybrid-button-local-ghost-active-border-color: #ffffff;\n --hybrid-button-local-ghost-hover-background-color: #4c4c4c;\n --hybrid-button-local-ghost-hover-border-color: #4c4c4c;\n --hybrid-button-local-ghost-hover-text-color: #a6c8ff;\n --hybrid-button-local-ghost-disabled-background-color: transparent;\n --hybrid-button-local-ghost-disabled-text-color: #6f6f6f;\n --hybrid-button-local-ghost-disabled-border-color: transparent;\n --hybrid-button-local-ghost-dashed-border-color: #c6c6c6;\n\n /* Danger button dark theme overrides */\n --hybrid-button-local-danger-outline: 1px solid #000000;\n --hybrid-button-local-danger-outline-offset: -3px;\n --hybrid-button-local-danger-hover-background-color: #ba1b23;\n --hybrid-button-local-danger-hover-border-color: #ba1b23;\n --hybrid-button-local-danger-active-background-color: #da1e28;\n --hybrid-button-local-danger-active-border-color: #ffffff;\n --hybrid-button-local-danger-disabled-background-color: #6f6f6f;\n --hybrid-button-local-danger-disabled-text-color: #8d8d8d;\n --hybrid-button-local-danger-disabled-border-color: #6f6f6f;\n --hybrid-button-local-danger-dashed-border-color: #ffffff;\n }\n`;\n\n/**\n * Exported styles for the nr-button component\n * \n * @description\n * This export provides the complete styling system for the button component,\n * including all variants, states, sizes, theme support, and CSS custom properties.\n * \n * @usage\n * Import and use in the component's styles property:\n * ```typescript\n * import { styles } from './nr-button.style.ts';\n * \n * @Component({\n * styles: styles\n * })\n * ```\n */\nexport const styles = [buttonStyles, buttonVariables];\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Button component CSS custom properties (design tokens)
|
|
3
|
+
*
|
|
4
|
+
* This file contains all the CSS custom properties used by the nr-button component,
|
|
5
|
+
* organized by functionality and including both light and dark theme variants.
|
|
6
|
+
*
|
|
7
|
+
* The styling system uses CSS custom properties with fallbacks to allow
|
|
8
|
+
* for both global and local customization of button appearance.
|
|
9
|
+
*/
|
|
10
|
+
export declare const buttonVariables: import("lit").CSSResult;
|
|
11
|
+
//# sourceMappingURL=nr-button.style.variables.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nr-button.style.variables.d.ts","sourceRoot":"","sources":["../../../src/components/button/nr-button.style.variables.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,yBAsL3B,CAAC"}
|