ywana-core8 0.1.83 → 0.1.85
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/__previewjs__/Wrapper.tsx +8 -5
- package/build-doc.sh +10 -0
- package/dist/index.cjs +627 -194
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +353 -105
- package/dist/index.css.map +1 -1
- package/dist/index.modern.js +628 -196
- package/dist/index.modern.js.map +1 -1
- package/dist/index.umd.js +629 -196
- package/dist/index.umd.js.map +1 -1
- package/doc/README.md +196 -0
- package/doc/craco.config.js +31 -0
- package/doc/generate-examples.cjs +310 -0
- package/doc/package-lock.json +17298 -0
- package/doc/package.json +33 -0
- package/doc/public/index.html +22 -0
- package/doc/src/App.css +171 -0
- package/doc/src/App.js +214 -0
- package/doc/src/components/ExamplePage.js +104 -0
- package/doc/src/components/WelcomePage.js +84 -0
- package/doc/src/examples/button.example.js +47 -0
- package/doc/src/examples/input.example.js +91 -0
- package/doc/src/index.css +237 -0
- package/doc/src/index.js +11 -0
- package/package.json +9 -2
- package/preview.config.js +38 -0
- package/src/html/accordion.example.js +2 -2
- package/src/html/actions-cell.css +108 -0
- package/src/html/actions-cell.example.js +587 -0
- package/src/html/actions-cell.js +260 -0
- package/src/html/checkbox.example.js +2 -2
- package/src/html/chip.example.js +2 -2
- package/src/html/color.example.js +2 -2
- package/src/html/form.example.js +2 -2
- package/src/html/header2.example.js +2 -2
- package/src/html/index.js +1 -0
- package/src/html/menu.css +9 -2
- package/src/html/menu.js +14 -2
- package/src/html/progress.example.js +2 -2
- package/src/html/property.example.js +2 -2
- package/src/html/radio.example.js +2 -2
- package/src/html/switch.example.js +2 -2
- package/src/html/tab.example.js +2 -2
- package/src/html/table.css +47 -1
- package/src/html/table.example.js +1012 -0
- package/src/html/table.js +12 -7
- package/src/html/table2-actions-test.js +138 -0
- package/src/html/table2.css +40 -3
- package/src/html/table2.example.js +330 -0
- package/src/html/table2.js +56 -13
- package/src/html/textfield.css +17 -4
- package/src/html/tokenfield.example.js +2 -2
- package/src/html/tree.css +42 -7
- package/src/html/tree.example.js +169 -7
- package/src/html/tree.js +216 -93
- package/src/widgets/calendar/Calendar.js +1 -1
- /package/{ACCORDION_EVALUATION.md → doc/evalulations/ACCORDION_EVALUATION.md} +0 -0
- /package/{CHECKBOX_EVALUATION.md → doc/evalulations/CHECKBOX_EVALUATION.md} +0 -0
- /package/{CHIP_EVALUATION.md → doc/evalulations/CHIP_EVALUATION.md} +0 -0
- /package/{COLOR_EVALUATION.md → doc/evalulations/COLOR_EVALUATION.md} +0 -0
- /package/{COMPONENTS_EVALUATION.md → doc/evalulations/COMPONENTS_EVALUATION.md} +0 -0
- /package/{FORM_EVALUATION.md → doc/evalulations/FORM_EVALUATION.md} +0 -0
- /package/{HEADER_EVALUATION.md → doc/evalulations/HEADER_EVALUATION.md} +0 -0
- /package/{ICON_EVALUATION.md → doc/evalulations/ICON_EVALUATION.md} +0 -0
- /package/{LIST_EVALUATION.md → doc/evalulations/LIST_EVALUATION.md} +0 -0
- /package/{PROGRESS_EVALUATION.md → doc/evalulations/PROGRESS_EVALUATION.md} +0 -0
- /package/{RADIO_EVALUATION.md → doc/evalulations/RADIO_EVALUATION.md} +0 -0
- /package/{RADIO_VISUAL_FIX.md → doc/evalulations/RADIO_VISUAL_FIX.md} +0 -0
- /package/{SECTION_IMPROVEMENTS.md → doc/evalulations/SECTION_IMPROVEMENTS.md} +0 -0
- /package/{SWITCH_EVALUATION.md → doc/evalulations/SWITCH_EVALUATION.md} +0 -0
- /package/{SWITCH_VISUAL_FIX.md → doc/evalulations/SWITCH_VISUAL_FIX.md} +0 -0
- /package/{TAB_EVALUATION.md → doc/evalulations/TAB_EVALUATION.md} +0 -0
- /package/{TEXTFIELD_EVALUATION.md → doc/evalulations/TEXTFIELD_EVALUATION.md} +0 -0
- /package/{TOOLTIP_FIX.md → doc/evalulations/TOOLTIP_FIX.md} +0 -0
- /package/{TREE_EVALUATION.md → doc/evalulations/TREE_EVALUATION.md} +0 -0
- /package/src/incubator/{PDFViewer.js → pdfViewer.js} +0 -0
@@ -0,0 +1,91 @@
|
|
1
|
+
import React, { useState } from 'react';
|
2
|
+
import { Input } from 'ywana-core8/html';
|
3
|
+
|
4
|
+
const InputExamples = () => {
|
5
|
+
const [values, setValues] = useState({
|
6
|
+
basic: '',
|
7
|
+
email: '',
|
8
|
+
password: '',
|
9
|
+
search: ''
|
10
|
+
});
|
11
|
+
|
12
|
+
const handleChange = (name, value) => {
|
13
|
+
setValues(prev => ({ ...prev, [name]: value }));
|
14
|
+
};
|
15
|
+
|
16
|
+
return (
|
17
|
+
<div className="examples-grid">
|
18
|
+
<div className="example-section">
|
19
|
+
<h3>Tipos Básicos</h3>
|
20
|
+
<div className="example-column">
|
21
|
+
<Input
|
22
|
+
label="Texto básico"
|
23
|
+
placeholder="Ingresa tu nombre"
|
24
|
+
value={values.basic}
|
25
|
+
onChange={(value) => handleChange('basic', value)}
|
26
|
+
/>
|
27
|
+
<Input
|
28
|
+
type="email"
|
29
|
+
label="Email"
|
30
|
+
placeholder="tu@email.com"
|
31
|
+
value={values.email}
|
32
|
+
onChange={(value) => handleChange('email', value)}
|
33
|
+
/>
|
34
|
+
<Input
|
35
|
+
type="password"
|
36
|
+
label="Contraseña"
|
37
|
+
placeholder="••••••••"
|
38
|
+
value={values.password}
|
39
|
+
onChange={(value) => handleChange('password', value)}
|
40
|
+
/>
|
41
|
+
</div>
|
42
|
+
</div>
|
43
|
+
|
44
|
+
<div className="example-section">
|
45
|
+
<h3>Con Iconos</h3>
|
46
|
+
<div className="example-column">
|
47
|
+
<Input
|
48
|
+
label="Búsqueda"
|
49
|
+
placeholder="Buscar..."
|
50
|
+
icon="search"
|
51
|
+
value={values.search}
|
52
|
+
onChange={(value) => handleChange('search', value)}
|
53
|
+
/>
|
54
|
+
<Input
|
55
|
+
label="Usuario"
|
56
|
+
placeholder="Nombre de usuario"
|
57
|
+
icon="person"
|
58
|
+
iconPosition="left"
|
59
|
+
/>
|
60
|
+
</div>
|
61
|
+
</div>
|
62
|
+
|
63
|
+
<div className="example-section">
|
64
|
+
<h3>Estados</h3>
|
65
|
+
<div className="example-column">
|
66
|
+
<Input
|
67
|
+
label="Campo normal"
|
68
|
+
placeholder="Estado normal"
|
69
|
+
/>
|
70
|
+
<Input
|
71
|
+
label="Campo deshabilitado"
|
72
|
+
placeholder="No editable"
|
73
|
+
disabled
|
74
|
+
/>
|
75
|
+
<Input
|
76
|
+
label="Campo con error"
|
77
|
+
placeholder="Valor inválido"
|
78
|
+
error="Este campo es requerido"
|
79
|
+
/>
|
80
|
+
<Input
|
81
|
+
label="Campo exitoso"
|
82
|
+
placeholder="Valor válido"
|
83
|
+
success="¡Perfecto!"
|
84
|
+
/>
|
85
|
+
</div>
|
86
|
+
</div>
|
87
|
+
</div>
|
88
|
+
);
|
89
|
+
};
|
90
|
+
|
91
|
+
export default InputExamples;
|
@@ -0,0 +1,237 @@
|
|
1
|
+
/* Reset y estilos base */
|
2
|
+
* {
|
3
|
+
margin: 0;
|
4
|
+
padding: 0;
|
5
|
+
box-sizing: border-box;
|
6
|
+
}
|
7
|
+
|
8
|
+
body {
|
9
|
+
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
|
10
|
+
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
|
11
|
+
sans-serif;
|
12
|
+
-webkit-font-smoothing: antialiased;
|
13
|
+
-moz-osx-font-smoothing: grayscale;
|
14
|
+
background-color: #f8fafc;
|
15
|
+
color: #1e293b;
|
16
|
+
line-height: 1.6;
|
17
|
+
}
|
18
|
+
|
19
|
+
code {
|
20
|
+
font-family: 'Fira Code', 'Monaco', 'Cascadia Code', 'Roboto Mono', monospace;
|
21
|
+
}
|
22
|
+
|
23
|
+
/* Variables CSS para el tema */
|
24
|
+
:root {
|
25
|
+
--primary-color: #3b82f6;
|
26
|
+
--primary-hover: #2563eb;
|
27
|
+
--secondary-color: #64748b;
|
28
|
+
--success-color: #10b981;
|
29
|
+
--warning-color: #f59e0b;
|
30
|
+
--error-color: #ef4444;
|
31
|
+
--background-color: #f8fafc;
|
32
|
+
--surface-color: #ffffff;
|
33
|
+
--border-color: #e2e8f0;
|
34
|
+
--text-primary: #1e293b;
|
35
|
+
--text-secondary: #64748b;
|
36
|
+
--text-muted: #94a3b8;
|
37
|
+
--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
|
38
|
+
--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
|
39
|
+
--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
|
40
|
+
--radius-sm: 0.375rem;
|
41
|
+
--radius-md: 0.5rem;
|
42
|
+
--radius-lg: 0.75rem;
|
43
|
+
}
|
44
|
+
|
45
|
+
/* Utilidades globales */
|
46
|
+
.loading-spinner {
|
47
|
+
width: 2rem;
|
48
|
+
height: 2rem;
|
49
|
+
border: 2px solid var(--border-color);
|
50
|
+
border-top: 2px solid var(--primary-color);
|
51
|
+
border-radius: 50%;
|
52
|
+
animation: spin 1s linear infinite;
|
53
|
+
margin: 0 auto;
|
54
|
+
}
|
55
|
+
|
56
|
+
@keyframes spin {
|
57
|
+
0% { transform: rotate(0deg); }
|
58
|
+
100% { transform: rotate(360deg); }
|
59
|
+
}
|
60
|
+
|
61
|
+
.material-icons {
|
62
|
+
font-family: 'Material Icons';
|
63
|
+
font-weight: normal;
|
64
|
+
font-style: normal;
|
65
|
+
font-size: 24px;
|
66
|
+
line-height: 1;
|
67
|
+
letter-spacing: normal;
|
68
|
+
text-transform: none;
|
69
|
+
display: inline-block;
|
70
|
+
white-space: nowrap;
|
71
|
+
word-wrap: normal;
|
72
|
+
direction: ltr;
|
73
|
+
-webkit-font-feature-settings: 'liga';
|
74
|
+
-webkit-font-smoothing: antialiased;
|
75
|
+
}
|
76
|
+
|
77
|
+
/* Estilos para componentes de ejemplo */
|
78
|
+
.example-container {
|
79
|
+
background: var(--surface-color);
|
80
|
+
border: 1px solid var(--border-color);
|
81
|
+
border-radius: var(--radius-lg);
|
82
|
+
padding: 2rem;
|
83
|
+
margin: 1rem 0;
|
84
|
+
box-shadow: var(--shadow-sm);
|
85
|
+
}
|
86
|
+
|
87
|
+
.example-loading {
|
88
|
+
display: flex;
|
89
|
+
flex-direction: column;
|
90
|
+
align-items: center;
|
91
|
+
justify-content: center;
|
92
|
+
padding: 3rem;
|
93
|
+
gap: 1rem;
|
94
|
+
color: var(--text-secondary);
|
95
|
+
}
|
96
|
+
|
97
|
+
.example-error {
|
98
|
+
display: flex;
|
99
|
+
flex-direction: column;
|
100
|
+
align-items: center;
|
101
|
+
justify-content: center;
|
102
|
+
padding: 3rem;
|
103
|
+
gap: 1rem;
|
104
|
+
color: var(--error-color);
|
105
|
+
background: #fef2f2;
|
106
|
+
border: 1px solid #fecaca;
|
107
|
+
border-radius: var(--radius-lg);
|
108
|
+
}
|
109
|
+
|
110
|
+
.content-header {
|
111
|
+
margin-bottom: 2rem;
|
112
|
+
}
|
113
|
+
|
114
|
+
.breadcrumb {
|
115
|
+
display: flex;
|
116
|
+
align-items: center;
|
117
|
+
gap: 0.5rem;
|
118
|
+
color: var(--text-secondary);
|
119
|
+
font-size: 0.875rem;
|
120
|
+
margin-bottom: 1rem;
|
121
|
+
}
|
122
|
+
|
123
|
+
.breadcrumb .material-icons {
|
124
|
+
font-size: 1rem;
|
125
|
+
}
|
126
|
+
|
127
|
+
/* Estilos para placeholder de ejemplos */
|
128
|
+
.example-placeholder {
|
129
|
+
display: flex;
|
130
|
+
flex-direction: column;
|
131
|
+
align-items: center;
|
132
|
+
justify-content: center;
|
133
|
+
padding: 4rem 2rem;
|
134
|
+
text-align: center;
|
135
|
+
background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
|
136
|
+
border: 2px dashed var(--border-color);
|
137
|
+
border-radius: var(--radius-lg);
|
138
|
+
color: var(--text-secondary);
|
139
|
+
}
|
140
|
+
|
141
|
+
.placeholder-icon {
|
142
|
+
width: 4rem;
|
143
|
+
height: 4rem;
|
144
|
+
background: var(--primary-color);
|
145
|
+
border-radius: 50%;
|
146
|
+
display: flex;
|
147
|
+
align-items: center;
|
148
|
+
justify-content: center;
|
149
|
+
margin-bottom: 1.5rem;
|
150
|
+
color: white;
|
151
|
+
}
|
152
|
+
|
153
|
+
.placeholder-icon .material-icons {
|
154
|
+
font-size: 2rem;
|
155
|
+
}
|
156
|
+
|
157
|
+
.example-placeholder h3 {
|
158
|
+
font-size: 1.5rem;
|
159
|
+
font-weight: 600;
|
160
|
+
color: var(--text-primary);
|
161
|
+
margin-bottom: 0.5rem;
|
162
|
+
}
|
163
|
+
|
164
|
+
.example-placeholder p {
|
165
|
+
font-size: 1rem;
|
166
|
+
margin-bottom: 2rem;
|
167
|
+
max-width: 400px;
|
168
|
+
}
|
169
|
+
|
170
|
+
.placeholder-note {
|
171
|
+
display: flex;
|
172
|
+
align-items: center;
|
173
|
+
gap: 0.5rem;
|
174
|
+
padding: 0.75rem 1rem;
|
175
|
+
background: var(--surface-color);
|
176
|
+
border: 1px solid var(--border-color);
|
177
|
+
border-radius: var(--radius-md);
|
178
|
+
font-size: 0.875rem;
|
179
|
+
color: var(--text-muted);
|
180
|
+
}
|
181
|
+
|
182
|
+
.placeholder-note .material-icons {
|
183
|
+
font-size: 1rem;
|
184
|
+
}
|
185
|
+
|
186
|
+
/* Estilos para grids de ejemplos */
|
187
|
+
.examples-grid {
|
188
|
+
display: flex;
|
189
|
+
flex-direction: column;
|
190
|
+
gap: 3rem;
|
191
|
+
}
|
192
|
+
|
193
|
+
.example-section {
|
194
|
+
background: var(--surface-color);
|
195
|
+
border: 1px solid var(--border-color);
|
196
|
+
border-radius: var(--radius-lg);
|
197
|
+
padding: 2rem;
|
198
|
+
box-shadow: var(--shadow-sm);
|
199
|
+
}
|
200
|
+
|
201
|
+
.example-section h3 {
|
202
|
+
font-size: 1.25rem;
|
203
|
+
font-weight: 600;
|
204
|
+
color: var(--text-primary);
|
205
|
+
margin-bottom: 1.5rem;
|
206
|
+
padding-bottom: 0.5rem;
|
207
|
+
border-bottom: 1px solid var(--border-color);
|
208
|
+
}
|
209
|
+
|
210
|
+
.example-row {
|
211
|
+
display: flex;
|
212
|
+
flex-wrap: wrap;
|
213
|
+
gap: 1rem;
|
214
|
+
align-items: center;
|
215
|
+
}
|
216
|
+
|
217
|
+
.example-column {
|
218
|
+
display: flex;
|
219
|
+
flex-direction: column;
|
220
|
+
gap: 1rem;
|
221
|
+
}
|
222
|
+
|
223
|
+
/* Responsive para ejemplos */
|
224
|
+
@media (max-width: 768px) {
|
225
|
+
.example-row {
|
226
|
+
flex-direction: column;
|
227
|
+
align-items: stretch;
|
228
|
+
}
|
229
|
+
|
230
|
+
.examples-grid {
|
231
|
+
gap: 2rem;
|
232
|
+
}
|
233
|
+
|
234
|
+
.example-section {
|
235
|
+
padding: 1.5rem;
|
236
|
+
}
|
237
|
+
}
|
package/doc/src/index.js
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import ReactDOM from 'react-dom/client';
|
3
|
+
import './index.css';
|
4
|
+
import App from './App';
|
5
|
+
|
6
|
+
const root = ReactDOM.createRoot(document.getElementById('root'));
|
7
|
+
root.render(
|
8
|
+
<React.StrictMode>
|
9
|
+
<App />
|
10
|
+
</React.StrictMode>
|
11
|
+
);
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "ywana-core8",
|
3
|
-
"version": "0.1.
|
3
|
+
"version": "0.1.85",
|
4
4
|
"description": "ywana-core8",
|
5
5
|
"homepage": "https://ywana.github.io/workspace",
|
6
6
|
"author": "Ernesto Roldan Garcia",
|
@@ -9,10 +9,17 @@
|
|
9
9
|
"source": "src/index.js",
|
10
10
|
"main": "dist/index.js",
|
11
11
|
"module": "dist/index.modern.js",
|
12
|
+
"previewjs": {
|
13
|
+
"framework": "react",
|
14
|
+
"react": {
|
15
|
+
"version": 17
|
16
|
+
}
|
17
|
+
},
|
12
18
|
"scripts": {
|
13
19
|
"build": "microbundle --no-compress --jsx React.createElement",
|
14
20
|
"dev": "microbundle watch --no-compress --jsx React.createElement",
|
15
|
-
"test": "jest"
|
21
|
+
"test": "jest",
|
22
|
+
"deploy-docs": "gh-pages -d doc"
|
16
23
|
},
|
17
24
|
"bugs": {
|
18
25
|
"url": "https://github.com/ywana/ywana-core8/issues"
|
@@ -0,0 +1,38 @@
|
|
1
|
+
/** @type {import("@previewjs/config").PreviewConfig} */
|
2
|
+
export default {
|
3
|
+
/**
|
4
|
+
* Configure custom aliases (auto-detected if you use TypeScript).
|
5
|
+
*/
|
6
|
+
alias: {
|
7
|
+
// Add any path aliases your project uses
|
8
|
+
},
|
9
|
+
|
10
|
+
/**
|
11
|
+
* Configure a public assets directory.
|
12
|
+
*/
|
13
|
+
publicDir: "public",
|
14
|
+
|
15
|
+
/**
|
16
|
+
* Set up a custom component to wrap around previewed components.
|
17
|
+
*
|
18
|
+
* Useful to set up context providers and global CSS.
|
19
|
+
*/
|
20
|
+
wrapper: {
|
21
|
+
path: "__previewjs__/Wrapper.tsx",
|
22
|
+
componentName: "Wrapper"
|
23
|
+
},
|
24
|
+
|
25
|
+
/**
|
26
|
+
* Specify a custom Vite configuration.
|
27
|
+
*
|
28
|
+
* See https://vitejs.dev/config.
|
29
|
+
*/
|
30
|
+
vite: {
|
31
|
+
// Add any custom Vite configuration here
|
32
|
+
resolve: {
|
33
|
+
alias: {
|
34
|
+
// Add path aliases if needed
|
35
|
+
}
|
36
|
+
}
|
37
|
+
}
|
38
|
+
};
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import React, { useState } from 'react'
|
2
2
|
import { Accordion } from './accordion'
|
3
3
|
import { Icon } from './icon'
|
4
|
-
import { Button } from '
|
5
|
-
import { ExampleLayout, ExampleSection, ExampleSubsection, CodeSnippet } from './ExampleLayout'
|
4
|
+
import { Button } from './button'
|
5
|
+
import { ExampleLayout, ExampleSection, ExampleSubsection, CodeSnippet } from './ExampleLayout'
|
6
6
|
|
7
7
|
/**
|
8
8
|
* Ejemplos de uso del componente Accordion mejorado
|
@@ -0,0 +1,108 @@
|
|
1
|
+
/* ActionsCell Component Styles */
|
2
|
+
|
3
|
+
.actions-cell {
|
4
|
+
display: inline-flex;
|
5
|
+
align-items: center;
|
6
|
+
justify-content: flex-end;
|
7
|
+
position: relative;
|
8
|
+
}
|
9
|
+
|
10
|
+
/* Modo directo - acciones visibles */
|
11
|
+
.actions-cell--direct {
|
12
|
+
overflow: hidden;
|
13
|
+
}
|
14
|
+
|
15
|
+
.actions-cell__content {
|
16
|
+
display: flex;
|
17
|
+
align-items: center;
|
18
|
+
gap: 4px;
|
19
|
+
white-space: nowrap;
|
20
|
+
overflow: hidden;
|
21
|
+
}
|
22
|
+
|
23
|
+
/* Modo menú - icono de menú */
|
24
|
+
.actions-cell--menu {
|
25
|
+
/* Los estilos del menú se heredan de menu.css */
|
26
|
+
}
|
27
|
+
|
28
|
+
/* Integración con List */
|
29
|
+
.list__item-actions .actions-cell {
|
30
|
+
opacity: 0;
|
31
|
+
transition: opacity 0.2s ease;
|
32
|
+
}
|
33
|
+
|
34
|
+
.list__item:hover .list__item-actions .actions-cell,
|
35
|
+
.list__item-actions--visible .actions-cell {
|
36
|
+
opacity: 1;
|
37
|
+
}
|
38
|
+
|
39
|
+
/* Integración con Accordion */
|
40
|
+
.accordion__actions .actions-cell {
|
41
|
+
/* Siempre visible en accordions */
|
42
|
+
opacity: 1;
|
43
|
+
}
|
44
|
+
|
45
|
+
/* Integración con Header */
|
46
|
+
.header .actions-cell {
|
47
|
+
/* Siempre visible en headers */
|
48
|
+
opacity: 1;
|
49
|
+
}
|
50
|
+
|
51
|
+
/* Responsive behavior */
|
52
|
+
@media (max-width: 768px) {
|
53
|
+
.actions-cell--direct {
|
54
|
+
/* En móviles, forzar modo menú más agresivamente */
|
55
|
+
max-width: 100px;
|
56
|
+
}
|
57
|
+
|
58
|
+
.actions-cell__content {
|
59
|
+
gap: 2px;
|
60
|
+
}
|
61
|
+
}
|
62
|
+
|
63
|
+
/* Estados de botones dentro de ActionsCell */
|
64
|
+
.actions-cell .button {
|
65
|
+
flex-shrink: 0;
|
66
|
+
}
|
67
|
+
|
68
|
+
.actions-cell .button--small {
|
69
|
+
min-width: auto;
|
70
|
+
padding: 4px 8px;
|
71
|
+
}
|
72
|
+
|
73
|
+
.actions-cell .button--icon-only {
|
74
|
+
min-width: 32px;
|
75
|
+
width: 32px;
|
76
|
+
height: 32px;
|
77
|
+
padding: 4px;
|
78
|
+
}
|
79
|
+
|
80
|
+
/* Animaciones suaves */
|
81
|
+
.actions-cell {
|
82
|
+
transition: all 0.2s ease;
|
83
|
+
}
|
84
|
+
|
85
|
+
.actions-cell__content {
|
86
|
+
transition: transform 0.2s ease;
|
87
|
+
}
|
88
|
+
|
89
|
+
/* Estados de hover para mejor UX */
|
90
|
+
.actions-cell:hover .actions-cell__content {
|
91
|
+
transform: translateX(-2px);
|
92
|
+
}
|
93
|
+
|
94
|
+
/* Alineación del menú */
|
95
|
+
.actions-cell--menu .menu-icon menu.left {
|
96
|
+
right: auto;
|
97
|
+
left: 0;
|
98
|
+
}
|
99
|
+
|
100
|
+
.actions-cell--menu .menu-icon menu.right {
|
101
|
+
left: auto;
|
102
|
+
right: 0;
|
103
|
+
}
|
104
|
+
|
105
|
+
.actions-cell--menu .menu-icon menu.center {
|
106
|
+
left: 50%;
|
107
|
+
transform: translateX(-50%);
|
108
|
+
}
|