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.
Files changed (76) hide show
  1. package/__previewjs__/Wrapper.tsx +8 -5
  2. package/build-doc.sh +10 -0
  3. package/dist/index.cjs +627 -194
  4. package/dist/index.cjs.map +1 -1
  5. package/dist/index.css +353 -105
  6. package/dist/index.css.map +1 -1
  7. package/dist/index.modern.js +628 -196
  8. package/dist/index.modern.js.map +1 -1
  9. package/dist/index.umd.js +629 -196
  10. package/dist/index.umd.js.map +1 -1
  11. package/doc/README.md +196 -0
  12. package/doc/craco.config.js +31 -0
  13. package/doc/generate-examples.cjs +310 -0
  14. package/doc/package-lock.json +17298 -0
  15. package/doc/package.json +33 -0
  16. package/doc/public/index.html +22 -0
  17. package/doc/src/App.css +171 -0
  18. package/doc/src/App.js +214 -0
  19. package/doc/src/components/ExamplePage.js +104 -0
  20. package/doc/src/components/WelcomePage.js +84 -0
  21. package/doc/src/examples/button.example.js +47 -0
  22. package/doc/src/examples/input.example.js +91 -0
  23. package/doc/src/index.css +237 -0
  24. package/doc/src/index.js +11 -0
  25. package/package.json +9 -2
  26. package/preview.config.js +38 -0
  27. package/src/html/accordion.example.js +2 -2
  28. package/src/html/actions-cell.css +108 -0
  29. package/src/html/actions-cell.example.js +587 -0
  30. package/src/html/actions-cell.js +260 -0
  31. package/src/html/checkbox.example.js +2 -2
  32. package/src/html/chip.example.js +2 -2
  33. package/src/html/color.example.js +2 -2
  34. package/src/html/form.example.js +2 -2
  35. package/src/html/header2.example.js +2 -2
  36. package/src/html/index.js +1 -0
  37. package/src/html/menu.css +9 -2
  38. package/src/html/menu.js +14 -2
  39. package/src/html/progress.example.js +2 -2
  40. package/src/html/property.example.js +2 -2
  41. package/src/html/radio.example.js +2 -2
  42. package/src/html/switch.example.js +2 -2
  43. package/src/html/tab.example.js +2 -2
  44. package/src/html/table.css +47 -1
  45. package/src/html/table.example.js +1012 -0
  46. package/src/html/table.js +12 -7
  47. package/src/html/table2-actions-test.js +138 -0
  48. package/src/html/table2.css +40 -3
  49. package/src/html/table2.example.js +330 -0
  50. package/src/html/table2.js +56 -13
  51. package/src/html/textfield.css +17 -4
  52. package/src/html/tokenfield.example.js +2 -2
  53. package/src/html/tree.css +42 -7
  54. package/src/html/tree.example.js +169 -7
  55. package/src/html/tree.js +216 -93
  56. package/src/widgets/calendar/Calendar.js +1 -1
  57. /package/{ACCORDION_EVALUATION.md → doc/evalulations/ACCORDION_EVALUATION.md} +0 -0
  58. /package/{CHECKBOX_EVALUATION.md → doc/evalulations/CHECKBOX_EVALUATION.md} +0 -0
  59. /package/{CHIP_EVALUATION.md → doc/evalulations/CHIP_EVALUATION.md} +0 -0
  60. /package/{COLOR_EVALUATION.md → doc/evalulations/COLOR_EVALUATION.md} +0 -0
  61. /package/{COMPONENTS_EVALUATION.md → doc/evalulations/COMPONENTS_EVALUATION.md} +0 -0
  62. /package/{FORM_EVALUATION.md → doc/evalulations/FORM_EVALUATION.md} +0 -0
  63. /package/{HEADER_EVALUATION.md → doc/evalulations/HEADER_EVALUATION.md} +0 -0
  64. /package/{ICON_EVALUATION.md → doc/evalulations/ICON_EVALUATION.md} +0 -0
  65. /package/{LIST_EVALUATION.md → doc/evalulations/LIST_EVALUATION.md} +0 -0
  66. /package/{PROGRESS_EVALUATION.md → doc/evalulations/PROGRESS_EVALUATION.md} +0 -0
  67. /package/{RADIO_EVALUATION.md → doc/evalulations/RADIO_EVALUATION.md} +0 -0
  68. /package/{RADIO_VISUAL_FIX.md → doc/evalulations/RADIO_VISUAL_FIX.md} +0 -0
  69. /package/{SECTION_IMPROVEMENTS.md → doc/evalulations/SECTION_IMPROVEMENTS.md} +0 -0
  70. /package/{SWITCH_EVALUATION.md → doc/evalulations/SWITCH_EVALUATION.md} +0 -0
  71. /package/{SWITCH_VISUAL_FIX.md → doc/evalulations/SWITCH_VISUAL_FIX.md} +0 -0
  72. /package/{TAB_EVALUATION.md → doc/evalulations/TAB_EVALUATION.md} +0 -0
  73. /package/{TEXTFIELD_EVALUATION.md → doc/evalulations/TEXTFIELD_EVALUATION.md} +0 -0
  74. /package/{TOOLTIP_FIX.md → doc/evalulations/TOOLTIP_FIX.md} +0 -0
  75. /package/{TREE_EVALUATION.md → doc/evalulations/TREE_EVALUATION.md} +0 -0
  76. /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
+ }
@@ -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.83",
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'./button'
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
+ }