@salesql/sql_components_vue3 0.2.0 → 0.2.1

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 (2) hide show
  1. package/README.md +253 -0
  2. package/package.json +1 -1
package/README.md ADDED
@@ -0,0 +1,253 @@
1
+ # @salesql/sql_components_vue3
2
+
3
+ Librería de componentes Vue 3 (TypeScript) para SalesQL.
4
+ Estilos con **SCSS** (variables centralizadas en `colors.scss`).
5
+ Visor de componentes y playground con **Histoire**.
6
+
7
+ ---
8
+
9
+ ## 🚀 Requisitos
10
+
11
+ > ⚠️ **Node:** Vite 7 requiere **Node ≥ 20.19** (recomendado **22.12.0**).
12
+ > Con Node 18 fallará con `crypto.hash is not a function`.
13
+
14
+ | Tool / lib | Versión recomendada |
15
+ | ---------------------- | ---------------------- |
16
+ | **Node** | **22.12.0** (o ≥20.19) |
17
+ | **pnpm** | 10.17.0 |
18
+ | **Vue** | 3.5.22 |
19
+ | **Vite** | 7.1.7 |
20
+ | **@vitejs/plugin-vue** | 6.0.1 |
21
+ | **TypeScript** | 5.9.2 |
22
+ | **vue-tsc** | 2.2.12 |
23
+ | **Histoire** | 1.0.0-alpha.3 |
24
+ | **Sass (dart-sass)** | 1.93.2 |
25
+ | **Changesets** | 2.29.7 |
26
+
27
+ ### Preparación de entorno
28
+
29
+ ```bash
30
+ # Node
31
+ nvm install 22.12.0
32
+ nvm use 22.12.0
33
+ node -v # v22.12.0
34
+
35
+ # Instalar dependencias del monorepo
36
+ pnpm install
37
+
38
+ # (Primera vez con Vite/Histoire)
39
+ pnpm approve-builds # marca @parcel/watcher y confirma
40
+ ```
41
+
42
+ ---
43
+
44
+ ## 📂 Estructura
45
+
46
+ ```
47
+ salesql-components-library-vue3/
48
+ ├─ package.json # raíz del monorepo
49
+ ├─ pnpm-workspace.yaml
50
+ ├─ tsconfig.base.json
51
+ └─ components/ # paquete de la librería
52
+ ├─ package.json
53
+ ├─ tsconfig.json # solo src/*
54
+ ├─ tsconfig.build.json # build de la lib
55
+ ├─ tsconfig.node.json # configs: vite/histoire
56
+ ├─ vite.config.ts
57
+ ├─ histoire.config.ts
58
+ ├─ src/
59
+ │ ├─ index.ts # exporta componentes (+ importa estilos base)
60
+ │ ├─ env.d.ts
61
+ │ ├─ stories.setup.ts
62
+ │ ├─ assets/css/
63
+ │ │ ├─ base.scss
64
+ │ │ ├─ colors.scss
65
+ │ │ └─ spacing.scss
66
+ │ ├─ constants/sql-components.ts
67
+ │ └─ components/
68
+ │ ├─ SqlButton.vue
69
+ │ ├─ SqlButton.story.vue
70
+ │ ├─ SqlSpinner.vue
71
+ │ └─ SqlSpinner.story.vue
72
+ └─ dist/ # salida de build
73
+ ```
74
+
75
+ ---
76
+
77
+ ## 📦 Scripts principales
78
+
79
+ Desde la raíz:
80
+
81
+ ```bash
82
+ pnpm build # build de la librería
83
+ pnpm dev:stories # arranca Histoire
84
+ pnpm typecheck # chequeo estricto de tipos
85
+ pnpm changeset # crear un changeset
86
+ pnpm release:version # aplicar changeset y subir versión
87
+ pnpm release:publish # publicar a npm
88
+ pnpm reset # limpiar node_modules + reinstalar + aprobar builds
89
+ ```
90
+
91
+ ---
92
+
93
+ ## 🔎 Histoire (visualización y testeo)
94
+
95
+ Para arrancar el entorno de historias:
96
+
97
+ ```bash
98
+ pnpm dev:stories
99
+ ```
100
+
101
+ - Abre http://localhost:6006
102
+ - Historias junto al componente, ej: `SqlButton.story.vue`
103
+ - Usa `<Story>` / `<Variant>` / `<Controls>` para mostrar variantes e interactuar
104
+
105
+ ---
106
+
107
+ ## 📥 Uso en apps consumidoras
108
+
109
+ ```bash
110
+ pnpm add @salesql/sql_components_vue3
111
+ ```
112
+
113
+ Ejemplo:
114
+
115
+ ```vue
116
+ <script setup lang="ts">
117
+ import { SqlButton } from "@salesql/sql_components_vue3";
118
+ </script>
119
+
120
+ <template>
121
+ <SqlButton class="sql-button--primary sql-button--large"> Guardar </SqlButton>
122
+ </template>
123
+ ```
124
+
125
+ Los estilos base se importan automáticamente desde la librería (`base.scss`).
126
+
127
+ ---
128
+
129
+ ## 🛠️ Añadir un nuevo componente (Checklist)
130
+
131
+ > Convención de nombres: archivos **PascalCase** (`SqlX.vue`, `SqlX.story.vue`).
132
+
133
+ ### 1. Crear el componente
134
+
135
+ `components/src/components/SqlX.vue`:
136
+
137
+ ```vue
138
+ <script setup lang="ts">
139
+ // lógica/props
140
+ </script>
141
+
142
+ <template>
143
+ <div class="sql-x">
144
+ <slot />
145
+ </div>
146
+ </template>
147
+
148
+ <style lang="scss" scoped>
149
+ @use "../assets/css/colors.scss" as colors;
150
+ @use "../assets/css/spacing.scss" as s;
151
+
152
+ .sql-x {
153
+ color: colors.$primary-main;
154
+ padding: s.spacing(2);
155
+ }
156
+ </style>
157
+ ```
158
+
159
+ ### 2. Crear la historia
160
+
161
+ `components/src/components/SqlX.story.vue`:
162
+
163
+ ```vue
164
+ <script setup lang="ts">
165
+ import SqlX from "./SqlX.vue";
166
+ </script>
167
+
168
+ <template>
169
+ <Story title="SqlX/Básico">
170
+ <Variant title="Default">
171
+ <SqlX>Contenido</SqlX>
172
+ </Variant>
173
+ <Variant title="Playground">
174
+ <Controls :data="{ text: { type: 'text', default: 'Hola' } }">
175
+ <template #default="{ state }">
176
+ <SqlX>{{ state.text }}</SqlX>
177
+ </template>
178
+ </Controls>
179
+ </Variant>
180
+ </Story>
181
+ </template>
182
+ ```
183
+
184
+ ### 3. Exportarlo
185
+
186
+ En `components/src/index.ts`:
187
+
188
+ ```ts
189
+ import "./assets/css/base.scss";
190
+
191
+ export { default as SqlButton } from "./components/SqlButton.vue";
192
+ export { default as SqlSpinner } from "./components/SqlSpinner.vue";
193
+ export { default as SqlX } from "./components/SqlX.vue";
194
+ ```
195
+
196
+ ### 4. Probar con Histoire
197
+
198
+ ```bash
199
+ pnpm dev:stories
200
+ ```
201
+
202
+ ### 5. Chequear y build
203
+
204
+ ```bash
205
+ pnpm typecheck
206
+ pnpm build
207
+ ```
208
+
209
+ ### 6. Versionado
210
+
211
+ ```bash
212
+ pnpm changeset
213
+ pnpm release:version
214
+ ```
215
+
216
+ ### 7. Publicación
217
+
218
+ ```bash
219
+ pnpm release:publish
220
+ ```
221
+
222
+ ---
223
+
224
+ ## 🔧 Convenciones
225
+
226
+ - **Archivos:** PascalCase para `.vue` y `.story.vue`.
227
+ - **Estilos:** `@use '../assets/css/colors.scss' as colors;`.
228
+ - **Spacing:** `spacing.scss` con `map.get(...)`.
229
+ - **Enums/constantes:**
230
+ ```ts
231
+ export const SQL_SPINNER_SIZES = {
232
+ SMALL: "small",
233
+ MEDIUM: "medium",
234
+ LARGE: "large",
235
+ } as const;
236
+ export type SqlSpinnerSize =
237
+ (typeof SQL_SPINNER_SIZES)[keyof typeof SQL_SPINNER_SIZES];
238
+ ```
239
+
240
+ ---
241
+
242
+ ## 🐛 Troubleshooting
243
+
244
+ - **`crypto.hash is not a function` / “Vite requires Node 20.19+ or 22.12+”**
245
+ → Actualiza Node a **22.12.0** y reinstala dependencias.
246
+
247
+ - **VSCode marca “Cannot find module 'vue'”**
248
+ → Asegúrate de que `vue` está en **peerDependencies** y **devDependencies** en `components/package.json`.
249
+ Reinicia TS server.
250
+
251
+ - **pnpm pide aprobar `@parcel/watcher`**
252
+ → `pnpm approve-builds` (marca `@parcel/watcher`).
253
+ Para global: `pnpm approve-builds --global`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salesql/sql_components_vue3",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "Librería de componentes Vue 3 (SalesQL)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",