react-french-ssn 1.3.0 → 1.4.0

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 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
@@ -2,4 +2,3 @@ import React from 'react';
2
2
  import { SocialSecurityInputProps } from '../../types';
3
3
  declare const SocialSecurityInput: React.FC<SocialSecurityInputProps>;
4
4
  export default SocialSecurityInput;
5
- //# sourceMappingURL=SocialSecurityInput.d.ts.map
@@ -1,2 +1 @@
1
1
  export { default } from './SocialSecurityInput';
2
- //# sourceMappingURL=index.d.ts.map
@@ -2,6 +2,7 @@ interface UseSocialSecurityInputProps {
2
2
  onChange?: (value: string) => void;
3
3
  placeholder?: string;
4
4
  value?: string;
5
+ fieldsetId?: string;
5
6
  }
6
7
  interface SocialSecurityState {
7
8
  sex: string;
@@ -13,7 +14,7 @@ interface SocialSecurityState {
13
14
  controlKey: string;
14
15
  error: string;
15
16
  }
16
- export declare const useSocialSecurityInput: ({ onChange, placeholder, value }: UseSocialSecurityInputProps) => {
17
+ export declare const useSocialSecurityInput: ({ onChange, placeholder, value, fieldsetId }: UseSocialSecurityInputProps) => {
17
18
  values: SocialSecurityState;
18
19
  handlers: {
19
20
  sex: {
@@ -53,4 +54,3 @@ export declare const useSocialSecurityInput: ({ onChange, placeholder, value }:
53
54
  };
54
55
  };
55
56
  export {};
56
- //# sourceMappingURL=useSocialSecurityInput.d.ts.map
@@ -6,4 +6,3 @@ interface ThemeProviderProps {
6
6
  }
7
7
  export declare const ThemeProvider: React.FC<ThemeProviderProps>;
8
8
  export {};
9
- //# sourceMappingURL=ThemeProvider.d.ts.map
@@ -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
@@ -5,4 +5,3 @@ export declare const withTheme: (Story: React.ComponentType, context: {
5
5
  theme?: Partial<ThemeConfig>;
6
6
  };
7
7
  }) => import("react/jsx-runtime").JSX.Element;
8
- //# sourceMappingURL=withTheme.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,6 @@
1
- import './styles/theme.css';
2
1
  export { default as SocialSecurityInput } from './components/SocialSecurityInput';
3
2
  export { ThemeProvider } from './components/ThemeProvider';
4
3
  export { getCSSVariable, createCSSVariables } from './utils/cssVariables';
5
4
  export { setGlobalConfig, getGlobalConfig, resetGlobalConfig, defaultConfig } from './config';
6
5
  export type { SocialSecurityInputProps } from './types';
7
6
  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 { jsxs, jsx, Fragment } from 'react/jsx-runtime';
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
- function styleInject(css, ref) {
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 = e.target.parentElement?.querySelector('input:nth-child(2)');
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 = e.target.parentElement?.querySelector('input:nth-child(3)');
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 = e.currentTarget.parentElement?.querySelector('input:nth-child(1)');
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 = e.target.parentElement?.querySelector('input:nth-child(4)');
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 = e.currentTarget.parentElement?.querySelector('input:nth-child(2)');
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 = e.target.parentElement?.querySelector('input:nth-child(5)');
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 = e.currentTarget.parentElement?.querySelector('input:nth-child(3)');
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 = e.target.parentElement?.querySelector('input:nth-child(6)');
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 = e.currentTarget.parentElement?.querySelector('input:nth-child(4)');
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 = e.currentTarget.parentElement?.querySelector('input:nth-child(5)');
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 css_248z = ".SocialSecurityInput-module__inputContainer___Og6B7{width:100%}.SocialSecurityInput-module__inputsRow___zwkoW{align-items:center;display:flex;gap:var(--ui-spacing-xs);width:100%}.SocialSecurityInput-module__inputLabel___4Agoh{color:var(--ui-color-text-secondary);display:block;margin-bottom:var(--ui-spacing-xs)}.SocialSecurityInput-module__inputLabel___4Agoh,.SocialSecurityInput-module__input___NmvkG{font-family:var(--ui-font-family);font-size:var(--ui-font-size-sm);font-weight:var(--ui-font-weight-medium)}.SocialSecurityInput-module__input___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);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}.SocialSecurityInput-module__input___NmvkG:first-child{width:.5rem}.SocialSecurityInput-module__input___NmvkG:nth-child(2),.SocialSecurityInput-module__input___NmvkG:nth-child(3),.SocialSecurityInput-module__input___NmvkG:nth-child(4){width:1.25rem}.SocialSecurityInput-module__input___NmvkG:nth-child(5),.SocialSecurityInput-module__input___NmvkG:nth-child(6){width:1.75rem}.SocialSecurityInput-module__input___NmvkG:nth-child(7){width:1.25rem}.SocialSecurityInput-module__input___NmvkG::placeholder{color:var(--ui-color-text-disabled);font-size:var(--ui-font-size-xs)}.SocialSecurityInput-module__input___NmvkG:focus{border-color:var(--ui-color-border-focus);box-shadow:0 0 0 3px rgba(59,130,246,.1);outline:none}.SocialSecurityInput-module__input___NmvkG:disabled{background-color:var(--ui-color-surface);color:var(--ui-color-text-disabled);cursor:not-allowed}.SocialSecurityInput-module__input--error___9tEpq{border-color:var(--ui-color-error)}.SocialSecurityInput-module__input--error___9tEpq:focus{border-color:var(--ui-color-error);box-shadow:0 0 0 3px rgba(239,68,68,.1)}.SocialSecurityInput-module__inputError___TymBP{color:var(--ui-color-error);font-family:var(--ui-font-family);font-size:var(--ui-font-size-sm);margin-top:var(--ui-spacing-xs)}.SocialSecurityInput-module__copyButton___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}.SocialSecurityInput-module__copyButton___Cx1bs svg{fill:var(--ui-color-border-default)}.SocialSecurityInput-module__copyButton___Cx1bs:hover:not(:disabled){background:var(--ui-color-primary-dark)}.SocialSecurityInput-module__copyButton___Cx1bs:disabled{background:var(--ui-color-gray-300);cursor:not-allowed;opacity:.6}.SocialSecurityInput-module__copyButton___Cx1bs.SocialSecurityInput-module__copied___23tm0{animation:SocialSecurityInput-module__copySuccess___aC-bf .3s ease-in-out}@keyframes SocialSecurityInput-module__copySuccess___aC-bf{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}";
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
- return (jsxs("div", { className: `${styles.inputContainer} ${className}`, children: [label && jsx("label", { className: styles.inputLabel, children: label }), jsxs("div", { className: styles.inputsRow, children: [jsx("input", { type: "text", className: styles.input, placeholder: placeholders.sex, minLength: 1, maxLength: 1, disabled: disabled, onChange: handlers.sex.onChange, onPaste: handlers.sex.onPaste, value: values.sex }), jsx("input", { type: "text", className: styles.input, placeholder: placeholders.year, minLength: 2, maxLength: 2, disabled: disabled, onChange: handlers.year.onChange, onKeyDown: handlers.year.onKeyDown, value: values.year }), jsx("input", { type: "text", className: styles.input, placeholder: placeholders.month, minLength: 2, maxLength: 2, disabled: disabled, onChange: handlers.month.onChange, onKeyDown: handlers.month.onKeyDown, value: values.month }), jsx("input", { type: "text", className: styles.input, placeholder: placeholders.department, minLength: 2, maxLength: 2, disabled: disabled, onChange: handlers.department.onChange, onKeyDown: handlers.department.onKeyDown, value: values.department }), jsx("input", { type: "text", className: styles.input, placeholder: placeholders.insee, minLength: 3, maxLength: 3, disabled: disabled, onChange: handlers.insee.onChange, onKeyDown: handlers.insee.onKeyDown, value: values.insee }), jsx("input", { type: "text", className: styles.input, placeholder: placeholders.order, minLength: 3, maxLength: 3, disabled: disabled, onChange: handlers.order.onChange, onKeyDown: handlers.order.onKeyDown, value: values.order }), jsx("input", { type: "text", className: styles.input, placeholder: placeholders.controlKey, minLength: 2, maxLength: 2, disabled: true, value: values.controlKey, readOnly: true }), showCopyButton && (jsx("button", { type: "button", className: `${styles.copyButton} ${copied ? styles.copied : ''}`, onClick: handleCopy, disabled: disabled ||
323
- (values.sex +
324
- values.year +
325
- values.month +
326
- values.department +
327
- values.insee +
328
- values.order +
329
- values.controlKey).length !== 15, title: copied ? "Copié !" : "Copier le numéro de sécurité sociale", children: copied ? (jsx("svg", { height: "24px", width: "24px", viewBox: "0 -960 960 960", fill: "white", 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", 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" }) })) }))] }), error && jsx("p", { className: styles.inputError, children: error }), values.error && jsx("p", { className: styles.inputError, children: values.error })] }));
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 = {
@@ -517,4 +524,3 @@ const ThemeProvider = ({ children, theme }) => {
517
524
  };
518
525
 
519
526
  export { SocialSecurityInput, ThemeProvider, createCSSVariables, defaultConfig, getCSSVariable, getGlobalConfig, resetGlobalConfig, setGlobalConfig };
520
- //# sourceMappingURL=index.esm.js.map
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
- function styleInject(css, ref) {
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 = e.target.parentElement?.querySelector('input:nth-child(2)');
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 = e.target.parentElement?.querySelector('input:nth-child(3)');
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 = e.currentTarget.parentElement?.querySelector('input:nth-child(1)');
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 = e.target.parentElement?.querySelector('input:nth-child(4)');
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 = e.currentTarget.parentElement?.querySelector('input:nth-child(2)');
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 = e.target.parentElement?.querySelector('input:nth-child(5)');
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 = e.currentTarget.parentElement?.querySelector('input:nth-child(3)');
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 = e.target.parentElement?.querySelector('input:nth-child(6)');
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 = e.currentTarget.parentElement?.querySelector('input:nth-child(4)');
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 = e.currentTarget.parentElement?.querySelector('input:nth-child(5)');
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 css_248z = ".SocialSecurityInput-module__inputContainer___Og6B7{width:100%}.SocialSecurityInput-module__inputsRow___zwkoW{align-items:center;display:flex;gap:var(--ui-spacing-xs);width:100%}.SocialSecurityInput-module__inputLabel___4Agoh{color:var(--ui-color-text-secondary);display:block;margin-bottom:var(--ui-spacing-xs)}.SocialSecurityInput-module__inputLabel___4Agoh,.SocialSecurityInput-module__input___NmvkG{font-family:var(--ui-font-family);font-size:var(--ui-font-size-sm);font-weight:var(--ui-font-weight-medium)}.SocialSecurityInput-module__input___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);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}.SocialSecurityInput-module__input___NmvkG:first-child{width:.5rem}.SocialSecurityInput-module__input___NmvkG:nth-child(2),.SocialSecurityInput-module__input___NmvkG:nth-child(3),.SocialSecurityInput-module__input___NmvkG:nth-child(4){width:1.25rem}.SocialSecurityInput-module__input___NmvkG:nth-child(5),.SocialSecurityInput-module__input___NmvkG:nth-child(6){width:1.75rem}.SocialSecurityInput-module__input___NmvkG:nth-child(7){width:1.25rem}.SocialSecurityInput-module__input___NmvkG::placeholder{color:var(--ui-color-text-disabled);font-size:var(--ui-font-size-xs)}.SocialSecurityInput-module__input___NmvkG:focus{border-color:var(--ui-color-border-focus);box-shadow:0 0 0 3px rgba(59,130,246,.1);outline:none}.SocialSecurityInput-module__input___NmvkG:disabled{background-color:var(--ui-color-surface);color:var(--ui-color-text-disabled);cursor:not-allowed}.SocialSecurityInput-module__input--error___9tEpq{border-color:var(--ui-color-error)}.SocialSecurityInput-module__input--error___9tEpq:focus{border-color:var(--ui-color-error);box-shadow:0 0 0 3px rgba(239,68,68,.1)}.SocialSecurityInput-module__inputError___TymBP{color:var(--ui-color-error);font-family:var(--ui-font-family);font-size:var(--ui-font-size-sm);margin-top:var(--ui-spacing-xs)}.SocialSecurityInput-module__copyButton___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}.SocialSecurityInput-module__copyButton___Cx1bs svg{fill:var(--ui-color-border-default)}.SocialSecurityInput-module__copyButton___Cx1bs:hover:not(:disabled){background:var(--ui-color-primary-dark)}.SocialSecurityInput-module__copyButton___Cx1bs:disabled{background:var(--ui-color-gray-300);cursor:not-allowed;opacity:.6}.SocialSecurityInput-module__copyButton___Cx1bs.SocialSecurityInput-module__copied___23tm0{animation:SocialSecurityInput-module__copySuccess___aC-bf .3s ease-in-out}@keyframes SocialSecurityInput-module__copySuccess___aC-bf{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}";
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
- return (jsxRuntime.jsxs("div", { className: `${styles.inputContainer} ${className}`, children: [label && jsxRuntime.jsx("label", { className: styles.inputLabel, children: label }), jsxRuntime.jsxs("div", { className: styles.inputsRow, children: [jsxRuntime.jsx("input", { type: "text", className: styles.input, placeholder: placeholders.sex, minLength: 1, maxLength: 1, disabled: disabled, onChange: handlers.sex.onChange, onPaste: handlers.sex.onPaste, value: values.sex }), jsxRuntime.jsx("input", { type: "text", className: styles.input, placeholder: placeholders.year, minLength: 2, maxLength: 2, disabled: disabled, onChange: handlers.year.onChange, onKeyDown: handlers.year.onKeyDown, value: values.year }), jsxRuntime.jsx("input", { type: "text", className: styles.input, placeholder: placeholders.month, minLength: 2, maxLength: 2, disabled: disabled, onChange: handlers.month.onChange, onKeyDown: handlers.month.onKeyDown, value: values.month }), jsxRuntime.jsx("input", { type: "text", className: styles.input, placeholder: placeholders.department, minLength: 2, maxLength: 2, disabled: disabled, onChange: handlers.department.onChange, onKeyDown: handlers.department.onKeyDown, value: values.department }), jsxRuntime.jsx("input", { type: "text", className: styles.input, placeholder: placeholders.insee, minLength: 3, maxLength: 3, disabled: disabled, onChange: handlers.insee.onChange, onKeyDown: handlers.insee.onKeyDown, value: values.insee }), jsxRuntime.jsx("input", { type: "text", className: styles.input, placeholder: placeholders.order, minLength: 3, maxLength: 3, disabled: disabled, onChange: handlers.order.onChange, onKeyDown: handlers.order.onKeyDown, value: values.order }), jsxRuntime.jsx("input", { type: "text", className: styles.input, placeholder: placeholders.controlKey, minLength: 2, maxLength: 2, disabled: true, value: values.controlKey, readOnly: true }), showCopyButton && (jsxRuntime.jsx("button", { type: "button", className: `${styles.copyButton} ${copied ? styles.copied : ''}`, onClick: handleCopy, disabled: disabled ||
325
- (values.sex +
326
- values.year +
327
- values.month +
328
- values.department +
329
- values.insee +
330
- values.order +
331
- values.controlKey).length !== 15, title: copied ? "Copié !" : "Copier le numéro de sécurité sociale", children: copied ? (jsxRuntime.jsx("svg", { height: "24px", width: "24px", viewBox: "0 -960 960 960", fill: "white", 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", 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" }) })) }))] }), error && jsxRuntime.jsx("p", { className: styles.inputError, children: error }), values.error && jsxRuntime.jsx("p", { className: styles.inputError, children: values.error })] }));
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,3 @@ exports.getCSSVariable = getCSSVariable;
526
533
  exports.getGlobalConfig = getGlobalConfig;
527
534
  exports.resetGlobalConfig = resetGlobalConfig;
528
535
  exports.setGlobalConfig = setGlobalConfig;
529
- //# sourceMappingURL=index.js.map
@@ -1,2 +1 @@
1
1
  import '@testing-library/jest-dom';
2
- //# sourceMappingURL=setupTests.d.ts.map
@@ -35,5 +35,31 @@ 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
+ };
38
65
  }
39
- //# sourceMappingURL=index.d.ts.map
@@ -1,3 +1,2 @@
1
1
  export declare const getCSSVariable: (path: string) => string;
2
2
  export declare const createCSSVariables: () => string;
3
- //# sourceMappingURL=cssVariables.d.ts.map
@@ -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.0",
3
+ "version": "1.4.0",
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",
@@ -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"}
@@ -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"}
@@ -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]}
@@ -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"}