react-french-ssn 1.3.0 → 1.4.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.
- package/README.md +173 -0
- package/dist/components/SocialSecurityInput/SocialSecurityInput.d.ts +0 -1
- package/dist/components/SocialSecurityInput/index.d.ts +1 -1
- package/dist/components/SocialSecurityInput/useSocialSecurityInput.d.ts +3 -18
- package/dist/components/ThemeProvider.d.ts +0 -1
- package/dist/config/index.d.ts +0 -1
- package/dist/decorators/withTheme.d.ts +0 -1
- package/dist/index.css +1 -0
- package/dist/index.d.ts +2 -3
- package/dist/index.esm.js +64 -58
- package/dist/index.js +62 -55
- package/dist/setupTests.d.ts +0 -1
- package/dist/types/index.d.ts +78 -1
- package/dist/utils/cssVariables.d.ts +0 -1
- package/dist/utils/index.d.ts +0 -1
- package/package.json +5 -2
- package/dist/components/SocialSecurityInput/SocialSecurityInput.d.ts.map +0 -1
- package/dist/components/SocialSecurityInput/index.d.ts.map +0 -1
- package/dist/components/SocialSecurityInput/useSocialSecurityInput.d.ts.map +0 -1
- package/dist/components/ThemeProvider.d.ts.map +0 -1
- package/dist/config/index.d.ts.map +0 -1
- package/dist/decorators/withTheme.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.esm.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/setupTests.d.ts.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/utils/cssVariables.d.ts.map +0 -1
- package/dist/utils/index.d.ts.map +0 -1
package/README.md
CHANGED
@@ -57,6 +57,126 @@ function App() {
|
|
57
57
|
}
|
58
58
|
```
|
59
59
|
|
60
|
+
## 📋 Examples
|
61
|
+
|
62
|
+
### Basic Usage
|
63
|
+
|
64
|
+
```tsx
|
65
|
+
import { SocialSecurityInput } from 'react-french-ssn';
|
66
|
+
|
67
|
+
function BasicExample() {
|
68
|
+
const [ssn, setSsn] = useState('');
|
69
|
+
|
70
|
+
return (
|
71
|
+
<SocialSecurityInput
|
72
|
+
label="Numéro de sécurité sociale"
|
73
|
+
placeholder="269054958815780"
|
74
|
+
value={ssn}
|
75
|
+
onChange={setSsn}
|
76
|
+
/>
|
77
|
+
);
|
78
|
+
}
|
79
|
+
```
|
80
|
+
|
81
|
+
### With Error Handling
|
82
|
+
|
83
|
+
```tsx
|
84
|
+
import { SocialSecurityInput } from 'react-french-ssn';
|
85
|
+
|
86
|
+
function ErrorExample() {
|
87
|
+
const [ssn, setSsn] = useState('');
|
88
|
+
const [error, setError] = useState('');
|
89
|
+
|
90
|
+
const handleChange = (value) => {
|
91
|
+
setSsn(value);
|
92
|
+
if (value.length === 15) {
|
93
|
+
setError('');
|
94
|
+
} else if (value.length > 0) {
|
95
|
+
setError('Le numéro doit contenir 15 chiffres');
|
96
|
+
}
|
97
|
+
};
|
98
|
+
|
99
|
+
return (
|
100
|
+
<SocialSecurityInput
|
101
|
+
label="Numéro de sécurité sociale"
|
102
|
+
value={ssn}
|
103
|
+
onChange={handleChange}
|
104
|
+
error={error}
|
105
|
+
/>
|
106
|
+
);
|
107
|
+
}
|
108
|
+
```
|
109
|
+
|
110
|
+
### With Copy Button
|
111
|
+
|
112
|
+
```tsx
|
113
|
+
import { SocialSecurityInput } from 'react-french-ssn';
|
114
|
+
|
115
|
+
function CopyExample() {
|
116
|
+
return (
|
117
|
+
<SocialSecurityInput
|
118
|
+
label="Numéro de sécurité sociale"
|
119
|
+
placeholder="269054958815780"
|
120
|
+
showCopyButton={true}
|
121
|
+
onChange={(value) => console.log('SSN:', value)}
|
122
|
+
/>
|
123
|
+
);
|
124
|
+
}
|
125
|
+
```
|
126
|
+
|
127
|
+
### Custom Styling
|
128
|
+
|
129
|
+
```tsx
|
130
|
+
import { SocialSecurityInput } from 'react-french-ssn';
|
131
|
+
import './custom-styles.css';
|
132
|
+
|
133
|
+
function StyledExample() {
|
134
|
+
return (
|
135
|
+
<SocialSecurityInput
|
136
|
+
label="Numéro de sécurité sociale"
|
137
|
+
className="custom-ssn-input"
|
138
|
+
showCopyButton={true}
|
139
|
+
onChange={(value) => console.log(value)}
|
140
|
+
/>
|
141
|
+
);
|
142
|
+
}
|
143
|
+
```
|
144
|
+
|
145
|
+
### Internationalization
|
146
|
+
|
147
|
+
```tsx
|
148
|
+
import { SocialSecurityInput } from 'react-french-ssn';
|
149
|
+
|
150
|
+
function I18nExample() {
|
151
|
+
return (
|
152
|
+
<SocialSecurityInput
|
153
|
+
label="Social Security Number"
|
154
|
+
placeholder="269054958815780"
|
155
|
+
showCopyButton={true}
|
156
|
+
texts={{
|
157
|
+
description: 'Enter your French social security number (15 digits)',
|
158
|
+
fieldDescriptions: {
|
159
|
+
sex: 'Gender (1 for male, 2 for female)',
|
160
|
+
year: 'Birth year (last 2 digits)',
|
161
|
+
month: 'Birth month (01 to 12)',
|
162
|
+
department: 'Birth department (2 digits or 2A/2B)',
|
163
|
+
insee: 'INSEE municipality code (3 digits)',
|
164
|
+
order: 'Order number (3 digits)',
|
165
|
+
controlKey: 'Control key (calculated automatically)'
|
166
|
+
},
|
167
|
+
copyButton: {
|
168
|
+
copy: 'Copy',
|
169
|
+
copied: 'Copied!',
|
170
|
+
copyLabel: 'Copy the complete social security number',
|
171
|
+
copiedLabel: 'Number copied successfully'
|
172
|
+
}
|
173
|
+
}}
|
174
|
+
onChange={(value) => console.log(value)}
|
175
|
+
/>
|
176
|
+
);
|
177
|
+
}
|
178
|
+
```
|
179
|
+
|
60
180
|
## 🧩 Main Component
|
61
181
|
|
62
182
|
### SocialSecurityInput
|
@@ -178,9 +298,62 @@ const props: SocialSecurityInputProps = {
|
|
178
298
|
|
179
299
|
MIT © JatoCool Company
|
180
300
|
|
301
|
+
## 🎮 Testez le composant interactivement
|
302
|
+
|
303
|
+
### 🚀 Démo en ligne
|
304
|
+
|
305
|
+
**🎮 [Testez le composant directement dans votre navigateur](https://johanna1506.github.io/ui/demo.html)**
|
306
|
+
|
307
|
+
Cette démo interactive vous permet de :
|
308
|
+
- ✅ Tester le formatage automatique en temps réel
|
309
|
+
- ✅ Voir la validation et les messages d'erreur
|
310
|
+
- ✅ Comprendre la structure du numéro de sécurité sociale
|
311
|
+
- ✅ Essayer différents exemples de numéros
|
312
|
+
|
313
|
+
### 📦 Démo CodeSandbox
|
314
|
+
|
315
|
+
[](https://codesandbox.io/s/react-french-ssn-demo-4xq8k?fontsize=14&hidenavigation=1&theme=dark)
|
316
|
+
|
317
|
+
**Cliquez sur le bouton ci-dessus pour tester le composant dans CodeSandbox !**
|
318
|
+
|
319
|
+
### 🎯 Fonctionnalités à tester
|
320
|
+
|
321
|
+
- ✅ **Formatage automatique** - Tapez `269054958815780` pour voir le découpage
|
322
|
+
- ✅ **Validation en temps réel** - Essayez des numéros invalides
|
323
|
+
- ✅ **Bouton de copie** - Copiez le numéro formaté
|
324
|
+
- ✅ **Accessibilité** - Testez avec le clavier et lecteurs d'écran
|
325
|
+
- ✅ **Mode sombre** - Détection automatique du thème
|
326
|
+
|
327
|
+
### 🏠 Démo locale avec Storybook
|
328
|
+
|
329
|
+
```bash
|
330
|
+
# Cloner le repository
|
331
|
+
git clone https://github.com/Johanna1506/ui.git
|
332
|
+
cd ui
|
333
|
+
|
334
|
+
# Installer les dépendances
|
335
|
+
npm install
|
336
|
+
|
337
|
+
# Lancer Storybook
|
338
|
+
npm run storybook
|
339
|
+
```
|
340
|
+
|
341
|
+
Puis ouvrez [http://localhost:6006](http://localhost:6006) dans votre navigateur.
|
342
|
+
|
343
|
+
### 📚 Stories disponibles
|
344
|
+
|
345
|
+
- **Interactive** - Composant entièrement interactif pour tester toutes les fonctionnalités
|
346
|
+
- **Default** - Version basique du composant
|
347
|
+
- **WithLabel** - Avec label personnalisé
|
348
|
+
- **WithError** - Avec gestion d'erreur
|
349
|
+
- **Disabled** - État désactivé
|
350
|
+
- **WithCopyButton** - Avec bouton de copie
|
351
|
+
- **WithCustomTexts** - Textes personnalisés
|
352
|
+
|
181
353
|
## 🔗 Links
|
182
354
|
|
183
355
|
- [NPM Package](https://www.npmjs.com/package/react-french-ssn)
|
356
|
+
- [GitHub Repository](https://github.com/Johanna1506/ui)
|
184
357
|
|
185
358
|
---
|
186
359
|
|
@@ -1,2 +1,2 @@
|
|
1
1
|
export { default } from './SocialSecurityInput';
|
2
|
-
|
2
|
+
export { default as useSocialSecurityInput } from './useSocialSecurityInput';
|
@@ -1,19 +1,5 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
placeholder?: string;
|
4
|
-
value?: string;
|
5
|
-
}
|
6
|
-
interface SocialSecurityState {
|
7
|
-
sex: string;
|
8
|
-
year: string;
|
9
|
-
month: string;
|
10
|
-
department: string;
|
11
|
-
insee: string;
|
12
|
-
order: string;
|
13
|
-
controlKey: string;
|
14
|
-
error: string;
|
15
|
-
}
|
16
|
-
export declare const useSocialSecurityInput: ({ onChange, placeholder, value }: UseSocialSecurityInputProps) => {
|
1
|
+
import type { UseSocialSecurityInputProps, SocialSecurityState } from '../../types';
|
2
|
+
export declare const useSocialSecurityInput: ({ onChange, placeholder, value, fieldsetId }: UseSocialSecurityInputProps) => {
|
17
3
|
values: SocialSecurityState;
|
18
4
|
handlers: {
|
19
5
|
sex: {
|
@@ -52,5 +38,4 @@ export declare const useSocialSecurityInput: ({ onChange, placeholder, value }:
|
|
52
38
|
controlKey: string;
|
53
39
|
};
|
54
40
|
};
|
55
|
-
export
|
56
|
-
//# sourceMappingURL=useSocialSecurityInput.d.ts.map
|
41
|
+
export default useSocialSecurityInput;
|
package/dist/config/index.d.ts
CHANGED
@@ -80,4 +80,3 @@ export declare const defaultConfig: GlobalConfig;
|
|
80
80
|
export declare const setGlobalConfig: (config: Partial<GlobalConfig>) => void;
|
81
81
|
export declare const getGlobalConfig: () => GlobalConfig;
|
82
82
|
export declare const resetGlobalConfig: () => void;
|
83
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.css
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
.Og6B7,.zscB4{width:100%}.zscB4{border:none;margin:0;padding:0}._4Agoh{color:var(--ui-color-text-secondary);display:block;font-size:var(--ui-font-size-sm);font-weight:var(--ui-font-weight-medium);margin-bottom:var(--ui-spacing-xs)}._4Agoh,.vX6qk{font-family:var(--ui-font-family)}.vX6qk{color:var(--ui-color-text-disabled);font-size:var(--ui-font-size-xs);margin-bottom:var(--ui-spacing-sm)}.zwkoW{align-items:center;display:flex;gap:var(--ui-spacing-xs);width:100%}.WFS7h{display:flex;flex-direction:column;position:relative}.CgrDw{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.NmvkG{background-color:var(--ui-color-background);border:1px solid var(--ui-color-border-default);border-radius:var(--ui-border-radius-md);box-shadow:var(--ui-shadow-sm);color:var(--ui-color-text-primary);font-family:var(--ui-font-family);font-size:var(--ui-font-size-sm);font-weight:var(--ui-font-weight-medium);line-height:1.5;padding:var(--ui-spacing-sm);text-align:center;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.WFS7h:first-child .NmvkG{width:.5rem}.WFS7h:nth-child(2) .NmvkG,.WFS7h:nth-child(3) .NmvkG,.WFS7h:nth-child(4) .NmvkG{width:1.25rem}.WFS7h:nth-child(5) .NmvkG,.WFS7h:nth-child(6) .NmvkG{width:1.75rem}.WFS7h:nth-child(7) .NmvkG{width:1.25rem}.NmvkG::placeholder{color:var(--ui-color-text-disabled);font-size:var(--ui-font-size-xs)}.NmvkG:focus{border-color:var(--ui-color-border-focus);box-shadow:0 0 0 3px rgba(59,130,246,.1);outline:none}.NmvkG:disabled{cursor:not-allowed}.NmvkG:disabled,._8AMQw{background-color:var(--ui-color-surface);color:var(--ui-color-text-disabled)}._8AMQw{cursor:default}.TymBP,.TymBP:focus{border-color:var(--ui-color-error)!important}.TymBP:focus{box-shadow:0 0 0 3px rgba(239,68,68,.1)!important}.Yidsk{color:var(--ui-color-error);font-family:var(--ui-font-family);font-size:var(--ui-font-size-sm);margin-top:var(--ui-spacing-xs)}.Cx1bs{align-items:center;background-color:inherit;border:none;cursor:pointer;display:flex;font-size:16px;height:40px;justify-content:center;margin-left:var(--ui-spacing-xs);padding:0;transition:background-color .2s ease;width:40px}.Cx1bs svg{fill:var(--ui-color-border-default)}.Cx1bs:hover:not(:disabled){background:var(--ui-color-primary-dark)}.Cx1bs:disabled{background:var(--ui-color-gray-300);cursor:not-allowed;opacity:.6}.Cx1bs._23tm0{animation:aC-bf .3s ease-in-out}@keyframes aC-bf{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}
|
package/dist/index.d.ts
CHANGED
@@ -1,8 +1,7 @@
|
|
1
|
-
import './styles/theme.css';
|
2
1
|
export { default as SocialSecurityInput } from './components/SocialSecurityInput';
|
2
|
+
export { useSocialSecurityInput } from './components/SocialSecurityInput';
|
3
3
|
export { ThemeProvider } from './components/ThemeProvider';
|
4
4
|
export { getCSSVariable, createCSSVariables } from './utils/cssVariables';
|
5
5
|
export { setGlobalConfig, getGlobalConfig, resetGlobalConfig, defaultConfig } from './config';
|
6
|
-
export type { SocialSecurityInputProps } from './types';
|
6
|
+
export type { SocialSecurityInputProps, UseSocialSecurityInputProps, SocialSecurityState, SocialSecurityHandlers, SocialSecurityPlaceholders } from './types';
|
7
7
|
export type { GlobalConfig, ThemeConfig, ComponentConfig } from './config';
|
8
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.esm.js
CHANGED
@@ -1,37 +1,7 @@
|
|
1
|
-
import {
|
2
|
-
import { useState, useCallback, useEffect } from 'react';
|
1
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
2
|
+
import { useState, useCallback, useEffect, useId } from 'react';
|
3
3
|
|
4
|
-
|
5
|
-
if ( ref === void 0 ) ref = {};
|
6
|
-
var insertAt = ref.insertAt;
|
7
|
-
|
8
|
-
if (!css || typeof document === 'undefined') { return; }
|
9
|
-
|
10
|
-
var head = document.head || document.getElementsByTagName('head')[0];
|
11
|
-
var style = document.createElement('style');
|
12
|
-
style.type = 'text/css';
|
13
|
-
|
14
|
-
if (insertAt === 'top') {
|
15
|
-
if (head.firstChild) {
|
16
|
-
head.insertBefore(style, head.firstChild);
|
17
|
-
} else {
|
18
|
-
head.appendChild(style);
|
19
|
-
}
|
20
|
-
} else {
|
21
|
-
head.appendChild(style);
|
22
|
-
}
|
23
|
-
|
24
|
-
if (style.styleSheet) {
|
25
|
-
style.styleSheet.cssText = css;
|
26
|
-
} else {
|
27
|
-
style.appendChild(document.createTextNode(css));
|
28
|
-
}
|
29
|
-
}
|
30
|
-
|
31
|
-
var css_248z$1 = "@import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Roboto:wght@400;500;700&family=Poppins:wght@400;500;600;700&family=Open+Sans:wght@400;500;700&family=Montserrat:wght@400;500;600;700&family=Lato:wght@400;500;700&family=Nunito:wght@400;500;600;700&family=Source+Sans+Pro:wght@400;500;700&display=swap\");:root{--ui-color-primary:#3b82f6;--ui-color-primary-dark:#2563eb;--ui-color-secondary:#64748b;--ui-color-background:#fff;--ui-color-surface:#f8fafc;--ui-color-text-primary:#1e293b;--ui-color-text-secondary:#64748b;--ui-color-text-disabled:#94a3b8;--ui-color-border-default:#e2e8f0;--ui-color-border-focus:#3b82f6;--ui-color-error:#ef4444;--ui-color-success:#10b981;--ui-color-warning:#f59e0b;--ui-color-gray-300:#d1d5db;--ui-spacing-xs:0.25rem;--ui-spacing-sm:0.5rem;--ui-spacing-md:1rem;--ui-spacing-lg:1.5rem;--ui-spacing-xl:2rem;--ui-font-family:\"Inter\",-apple-system,BlinkMacSystemFont,\"Segoe UI\",\"Roboto\",\"Oxygen\",\"Ubuntu\",\"Cantarell\",\"Fira Sans\",\"Droid Sans\",\"Helvetica Neue\",sans-serif;--ui-font-size-xs:0.75rem;--ui-font-size-sm:0.875rem;--ui-font-size-md:1rem;--ui-font-size-lg:1.125rem;--ui-font-size-xl:1.25rem;--ui-font-weight-normal:400;--ui-font-weight-medium:500;--ui-font-weight-semibold:600;--ui-font-weight-bold:700;--ui-border-radius-sm:0.25rem;--ui-border-radius-md:0.375rem;--ui-border-radius-lg:0.5rem;--ui-border-radius-xl:0.75rem;--ui-shadow-sm:0 1px 2px 0 rgba(0,0,0,.05);--ui-shadow-md:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--ui-shadow-lg:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1)}@media (prefers-color-scheme:dark){:root{--ui-color-background:#0f172a;--ui-color-surface:#1e293b;--ui-color-text-primary:#f1f5f9;--ui-color-text-secondary:#cbd5e1;--ui-color-text-disabled:#64748b;--ui-color-border-default:#334155;--ui-color-border-focus:#3b82f6}}";
|
32
|
-
styleInject(css_248z$1);
|
33
|
-
|
34
|
-
const useSocialSecurityInput = ({ onChange, placeholder = '269054958815780', value }) => {
|
4
|
+
const useSocialSecurityInput = ({ onChange, placeholder = '269054958815780', value, fieldsetId }) => {
|
35
5
|
const [state, setState] = useState({
|
36
6
|
sex: '',
|
37
7
|
year: '',
|
@@ -171,7 +141,7 @@ const useSocialSecurityInput = ({ onChange, placeholder = '269054958815780', val
|
|
171
141
|
if (inputValue === '' || inputValue === '1' || inputValue === '2') {
|
172
142
|
updateField('sex', inputValue);
|
173
143
|
if (inputValue === '1' || inputValue === '2') {
|
174
|
-
const nextInput =
|
144
|
+
const nextInput = document.getElementById(`${fieldsetId}-year`);
|
175
145
|
nextInput?.focus();
|
176
146
|
}
|
177
147
|
}
|
@@ -193,14 +163,14 @@ const useSocialSecurityInput = ({ onChange, placeholder = '269054958815780', val
|
|
193
163
|
if (cleaned.length <= 2) {
|
194
164
|
updateField('year', cleaned);
|
195
165
|
if (cleaned.length === 2) {
|
196
|
-
const nextInput =
|
166
|
+
const nextInput = document.getElementById(`${fieldsetId}-month`);
|
197
167
|
nextInput?.focus();
|
198
168
|
}
|
199
169
|
}
|
200
170
|
},
|
201
171
|
onKeyDown: (e) => {
|
202
172
|
if (e.key === 'Backspace' && e.currentTarget.value === '') {
|
203
|
-
const prevInput =
|
173
|
+
const prevInput = document.getElementById(`${fieldsetId}-sex`);
|
204
174
|
prevInput?.focus();
|
205
175
|
}
|
206
176
|
},
|
@@ -212,14 +182,14 @@ const useSocialSecurityInput = ({ onChange, placeholder = '269054958815780', val
|
|
212
182
|
if (cleaned.length <= 2) {
|
213
183
|
updateField('month', cleaned);
|
214
184
|
if (cleaned.length === 2 && cleaned >= '01' && cleaned <= '12') {
|
215
|
-
const nextInput =
|
185
|
+
const nextInput = document.getElementById(`${fieldsetId}-department`);
|
216
186
|
nextInput?.focus();
|
217
187
|
}
|
218
188
|
}
|
219
189
|
},
|
220
190
|
onKeyDown: (e) => {
|
221
191
|
if (e.key === 'Backspace' && e.currentTarget.value === '') {
|
222
|
-
const prevInput =
|
192
|
+
const prevInput = document.getElementById(`${fieldsetId}-year`);
|
223
193
|
prevInput?.focus();
|
224
194
|
}
|
225
195
|
},
|
@@ -234,14 +204,14 @@ const useSocialSecurityInput = ({ onChange, placeholder = '269054958815780', val
|
|
234
204
|
cleaned === '2A' ||
|
235
205
|
cleaned === '2B' ||
|
236
206
|
cleaned === '99')) {
|
237
|
-
const nextInput =
|
207
|
+
const nextInput = document.getElementById(`${fieldsetId}-insee`);
|
238
208
|
nextInput?.focus();
|
239
209
|
}
|
240
210
|
}
|
241
211
|
},
|
242
212
|
onKeyDown: (e) => {
|
243
213
|
if (e.key === 'Backspace' && e.currentTarget.value === '') {
|
244
|
-
const prevInput =
|
214
|
+
const prevInput = document.getElementById(`${fieldsetId}-month`);
|
245
215
|
prevInput?.focus();
|
246
216
|
}
|
247
217
|
},
|
@@ -253,14 +223,14 @@ const useSocialSecurityInput = ({ onChange, placeholder = '269054958815780', val
|
|
253
223
|
if (cleaned.length <= 3) {
|
254
224
|
updateField('insee', cleaned);
|
255
225
|
if (cleaned.length === 3) {
|
256
|
-
const nextInput =
|
226
|
+
const nextInput = document.getElementById(`${fieldsetId}-order`);
|
257
227
|
nextInput?.focus();
|
258
228
|
}
|
259
229
|
}
|
260
230
|
},
|
261
231
|
onKeyDown: (e) => {
|
262
232
|
if (e.key === 'Backspace' && e.currentTarget.value === '') {
|
263
|
-
const prevInput =
|
233
|
+
const prevInput = document.getElementById(`${fieldsetId}-department`);
|
264
234
|
prevInput?.focus();
|
265
235
|
}
|
266
236
|
},
|
@@ -275,7 +245,7 @@ const useSocialSecurityInput = ({ onChange, placeholder = '269054958815780', val
|
|
275
245
|
},
|
276
246
|
onKeyDown: (e) => {
|
277
247
|
if (e.key === 'Backspace' && e.currentTarget.value === '') {
|
278
|
-
const prevInput =
|
248
|
+
const prevInput = document.getElementById(`${fieldsetId}-insee`);
|
279
249
|
prevInput?.focus();
|
280
250
|
}
|
281
251
|
},
|
@@ -289,17 +259,19 @@ const useSocialSecurityInput = ({ onChange, placeholder = '269054958815780', val
|
|
289
259
|
};
|
290
260
|
};
|
291
261
|
|
292
|
-
var
|
293
|
-
var styles = {"inputContainer":"SocialSecurityInput-module__inputContainer___Og6B7","inputsRow":"SocialSecurityInput-module__inputsRow___zwkoW","inputLabel":"SocialSecurityInput-module__inputLabel___4Agoh","input":"SocialSecurityInput-module__input___NmvkG","inputError":"SocialSecurityInput-module__inputError___TymBP","copyButton":"SocialSecurityInput-module__copyButton___Cx1bs","copied":"SocialSecurityInput-module__copied___23tm0"};
|
294
|
-
styleInject(css_248z);
|
262
|
+
var styles = {"inputContainer":"Og6B7","fieldset":"zscB4","inputLabel":"_4Agoh","fieldDescription":"vX6qk","inputsRow":"zwkoW","inputWrapper":"WFS7h","srOnly":"CgrDw","input":"NmvkG","inputReadOnly":"_8AMQw","inputError":"TymBP","errorMessage":"Yidsk","copyButton":"Cx1bs","copied":"_23tm0"};
|
295
263
|
|
296
|
-
const SocialSecurityInput = ({ label = 'Numéro de sécurité sociale', placeholder = '269054958815780', value, onChange, error, disabled = false, className, showCopyButton = false, }) => {
|
264
|
+
const SocialSecurityInput = ({ label = 'Numéro de sécurité sociale', placeholder = '269054958815780', value, onChange, error, disabled = false, className, showCopyButton = false, texts = {}, }) => {
|
265
|
+
const [copied, setCopied] = useState(false);
|
266
|
+
const fieldsetId = useId();
|
267
|
+
const errorId = useId();
|
268
|
+
const descriptionId = useId();
|
297
269
|
const { values, handlers, placeholders } = useSocialSecurityInput({
|
298
270
|
onChange,
|
299
271
|
placeholder,
|
300
272
|
value,
|
273
|
+
fieldsetId,
|
301
274
|
});
|
302
|
-
const [copied, setCopied] = useState(false);
|
303
275
|
const handleCopy = async () => {
|
304
276
|
const fullNumber = values.sex +
|
305
277
|
values.year +
|
@@ -319,14 +291,49 @@ const SocialSecurityInput = ({ label = 'Numéro de sécurité sociale', placehol
|
|
319
291
|
}
|
320
292
|
}
|
321
293
|
};
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
294
|
+
const defaultTexts = {
|
295
|
+
description: 'Saisissez votre numéro de sécurité sociale français (15 chiffres)',
|
296
|
+
fieldDescriptions: {
|
297
|
+
sex: 'Sexe (1 pour homme, 2 pour femme)',
|
298
|
+
year: 'Année de naissance (2 derniers chiffres)',
|
299
|
+
month: 'Mois de naissance (01 à 12)',
|
300
|
+
department: 'Département de naissance (2 chiffres ou 2A/2B)',
|
301
|
+
insee: 'Code INSEE de la commune (3 chiffres)',
|
302
|
+
order: 'Numéro d\'ordre (3 chiffres)',
|
303
|
+
controlKey: 'Clé de contrôle (calculée automatiquement)'
|
304
|
+
},
|
305
|
+
fieldDetails: {
|
306
|
+
sex: 'Premier chiffre du numéro de sécurité sociale',
|
307
|
+
year: 'Deux derniers chiffres de l\'année de naissance',
|
308
|
+
month: 'Mois de naissance (01 à 12)',
|
309
|
+
department: 'Code du département de naissance',
|
310
|
+
insee: 'Code INSEE de la commune de naissance',
|
311
|
+
order: 'Numéro d\'ordre dans la commune',
|
312
|
+
controlKey: 'Clé de contrôle calculée automatiquement'
|
313
|
+
},
|
314
|
+
copyButton: {
|
315
|
+
copy: 'Copier',
|
316
|
+
copied: 'Copié !',
|
317
|
+
copyLabel: 'Copier le numéro de sécurité sociale complet',
|
318
|
+
copiedLabel: 'Numéro copié avec succès'
|
319
|
+
}
|
320
|
+
};
|
321
|
+
const finalTexts = {
|
322
|
+
description: texts.description || defaultTexts.description,
|
323
|
+
fieldDescriptions: { ...defaultTexts.fieldDescriptions, ...texts.fieldDescriptions },
|
324
|
+
fieldDetails: { ...defaultTexts.fieldDetails, ...texts.fieldDetails },
|
325
|
+
copyButton: { ...defaultTexts.copyButton, ...texts.copyButton }
|
326
|
+
};
|
327
|
+
const hasError = error || values.error;
|
328
|
+
const errorMessage = error || values.error;
|
329
|
+
return (jsx("div", { className: `${styles.inputContainer} ${className}`, children: jsxs("fieldset", { id: fieldsetId, className: styles.fieldset, "aria-describedby": `${descriptionId} ${hasError ? errorId : ''}`, children: [jsx("legend", { className: styles.inputLabel, children: label }), jsx("div", { id: descriptionId, className: styles.fieldDescription, "aria-live": "polite", children: finalTexts.description }), jsxs("div", { className: styles.inputsRow, children: [jsxs("div", { className: styles.inputWrapper, children: [jsx("label", { htmlFor: `${fieldsetId}-sex`, className: styles.srOnly, children: finalTexts.fieldDescriptions.sex }), jsx("input", { id: `${fieldsetId}-sex`, type: "text", className: `${styles.input} ${hasError ? styles.inputError : ''}`, placeholder: placeholders.sex, minLength: 1, maxLength: 1, disabled: disabled, onChange: handlers.sex.onChange, onPaste: handlers.sex.onPaste, value: values.sex, "aria-label": finalTexts.fieldDescriptions.sex, "aria-describedby": `${fieldsetId}-sex-desc`, "aria-invalid": hasError ? 'true' : 'false' }), jsx("span", { id: `${fieldsetId}-sex-desc`, className: styles.srOnly, children: finalTexts.fieldDetails.sex })] }), jsxs("div", { className: styles.inputWrapper, children: [jsx("label", { htmlFor: `${fieldsetId}-year`, className: styles.srOnly, children: finalTexts.fieldDescriptions.year }), jsx("input", { id: `${fieldsetId}-year`, type: "text", className: `${styles.input} ${hasError ? styles.inputError : ''}`, placeholder: placeholders.year, minLength: 2, maxLength: 2, disabled: disabled, onChange: handlers.year.onChange, onKeyDown: handlers.year.onKeyDown, value: values.year, "aria-label": finalTexts.fieldDescriptions.year, "aria-describedby": `${fieldsetId}-year-desc`, "aria-invalid": hasError ? 'true' : 'false' }), jsx("span", { id: `${fieldsetId}-year-desc`, className: styles.srOnly, children: finalTexts.fieldDetails.year })] }), jsxs("div", { className: styles.inputWrapper, children: [jsx("label", { htmlFor: `${fieldsetId}-month`, className: styles.srOnly, children: finalTexts.fieldDescriptions.month }), jsx("input", { id: `${fieldsetId}-month`, type: "text", className: `${styles.input} ${hasError ? styles.inputError : ''}`, placeholder: placeholders.month, minLength: 2, maxLength: 2, disabled: disabled, onChange: handlers.month.onChange, onKeyDown: handlers.month.onKeyDown, value: values.month, "aria-label": finalTexts.fieldDescriptions.month, "aria-describedby": `${fieldsetId}-month-desc`, "aria-invalid": hasError ? 'true' : 'false' }), jsx("span", { id: `${fieldsetId}-month-desc`, className: styles.srOnly, children: finalTexts.fieldDetails.month })] }), jsxs("div", { className: styles.inputWrapper, children: [jsx("label", { htmlFor: `${fieldsetId}-department`, className: styles.srOnly, children: finalTexts.fieldDescriptions.department }), jsx("input", { id: `${fieldsetId}-department`, type: "text", className: `${styles.input} ${hasError ? styles.inputError : ''}`, placeholder: placeholders.department, minLength: 2, maxLength: 2, disabled: disabled, onChange: handlers.department.onChange, onKeyDown: handlers.department.onKeyDown, value: values.department, "aria-label": finalTexts.fieldDescriptions.department, "aria-describedby": `${fieldsetId}-department-desc`, "aria-invalid": hasError ? 'true' : 'false' }), jsx("span", { id: `${fieldsetId}-department-desc`, className: styles.srOnly, children: finalTexts.fieldDetails.department })] }), jsxs("div", { className: styles.inputWrapper, children: [jsx("label", { htmlFor: `${fieldsetId}-insee`, className: styles.srOnly, children: finalTexts.fieldDescriptions.insee }), jsx("input", { id: `${fieldsetId}-insee`, type: "text", className: `${styles.input} ${hasError ? styles.inputError : ''}`, placeholder: placeholders.insee, minLength: 3, maxLength: 3, disabled: disabled, onChange: handlers.insee.onChange, onKeyDown: handlers.insee.onKeyDown, value: values.insee, "aria-label": finalTexts.fieldDescriptions.insee, "aria-describedby": `${fieldsetId}-insee-desc`, "aria-invalid": hasError ? 'true' : 'false' }), jsx("span", { id: `${fieldsetId}-insee-desc`, className: styles.srOnly, children: finalTexts.fieldDetails.insee })] }), jsxs("div", { className: styles.inputWrapper, children: [jsx("label", { htmlFor: `${fieldsetId}-order`, className: styles.srOnly, children: finalTexts.fieldDescriptions.order }), jsx("input", { id: `${fieldsetId}-order`, type: "text", className: `${styles.input} ${hasError ? styles.inputError : ''}`, placeholder: placeholders.order, minLength: 3, maxLength: 3, disabled: disabled, onChange: handlers.order.onChange, onKeyDown: handlers.order.onKeyDown, value: values.order, "aria-label": finalTexts.fieldDescriptions.order, "aria-describedby": `${fieldsetId}-order-desc`, "aria-invalid": hasError ? 'true' : 'false' }), jsx("span", { id: `${fieldsetId}-order-desc`, className: styles.srOnly, children: finalTexts.fieldDetails.order })] }), jsxs("div", { className: styles.inputWrapper, children: [jsx("label", { htmlFor: `${fieldsetId}-control`, className: styles.srOnly, children: finalTexts.fieldDescriptions.controlKey }), jsx("input", { id: `${fieldsetId}-control`, type: "text", className: `${styles.input} ${styles.inputReadOnly} ${hasError ? styles.inputError : ''}`, placeholder: placeholders.controlKey, minLength: 2, maxLength: 2, disabled: true, value: values.controlKey, readOnly: true, "aria-label": finalTexts.fieldDescriptions.controlKey, "aria-describedby": `${fieldsetId}-control-desc`, "aria-invalid": hasError ? 'true' : 'false' }), jsx("span", { id: `${fieldsetId}-control-desc`, className: styles.srOnly, children: finalTexts.fieldDetails.controlKey })] }), showCopyButton && (jsxs("button", { type: "button", className: `${styles.copyButton} ${copied ? styles.copied : ''}`, onClick: handleCopy, disabled: disabled ||
|
330
|
+
(values.sex +
|
331
|
+
values.year +
|
332
|
+
values.month +
|
333
|
+
values.department +
|
334
|
+
values.insee +
|
335
|
+
values.order +
|
336
|
+
values.controlKey).length !== 15, "aria-label": copied ? finalTexts.copyButton.copiedLabel : finalTexts.copyButton.copyLabel, "aria-describedby": `${fieldsetId}-copy-desc`, children: [copied ? (jsx("svg", { height: "24px", width: "24px", viewBox: "0 -960 960 960", fill: "white", "aria-hidden": "true", children: jsx("path", { d: "M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z" }) })) : (jsx("svg", { height: "24px", width: "24px", viewBox: "0 -960 960 960", fill: "white", "aria-hidden": "true", children: jsx("path", { d: "M360-240q-33 0-56.5-23.5T280-320v-480q0-33 23.5-56.5T360-880h360q33 0 56.5 23.5T800-800v480q0 33-23.5 56.5T720-240H360Zm0-80h360v-480H360v480ZM200-80q-33 0-56.5-23.5T120-160v-560h80v560h440v80H200Zm160-240v-480 480Z" }) })), jsx("span", { className: styles.srOnly, children: copied ? finalTexts.copyButton.copied : finalTexts.copyButton.copy })] }))] }), hasError && (jsx("div", { id: errorId, className: styles.errorMessage, role: "alert", "aria-live": "assertive", children: errorMessage }))] }) }));
|
330
337
|
};
|
331
338
|
|
332
339
|
const defaultTheme = {
|
@@ -516,5 +523,4 @@ const ThemeProvider = ({ children, theme }) => {
|
|
516
523
|
return jsx(Fragment, { children: children });
|
517
524
|
};
|
518
525
|
|
519
|
-
export { SocialSecurityInput, ThemeProvider, createCSSVariables, defaultConfig, getCSSVariable, getGlobalConfig, resetGlobalConfig, setGlobalConfig };
|
520
|
-
//# sourceMappingURL=index.esm.js.map
|
526
|
+
export { SocialSecurityInput, ThemeProvider, createCSSVariables, defaultConfig, getCSSVariable, getGlobalConfig, resetGlobalConfig, setGlobalConfig, useSocialSecurityInput };
|
package/dist/index.js
CHANGED
@@ -3,37 +3,7 @@
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
4
4
|
var react = require('react');
|
5
5
|
|
6
|
-
|
7
|
-
if ( ref === void 0 ) ref = {};
|
8
|
-
var insertAt = ref.insertAt;
|
9
|
-
|
10
|
-
if (!css || typeof document === 'undefined') { return; }
|
11
|
-
|
12
|
-
var head = document.head || document.getElementsByTagName('head')[0];
|
13
|
-
var style = document.createElement('style');
|
14
|
-
style.type = 'text/css';
|
15
|
-
|
16
|
-
if (insertAt === 'top') {
|
17
|
-
if (head.firstChild) {
|
18
|
-
head.insertBefore(style, head.firstChild);
|
19
|
-
} else {
|
20
|
-
head.appendChild(style);
|
21
|
-
}
|
22
|
-
} else {
|
23
|
-
head.appendChild(style);
|
24
|
-
}
|
25
|
-
|
26
|
-
if (style.styleSheet) {
|
27
|
-
style.styleSheet.cssText = css;
|
28
|
-
} else {
|
29
|
-
style.appendChild(document.createTextNode(css));
|
30
|
-
}
|
31
|
-
}
|
32
|
-
|
33
|
-
var css_248z$1 = "@import url(\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Roboto:wght@400;500;700&family=Poppins:wght@400;500;600;700&family=Open+Sans:wght@400;500;700&family=Montserrat:wght@400;500;600;700&family=Lato:wght@400;500;700&family=Nunito:wght@400;500;600;700&family=Source+Sans+Pro:wght@400;500;700&display=swap\");:root{--ui-color-primary:#3b82f6;--ui-color-primary-dark:#2563eb;--ui-color-secondary:#64748b;--ui-color-background:#fff;--ui-color-surface:#f8fafc;--ui-color-text-primary:#1e293b;--ui-color-text-secondary:#64748b;--ui-color-text-disabled:#94a3b8;--ui-color-border-default:#e2e8f0;--ui-color-border-focus:#3b82f6;--ui-color-error:#ef4444;--ui-color-success:#10b981;--ui-color-warning:#f59e0b;--ui-color-gray-300:#d1d5db;--ui-spacing-xs:0.25rem;--ui-spacing-sm:0.5rem;--ui-spacing-md:1rem;--ui-spacing-lg:1.5rem;--ui-spacing-xl:2rem;--ui-font-family:\"Inter\",-apple-system,BlinkMacSystemFont,\"Segoe UI\",\"Roboto\",\"Oxygen\",\"Ubuntu\",\"Cantarell\",\"Fira Sans\",\"Droid Sans\",\"Helvetica Neue\",sans-serif;--ui-font-size-xs:0.75rem;--ui-font-size-sm:0.875rem;--ui-font-size-md:1rem;--ui-font-size-lg:1.125rem;--ui-font-size-xl:1.25rem;--ui-font-weight-normal:400;--ui-font-weight-medium:500;--ui-font-weight-semibold:600;--ui-font-weight-bold:700;--ui-border-radius-sm:0.25rem;--ui-border-radius-md:0.375rem;--ui-border-radius-lg:0.5rem;--ui-border-radius-xl:0.75rem;--ui-shadow-sm:0 1px 2px 0 rgba(0,0,0,.05);--ui-shadow-md:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--ui-shadow-lg:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1)}@media (prefers-color-scheme:dark){:root{--ui-color-background:#0f172a;--ui-color-surface:#1e293b;--ui-color-text-primary:#f1f5f9;--ui-color-text-secondary:#cbd5e1;--ui-color-text-disabled:#64748b;--ui-color-border-default:#334155;--ui-color-border-focus:#3b82f6}}";
|
34
|
-
styleInject(css_248z$1);
|
35
|
-
|
36
|
-
const useSocialSecurityInput = ({ onChange, placeholder = '269054958815780', value }) => {
|
6
|
+
const useSocialSecurityInput = ({ onChange, placeholder = '269054958815780', value, fieldsetId }) => {
|
37
7
|
const [state, setState] = react.useState({
|
38
8
|
sex: '',
|
39
9
|
year: '',
|
@@ -173,7 +143,7 @@ const useSocialSecurityInput = ({ onChange, placeholder = '269054958815780', val
|
|
173
143
|
if (inputValue === '' || inputValue === '1' || inputValue === '2') {
|
174
144
|
updateField('sex', inputValue);
|
175
145
|
if (inputValue === '1' || inputValue === '2') {
|
176
|
-
const nextInput =
|
146
|
+
const nextInput = document.getElementById(`${fieldsetId}-year`);
|
177
147
|
nextInput?.focus();
|
178
148
|
}
|
179
149
|
}
|
@@ -195,14 +165,14 @@ const useSocialSecurityInput = ({ onChange, placeholder = '269054958815780', val
|
|
195
165
|
if (cleaned.length <= 2) {
|
196
166
|
updateField('year', cleaned);
|
197
167
|
if (cleaned.length === 2) {
|
198
|
-
const nextInput =
|
168
|
+
const nextInput = document.getElementById(`${fieldsetId}-month`);
|
199
169
|
nextInput?.focus();
|
200
170
|
}
|
201
171
|
}
|
202
172
|
},
|
203
173
|
onKeyDown: (e) => {
|
204
174
|
if (e.key === 'Backspace' && e.currentTarget.value === '') {
|
205
|
-
const prevInput =
|
175
|
+
const prevInput = document.getElementById(`${fieldsetId}-sex`);
|
206
176
|
prevInput?.focus();
|
207
177
|
}
|
208
178
|
},
|
@@ -214,14 +184,14 @@ const useSocialSecurityInput = ({ onChange, placeholder = '269054958815780', val
|
|
214
184
|
if (cleaned.length <= 2) {
|
215
185
|
updateField('month', cleaned);
|
216
186
|
if (cleaned.length === 2 && cleaned >= '01' && cleaned <= '12') {
|
217
|
-
const nextInput =
|
187
|
+
const nextInput = document.getElementById(`${fieldsetId}-department`);
|
218
188
|
nextInput?.focus();
|
219
189
|
}
|
220
190
|
}
|
221
191
|
},
|
222
192
|
onKeyDown: (e) => {
|
223
193
|
if (e.key === 'Backspace' && e.currentTarget.value === '') {
|
224
|
-
const prevInput =
|
194
|
+
const prevInput = document.getElementById(`${fieldsetId}-year`);
|
225
195
|
prevInput?.focus();
|
226
196
|
}
|
227
197
|
},
|
@@ -236,14 +206,14 @@ const useSocialSecurityInput = ({ onChange, placeholder = '269054958815780', val
|
|
236
206
|
cleaned === '2A' ||
|
237
207
|
cleaned === '2B' ||
|
238
208
|
cleaned === '99')) {
|
239
|
-
const nextInput =
|
209
|
+
const nextInput = document.getElementById(`${fieldsetId}-insee`);
|
240
210
|
nextInput?.focus();
|
241
211
|
}
|
242
212
|
}
|
243
213
|
},
|
244
214
|
onKeyDown: (e) => {
|
245
215
|
if (e.key === 'Backspace' && e.currentTarget.value === '') {
|
246
|
-
const prevInput =
|
216
|
+
const prevInput = document.getElementById(`${fieldsetId}-month`);
|
247
217
|
prevInput?.focus();
|
248
218
|
}
|
249
219
|
},
|
@@ -255,14 +225,14 @@ const useSocialSecurityInput = ({ onChange, placeholder = '269054958815780', val
|
|
255
225
|
if (cleaned.length <= 3) {
|
256
226
|
updateField('insee', cleaned);
|
257
227
|
if (cleaned.length === 3) {
|
258
|
-
const nextInput =
|
228
|
+
const nextInput = document.getElementById(`${fieldsetId}-order`);
|
259
229
|
nextInput?.focus();
|
260
230
|
}
|
261
231
|
}
|
262
232
|
},
|
263
233
|
onKeyDown: (e) => {
|
264
234
|
if (e.key === 'Backspace' && e.currentTarget.value === '') {
|
265
|
-
const prevInput =
|
235
|
+
const prevInput = document.getElementById(`${fieldsetId}-department`);
|
266
236
|
prevInput?.focus();
|
267
237
|
}
|
268
238
|
},
|
@@ -277,7 +247,7 @@ const useSocialSecurityInput = ({ onChange, placeholder = '269054958815780', val
|
|
277
247
|
},
|
278
248
|
onKeyDown: (e) => {
|
279
249
|
if (e.key === 'Backspace' && e.currentTarget.value === '') {
|
280
|
-
const prevInput =
|
250
|
+
const prevInput = document.getElementById(`${fieldsetId}-insee`);
|
281
251
|
prevInput?.focus();
|
282
252
|
}
|
283
253
|
},
|
@@ -291,17 +261,19 @@ const useSocialSecurityInput = ({ onChange, placeholder = '269054958815780', val
|
|
291
261
|
};
|
292
262
|
};
|
293
263
|
|
294
|
-
var
|
295
|
-
var styles = {"inputContainer":"SocialSecurityInput-module__inputContainer___Og6B7","inputsRow":"SocialSecurityInput-module__inputsRow___zwkoW","inputLabel":"SocialSecurityInput-module__inputLabel___4Agoh","input":"SocialSecurityInput-module__input___NmvkG","inputError":"SocialSecurityInput-module__inputError___TymBP","copyButton":"SocialSecurityInput-module__copyButton___Cx1bs","copied":"SocialSecurityInput-module__copied___23tm0"};
|
296
|
-
styleInject(css_248z);
|
264
|
+
var styles = {"inputContainer":"Og6B7","fieldset":"zscB4","inputLabel":"_4Agoh","fieldDescription":"vX6qk","inputsRow":"zwkoW","inputWrapper":"WFS7h","srOnly":"CgrDw","input":"NmvkG","inputReadOnly":"_8AMQw","inputError":"TymBP","errorMessage":"Yidsk","copyButton":"Cx1bs","copied":"_23tm0"};
|
297
265
|
|
298
|
-
const SocialSecurityInput = ({ label = 'Numéro de sécurité sociale', placeholder = '269054958815780', value, onChange, error, disabled = false, className, showCopyButton = false, }) => {
|
266
|
+
const SocialSecurityInput = ({ label = 'Numéro de sécurité sociale', placeholder = '269054958815780', value, onChange, error, disabled = false, className, showCopyButton = false, texts = {}, }) => {
|
267
|
+
const [copied, setCopied] = react.useState(false);
|
268
|
+
const fieldsetId = react.useId();
|
269
|
+
const errorId = react.useId();
|
270
|
+
const descriptionId = react.useId();
|
299
271
|
const { values, handlers, placeholders } = useSocialSecurityInput({
|
300
272
|
onChange,
|
301
273
|
placeholder,
|
302
274
|
value,
|
275
|
+
fieldsetId,
|
303
276
|
});
|
304
|
-
const [copied, setCopied] = react.useState(false);
|
305
277
|
const handleCopy = async () => {
|
306
278
|
const fullNumber = values.sex +
|
307
279
|
values.year +
|
@@ -321,14 +293,49 @@ const SocialSecurityInput = ({ label = 'Numéro de sécurité sociale', placehol
|
|
321
293
|
}
|
322
294
|
}
|
323
295
|
};
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
296
|
+
const defaultTexts = {
|
297
|
+
description: 'Saisissez votre numéro de sécurité sociale français (15 chiffres)',
|
298
|
+
fieldDescriptions: {
|
299
|
+
sex: 'Sexe (1 pour homme, 2 pour femme)',
|
300
|
+
year: 'Année de naissance (2 derniers chiffres)',
|
301
|
+
month: 'Mois de naissance (01 à 12)',
|
302
|
+
department: 'Département de naissance (2 chiffres ou 2A/2B)',
|
303
|
+
insee: 'Code INSEE de la commune (3 chiffres)',
|
304
|
+
order: 'Numéro d\'ordre (3 chiffres)',
|
305
|
+
controlKey: 'Clé de contrôle (calculée automatiquement)'
|
306
|
+
},
|
307
|
+
fieldDetails: {
|
308
|
+
sex: 'Premier chiffre du numéro de sécurité sociale',
|
309
|
+
year: 'Deux derniers chiffres de l\'année de naissance',
|
310
|
+
month: 'Mois de naissance (01 à 12)',
|
311
|
+
department: 'Code du département de naissance',
|
312
|
+
insee: 'Code INSEE de la commune de naissance',
|
313
|
+
order: 'Numéro d\'ordre dans la commune',
|
314
|
+
controlKey: 'Clé de contrôle calculée automatiquement'
|
315
|
+
},
|
316
|
+
copyButton: {
|
317
|
+
copy: 'Copier',
|
318
|
+
copied: 'Copié !',
|
319
|
+
copyLabel: 'Copier le numéro de sécurité sociale complet',
|
320
|
+
copiedLabel: 'Numéro copié avec succès'
|
321
|
+
}
|
322
|
+
};
|
323
|
+
const finalTexts = {
|
324
|
+
description: texts.description || defaultTexts.description,
|
325
|
+
fieldDescriptions: { ...defaultTexts.fieldDescriptions, ...texts.fieldDescriptions },
|
326
|
+
fieldDetails: { ...defaultTexts.fieldDetails, ...texts.fieldDetails },
|
327
|
+
copyButton: { ...defaultTexts.copyButton, ...texts.copyButton }
|
328
|
+
};
|
329
|
+
const hasError = error || values.error;
|
330
|
+
const errorMessage = error || values.error;
|
331
|
+
return (jsxRuntime.jsx("div", { className: `${styles.inputContainer} ${className}`, children: jsxRuntime.jsxs("fieldset", { id: fieldsetId, className: styles.fieldset, "aria-describedby": `${descriptionId} ${hasError ? errorId : ''}`, children: [jsxRuntime.jsx("legend", { className: styles.inputLabel, children: label }), jsxRuntime.jsx("div", { id: descriptionId, className: styles.fieldDescription, "aria-live": "polite", children: finalTexts.description }), jsxRuntime.jsxs("div", { className: styles.inputsRow, children: [jsxRuntime.jsxs("div", { className: styles.inputWrapper, children: [jsxRuntime.jsx("label", { htmlFor: `${fieldsetId}-sex`, className: styles.srOnly, children: finalTexts.fieldDescriptions.sex }), jsxRuntime.jsx("input", { id: `${fieldsetId}-sex`, type: "text", className: `${styles.input} ${hasError ? styles.inputError : ''}`, placeholder: placeholders.sex, minLength: 1, maxLength: 1, disabled: disabled, onChange: handlers.sex.onChange, onPaste: handlers.sex.onPaste, value: values.sex, "aria-label": finalTexts.fieldDescriptions.sex, "aria-describedby": `${fieldsetId}-sex-desc`, "aria-invalid": hasError ? 'true' : 'false' }), jsxRuntime.jsx("span", { id: `${fieldsetId}-sex-desc`, className: styles.srOnly, children: finalTexts.fieldDetails.sex })] }), jsxRuntime.jsxs("div", { className: styles.inputWrapper, children: [jsxRuntime.jsx("label", { htmlFor: `${fieldsetId}-year`, className: styles.srOnly, children: finalTexts.fieldDescriptions.year }), jsxRuntime.jsx("input", { id: `${fieldsetId}-year`, type: "text", className: `${styles.input} ${hasError ? styles.inputError : ''}`, placeholder: placeholders.year, minLength: 2, maxLength: 2, disabled: disabled, onChange: handlers.year.onChange, onKeyDown: handlers.year.onKeyDown, value: values.year, "aria-label": finalTexts.fieldDescriptions.year, "aria-describedby": `${fieldsetId}-year-desc`, "aria-invalid": hasError ? 'true' : 'false' }), jsxRuntime.jsx("span", { id: `${fieldsetId}-year-desc`, className: styles.srOnly, children: finalTexts.fieldDetails.year })] }), jsxRuntime.jsxs("div", { className: styles.inputWrapper, children: [jsxRuntime.jsx("label", { htmlFor: `${fieldsetId}-month`, className: styles.srOnly, children: finalTexts.fieldDescriptions.month }), jsxRuntime.jsx("input", { id: `${fieldsetId}-month`, type: "text", className: `${styles.input} ${hasError ? styles.inputError : ''}`, placeholder: placeholders.month, minLength: 2, maxLength: 2, disabled: disabled, onChange: handlers.month.onChange, onKeyDown: handlers.month.onKeyDown, value: values.month, "aria-label": finalTexts.fieldDescriptions.month, "aria-describedby": `${fieldsetId}-month-desc`, "aria-invalid": hasError ? 'true' : 'false' }), jsxRuntime.jsx("span", { id: `${fieldsetId}-month-desc`, className: styles.srOnly, children: finalTexts.fieldDetails.month })] }), jsxRuntime.jsxs("div", { className: styles.inputWrapper, children: [jsxRuntime.jsx("label", { htmlFor: `${fieldsetId}-department`, className: styles.srOnly, children: finalTexts.fieldDescriptions.department }), jsxRuntime.jsx("input", { id: `${fieldsetId}-department`, type: "text", className: `${styles.input} ${hasError ? styles.inputError : ''}`, placeholder: placeholders.department, minLength: 2, maxLength: 2, disabled: disabled, onChange: handlers.department.onChange, onKeyDown: handlers.department.onKeyDown, value: values.department, "aria-label": finalTexts.fieldDescriptions.department, "aria-describedby": `${fieldsetId}-department-desc`, "aria-invalid": hasError ? 'true' : 'false' }), jsxRuntime.jsx("span", { id: `${fieldsetId}-department-desc`, className: styles.srOnly, children: finalTexts.fieldDetails.department })] }), jsxRuntime.jsxs("div", { className: styles.inputWrapper, children: [jsxRuntime.jsx("label", { htmlFor: `${fieldsetId}-insee`, className: styles.srOnly, children: finalTexts.fieldDescriptions.insee }), jsxRuntime.jsx("input", { id: `${fieldsetId}-insee`, type: "text", className: `${styles.input} ${hasError ? styles.inputError : ''}`, placeholder: placeholders.insee, minLength: 3, maxLength: 3, disabled: disabled, onChange: handlers.insee.onChange, onKeyDown: handlers.insee.onKeyDown, value: values.insee, "aria-label": finalTexts.fieldDescriptions.insee, "aria-describedby": `${fieldsetId}-insee-desc`, "aria-invalid": hasError ? 'true' : 'false' }), jsxRuntime.jsx("span", { id: `${fieldsetId}-insee-desc`, className: styles.srOnly, children: finalTexts.fieldDetails.insee })] }), jsxRuntime.jsxs("div", { className: styles.inputWrapper, children: [jsxRuntime.jsx("label", { htmlFor: `${fieldsetId}-order`, className: styles.srOnly, children: finalTexts.fieldDescriptions.order }), jsxRuntime.jsx("input", { id: `${fieldsetId}-order`, type: "text", className: `${styles.input} ${hasError ? styles.inputError : ''}`, placeholder: placeholders.order, minLength: 3, maxLength: 3, disabled: disabled, onChange: handlers.order.onChange, onKeyDown: handlers.order.onKeyDown, value: values.order, "aria-label": finalTexts.fieldDescriptions.order, "aria-describedby": `${fieldsetId}-order-desc`, "aria-invalid": hasError ? 'true' : 'false' }), jsxRuntime.jsx("span", { id: `${fieldsetId}-order-desc`, className: styles.srOnly, children: finalTexts.fieldDetails.order })] }), jsxRuntime.jsxs("div", { className: styles.inputWrapper, children: [jsxRuntime.jsx("label", { htmlFor: `${fieldsetId}-control`, className: styles.srOnly, children: finalTexts.fieldDescriptions.controlKey }), jsxRuntime.jsx("input", { id: `${fieldsetId}-control`, type: "text", className: `${styles.input} ${styles.inputReadOnly} ${hasError ? styles.inputError : ''}`, placeholder: placeholders.controlKey, minLength: 2, maxLength: 2, disabled: true, value: values.controlKey, readOnly: true, "aria-label": finalTexts.fieldDescriptions.controlKey, "aria-describedby": `${fieldsetId}-control-desc`, "aria-invalid": hasError ? 'true' : 'false' }), jsxRuntime.jsx("span", { id: `${fieldsetId}-control-desc`, className: styles.srOnly, children: finalTexts.fieldDetails.controlKey })] }), showCopyButton && (jsxRuntime.jsxs("button", { type: "button", className: `${styles.copyButton} ${copied ? styles.copied : ''}`, onClick: handleCopy, disabled: disabled ||
|
332
|
+
(values.sex +
|
333
|
+
values.year +
|
334
|
+
values.month +
|
335
|
+
values.department +
|
336
|
+
values.insee +
|
337
|
+
values.order +
|
338
|
+
values.controlKey).length !== 15, "aria-label": copied ? finalTexts.copyButton.copiedLabel : finalTexts.copyButton.copyLabel, "aria-describedby": `${fieldsetId}-copy-desc`, children: [copied ? (jsxRuntime.jsx("svg", { height: "24px", width: "24px", viewBox: "0 -960 960 960", fill: "white", "aria-hidden": "true", children: jsxRuntime.jsx("path", { d: "M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z" }) })) : (jsxRuntime.jsx("svg", { height: "24px", width: "24px", viewBox: "0 -960 960 960", fill: "white", "aria-hidden": "true", children: jsxRuntime.jsx("path", { d: "M360-240q-33 0-56.5-23.5T280-320v-480q0-33 23.5-56.5T360-880h360q33 0 56.5 23.5T800-800v480q0 33-23.5 56.5T720-240H360Zm0-80h360v-480H360v480ZM200-80q-33 0-56.5-23.5T120-160v-560h80v560h440v80H200Zm160-240v-480 480Z" }) })), jsxRuntime.jsx("span", { className: styles.srOnly, children: copied ? finalTexts.copyButton.copied : finalTexts.copyButton.copy })] }))] }), hasError && (jsxRuntime.jsx("div", { id: errorId, className: styles.errorMessage, role: "alert", "aria-live": "assertive", children: errorMessage }))] }) }));
|
332
339
|
};
|
333
340
|
|
334
341
|
const defaultTheme = {
|
@@ -526,4 +533,4 @@ exports.getCSSVariable = getCSSVariable;
|
|
526
533
|
exports.getGlobalConfig = getGlobalConfig;
|
527
534
|
exports.resetGlobalConfig = resetGlobalConfig;
|
528
535
|
exports.setGlobalConfig = setGlobalConfig;
|
529
|
-
|
536
|
+
exports.useSocialSecurityInput = useSocialSecurityInput;
|
package/dist/setupTests.d.ts
CHANGED
package/dist/types/index.d.ts
CHANGED
@@ -35,5 +35,82 @@ export interface SocialSecurityInputProps {
|
|
35
35
|
disabled?: boolean;
|
36
36
|
className?: string;
|
37
37
|
showCopyButton?: boolean;
|
38
|
+
texts?: {
|
39
|
+
description?: string;
|
40
|
+
fieldDescriptions?: {
|
41
|
+
sex?: string;
|
42
|
+
year?: string;
|
43
|
+
month?: string;
|
44
|
+
department?: string;
|
45
|
+
insee?: string;
|
46
|
+
order?: string;
|
47
|
+
controlKey?: string;
|
48
|
+
};
|
49
|
+
fieldDetails?: {
|
50
|
+
sex?: string;
|
51
|
+
year?: string;
|
52
|
+
month?: string;
|
53
|
+
department?: string;
|
54
|
+
insee?: string;
|
55
|
+
order?: string;
|
56
|
+
controlKey?: string;
|
57
|
+
};
|
58
|
+
copyButton?: {
|
59
|
+
copy?: string;
|
60
|
+
copied?: string;
|
61
|
+
copyLabel?: string;
|
62
|
+
copiedLabel?: string;
|
63
|
+
};
|
64
|
+
};
|
65
|
+
}
|
66
|
+
export interface UseSocialSecurityInputProps {
|
67
|
+
onChange?: (value: string) => void;
|
68
|
+
placeholder?: string;
|
69
|
+
value?: string;
|
70
|
+
fieldsetId?: string;
|
71
|
+
}
|
72
|
+
export interface SocialSecurityState {
|
73
|
+
sex: string;
|
74
|
+
year: string;
|
75
|
+
month: string;
|
76
|
+
department: string;
|
77
|
+
insee: string;
|
78
|
+
order: string;
|
79
|
+
controlKey: string;
|
80
|
+
error: string;
|
81
|
+
}
|
82
|
+
export interface SocialSecurityHandlers {
|
83
|
+
sex: {
|
84
|
+
onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
|
85
|
+
onPaste: (e: React.ClipboardEvent<HTMLInputElement>) => void;
|
86
|
+
};
|
87
|
+
year: {
|
88
|
+
onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
|
89
|
+
onKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => void;
|
90
|
+
};
|
91
|
+
month: {
|
92
|
+
onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
|
93
|
+
onKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => void;
|
94
|
+
};
|
95
|
+
department: {
|
96
|
+
onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
|
97
|
+
onKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => void;
|
98
|
+
};
|
99
|
+
insee: {
|
100
|
+
onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
|
101
|
+
onKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => void;
|
102
|
+
};
|
103
|
+
order: {
|
104
|
+
onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
|
105
|
+
onKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => void;
|
106
|
+
};
|
107
|
+
}
|
108
|
+
export interface SocialSecurityPlaceholders {
|
109
|
+
sex: string;
|
110
|
+
year: string;
|
111
|
+
month: string;
|
112
|
+
department: string;
|
113
|
+
insee: string;
|
114
|
+
order: string;
|
115
|
+
controlKey: string;
|
38
116
|
}
|
39
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/utils/index.d.ts
CHANGED
@@ -2,4 +2,3 @@ export declare const cn: (...classes: (string | undefined | null | false)[]) =>
|
|
2
2
|
export declare const formatDate: (date: Date | string) => string;
|
3
3
|
export declare const generateId: () => string;
|
4
4
|
export declare const capitalize: (str: string) => string;
|
5
|
-
//# sourceMappingURL=index.d.ts.map
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "react-french-ssn",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.4.1",
|
4
4
|
"description": "React component for French Social Security Numbers (NIR) with automatic formatting and validation",
|
5
5
|
"type": "module",
|
6
6
|
"main": "dist/index.js",
|
@@ -13,7 +13,8 @@
|
|
13
13
|
"access": "public"
|
14
14
|
},
|
15
15
|
"scripts": {
|
16
|
-
"build": "rollup -c",
|
16
|
+
"build": "NODE_ENV=production rollup -c",
|
17
|
+
"build:dev": "rollup -c",
|
17
18
|
"dev": "rollup -c -w",
|
18
19
|
"test": "jest",
|
19
20
|
"test:watch": "jest --watch",
|
@@ -23,6 +24,7 @@
|
|
23
24
|
"format": "prettier --write \"src/**/*.{ts,tsx,js,jsx}\"",
|
24
25
|
"storybook": "storybook dev -p 6006",
|
25
26
|
"build-storybook": "storybook build",
|
27
|
+
"deploy-storybook": "storybook build && gh-pages -d storybook-static",
|
26
28
|
"prepublishOnly": "npm run build",
|
27
29
|
"release": "semantic-release"
|
28
30
|
},
|
@@ -75,6 +77,7 @@
|
|
75
77
|
"eslint": "^8.53.0",
|
76
78
|
"eslint-plugin-react": "^7.33.2",
|
77
79
|
"eslint-plugin-react-hooks": "^4.6.0",
|
80
|
+
"gh-pages": "^6.3.0",
|
78
81
|
"identity-obj-proxy": "^3.0.0",
|
79
82
|
"jest": "^29.7.0",
|
80
83
|
"jest-environment-jsdom": "^29.7.0",
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"SocialSecurityInput.d.ts","sourceRoot":"","sources":["../../../src/components/SocialSecurityInput/SocialSecurityInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAIvD,QAAA,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAmK3D,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/SocialSecurityInput/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"useSocialSecurityInput.d.ts","sourceRoot":"","sources":["../../../src/components/SocialSecurityInput/useSocialSecurityInput.ts"],"names":[],"mappings":"AAEA,UAAU,2BAA2B;IACnC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,mBAAmB;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,sBAAsB,GAAI,kCAAsD,2BAA2B;;;;0BAsJpG,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC;yBAUpC,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC;;;0BAarC,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC;2BAWlC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC;;;0BAStC,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC;2BAWlC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC;;;0BAStC,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC;2BAkBlC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC;;;0BAStC,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC;2BAWlC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC;;;0BAStC,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC;2BAOlC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC;;;4CAvJT,MAAM;;;;;;;;;;CAsKtD,CAAC"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../src/components/ThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAoC,WAAW,EAAE,MAAM,WAAW,CAAC;AAE1E,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CAC9B;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAiCtD,CAAC"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE;YACJ,OAAO,EAAE,MAAM,CAAC;YAChB,SAAS,EAAE,MAAM,CAAC;YAClB,QAAQ,EAAE,MAAM,CAAC;SAClB,CAAC;QACF,MAAM,EAAE;YACN,OAAO,EAAE,MAAM,CAAC;YAChB,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;KACH,CAAC;IACF,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,UAAU,EAAE;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE;YACR,EAAE,EAAE,MAAM,CAAC;YACX,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,EAAE,EAAE,MAAM,CAAC;YACX,EAAE,EAAE,MAAM,CAAC;SACZ,CAAC;QACF,UAAU,EAAE;YACV,MAAM,EAAE,MAAM,CAAC;YACf,MAAM,EAAE,MAAM,CAAC;YACf,QAAQ,EAAE,MAAM,CAAC;YACjB,IAAI,EAAE,MAAM,CAAC;SACd,CAAC;KACH,CAAC;IACF,YAAY,EAAE;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,WAAW,EAAE;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE;QACN,cAAc,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;QACpD,WAAW,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;QAC1C,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,KAAK,EAAE;QACL,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;QACtD,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,EAAE,eAAe,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB;AA6ED,eAAO,MAAM,aAAa,EAAE,YAI3B,CAAC;AAIF,eAAO,MAAM,eAAe,GAAI,QAAQ,OAAO,CAAC,YAAY,CAAC,KAAG,IAa/D,CAAC;AAEF,eAAO,MAAM,eAAe,QAAO,YAElC,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAAO,IAEpC,CAAC"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"withTheme.d.ts","sourceRoot":"","sources":["../../src/decorators/withTheme.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,eAAO,MAAM,SAAS,GAAI,OAAO,KAAK,CAAC,aAAa,EAAE,SAAS;IAAE,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;KAAE,CAAA;CAAE,4CAQxG,CAAC"}
|
package/dist/index.d.ts.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,CAAC;AAE5B,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EACL,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,aAAa,EACd,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AACxD,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/index.esm.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/components/SocialSecurityInput/useSocialSecurityInput.ts","../src/components/SocialSecurityInput/SocialSecurityInput.tsx","../src/config/index.ts","../src/utils/cssVariables.ts","../src/components/ThemeProvider.tsx"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { useState, useEffect, useCallback } from 'react';\n\ninterface UseSocialSecurityInputProps {\n onChange?: (value: string) => void;\n placeholder?: string;\n value?: string;\n}\n\ninterface SocialSecurityState {\n sex: string;\n year: string;\n month: string;\n department: string;\n insee: string;\n order: string;\n controlKey: string;\n error: string;\n}\n\nexport const useSocialSecurityInput = ({ onChange, placeholder = '269054958815780', value }: UseSocialSecurityInputProps) => {\n const [state, setState] = useState<SocialSecurityState>({\n sex: '',\n year: '',\n month: '',\n department: '',\n insee: '',\n order: '',\n controlKey: '',\n error: '',\n });\n\n const calculateControlKey = (nir: string): string => {\n if (nir.length !== 13) return '';\n \n let nirForCalculation = nir;\n if (nirForCalculation.includes('2A')) {\n nirForCalculation = nirForCalculation.replace('2A', '19');\n }\n if (nirForCalculation.includes('2B')) {\n nirForCalculation = nirForCalculation.replace('2B', '20');\n }\n \n let remainder = 0;\n for (let i = 0; i < nirForCalculation.length; i++) {\n remainder = (remainder * 10 + parseInt(nirForCalculation[i], 10)) % 97;\n }\n \n const controlKey = 97 - remainder;\n return controlKey.toString().padStart(2, '0');\n };\n\n const updateControlKey = useCallback(() => {\n const nir = state.sex + state.year + state.month + state.department + state.insee + state.order;\n const key = calculateControlKey(nir);\n \n setState(prev => ({ ...prev, controlKey: key }));\n \n if (nir.length === 13 && key) {\n const fullNir = nir + key;\n onChange?.(fullNir);\n }\n }, [state.sex, state.year, state.month, state.department, state.insee, state.order, onChange]);\n\n useEffect(() => {\n updateControlKey();\n }, [state.sex, state.year, state.month, state.department, state.insee, state.order, updateControlKey]);\n\n const updateField = (field: keyof SocialSecurityState, value: string) => {\n setState(prev => ({ ...prev, [field]: value, error: '' }));\n };\n\n const parsePlaceholder = (placeholder: string) => {\n const cleaned = placeholder.replace(/\\D/g, '');\n if (cleaned.length >= 15) {\n return {\n sex: cleaned.substring(0, 1),\n year: cleaned.substring(1, 3),\n month: cleaned.substring(3, 5),\n department: cleaned.substring(5, 7),\n insee: cleaned.substring(7, 10),\n order: cleaned.substring(10, 13),\n controlKey: cleaned.substring(13, 15),\n };\n }\n return {\n sex: '2',\n year: '69',\n month: '05',\n department: '49',\n insee: '588',\n order: '157',\n controlKey: '80',\n };\n };\n\n const placeholders = parsePlaceholder(placeholder);\n\n const parseValue = (value: string) => {\n const cleaned = value.replace(/\\D/g, '');\n if (cleaned.length === 15) {\n return {\n sex: cleaned.substring(0, 1),\n year: cleaned.substring(1, 3),\n month: cleaned.substring(3, 5),\n department: cleaned.substring(5, 7),\n insee: cleaned.substring(7, 10),\n order: cleaned.substring(10, 13),\n controlKey: cleaned.substring(13, 15),\n };\n }\n return null;\n };\n\n\n useEffect(() => {\n if (value) {\n const parsed = parseValue(value);\n if (parsed) {\n setState(prev => ({ ...prev, ...parsed, error: '' }));\n }\n } else {\n setState(prev => ({\n ...prev,\n sex: '',\n year: '',\n month: '',\n department: '',\n insee: '',\n order: '',\n controlKey: '',\n error: '',\n }));\n }\n }, [value]);\n\n const parseSocialSecurityNumber = (fullNumber: string) => {\n const cleaned = fullNumber.replace(/\\D/g, '');\n \n if (cleaned.length === 15) {\n const parsed = {\n sex: cleaned.substring(0, 1),\n year: cleaned.substring(1, 3),\n month: cleaned.substring(3, 5),\n department: cleaned.substring(5, 7),\n insee: cleaned.substring(7, 10),\n order: cleaned.substring(10, 13),\n controlKey: cleaned.substring(13, 15),\n };\n \n const nir = parsed.sex + parsed.year + parsed.month + parsed.department + parsed.insee + parsed.order;\n const calculatedKey = calculateControlKey(nir);\n \n if (calculatedKey === parsed.controlKey) {\n setState(prev => ({ ...prev, ...parsed, error: '' }));\n onChange?.(cleaned);\n } else {\n setState(prev => ({ \n ...prev, \n ...parsed, \n error: 'Clé de contrôle incorrecte. La clé calculée est ' + calculatedKey + ' mais vous avez saisi ' + parsed.controlKey \n }));\n }\n } else {\n setState(prev => ({ ...prev, error: 'Le numéro de sécurité sociale doit contenir exactement 15 chiffres' }));\n }\n };\n\n const handlers = {\n sex: {\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n if (inputValue === '' || inputValue === '1' || inputValue === '2') {\n updateField('sex', inputValue);\n if (inputValue === '1' || inputValue === '2') {\n const nextInput = e.target.parentElement?.querySelector('input:nth-child(2)') as HTMLInputElement;\n nextInput?.focus();\n }\n }\n },\n onPaste: (e: React.ClipboardEvent<HTMLInputElement>) => {\n const pastedText = e.clipboardData.getData('text');\n const cleaned = pastedText.replace(/\\D/g, '');\n \n if (cleaned.length === 15) {\n e.preventDefault();\n parseSocialSecurityNumber(pastedText);\n }\n // Sinon, laisser le comportement par défaut (pas de preventDefault)\n },\n },\n\n year: {\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n const cleaned = inputValue.replace(/\\D/g, '');\n if (cleaned.length <= 2) {\n updateField('year', cleaned);\n if (cleaned.length === 2) {\n const nextInput = e.target.parentElement?.querySelector('input:nth-child(3)') as HTMLInputElement;\n nextInput?.focus();\n }\n }\n },\n onKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Backspace' && e.currentTarget.value === '') {\n const prevInput = e.currentTarget.parentElement?.querySelector('input:nth-child(1)') as HTMLInputElement;\n prevInput?.focus();\n }\n },\n },\n\n month: {\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n const cleaned = inputValue.replace(/\\D/g, '');\n if (cleaned.length <= 2) {\n updateField('month', cleaned);\n if (cleaned.length === 2 && cleaned >= '01' && cleaned <= '12') {\n const nextInput = e.target.parentElement?.querySelector('input:nth-child(4)') as HTMLInputElement;\n nextInput?.focus();\n }\n }\n },\n onKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Backspace' && e.currentTarget.value === '') {\n const prevInput = e.currentTarget.parentElement?.querySelector('input:nth-child(2)') as HTMLInputElement;\n prevInput?.focus();\n }\n },\n },\n\n department: {\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value.toUpperCase();\n const cleaned = inputValue.replace(/[^0-9AB]/g, '');\n \n if (cleaned.length <= 2) {\n updateField('department', cleaned);\n \n if (cleaned.length === 2 && (\n (cleaned >= '01' && cleaned <= '95') || \n cleaned === '2A' || \n cleaned === '2B' ||\n cleaned === '99'\n )) {\n const nextInput = e.target.parentElement?.querySelector('input:nth-child(5)') as HTMLInputElement;\n nextInput?.focus();\n }\n }\n },\n onKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Backspace' && e.currentTarget.value === '') {\n const prevInput = e.currentTarget.parentElement?.querySelector('input:nth-child(3)') as HTMLInputElement;\n prevInput?.focus();\n }\n },\n },\n\n insee: {\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n const cleaned = inputValue.replace(/\\D/g, '');\n if (cleaned.length <= 3) {\n updateField('insee', cleaned);\n if (cleaned.length === 3) {\n const nextInput = e.target.parentElement?.querySelector('input:nth-child(6)') as HTMLInputElement;\n nextInput?.focus();\n }\n }\n },\n onKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Backspace' && e.currentTarget.value === '') {\n const prevInput = e.currentTarget.parentElement?.querySelector('input:nth-child(4)') as HTMLInputElement;\n prevInput?.focus();\n }\n },\n },\n\n order: {\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n const cleaned = inputValue.replace(/\\D/g, '');\n if (cleaned.length <= 3) {\n updateField('order', cleaned);\n }\n },\n onKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Backspace' && e.currentTarget.value === '') {\n const prevInput = e.currentTarget.parentElement?.querySelector('input:nth-child(5)') as HTMLInputElement;\n prevInput?.focus();\n }\n },\n },\n };\n\n return {\n values: state,\n handlers,\n parseSocialSecurityNumber,\n placeholders,\n };\n};\n","import React, { useState } from 'react';\nimport { SocialSecurityInputProps } from '../../types';\nimport { useSocialSecurityInput } from './useSocialSecurityInput';\nimport styles from './SocialSecurityInput.module.css';\n\nconst SocialSecurityInput: React.FC<SocialSecurityInputProps> = ({\n label = 'Numéro de sécurité sociale',\n placeholder = '269054958815780',\n value,\n onChange,\n error,\n disabled = false,\n className,\n showCopyButton = false,\n}) => {\n const { values, handlers, placeholders } = useSocialSecurityInput({\n onChange,\n placeholder,\n value,\n });\n\n const [copied, setCopied] = useState(false);\n\n const handleCopy = async () => {\n const fullNumber =\n values.sex +\n values.year +\n values.month +\n values.department +\n values.insee +\n values.order +\n values.controlKey;\n if (fullNumber.length === 15) {\n try {\n await navigator.clipboard.writeText(fullNumber);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n } catch (err) {\n console.error('Failed to copy:', err);\n }\n }\n };\n\n return (\n <div className={`${styles.inputContainer} ${className}`}>\n {label && <label className={styles.inputLabel}>{label}</label>}\n <div className={styles.inputsRow}>\n <input\n type=\"text\"\n className={styles.input}\n placeholder={placeholders.sex}\n minLength={1}\n maxLength={1}\n disabled={disabled}\n onChange={handlers.sex.onChange}\n onPaste={handlers.sex.onPaste}\n value={values.sex}\n />\n <input\n type=\"text\"\n className={styles.input}\n placeholder={placeholders.year}\n minLength={2}\n maxLength={2}\n disabled={disabled}\n onChange={handlers.year.onChange}\n onKeyDown={handlers.year.onKeyDown}\n value={values.year}\n />\n <input\n type=\"text\"\n className={styles.input}\n placeholder={placeholders.month}\n minLength={2}\n maxLength={2}\n disabled={disabled}\n onChange={handlers.month.onChange}\n onKeyDown={handlers.month.onKeyDown}\n value={values.month}\n />\n <input\n type=\"text\"\n className={styles.input}\n placeholder={placeholders.department}\n minLength={2}\n maxLength={2}\n disabled={disabled}\n onChange={handlers.department.onChange}\n onKeyDown={handlers.department.onKeyDown}\n value={values.department}\n />\n <input\n type=\"text\"\n className={styles.input}\n placeholder={placeholders.insee}\n minLength={3}\n maxLength={3}\n disabled={disabled}\n onChange={handlers.insee.onChange}\n onKeyDown={handlers.insee.onKeyDown}\n value={values.insee}\n />\n <input\n type=\"text\"\n className={styles.input}\n placeholder={placeholders.order}\n minLength={3}\n maxLength={3}\n disabled={disabled}\n onChange={handlers.order.onChange}\n onKeyDown={handlers.order.onKeyDown}\n value={values.order}\n />\n <input\n type=\"text\"\n className={styles.input}\n placeholder={placeholders.controlKey}\n minLength={2}\n maxLength={2}\n disabled={true}\n value={values.controlKey}\n readOnly\n />\n {showCopyButton && (\n <button\n type=\"button\"\n className={`${styles.copyButton} ${copied ? styles.copied : ''}`}\n onClick={handleCopy}\n disabled={\n disabled ||\n (\n values.sex +\n values.year +\n values.month +\n values.department +\n values.insee +\n values.order +\n values.controlKey\n ).length !== 15\n }\n title={copied ? \"Copié !\" : \"Copier le numéro de sécurité sociale\"}\n >\n {copied ? (\n <svg\n height=\"24px\"\n width=\"24px\"\n viewBox=\"0 -960 960 960\"\n fill=\"white\"\n >\n <path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\" />\n </svg>\n ) : (\n <svg\n height=\"24px\"\n width=\"24px\"\n viewBox=\"0 -960 960 960\"\n fill=\"white\"\n >\n <path d=\"M360-240q-33 0-56.5-23.5T280-320v-480q0-33 23.5-56.5T360-880h360q33 0 56.5 23.5T800-800v480q0 33-23.5 56.5T720-240H360Zm0-80h360v-480H360v480ZM200-80q-33 0-56.5-23.5T120-160v-560h80v560h440v80H200Zm160-240v-480 480Z\" />\n </svg>\n )}\n </button>\n )}\n </div>\n {error && <p className={styles.inputError}>{error}</p>}\n {values.error && <p className={styles.inputError}>{values.error}</p>}\n </div>\n );\n};\n\nexport default SocialSecurityInput;\n","export interface ThemeConfig {\n colors: {\n primary: string;\n secondary: string;\n success: string;\n warning: string;\n error: string;\n info: string;\n background: string;\n surface: string;\n text: {\n primary: string;\n secondary: string;\n disabled: string;\n };\n border: {\n default: string;\n focus: string;\n error: string;\n };\n };\n spacing: {\n xs: string;\n sm: string;\n md: string;\n lg: string;\n xl: string;\n };\n typography: {\n fontFamily: string;\n fontSize: {\n xs: string;\n sm: string;\n base: string;\n lg: string;\n xl: string;\n };\n fontWeight: {\n normal: number;\n medium: number;\n semibold: number;\n bold: number;\n };\n };\n borderRadius: {\n sm: string;\n md: string;\n lg: string;\n full: string;\n };\n shadows: {\n sm: string;\n md: string;\n lg: string;\n };\n breakpoints: {\n sm: string;\n md: string;\n lg: string;\n xl: string;\n };\n}\n\nexport interface ComponentConfig {\n button: {\n defaultVariant: 'primary' | 'secondary' | 'outline';\n defaultSize: 'small' | 'medium' | 'large';\n disabledOpacity: number;\n };\n input: {\n defaultType: 'text' | 'email' | 'password' | 'number';\n disabledOpacity: number;\n };\n}\n\nexport interface GlobalConfig {\n theme: ThemeConfig;\n components: ComponentConfig;\n prefix: string;\n}\n\nconst defaultTheme: ThemeConfig = {\n colors: {\n primary: '#F17F29',\n secondary: '#4b5563',\n success: '#10b981',\n warning: '#f59e0b',\n error: '#ef4444',\n info: '#3b82f6',\n background: '#ffffff',\n surface: '#f9fafb',\n text: {\n primary: '#111827',\n secondary: '#6b7280',\n disabled: '#9ca3af',\n },\n border: {\n default: '#d1d5db',\n focus: '#3b82f6',\n error: '#ef4444',\n },\n },\n spacing: {\n xs: '4px',\n sm: '8px',\n md: '16px',\n lg: '24px',\n xl: '32px',\n },\n typography: {\n fontFamily: \"'Inter', 'Roboto', system-ui, -apple-system, sans-serif\",\n fontSize: {\n xs: '12px',\n sm: '14px',\n base: '16px',\n lg: '18px',\n xl: '20px',\n },\n fontWeight: {\n normal: 400,\n medium: 500,\n semibold: 600,\n bold: 700,\n },\n },\n borderRadius: {\n sm: '4px',\n md: '6px',\n lg: '8px',\n full: '9999px',\n },\n shadows: {\n sm: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\n md: '0 4px 6px -1px rgba(0, 0, 0, 0.1)',\n lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1)',\n },\n breakpoints: {\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n },\n};\n\nconst defaultComponents: ComponentConfig = {\n button: {\n defaultVariant: 'primary',\n defaultSize: 'medium',\n disabledOpacity: 0.5,\n },\n input: {\n defaultType: 'text',\n disabledOpacity: 0.5,\n },\n};\n\nexport const defaultConfig: GlobalConfig = {\n theme: defaultTheme,\n components: defaultComponents,\n prefix: 'ui',\n};\n\nlet globalConfig: GlobalConfig = { ...defaultConfig };\n\nexport const setGlobalConfig = (config: Partial<GlobalConfig>): void => {\n globalConfig = {\n ...globalConfig,\n ...config,\n theme: {\n ...globalConfig.theme,\n ...config.theme,\n },\n components: {\n ...globalConfig.components,\n ...config.components,\n },\n };\n};\n\nexport const getGlobalConfig = (): GlobalConfig => {\n return globalConfig;\n};\n\nexport const resetGlobalConfig = (): void => {\n globalConfig = { ...defaultConfig };\n};\n","import { getGlobalConfig } from '../config';\n\nexport const getCSSVariable = (path: string): string => {\n const config = getGlobalConfig();\n const keys = path.split('.');\n let value: unknown = config;\n \n for (const key of keys) {\n value = (value as Record<string, unknown>)[key];\n if (value === undefined) {\n console.warn(`CSS variable not found: ${path}`);\n return '';\n }\n }\n \n return typeof value === 'string' ? value : String(value);\n};\n\nexport const createCSSVariables = (): string => {\n const config = getGlobalConfig();\n const prefix = config.prefix;\n \n const variables = [\n `--${prefix}-color-primary: ${config.theme.colors.primary};`,\n `--${prefix}-color-secondary: ${config.theme.colors.secondary};`,\n `--${prefix}-color-success: ${config.theme.colors.success};`,\n `--${prefix}-color-warning: ${config.theme.colors.warning};`,\n `--${prefix}-color-error: ${config.theme.colors.error};`,\n `--${prefix}-color-info: ${config.theme.colors.info};`,\n `--${prefix}-color-background: ${config.theme.colors.background};`,\n `--${prefix}-color-surface: ${config.theme.colors.surface};`,\n `--${prefix}-color-text-primary: ${config.theme.colors.text.primary};`,\n `--${prefix}-color-text-secondary: ${config.theme.colors.text.secondary};`,\n `--${prefix}-color-text-disabled: ${config.theme.colors.text.disabled};`,\n `--${prefix}-color-border-default: ${config.theme.colors.border.default};`,\n `--${prefix}-color-border-focus: ${config.theme.colors.border.focus};`,\n `--${prefix}-color-border-error: ${config.theme.colors.border.error};`,\n `--${prefix}-spacing-xs: ${config.theme.spacing.xs};`,\n `--${prefix}-spacing-sm: ${config.theme.spacing.sm};`,\n `--${prefix}-spacing-md: ${config.theme.spacing.md};`,\n `--${prefix}-spacing-lg: ${config.theme.spacing.lg};`,\n `--${prefix}-spacing-xl: ${config.theme.spacing.xl};`,\n `--${prefix}-font-family: ${config.theme.typography.fontFamily};`,\n `--${prefix}-font-size-xs: ${config.theme.typography.fontSize.xs};`,\n `--${prefix}-font-size-sm: ${config.theme.typography.fontSize.sm};`,\n `--${prefix}-font-size-base: ${config.theme.typography.fontSize.base};`,\n `--${prefix}-font-size-lg: ${config.theme.typography.fontSize.lg};`,\n `--${prefix}-font-size-xl: ${config.theme.typography.fontSize.xl};`,\n `--${prefix}-font-weight-normal: ${config.theme.typography.fontWeight.normal};`,\n `--${prefix}-font-weight-medium: ${config.theme.typography.fontWeight.medium};`,\n `--${prefix}-font-weight-semibold: ${config.theme.typography.fontWeight.semibold};`,\n `--${prefix}-font-weight-bold: ${config.theme.typography.fontWeight.bold};`,\n `--${prefix}-border-radius-sm: ${config.theme.borderRadius.sm};`,\n `--${prefix}-border-radius-md: ${config.theme.borderRadius.md};`,\n `--${prefix}-border-radius-lg: ${config.theme.borderRadius.lg};`,\n `--${prefix}-border-radius-full: ${config.theme.borderRadius.full};`,\n `--${prefix}-shadow-sm: ${config.theme.shadows.sm};`,\n `--${prefix}-shadow-md: ${config.theme.shadows.md};`,\n `--${prefix}-shadow-lg: ${config.theme.shadows.lg};`,\n ];\n \n return `:root {\\n ${variables.join('\\n ')}\\n}\\n\\n* {\\n font-family: var(--ui-font-family);\\n}`;\n};\n","import React, { useEffect } from 'react';\nimport { createCSSVariables } from '../utils/cssVariables';\nimport { setGlobalConfig, getGlobalConfig, ThemeConfig } from '../config';\n\ninterface ThemeProviderProps {\n children: React.ReactNode;\n theme?: Partial<ThemeConfig>;\n}\n\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({ children, theme }) => {\n useEffect(() => {\n if (theme && Object.keys(theme).length > 0) {\n const currentConfig = getGlobalConfig();\n setGlobalConfig({\n theme: {\n ...currentConfig.theme,\n ...theme,\n colors: {\n ...currentConfig.theme.colors,\n ...theme.colors,\n },\n },\n });\n }\n \n const cssVariables = createCSSVariables();\n \n const styleElement = document.createElement('style');\n styleElement.textContent = cssVariables;\n styleElement.id = 'ui-theme-variables';\n \n document.head.appendChild(styleElement);\n \n return () => {\n const existingStyle = document.getElementById('ui-theme-variables');\n if (existingStyle) {\n existingStyle.remove();\n }\n };\n }, [theme]);\n\n return <>{children}</>;\n};\n"],"names":["_jsxs","_jsx","_Fragment"],"mappings":"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","x_google_ignoreList":[0]}
|
package/dist/index.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/components/SocialSecurityInput/useSocialSecurityInput.ts","../src/components/SocialSecurityInput/SocialSecurityInput.tsx","../src/config/index.ts","../src/utils/cssVariables.ts","../src/components/ThemeProvider.tsx"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { useState, useEffect, useCallback } from 'react';\n\ninterface UseSocialSecurityInputProps {\n onChange?: (value: string) => void;\n placeholder?: string;\n value?: string;\n}\n\ninterface SocialSecurityState {\n sex: string;\n year: string;\n month: string;\n department: string;\n insee: string;\n order: string;\n controlKey: string;\n error: string;\n}\n\nexport const useSocialSecurityInput = ({ onChange, placeholder = '269054958815780', value }: UseSocialSecurityInputProps) => {\n const [state, setState] = useState<SocialSecurityState>({\n sex: '',\n year: '',\n month: '',\n department: '',\n insee: '',\n order: '',\n controlKey: '',\n error: '',\n });\n\n const calculateControlKey = (nir: string): string => {\n if (nir.length !== 13) return '';\n \n let nirForCalculation = nir;\n if (nirForCalculation.includes('2A')) {\n nirForCalculation = nirForCalculation.replace('2A', '19');\n }\n if (nirForCalculation.includes('2B')) {\n nirForCalculation = nirForCalculation.replace('2B', '20');\n }\n \n let remainder = 0;\n for (let i = 0; i < nirForCalculation.length; i++) {\n remainder = (remainder * 10 + parseInt(nirForCalculation[i], 10)) % 97;\n }\n \n const controlKey = 97 - remainder;\n return controlKey.toString().padStart(2, '0');\n };\n\n const updateControlKey = useCallback(() => {\n const nir = state.sex + state.year + state.month + state.department + state.insee + state.order;\n const key = calculateControlKey(nir);\n \n setState(prev => ({ ...prev, controlKey: key }));\n \n if (nir.length === 13 && key) {\n const fullNir = nir + key;\n onChange?.(fullNir);\n }\n }, [state.sex, state.year, state.month, state.department, state.insee, state.order, onChange]);\n\n useEffect(() => {\n updateControlKey();\n }, [state.sex, state.year, state.month, state.department, state.insee, state.order, updateControlKey]);\n\n const updateField = (field: keyof SocialSecurityState, value: string) => {\n setState(prev => ({ ...prev, [field]: value, error: '' }));\n };\n\n const parsePlaceholder = (placeholder: string) => {\n const cleaned = placeholder.replace(/\\D/g, '');\n if (cleaned.length >= 15) {\n return {\n sex: cleaned.substring(0, 1),\n year: cleaned.substring(1, 3),\n month: cleaned.substring(3, 5),\n department: cleaned.substring(5, 7),\n insee: cleaned.substring(7, 10),\n order: cleaned.substring(10, 13),\n controlKey: cleaned.substring(13, 15),\n };\n }\n return {\n sex: '2',\n year: '69',\n month: '05',\n department: '49',\n insee: '588',\n order: '157',\n controlKey: '80',\n };\n };\n\n const placeholders = parsePlaceholder(placeholder);\n\n const parseValue = (value: string) => {\n const cleaned = value.replace(/\\D/g, '');\n if (cleaned.length === 15) {\n return {\n sex: cleaned.substring(0, 1),\n year: cleaned.substring(1, 3),\n month: cleaned.substring(3, 5),\n department: cleaned.substring(5, 7),\n insee: cleaned.substring(7, 10),\n order: cleaned.substring(10, 13),\n controlKey: cleaned.substring(13, 15),\n };\n }\n return null;\n };\n\n\n useEffect(() => {\n if (value) {\n const parsed = parseValue(value);\n if (parsed) {\n setState(prev => ({ ...prev, ...parsed, error: '' }));\n }\n } else {\n setState(prev => ({\n ...prev,\n sex: '',\n year: '',\n month: '',\n department: '',\n insee: '',\n order: '',\n controlKey: '',\n error: '',\n }));\n }\n }, [value]);\n\n const parseSocialSecurityNumber = (fullNumber: string) => {\n const cleaned = fullNumber.replace(/\\D/g, '');\n \n if (cleaned.length === 15) {\n const parsed = {\n sex: cleaned.substring(0, 1),\n year: cleaned.substring(1, 3),\n month: cleaned.substring(3, 5),\n department: cleaned.substring(5, 7),\n insee: cleaned.substring(7, 10),\n order: cleaned.substring(10, 13),\n controlKey: cleaned.substring(13, 15),\n };\n \n const nir = parsed.sex + parsed.year + parsed.month + parsed.department + parsed.insee + parsed.order;\n const calculatedKey = calculateControlKey(nir);\n \n if (calculatedKey === parsed.controlKey) {\n setState(prev => ({ ...prev, ...parsed, error: '' }));\n onChange?.(cleaned);\n } else {\n setState(prev => ({ \n ...prev, \n ...parsed, \n error: 'Clé de contrôle incorrecte. La clé calculée est ' + calculatedKey + ' mais vous avez saisi ' + parsed.controlKey \n }));\n }\n } else {\n setState(prev => ({ ...prev, error: 'Le numéro de sécurité sociale doit contenir exactement 15 chiffres' }));\n }\n };\n\n const handlers = {\n sex: {\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n if (inputValue === '' || inputValue === '1' || inputValue === '2') {\n updateField('sex', inputValue);\n if (inputValue === '1' || inputValue === '2') {\n const nextInput = e.target.parentElement?.querySelector('input:nth-child(2)') as HTMLInputElement;\n nextInput?.focus();\n }\n }\n },\n onPaste: (e: React.ClipboardEvent<HTMLInputElement>) => {\n const pastedText = e.clipboardData.getData('text');\n const cleaned = pastedText.replace(/\\D/g, '');\n \n if (cleaned.length === 15) {\n e.preventDefault();\n parseSocialSecurityNumber(pastedText);\n }\n // Sinon, laisser le comportement par défaut (pas de preventDefault)\n },\n },\n\n year: {\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n const cleaned = inputValue.replace(/\\D/g, '');\n if (cleaned.length <= 2) {\n updateField('year', cleaned);\n if (cleaned.length === 2) {\n const nextInput = e.target.parentElement?.querySelector('input:nth-child(3)') as HTMLInputElement;\n nextInput?.focus();\n }\n }\n },\n onKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Backspace' && e.currentTarget.value === '') {\n const prevInput = e.currentTarget.parentElement?.querySelector('input:nth-child(1)') as HTMLInputElement;\n prevInput?.focus();\n }\n },\n },\n\n month: {\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n const cleaned = inputValue.replace(/\\D/g, '');\n if (cleaned.length <= 2) {\n updateField('month', cleaned);\n if (cleaned.length === 2 && cleaned >= '01' && cleaned <= '12') {\n const nextInput = e.target.parentElement?.querySelector('input:nth-child(4)') as HTMLInputElement;\n nextInput?.focus();\n }\n }\n },\n onKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Backspace' && e.currentTarget.value === '') {\n const prevInput = e.currentTarget.parentElement?.querySelector('input:nth-child(2)') as HTMLInputElement;\n prevInput?.focus();\n }\n },\n },\n\n department: {\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value.toUpperCase();\n const cleaned = inputValue.replace(/[^0-9AB]/g, '');\n \n if (cleaned.length <= 2) {\n updateField('department', cleaned);\n \n if (cleaned.length === 2 && (\n (cleaned >= '01' && cleaned <= '95') || \n cleaned === '2A' || \n cleaned === '2B' ||\n cleaned === '99'\n )) {\n const nextInput = e.target.parentElement?.querySelector('input:nth-child(5)') as HTMLInputElement;\n nextInput?.focus();\n }\n }\n },\n onKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Backspace' && e.currentTarget.value === '') {\n const prevInput = e.currentTarget.parentElement?.querySelector('input:nth-child(3)') as HTMLInputElement;\n prevInput?.focus();\n }\n },\n },\n\n insee: {\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n const cleaned = inputValue.replace(/\\D/g, '');\n if (cleaned.length <= 3) {\n updateField('insee', cleaned);\n if (cleaned.length === 3) {\n const nextInput = e.target.parentElement?.querySelector('input:nth-child(6)') as HTMLInputElement;\n nextInput?.focus();\n }\n }\n },\n onKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Backspace' && e.currentTarget.value === '') {\n const prevInput = e.currentTarget.parentElement?.querySelector('input:nth-child(4)') as HTMLInputElement;\n prevInput?.focus();\n }\n },\n },\n\n order: {\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n const cleaned = inputValue.replace(/\\D/g, '');\n if (cleaned.length <= 3) {\n updateField('order', cleaned);\n }\n },\n onKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Backspace' && e.currentTarget.value === '') {\n const prevInput = e.currentTarget.parentElement?.querySelector('input:nth-child(5)') as HTMLInputElement;\n prevInput?.focus();\n }\n },\n },\n };\n\n return {\n values: state,\n handlers,\n parseSocialSecurityNumber,\n placeholders,\n };\n};\n","import React, { useState } from 'react';\nimport { SocialSecurityInputProps } from '../../types';\nimport { useSocialSecurityInput } from './useSocialSecurityInput';\nimport styles from './SocialSecurityInput.module.css';\n\nconst SocialSecurityInput: React.FC<SocialSecurityInputProps> = ({\n label = 'Numéro de sécurité sociale',\n placeholder = '269054958815780',\n value,\n onChange,\n error,\n disabled = false,\n className,\n showCopyButton = false,\n}) => {\n const { values, handlers, placeholders } = useSocialSecurityInput({\n onChange,\n placeholder,\n value,\n });\n\n const [copied, setCopied] = useState(false);\n\n const handleCopy = async () => {\n const fullNumber =\n values.sex +\n values.year +\n values.month +\n values.department +\n values.insee +\n values.order +\n values.controlKey;\n if (fullNumber.length === 15) {\n try {\n await navigator.clipboard.writeText(fullNumber);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n } catch (err) {\n console.error('Failed to copy:', err);\n }\n }\n };\n\n return (\n <div className={`${styles.inputContainer} ${className}`}>\n {label && <label className={styles.inputLabel}>{label}</label>}\n <div className={styles.inputsRow}>\n <input\n type=\"text\"\n className={styles.input}\n placeholder={placeholders.sex}\n minLength={1}\n maxLength={1}\n disabled={disabled}\n onChange={handlers.sex.onChange}\n onPaste={handlers.sex.onPaste}\n value={values.sex}\n />\n <input\n type=\"text\"\n className={styles.input}\n placeholder={placeholders.year}\n minLength={2}\n maxLength={2}\n disabled={disabled}\n onChange={handlers.year.onChange}\n onKeyDown={handlers.year.onKeyDown}\n value={values.year}\n />\n <input\n type=\"text\"\n className={styles.input}\n placeholder={placeholders.month}\n minLength={2}\n maxLength={2}\n disabled={disabled}\n onChange={handlers.month.onChange}\n onKeyDown={handlers.month.onKeyDown}\n value={values.month}\n />\n <input\n type=\"text\"\n className={styles.input}\n placeholder={placeholders.department}\n minLength={2}\n maxLength={2}\n disabled={disabled}\n onChange={handlers.department.onChange}\n onKeyDown={handlers.department.onKeyDown}\n value={values.department}\n />\n <input\n type=\"text\"\n className={styles.input}\n placeholder={placeholders.insee}\n minLength={3}\n maxLength={3}\n disabled={disabled}\n onChange={handlers.insee.onChange}\n onKeyDown={handlers.insee.onKeyDown}\n value={values.insee}\n />\n <input\n type=\"text\"\n className={styles.input}\n placeholder={placeholders.order}\n minLength={3}\n maxLength={3}\n disabled={disabled}\n onChange={handlers.order.onChange}\n onKeyDown={handlers.order.onKeyDown}\n value={values.order}\n />\n <input\n type=\"text\"\n className={styles.input}\n placeholder={placeholders.controlKey}\n minLength={2}\n maxLength={2}\n disabled={true}\n value={values.controlKey}\n readOnly\n />\n {showCopyButton && (\n <button\n type=\"button\"\n className={`${styles.copyButton} ${copied ? styles.copied : ''}`}\n onClick={handleCopy}\n disabled={\n disabled ||\n (\n values.sex +\n values.year +\n values.month +\n values.department +\n values.insee +\n values.order +\n values.controlKey\n ).length !== 15\n }\n title={copied ? \"Copié !\" : \"Copier le numéro de sécurité sociale\"}\n >\n {copied ? (\n <svg\n height=\"24px\"\n width=\"24px\"\n viewBox=\"0 -960 960 960\"\n fill=\"white\"\n >\n <path d=\"M382-240 154-468l57-57 171 171 367-367 57 57-424 424Z\" />\n </svg>\n ) : (\n <svg\n height=\"24px\"\n width=\"24px\"\n viewBox=\"0 -960 960 960\"\n fill=\"white\"\n >\n <path d=\"M360-240q-33 0-56.5-23.5T280-320v-480q0-33 23.5-56.5T360-880h360q33 0 56.5 23.5T800-800v480q0 33-23.5 56.5T720-240H360Zm0-80h360v-480H360v480ZM200-80q-33 0-56.5-23.5T120-160v-560h80v560h440v80H200Zm160-240v-480 480Z\" />\n </svg>\n )}\n </button>\n )}\n </div>\n {error && <p className={styles.inputError}>{error}</p>}\n {values.error && <p className={styles.inputError}>{values.error}</p>}\n </div>\n );\n};\n\nexport default SocialSecurityInput;\n","export interface ThemeConfig {\n colors: {\n primary: string;\n secondary: string;\n success: string;\n warning: string;\n error: string;\n info: string;\n background: string;\n surface: string;\n text: {\n primary: string;\n secondary: string;\n disabled: string;\n };\n border: {\n default: string;\n focus: string;\n error: string;\n };\n };\n spacing: {\n xs: string;\n sm: string;\n md: string;\n lg: string;\n xl: string;\n };\n typography: {\n fontFamily: string;\n fontSize: {\n xs: string;\n sm: string;\n base: string;\n lg: string;\n xl: string;\n };\n fontWeight: {\n normal: number;\n medium: number;\n semibold: number;\n bold: number;\n };\n };\n borderRadius: {\n sm: string;\n md: string;\n lg: string;\n full: string;\n };\n shadows: {\n sm: string;\n md: string;\n lg: string;\n };\n breakpoints: {\n sm: string;\n md: string;\n lg: string;\n xl: string;\n };\n}\n\nexport interface ComponentConfig {\n button: {\n defaultVariant: 'primary' | 'secondary' | 'outline';\n defaultSize: 'small' | 'medium' | 'large';\n disabledOpacity: number;\n };\n input: {\n defaultType: 'text' | 'email' | 'password' | 'number';\n disabledOpacity: number;\n };\n}\n\nexport interface GlobalConfig {\n theme: ThemeConfig;\n components: ComponentConfig;\n prefix: string;\n}\n\nconst defaultTheme: ThemeConfig = {\n colors: {\n primary: '#F17F29',\n secondary: '#4b5563',\n success: '#10b981',\n warning: '#f59e0b',\n error: '#ef4444',\n info: '#3b82f6',\n background: '#ffffff',\n surface: '#f9fafb',\n text: {\n primary: '#111827',\n secondary: '#6b7280',\n disabled: '#9ca3af',\n },\n border: {\n default: '#d1d5db',\n focus: '#3b82f6',\n error: '#ef4444',\n },\n },\n spacing: {\n xs: '4px',\n sm: '8px',\n md: '16px',\n lg: '24px',\n xl: '32px',\n },\n typography: {\n fontFamily: \"'Inter', 'Roboto', system-ui, -apple-system, sans-serif\",\n fontSize: {\n xs: '12px',\n sm: '14px',\n base: '16px',\n lg: '18px',\n xl: '20px',\n },\n fontWeight: {\n normal: 400,\n medium: 500,\n semibold: 600,\n bold: 700,\n },\n },\n borderRadius: {\n sm: '4px',\n md: '6px',\n lg: '8px',\n full: '9999px',\n },\n shadows: {\n sm: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\n md: '0 4px 6px -1px rgba(0, 0, 0, 0.1)',\n lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1)',\n },\n breakpoints: {\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n },\n};\n\nconst defaultComponents: ComponentConfig = {\n button: {\n defaultVariant: 'primary',\n defaultSize: 'medium',\n disabledOpacity: 0.5,\n },\n input: {\n defaultType: 'text',\n disabledOpacity: 0.5,\n },\n};\n\nexport const defaultConfig: GlobalConfig = {\n theme: defaultTheme,\n components: defaultComponents,\n prefix: 'ui',\n};\n\nlet globalConfig: GlobalConfig = { ...defaultConfig };\n\nexport const setGlobalConfig = (config: Partial<GlobalConfig>): void => {\n globalConfig = {\n ...globalConfig,\n ...config,\n theme: {\n ...globalConfig.theme,\n ...config.theme,\n },\n components: {\n ...globalConfig.components,\n ...config.components,\n },\n };\n};\n\nexport const getGlobalConfig = (): GlobalConfig => {\n return globalConfig;\n};\n\nexport const resetGlobalConfig = (): void => {\n globalConfig = { ...defaultConfig };\n};\n","import { getGlobalConfig } from '../config';\n\nexport const getCSSVariable = (path: string): string => {\n const config = getGlobalConfig();\n const keys = path.split('.');\n let value: unknown = config;\n \n for (const key of keys) {\n value = (value as Record<string, unknown>)[key];\n if (value === undefined) {\n console.warn(`CSS variable not found: ${path}`);\n return '';\n }\n }\n \n return typeof value === 'string' ? value : String(value);\n};\n\nexport const createCSSVariables = (): string => {\n const config = getGlobalConfig();\n const prefix = config.prefix;\n \n const variables = [\n `--${prefix}-color-primary: ${config.theme.colors.primary};`,\n `--${prefix}-color-secondary: ${config.theme.colors.secondary};`,\n `--${prefix}-color-success: ${config.theme.colors.success};`,\n `--${prefix}-color-warning: ${config.theme.colors.warning};`,\n `--${prefix}-color-error: ${config.theme.colors.error};`,\n `--${prefix}-color-info: ${config.theme.colors.info};`,\n `--${prefix}-color-background: ${config.theme.colors.background};`,\n `--${prefix}-color-surface: ${config.theme.colors.surface};`,\n `--${prefix}-color-text-primary: ${config.theme.colors.text.primary};`,\n `--${prefix}-color-text-secondary: ${config.theme.colors.text.secondary};`,\n `--${prefix}-color-text-disabled: ${config.theme.colors.text.disabled};`,\n `--${prefix}-color-border-default: ${config.theme.colors.border.default};`,\n `--${prefix}-color-border-focus: ${config.theme.colors.border.focus};`,\n `--${prefix}-color-border-error: ${config.theme.colors.border.error};`,\n `--${prefix}-spacing-xs: ${config.theme.spacing.xs};`,\n `--${prefix}-spacing-sm: ${config.theme.spacing.sm};`,\n `--${prefix}-spacing-md: ${config.theme.spacing.md};`,\n `--${prefix}-spacing-lg: ${config.theme.spacing.lg};`,\n `--${prefix}-spacing-xl: ${config.theme.spacing.xl};`,\n `--${prefix}-font-family: ${config.theme.typography.fontFamily};`,\n `--${prefix}-font-size-xs: ${config.theme.typography.fontSize.xs};`,\n `--${prefix}-font-size-sm: ${config.theme.typography.fontSize.sm};`,\n `--${prefix}-font-size-base: ${config.theme.typography.fontSize.base};`,\n `--${prefix}-font-size-lg: ${config.theme.typography.fontSize.lg};`,\n `--${prefix}-font-size-xl: ${config.theme.typography.fontSize.xl};`,\n `--${prefix}-font-weight-normal: ${config.theme.typography.fontWeight.normal};`,\n `--${prefix}-font-weight-medium: ${config.theme.typography.fontWeight.medium};`,\n `--${prefix}-font-weight-semibold: ${config.theme.typography.fontWeight.semibold};`,\n `--${prefix}-font-weight-bold: ${config.theme.typography.fontWeight.bold};`,\n `--${prefix}-border-radius-sm: ${config.theme.borderRadius.sm};`,\n `--${prefix}-border-radius-md: ${config.theme.borderRadius.md};`,\n `--${prefix}-border-radius-lg: ${config.theme.borderRadius.lg};`,\n `--${prefix}-border-radius-full: ${config.theme.borderRadius.full};`,\n `--${prefix}-shadow-sm: ${config.theme.shadows.sm};`,\n `--${prefix}-shadow-md: ${config.theme.shadows.md};`,\n `--${prefix}-shadow-lg: ${config.theme.shadows.lg};`,\n ];\n \n return `:root {\\n ${variables.join('\\n ')}\\n}\\n\\n* {\\n font-family: var(--ui-font-family);\\n}`;\n};\n","import React, { useEffect } from 'react';\nimport { createCSSVariables } from '../utils/cssVariables';\nimport { setGlobalConfig, getGlobalConfig, ThemeConfig } from '../config';\n\ninterface ThemeProviderProps {\n children: React.ReactNode;\n theme?: Partial<ThemeConfig>;\n}\n\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({ children, theme }) => {\n useEffect(() => {\n if (theme && Object.keys(theme).length > 0) {\n const currentConfig = getGlobalConfig();\n setGlobalConfig({\n theme: {\n ...currentConfig.theme,\n ...theme,\n colors: {\n ...currentConfig.theme.colors,\n ...theme.colors,\n },\n },\n });\n }\n \n const cssVariables = createCSSVariables();\n \n const styleElement = document.createElement('style');\n styleElement.textContent = cssVariables;\n styleElement.id = 'ui-theme-variables';\n \n document.head.appendChild(styleElement);\n \n return () => {\n const existingStyle = document.getElementById('ui-theme-variables');\n if (existingStyle) {\n existingStyle.remove();\n }\n };\n }, [theme]);\n\n return <>{children}</>;\n};\n"],"names":["useState","useCallback","useEffect","_jsxs","_jsx","_Fragment"],"mappings":"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","x_google_ignoreList":[0]}
|
package/dist/setupTests.d.ts.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"setupTests.d.ts","sourceRoot":"","sources":["../src/setupTests.ts"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,CAAC"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;IAC9C,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"cssVariables.d.ts","sourceRoot":"","sources":["../../src/utils/cssVariables.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,KAAG,MAc7C,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAO,MA4CrC,CAAC"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,EAAE,GAAI,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC,EAAE,KAAG,MAEtE,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,MAAM,IAAI,GAAG,MAAM,KAAG,MAOhD,CAAC;AAEF,eAAO,MAAM,UAAU,QAAO,MAE7B,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,KAAG,MAExC,CAAC"}
|