@stfrigerio/sito-template 0.1.1 → 0.1.3
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/dist/App.d.ts +6 -0
- package/dist/App.d.ts.map +1 -0
- package/dist/components/atoms/AllAtoms.stories.d.ts +7 -0
- package/dist/components/atoms/AllAtoms.stories.d.ts.map +1 -0
- package/dist/components/atoms/ArrayInput/ArrayInput.d.ts +61 -0
- package/dist/components/atoms/ArrayInput/ArrayInput.d.ts.map +1 -0
- package/dist/components/atoms/ArrayInput/ArrayInput.stories.d.ts +42 -0
- package/dist/components/atoms/ArrayInput/ArrayInput.stories.d.ts.map +1 -0
- package/dist/components/atoms/ArrayInput/index.d.ts +3 -0
- package/dist/components/atoms/ArrayInput/index.d.ts.map +1 -0
- package/dist/components/atoms/Button/Button.d.ts +14 -0
- package/dist/components/atoms/Button/Button.d.ts.map +1 -0
- package/dist/components/atoms/Button/Button.stories.d.ts +59 -0
- package/dist/components/atoms/Button/Button.stories.d.ts.map +1 -0
- package/dist/components/atoms/Button/index.d.ts +3 -0
- package/dist/components/atoms/Button/index.d.ts.map +1 -0
- package/dist/components/atoms/Card/Card.d.ts +18 -0
- package/dist/components/atoms/Card/Card.d.ts.map +1 -0
- package/dist/components/atoms/Card/Card.stories.d.ts +52 -0
- package/dist/components/atoms/Card/Card.stories.d.ts.map +1 -0
- package/dist/components/atoms/Card/index.d.ts +3 -0
- package/dist/components/atoms/Card/index.d.ts.map +1 -0
- package/dist/components/atoms/Checkbox/Checkbox.d.ts +48 -0
- package/dist/components/atoms/Checkbox/Checkbox.d.ts.map +1 -0
- package/dist/components/atoms/Checkbox/Checkbox.stories.d.ts +41 -0
- package/dist/components/atoms/Checkbox/Checkbox.stories.d.ts.map +1 -0
- package/dist/components/atoms/Checkbox/index.d.ts +3 -0
- package/dist/components/atoms/Checkbox/index.d.ts.map +1 -0
- package/dist/components/atoms/DateInput/DateInput.d.ts +49 -0
- package/dist/components/atoms/DateInput/DateInput.d.ts.map +1 -0
- package/dist/components/atoms/DateInput/DateInput.stories.d.ts +47 -0
- package/dist/components/atoms/DateInput/DateInput.stories.d.ts.map +1 -0
- package/dist/components/atoms/DateInput/index.d.ts +3 -0
- package/dist/components/atoms/DateInput/index.d.ts.map +1 -0
- package/dist/components/atoms/SearchableDropdown/SearchableDropdown.d.ts +58 -0
- package/dist/components/atoms/SearchableDropdown/SearchableDropdown.d.ts.map +1 -0
- package/dist/components/atoms/SearchableDropdown/SearchableDropdown.stories.d.ts +47 -0
- package/dist/components/atoms/SearchableDropdown/SearchableDropdown.stories.d.ts.map +1 -0
- package/dist/components/atoms/SearchableDropdown/index.d.ts +3 -0
- package/dist/components/atoms/SearchableDropdown/index.d.ts.map +1 -0
- package/dist/components/atoms/SelectInput/SelectInput.d.ts +52 -0
- package/dist/components/atoms/SelectInput/SelectInput.d.ts.map +1 -0
- package/dist/components/atoms/SelectInput/SelectInput.stories.d.ts +41 -0
- package/dist/components/atoms/SelectInput/SelectInput.stories.d.ts.map +1 -0
- package/dist/components/atoms/SelectInput/index.d.ts +3 -0
- package/dist/components/atoms/SelectInput/index.d.ts.map +1 -0
- package/dist/components/atoms/TextArea/TextArea.d.ts +46 -0
- package/dist/components/atoms/TextArea/TextArea.d.ts.map +1 -0
- package/dist/components/atoms/TextArea/TextArea.stories.d.ts +58 -0
- package/dist/components/atoms/TextArea/TextArea.stories.d.ts.map +1 -0
- package/dist/components/atoms/TextArea/index.d.ts +3 -0
- package/dist/components/atoms/TextArea/index.d.ts.map +1 -0
- package/dist/components/atoms/TextInput/TextInput.d.ts +54 -0
- package/dist/components/atoms/TextInput/TextInput.d.ts.map +1 -0
- package/dist/components/atoms/TextInput/TextInput.stories.d.ts +64 -0
- package/dist/components/atoms/TextInput/TextInput.stories.d.ts.map +1 -0
- package/dist/components/atoms/TextInput/index.d.ts +3 -0
- package/dist/components/atoms/TextInput/index.d.ts.map +1 -0
- package/dist/components/atoms/Toggle/Toggle.d.ts +11 -0
- package/dist/components/atoms/Toggle/Toggle.d.ts.map +1 -0
- package/dist/components/atoms/Toggle/Toggle.stories.d.ts +43 -0
- package/dist/components/atoms/Toggle/Toggle.stories.d.ts.map +1 -0
- package/dist/components/atoms/Toggle/index.d.ts +3 -0
- package/dist/components/atoms/Toggle/index.d.ts.map +1 -0
- package/dist/components/atoms/index.d.ts +21 -0
- package/dist/components/atoms/index.d.ts.map +1 -0
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/molecules/EditFAB/EditFAB.d.ts +17 -0
- package/dist/components/molecules/EditFAB/EditFAB.d.ts.map +1 -0
- package/dist/components/molecules/EditFAB/EditFAB.stories.d.ts +54 -0
- package/dist/components/molecules/EditFAB/EditFAB.stories.d.ts.map +1 -0
- package/dist/components/molecules/EditFAB/index.d.ts +3 -0
- package/dist/components/molecules/EditFAB/index.d.ts.map +1 -0
- package/dist/components/molecules/SearchBar/SearchBar.d.ts +22 -0
- package/dist/components/molecules/SearchBar/SearchBar.d.ts.map +1 -0
- package/dist/components/molecules/SearchBar/SearchBar.stories.d.ts +18 -0
- package/dist/components/molecules/SearchBar/SearchBar.stories.d.ts.map +1 -0
- package/dist/components/molecules/SearchBar/index.d.ts +3 -0
- package/dist/components/molecules/SearchBar/index.d.ts.map +1 -0
- package/dist/components/molecules/ThemeSwitcher/ThemeSwitcher.d.ts +9 -0
- package/dist/components/molecules/ThemeSwitcher/ThemeSwitcher.d.ts.map +1 -0
- package/dist/components/molecules/ThemeSwitcher/ThemeSwitcher.stories.d.ts +13 -0
- package/dist/components/molecules/ThemeSwitcher/ThemeSwitcher.stories.d.ts.map +1 -0
- package/dist/components/molecules/TimeInput/TimeInput.d.ts +15 -0
- package/dist/components/molecules/TimeInput/TimeInput.d.ts.map +1 -0
- package/dist/components/molecules/TimeInput/TimeInput.stories.d.ts +13 -0
- package/dist/components/molecules/TimeInput/TimeInput.stories.d.ts.map +1 -0
- package/dist/components/molecules/TimeInput/TimePickerModal.d.ts +9 -0
- package/dist/components/molecules/TimeInput/TimePickerModal.d.ts.map +1 -0
- package/dist/components/molecules/TimeInput/index.d.ts +4 -0
- package/dist/components/molecules/TimeInput/index.d.ts.map +1 -0
- package/dist/components/molecules/index.d.ts +9 -0
- package/dist/components/molecules/index.d.ts.map +1 -0
- package/dist/components/organisms/Navbar/Navbar.d.ts +28 -0
- package/dist/components/organisms/Navbar/Navbar.d.ts.map +1 -0
- package/dist/components/organisms/Navbar/Navbar.stories.d.ts +15 -0
- package/dist/components/organisms/Navbar/Navbar.stories.d.ts.map +1 -0
- package/dist/components/organisms/ThemeProvider/ThemeProvider.d.ts +16 -0
- package/dist/components/organisms/ThemeProvider/ThemeProvider.d.ts.map +1 -0
- package/dist/components/organisms/animations/AnimationPlayer.d.ts +3 -0
- package/dist/components/organisms/animations/AnimationPlayer.d.ts.map +1 -0
- package/dist/components/organisms/animations/AnimationPlayer.stories.d.ts +23 -0
- package/dist/components/organisms/animations/AnimationPlayer.stories.d.ts.map +1 -0
- package/dist/components/organisms/animations/animationRegistry.d.ts +5 -0
- package/dist/components/organisms/animations/animationRegistry.d.ts.map +1 -0
- package/dist/components/organisms/animations/dna/DNAAnimations.d.ts +7 -0
- package/dist/components/organisms/animations/dna/DNAAnimations.d.ts.map +1 -0
- package/dist/components/organisms/animations/dna/DNAHelix.d.ts +10 -0
- package/dist/components/organisms/animations/dna/DNAHelix.d.ts.map +1 -0
- package/dist/components/organisms/animations/index.d.ts +4 -0
- package/dist/components/organisms/animations/index.d.ts.map +1 -0
- package/dist/components/organisms/animations/tree/ParticleTree.d.ts +8 -0
- package/dist/components/organisms/animations/tree/ParticleTree.d.ts.map +1 -0
- package/dist/components/organisms/animations/tree/TreeAnimations.d.ts +7 -0
- package/dist/components/organisms/animations/tree/TreeAnimations.d.ts.map +1 -0
- package/dist/components/organisms/animations/types.d.ts +12 -0
- package/dist/components/organisms/animations/types.d.ts.map +1 -0
- package/dist/components/organisms/charts/BooleansHeatmap/BooleansHeatmap.d.ts +14 -0
- package/dist/components/organisms/charts/BooleansHeatmap/BooleansHeatmap.d.ts.map +1 -0
- package/dist/components/organisms/charts/BooleansHeatmap/BooleansHeatmap.stories.d.ts +12 -0
- package/dist/components/organisms/charts/BooleansHeatmap/BooleansHeatmap.stories.d.ts.map +1 -0
- package/dist/components/organisms/charts/MoodChart/MoodChart.d.ts +15 -0
- package/dist/components/organisms/charts/MoodChart/MoodChart.d.ts.map +1 -0
- package/dist/components/organisms/charts/MoodChart/MoodChart.stories.d.ts +10 -0
- package/dist/components/organisms/charts/MoodChart/MoodChart.stories.d.ts.map +1 -0
- package/dist/components/organisms/charts/PieChart/PieChart.d.ts +16 -0
- package/dist/components/organisms/charts/PieChart/PieChart.d.ts.map +1 -0
- package/dist/components/organisms/charts/PieChart/PieChart.stories.d.ts +13 -0
- package/dist/components/organisms/charts/PieChart/PieChart.stories.d.ts.map +1 -0
- package/dist/components/organisms/charts/QuantifiableHabitsChart/QuantifiableHabitsChart.d.ts +22 -0
- package/dist/components/organisms/charts/QuantifiableHabitsChart/QuantifiableHabitsChart.d.ts.map +1 -0
- package/dist/components/organisms/charts/QuantifiableHabitsChart/QuantifiableHabitsChart.stories.d.ts +10 -0
- package/dist/components/organisms/charts/QuantifiableHabitsChart/QuantifiableHabitsChart.stories.d.ts.map +1 -0
- package/dist/components/organisms/charts/SleepChart/SleepChart.d.ts +15 -0
- package/dist/components/organisms/charts/SleepChart/SleepChart.d.ts.map +1 -0
- package/dist/components/organisms/charts/SleepChart/SleepChart.stories.d.ts +11 -0
- package/dist/components/organisms/charts/SleepChart/SleepChart.stories.d.ts.map +1 -0
- package/dist/components/organisms/charts/SunburstChart/SunburstChart.d.ts +16 -0
- package/dist/components/organisms/charts/SunburstChart/SunburstChart.d.ts.map +1 -0
- package/dist/components/organisms/charts/SunburstChart/SunburstChart.stories.d.ts +10 -0
- package/dist/components/organisms/charts/SunburstChart/SunburstChart.stories.d.ts.map +1 -0
- package/dist/components/organisms/charts/index.d.ts +8 -0
- package/dist/components/organisms/charts/index.d.ts.map +1 -0
- package/dist/components/organisms/index.d.ts +14 -0
- package/dist/components/organisms/index.d.ts.map +1 -0
- package/dist/contexts/ThemeContext.d.ts.map +1 -1
- package/dist/index.d.ts +1 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +2025 -77
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +2067 -83
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts +2 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/stories/utils.d.ts +5 -0
- package/dist/stories/utils.d.ts.map +1 -0
- package/dist/utils/formUtils.d.ts +8 -0
- package/dist/utils/formUtils.d.ts.map +1 -0
- package/package.json +42 -11
package/dist/index.js
CHANGED
|
@@ -1,34 +1,54 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var
|
|
4
|
+
var React = require('react');
|
|
5
5
|
var framerMotion = require('framer-motion');
|
|
6
|
-
var
|
|
6
|
+
var lucideReact = require('lucide-react');
|
|
7
|
+
var d3 = require('d3');
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
function _interopNamespaceDefault(e) {
|
|
10
|
+
var n = Object.create(null);
|
|
11
|
+
if (e) {
|
|
12
|
+
Object.keys(e).forEach(function (k) {
|
|
13
|
+
if (k !== 'default') {
|
|
14
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
15
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
get: function () { return e[k]; }
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
n.default = e;
|
|
23
|
+
return Object.freeze(n);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
var d3__namespace = /*#__PURE__*/_interopNamespaceDefault(d3);
|
|
27
|
+
|
|
28
|
+
const ThemeContext$1 = React.createContext(undefined);
|
|
29
|
+
const useTheme$1 = () => {
|
|
30
|
+
const context = React.useContext(ThemeContext$1);
|
|
11
31
|
if (!context) {
|
|
12
32
|
throw new Error('useTheme must be used within a ThemeProvider');
|
|
13
33
|
}
|
|
14
34
|
return context;
|
|
15
35
|
};
|
|
16
36
|
const ThemeProvider = ({ children, defaultTheme = 'light' }) => {
|
|
17
|
-
const [theme, setTheme] =
|
|
18
|
-
|
|
37
|
+
const [theme, setTheme] = React.useState(defaultTheme);
|
|
38
|
+
React.useEffect(() => {
|
|
19
39
|
const savedTheme = localStorage.getItem('theme');
|
|
20
40
|
if (savedTheme) {
|
|
21
41
|
setTheme(savedTheme);
|
|
22
42
|
}
|
|
23
43
|
}, []);
|
|
24
|
-
|
|
44
|
+
React.useEffect(() => {
|
|
25
45
|
document.documentElement.setAttribute('data-theme', theme);
|
|
26
46
|
localStorage.setItem('theme', theme);
|
|
27
47
|
}, [theme]);
|
|
28
48
|
const toggleTheme = () => {
|
|
29
49
|
setTheme(prevTheme => prevTheme === 'light' ? 'dark' : 'light');
|
|
30
50
|
};
|
|
31
|
-
return (jsxRuntime.jsx(ThemeContext.Provider, { value: { theme, toggleTheme, setTheme }, children: children }));
|
|
51
|
+
return (jsxRuntime.jsx(ThemeContext$1.Provider, { value: { theme, toggleTheme, setTheme }, children: children }));
|
|
32
52
|
};
|
|
33
53
|
|
|
34
54
|
function styleInject(css, ref) {
|
|
@@ -58,110 +78,2074 @@ function styleInject(css, ref) {
|
|
|
58
78
|
}
|
|
59
79
|
}
|
|
60
80
|
|
|
61
|
-
var css_248z$3 = ".Button-module_button__2ZuB7{align-items:center;border:var(--border-width) solid transparent;border-radius:var(--border-radius-md);cursor:pointer;display:inline-flex;font-family:var(--font-family-base);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);justify-content:center;line-height:1.5;outline:none;overflow:hidden;padding:var(--spacing-sm) var(--spacing-lg);position:relative;transition:all var(--transition-fast);user-select:none}.Button-module_button__2ZuB7:focus-visible{box-shadow:0 0 0 3px rgba(var(--color-primary-rgb,0,123,255),.25)}.Button-module_button__2ZuB7:disabled{cursor:not-allowed;opacity:.5}.Button-module_primary__s1sM6{background-color:var(--color-primary);border-color:var(--color-primary);color:#fff}.Button-module_primary__s1sM6:hover:not(:disabled){filter:brightness(1.1)}.Button-module_secondary__R0waJ{background-color:var(--color-secondary);border-color:var(--color-secondary);color:#fff}.Button-module_secondary__R0waJ:hover:not(:disabled){filter:brightness(1.1)}.Button-module_outline__F5jq-{background-color:transparent;border-color:var(--color-primary);color:var(--color-primary)}.Button-module_outline__F5jq-:hover:not(:disabled){background-color:var(--color-primary);color:#fff}.Button-module_ghost__1KINV{background-color:transparent;border-color:transparent;color:var(--color-text)}.Button-module_ghost__1KINV:hover:not(:disabled){background-color:var(--color-surface)}.Button-module_small__l39oh{font-size:var(--font-size-sm);padding:var(--spacing-xs) var(--spacing-md)}.Button-module_medium__KTxdk{font-size:var(--font-size-base);padding:var(--spacing-sm) var(--spacing-lg)}.Button-module_large__6bsb7{font-size:var(--font-size-lg);padding:var(--spacing-md) var(--spacing-xl)}.Button-module_fullWidth__36oJT{width:100%}.Button-module_loading__EQAt2{color:transparent}.Button-module_spinner__ZExvW{animation:Button-module_spin__JvkZu .6s linear infinite;border:2px solid;border-radius:50%;border-right:2px solid transparent;height:1em;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:1em}@keyframes Button-module_spin__JvkZu{to{transform:translate(-50%,-50%) rotate(1turn)}}.Button-module_iconLeft__YwUkN{margin-right:var(--spacing-sm)}.Button-module_iconRight__J7Lff{margin-left:var(--spacing-sm)}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkJ1dHRvbi5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZCQUdFLGtCQUFtQixDQU9uQiw0Q0FBNkMsQ0FDN0MscUNBQXNDLENBQ3RDLGNBQWUsQ0FWZixtQkFBb0IsQ0FJcEIsbUNBQW9DLENBQ3BDLCtCQUFnQyxDQUNoQyxxQ0FBc0MsQ0FKdEMsc0JBQXVCLENBS3ZCLGVBQWdCLENBS2hCLFlBQWEsQ0FDYixlQUFnQixDQVZoQiwyQ0FBNEMsQ0FKNUMsaUJBQWtCLENBWWxCLHFDQUFzQyxDQUd0QyxnQkFDRixDQUVBLDJDQUNFLGlFQUNGLENBRUEsc0NBRUUsa0JBQW1CLENBRG5CLFVBRUYsQ0FHQSw4QkFDRSxxQ0FBc0MsQ0FFdEMsaUNBQWtDLENBRGxDLFVBRUYsQ0FFQSxtREFDRSxzQkFDRixDQUVBLGdDQUNFLHVDQUF3QyxDQUV4QyxtQ0FBb0MsQ0FEcEMsVUFFRixDQUVBLHFEQUNFLHNCQUNGLENBRUEsOEJBQ0UsNEJBQTZCLENBRTdCLGlDQUFrQyxDQURsQywwQkFFRixDQUVBLG1EQUNFLHFDQUFzQyxDQUN0QyxVQUNGLENBRUEsNEJBQ0UsNEJBQTZCLENBRTdCLHdCQUF5QixDQUR6Qix1QkFFRixDQUVBLGlEQUNFLHFDQUNGLENBR0EsNEJBRUUsNkJBQThCLENBRDlCLDJDQUVGLENBRUEsNkJBRUUsK0JBQWdDLENBRGhDLDJDQUVGLENBRUEsNEJBRUUsNkJBQThCLENBRDlCLDJDQUVGLENBR0EsZ0NBQ0UsVUFDRixDQUdBLDhCQUNFLGlCQUNGLENBRUEsOEJBVUUsdURBQW9DLENBRnBDLGdCQUErQixDQUMvQixpQkFBa0IsQ0FEbEIsa0NBQStCLENBRi9CLFVBQVcsQ0FIWCxRQUFTLENBRlQsaUJBQWtCLENBQ2xCLE9BQVEsQ0FFUiw4QkFBZ0MsQ0FDaEMsU0FNRixDQUVBLHFDQUNFLEdBQ0UsNENBQ0YsQ0FDRixDQUdBLCtCQUNFLDhCQUNGLENBRUEsZ0NBQ0UsNkJBQ0YiLCJmaWxlIjoiQnV0dG9uLm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuYnV0dG9uIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctc20pIHZhcigtLXNwYWNpbmctbGcpO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1mYW1pbHktYmFzZSk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgYm9yZGVyOiB2YXIoLS1ib3JkZXItd2lkdGgpIHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzLW1kKTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KTtcbiAgb3V0bGluZTogbm9uZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi5idXR0b246Zm9jdXMtdmlzaWJsZSB7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktcmdiLCAwLCAxMjMsIDI1NSksIDAuMjUpO1xufVxuXG4uYnV0dG9uOmRpc2FibGVkIHtcbiAgb3BhY2l0eTogMC41O1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4vKiBWYXJpYW50cyAqL1xuLnByaW1hcnkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgY29sb3I6IHdoaXRlO1xuICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xufVxuXG4ucHJpbWFyeTpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gIGZpbHRlcjogYnJpZ2h0bmVzcygxLjEpO1xufVxuXG4uc2Vjb25kYXJ5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3Itc2Vjb25kYXJ5KTtcbiAgY29sb3I6IHdoaXRlO1xuICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLXNlY29uZGFyeSk7XG59XG5cbi5zZWNvbmRhcnk6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICBmaWx0ZXI6IGJyaWdodG5lc3MoMS4xKTtcbn1cblxuLm91dGxpbmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xufVxuXG4ub3V0bGluZTpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICBjb2xvcjogd2hpdGU7XG59XG5cbi5naG9zdCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi5naG9zdDpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXN1cmZhY2UpO1xufVxuXG4vKiBTaXplcyAqL1xuLnNtYWxsIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy14cykgdmFyKC0tc3BhY2luZy1tZCk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbn1cblxuLm1lZGl1bSB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctc20pIHZhcigtLXNwYWNpbmctbGcpO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbn1cblxuLmxhcmdlIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1tZCkgdmFyKC0tc3BhY2luZy14bCk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWxnKTtcbn1cblxuLyogRnVsbCB3aWR0aCAqL1xuLmZ1bGxXaWR0aCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4vKiBMb2FkaW5nIHN0YXRlICovXG4ubG9hZGluZyB7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLnNwaW5uZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICB3aWR0aDogMWVtO1xuICBoZWlnaHQ6IDFlbTtcbiAgYm9yZGVyOiAycHggc29saWQgY3VycmVudENvbG9yO1xuICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGFuaW1hdGlvbjogc3BpbiAwLjZzIGxpbmVhciBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBzcGluIHtcbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpIHJvdGF0ZSgzNjBkZWcpO1xuICB9XG59XG5cbi8qIEljb24gc3BhY2luZyAqL1xuLmljb25MZWZ0IHtcbiAgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLXNtKTtcbn1cblxuLmljb25SaWdodCB7XG4gIG1hcmdpbi1sZWZ0OiB2YXIoLS1zcGFjaW5nLXNtKTtcbn0iXX0= */";
|
|
62
|
-
var styles$
|
|
63
|
-
styleInject(css_248z$
|
|
81
|
+
var css_248z$m = ".Button-module_button__c6nkW{align-items:center;border:none;border-radius:var(--radius-lg);cursor:pointer;display:inline-flex;font-size:var(--font-size-base);font-weight:var(--font-weight-medium);gap:var(--spacing-sm);isolation:isolate;justify-content:center;letter-spacing:var(--letter-spacing-wide);line-height:var(--line-height-normal);overflow:hidden;padding:var(--spacing-sm) var(--spacing-lg);position:relative;text-decoration:none;transition:all var(--transition-base);user-select:none;white-space:nowrap}.Button-module_button__c6nkW:before{background:hsla(0,0%,100%,.5);border-radius:50%;content:\"\";height:0;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);transition:width .6s,height .6s;width:0}.Button-module_button__c6nkW:active:before{height:300px;width:300px}.Button-module_primary__pMqAs{background:linear-gradient(135deg,var(--color-primary),var(--color-primary-hover));box-shadow:var(--shadow-md),0 4px 14px 0 rgba(124,58,237,.3);color:var(--color-text-inverse)}.Button-module_primary__pMqAs:hover:not(:disabled){background:linear-gradient(135deg,var(--color-primary-hover),var(--color-primary-active));box-shadow:var(--shadow-lg),0 6px 20px 0 rgba(124,58,237,.4);transform:translateY(-2px)}.Button-module_primary__pMqAs:active:not(:disabled){box-shadow:var(--shadow-sm),0 2px 8px 0 rgba(124,58,237,.3);transform:translateY(0)}.Button-module_secondary__mBWx9{background:linear-gradient(135deg,var(--color-secondary),var(--color-secondary-hover));box-shadow:var(--shadow-sm),0 2px 8px 0 rgba(20,184,166,.2);color:var(--color-text-inverse)}.Button-module_secondary__mBWx9:hover:not(:disabled){background:linear-gradient(135deg,var(--color-secondary-hover),var(--color-secondary-active));box-shadow:var(--shadow-md),0 4px 12px 0 rgba(20,184,166,.3);transform:translateY(-1px)}.Button-module_secondary__mBWx9:active:not(:disabled){box-shadow:var(--shadow-xs),0 1px 4px 0 rgba(20,184,166,.2);transform:translateY(0)}.Button-module_outline__NGGGN{background:transparent;border:1px solid var(--color-primary);box-shadow:none;color:var(--color-primary);overflow:hidden;position:relative;z-index:1}.Button-module_outline__NGGGN:after{background:linear-gradient(135deg,var(--color-primary),var(--color-primary-hover));content:\"\";height:100%;left:0;opacity:0;position:absolute;top:0;transition:opacity var(--transition-base);width:100%;z-index:-1}.Button-module_outline__NGGGN:hover:not(:disabled){border-color:transparent;box-shadow:var(--shadow-md);color:var(--color-text-inverse);transform:translateY(-1px)}.Button-module_outline__NGGGN:hover:not(:disabled):after{opacity:1}.Button-module_outline__NGGGN:active:not(:disabled){box-shadow:var(--shadow-sm);transform:translateY(0)}.Button-module_ghost__u2QBF{background:transparent;box-shadow:none;color:var(--color-text-secondary)}.Button-module_ghost__u2QBF:hover:not(:disabled){background:linear-gradient(135deg,var(--color-background-secondary),var(--color-background-tertiary));box-shadow:var(--shadow-sm);color:var(--color-text);transform:translateY(-1px)}.Button-module_ghost__u2QBF:active:not(:disabled){background:var(--color-background-tertiary);box-shadow:none;transform:translateY(0)}.Button-module_danger__2ewhr{background:linear-gradient(135deg,var(--color-error),var(--color-error-hover));box-shadow:var(--shadow-md),0 4px 14px 0 rgba(239,68,68,.3);color:var(--color-text-inverse)}.Button-module_danger__2ewhr:hover:not(:disabled){background:linear-gradient(135deg,var(--color-error-hover),var(--color-error-active));box-shadow:var(--shadow-lg),0 6px 20px 0 rgba(239,68,68,.4);transform:translateY(-2px)}.Button-module_danger__2ewhr:active:not(:disabled){box-shadow:var(--shadow-sm),0 2px 8px 0 rgba(239,68,68,.3);transform:translateY(0)}.Button-module_small__ZI9RX{border-radius:var(--radius-md);font-size:var(--font-size-sm);padding:var(--spacing-xs) var(--spacing-md)}.Button-module_medium__Wnf9t{font-size:var(--font-size-base);padding:var(--spacing-sm) var(--spacing-lg)}.Button-module_large__cQCpA{border-radius:var(--radius-xl);font-size:var(--font-size-lg);padding:var(--spacing-md) var(--spacing-xl)}.Button-module_fullWidth__N8vYg{width:100%}.Button-module_button__c6nkW:disabled{background:var(--color-background-tertiary)!important;border-color:var(--color-border)!important;box-shadow:none!important;color:var(--color-text-tertiary)!important;cursor:not-allowed;opacity:.5;transform:none!important}.Button-module_button__c6nkW:disabled:after,.Button-module_button__c6nkW:disabled:before{display:none}.Button-module_loading__hcSI4{color:transparent;pointer-events:none}.Button-module_spinner__HtM96{height:1em;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:1em}.Button-module_spinner__HtM96:after{animation:Button-module_spin__jblrj .6s linear infinite;border:2px solid;border-radius:50%;border-top:2px solid transparent;content:\"\";display:block;height:1em;width:1em}@keyframes Button-module_spin__jblrj{to{transform:rotate(1turn)}}.Button-module_iconLeft__Fpz-y,.Button-module_iconRight__kTfjS{align-items:center;display:inline-flex;flex-shrink:0;height:1.25em;justify-content:center;width:1.25em}.Button-module_iconLeft__Fpz-y{margin-left:calc(var(--spacing-xs)*-1)}.Button-module_iconRight__kTfjS{margin-right:calc(var(--spacing-xs)*-1)}.Button-module_button__c6nkW:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}[data-theme=dark] .Button-module_primary__pMqAs{box-shadow:var(--shadow-md),0 4px 14px 0 rgba(167,139,250,.3)}[data-theme=dark] .Button-module_primary__pMqAs:hover:not(:disabled){box-shadow:var(--shadow-lg),0 6px 20px 0 rgba(167,139,250,.4)}[data-theme=dark] .Button-module_secondary__mBWx9{box-shadow:var(--shadow-sm),0 2px 8px 0 rgba(45,212,191,.2)}[data-theme=dark] .Button-module_secondary__mBWx9:hover:not(:disabled){box-shadow:var(--shadow-md),0 4px 12px 0 rgba(45,212,191,.3)}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkJ1dHRvbi5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZCQUdDLGtCQUFtQixDQVNuQixXQUFZLENBRFosOEJBQStCLENBRS9CLGNBQWUsQ0FYZixtQkFBb0IsQ0FLcEIsK0JBQWdDLENBQ2hDLHFDQUFzQyxDQUh0QyxxQkFBc0IsQ0FjdEIsaUJBQWtCLENBZmxCLHNCQUF1QixDQU12Qix5Q0FBMEMsQ0FEMUMscUNBQXNDLENBU3RDLGVBQWdCLENBWmhCLDJDQUE0QyxDQUw1QyxpQkFBa0IsQ0FjbEIsb0JBQXFCLENBRHJCLHFDQUFzQyxDQUd0QyxnQkFBaUIsQ0FEakIsa0JBSUQsQ0FHQSxvQ0FRQyw2QkFBb0MsQ0FEcEMsaUJBQWtCLENBTmxCLFVBQVcsQ0FLWCxRQUFTLENBRlQsUUFBUyxDQUZULGlCQUFrQixDQUNsQixPQUFRLENBTVIsOEJBQWdDLENBQ2hDLCtCQUFtQyxDQUxuQyxPQU1ELENBRUEsMkNBRUMsWUFBYSxDQURiLFdBRUQsQ0FHQSw4QkFDQyxrRkFBcUYsQ0FFckYsNERBQWtFLENBRGxFLCtCQUVELENBRUEsbURBQ0MseUZBQTRGLENBRTVGLDREQUFrRSxDQURsRSwwQkFFRCxDQUVBLG9EQUVDLDJEQUFpRSxDQURqRSx1QkFFRCxDQUdBLGdDQUNDLHNGQUF5RixDQUV6RiwyREFBaUUsQ0FEakUsK0JBRUQsQ0FFQSxxREFDQyw2RkFBZ0csQ0FFaEcsNERBQWtFLENBRGxFLDBCQUVELENBRUEsc0RBRUMsMkRBQWlFLENBRGpFLHVCQUVELENBR0EsOEJBQ0Msc0JBQXVCLENBRXZCLHFDQUFzQyxDQUN0QyxlQUFnQixDQUZoQiwwQkFBMkIsQ0FJM0IsZUFBZ0IsQ0FEaEIsaUJBQWtCLENBRWxCLFNBQ0QsQ0FFQSxvQ0FPQyxrRkFBcUYsQ0FOckYsVUFBVyxDQUtYLFdBQVksQ0FGWixNQUFPLENBS1AsU0FBVSxDQVBWLGlCQUFrQixDQUNsQixLQUFNLENBT04seUNBQTBDLENBTDFDLFVBQVcsQ0FHWCxVQUdELENBRUEsbURBRUMsd0JBQXlCLENBRXpCLDJCQUE0QixDQUg1QiwrQkFBZ0MsQ0FFaEMsMEJBRUQsQ0FFQSx5REFDQyxTQUNELENBRUEsb0RBRUMsMkJBQTRCLENBRDVCLHVCQUVELENBR0EsNEJBQ0Msc0JBQXVCLENBRXZCLGVBQWdCLENBRGhCLGlDQUVELENBRUEsaURBQ0MscUdBR0MsQ0FHRCwyQkFBNEIsQ0FGNUIsdUJBQXdCLENBQ3hCLDBCQUVELENBRUEsa0RBRUMsMkNBQTRDLENBQzVDLGVBQWdCLENBRmhCLHVCQUdELENBR0EsNkJBQ0MsOEVBQWlGLENBRWpGLDJEQUFpRSxDQURqRSwrQkFFRCxDQUVBLGtEQUNDLHFGQUF3RixDQUV4RiwyREFBaUUsQ0FEakUsMEJBRUQsQ0FFQSxtREFFQywwREFBZ0UsQ0FEaEUsdUJBRUQsQ0FHQSw0QkFHQyw4QkFBK0IsQ0FEL0IsNkJBQThCLENBRDlCLDJDQUdELENBRUEsNkJBRUMsK0JBQWdDLENBRGhDLDJDQUVELENBRUEsNEJBR0MsOEJBQStCLENBRC9CLDZCQUE4QixDQUQ5QiwyQ0FHRCxDQUdBLGdDQUNDLFVBQ0QsQ0FHQSxzQ0FLQyxxREFBdUQsQ0FFdkQsMENBQTRDLENBSDVDLHlCQUEyQixDQUUzQiwwQ0FBNEMsQ0FKNUMsa0JBQW1CLENBRG5CLFVBQVksQ0FFWix3QkFLRCxDQUVBLHlGQUVDLFlBQ0QsQ0FHQSw4QkFDQyxpQkFBa0IsQ0FDbEIsbUJBQ0QsQ0FFQSw4QkFNQyxVQUFXLENBSFgsUUFBUyxDQUZULGlCQUFrQixDQUNsQixPQUFRLENBRVIsOEJBQWdDLENBQ2hDLFNBRUQsQ0FFQSxvQ0FRQyx1REFBb0MsQ0FEcEMsZ0JBQTZCLENBRDdCLGlCQUFrQixDQUNsQixnQ0FBNkIsQ0FON0IsVUFBVyxDQUNYLGFBQWMsQ0FFZCxVQUFXLENBRFgsU0FNRCxDQUVBLHFDQUNDLEdBQ0MsdUJBQ0QsQ0FDRCxDQUdBLCtEQUdDLGtCQUFtQixDQURuQixtQkFBb0IsQ0FLcEIsYUFBYyxDQURkLGFBQWMsQ0FGZCxzQkFBdUIsQ0FDdkIsWUFHRCxDQUVBLCtCQUNDLHNDQUNELENBRUEsZ0NBQ0MsdUNBQ0QsQ0FHQSwyQ0FDQyxzQ0FBdUMsQ0FDdkMsa0JBQ0QsQ0FHQSxnREFDQyw2REFDRCxDQUVBLHFFQUNDLDZEQUNELENBRUEsa0RBQ0MsMkRBQ0QsQ0FFQSx1RUFDQyw0REFDRCIsImZpbGUiOiJCdXR0b24ubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5idXR0b24ge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0Z2FwOiB2YXIoLS1zcGFjaW5nLXNtKTtcblx0cGFkZGluZzogdmFyKC0tc3BhY2luZy1zbSkgdmFyKC0tc3BhY2luZy1sZyk7XG5cdGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xuXHRmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcblx0bGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LW5vcm1hbCk7XG5cdGxldHRlci1zcGFjaW5nOiB2YXIoLS1sZXR0ZXItc3BhY2luZy13aWRlKTtcblx0Ym9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcblx0Ym9yZGVyOiBub25lO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xuXHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdHVzZXItc2VsZWN0OiBub25lO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuXHRpc29sYXRpb246IGlzb2xhdGU7XG59XG5cbi8qIFJpcHBsZSBlZmZlY3Qgb24gY2xpY2sgKi9cbi5idXR0b246OmJlZm9yZSB7XG5cdGNvbnRlbnQ6ICcnO1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHRvcDogNTAlO1xuXHRsZWZ0OiA1MCU7XG5cdHdpZHRoOiAwO1xuXHRoZWlnaHQ6IDA7XG5cdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0YmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcblx0dHJhbnNpdGlvbjogd2lkdGggMC42cywgaGVpZ2h0IDAuNnM7XG59XG5cbi5idXR0b246YWN0aXZlOjpiZWZvcmUge1xuXHR3aWR0aDogMzAwcHg7XG5cdGhlaWdodDogMzAwcHg7XG59XG5cbi8qIFByaW1hcnkgdmFyaWFudCAtIEdyYWRpZW50IGJhY2tncm91bmQgKi9cbi5wcmltYXJ5IHtcblx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tY29sb3ItcHJpbWFyeSksIHZhcigtLWNvbG9yLXByaW1hcnktaG92ZXIpKTtcblx0Y29sb3I6IHZhcigtLWNvbG9yLXRleHQtaW52ZXJzZSk7XG5cdGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tZCksIDAgNHB4IDE0cHggMCByZ2JhKDEyNCwgNTgsIDIzNywgMC4zKTtcbn1cblxuLnByaW1hcnk6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuXHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1jb2xvci1wcmltYXJ5LWhvdmVyKSwgdmFyKC0tY29sb3ItcHJpbWFyeS1hY3RpdmUpKTtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuXHRib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGcpLCAwIDZweCAyMHB4IDAgcmdiYSgxMjQsIDU4LCAyMzcsIDAuNCk7XG59XG5cbi5wcmltYXJ5OmFjdGl2ZTpub3QoOmRpc2FibGVkKSB7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcblx0Ym94LXNoYWRvdzogdmFyKC0tc2hhZG93LXNtKSwgMCAycHggOHB4IDAgcmdiYSgxMjQsIDU4LCAyMzcsIDAuMyk7XG59XG5cbi8qIFNlY29uZGFyeSB2YXJpYW50IC0gU3VidGxlIGdyYWRpZW50ICovXG4uc2Vjb25kYXJ5IHtcblx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tY29sb3Itc2Vjb25kYXJ5KSwgdmFyKC0tY29sb3Itc2Vjb25kYXJ5LWhvdmVyKSk7XG5cdGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LWludmVyc2UpO1xuXHRib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc20pLCAwIDJweCA4cHggMCByZ2JhKDIwLCAxODQsIDE2NiwgMC4yKTtcbn1cblxuLnNlY29uZGFyeTpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG5cdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWNvbG9yLXNlY29uZGFyeS1ob3ZlciksIHZhcigtLWNvbG9yLXNlY29uZGFyeS1hY3RpdmUpKTtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuXHRib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbWQpLCAwIDRweCAxMnB4IDAgcmdiYSgyMCwgMTg0LCAxNjYsIDAuMyk7XG59XG5cbi5zZWNvbmRhcnk6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpIHtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuXHRib3gtc2hhZG93OiB2YXIoLS1zaGFkb3cteHMpLCAwIDFweCA0cHggMCByZ2JhKDIwLCAxODQsIDE2NiwgMC4yKTtcbn1cblxuLyogT3V0bGluZSB2YXJpYW50IC0gQm9yZGVyIHdpdGggZ3JhZGllbnQgaG92ZXIgKi9cbi5vdXRsaW5lIHtcblx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG5cdGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcblx0Ym9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItcHJpbWFyeSk7XG5cdGJveC1zaGFkb3c6IG5vbmU7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0ei1pbmRleDogMTtcbn1cblxuLm91dGxpbmU6OmFmdGVyIHtcblx0Y29udGVudDogJyc7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0dG9wOiAwO1xuXHRsZWZ0OiAwO1xuXHR3aWR0aDogMTAwJTtcblx0aGVpZ2h0OiAxMDAlO1xuXHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1jb2xvci1wcmltYXJ5KSwgdmFyKC0tY29sb3ItcHJpbWFyeS1ob3ZlcikpO1xuXHR6LWluZGV4OiAtMTtcblx0b3BhY2l0eTogMDtcblx0dHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4ub3V0bGluZTpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG5cdGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LWludmVyc2UpO1xuXHRib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG5cdGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tZCk7XG59XG5cbi5vdXRsaW5lOmhvdmVyOm5vdCg6ZGlzYWJsZWQpOjphZnRlciB7XG5cdG9wYWNpdHk6IDE7XG59XG5cbi5vdXRsaW5lOmFjdGl2ZTpub3QoOmRpc2FibGVkKSB7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcblx0Ym94LXNoYWRvdzogdmFyKC0tc2hhZG93LXNtKTtcbn1cblxuLyogR2hvc3QgdmFyaWFudCAtIE1pbmltYWwgd2l0aCBob3ZlciBiYWNrZ3JvdW5kICovXG4uZ2hvc3Qge1xuXHRiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcblx0Y29sb3I6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcblx0Ym94LXNoYWRvdzogbm9uZTtcbn1cblxuLmdob3N0OmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcblx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG5cdFx0dmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpLCBcblx0XHR2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXRlcnRpYXJ5KVxuXHQpO1xuXHRjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcblx0Ym94LXNoYWRvdzogdmFyKC0tc2hhZG93LXNtKTtcbn1cblxuLmdob3N0OmFjdGl2ZTpub3QoOmRpc2FibGVkKSB7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcblx0YmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSk7XG5cdGJveC1zaGFkb3c6IG5vbmU7XG59XG5cbi8qIERhbmdlciB2YXJpYW50IC0gUmVkL2Rlc3RydWN0aXZlIGFjdGlvbnMgKi9cbi5kYW5nZXIge1xuXHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1jb2xvci1lcnJvciksIHZhcigtLWNvbG9yLWVycm9yLWhvdmVyKSk7XG5cdGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LWludmVyc2UpO1xuXHRib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbWQpLCAwIDRweCAxNHB4IDAgcmdiYSgyMzksIDY4LCA2OCwgMC4zKTtcbn1cblxuLmRhbmdlcjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG5cdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWNvbG9yLWVycm9yLWhvdmVyKSwgdmFyKC0tY29sb3ItZXJyb3ItYWN0aXZlKSk7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcblx0Ym94LXNoYWRvdzogdmFyKC0tc2hhZG93LWxnKSwgMCA2cHggMjBweCAwIHJnYmEoMjM5LCA2OCwgNjgsIDAuNCk7XG59XG5cbi5kYW5nZXI6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpIHtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuXHRib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc20pLCAwIDJweCA4cHggMCByZ2JhKDIzOSwgNjgsIDY4LCAwLjMpO1xufVxuXG4vKiBTaXplIHZhcmlhbnRzICovXG4uc21hbGwge1xuXHRwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXhzKSB2YXIoLS1zcGFjaW5nLW1kKTtcblx0Zm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xufVxuXG4ubWVkaXVtIHtcblx0cGFkZGluZzogdmFyKC0tc3BhY2luZy1zbSkgdmFyKC0tc3BhY2luZy1sZyk7XG5cdGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xufVxuXG4ubGFyZ2Uge1xuXHRwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLW1kKSB2YXIoLS1zcGFjaW5nLXhsKTtcblx0Zm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteGwpO1xufVxuXG4vKiBGdWxsIHdpZHRoICovXG4uZnVsbFdpZHRoIHtcblx0d2lkdGg6IDEwMCU7XG59XG5cbi8qIERpc2FibGVkIHN0YXRlICovXG4uYnV0dG9uOmRpc2FibGVkIHtcblx0b3BhY2l0eTogMC41O1xuXHRjdXJzb3I6IG5vdC1hbGxvd2VkO1xuXHR0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcblx0Ym94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuXHRiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXRlcnRpYXJ5KSAhaW1wb3J0YW50O1xuXHRjb2xvcjogdmFyKC0tY29sb3ItdGV4dC10ZXJ0aWFyeSkgIWltcG9ydGFudDtcblx0Ym9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1ib3JkZXIpICFpbXBvcnRhbnQ7XG59XG5cbi5idXR0b246ZGlzYWJsZWQ6OmJlZm9yZSxcbi5idXR0b246ZGlzYWJsZWQ6OmFmdGVyIHtcblx0ZGlzcGxheTogbm9uZTtcbn1cblxuLyogTG9hZGluZyBzdGF0ZSAqL1xuLmxvYWRpbmcge1xuXHRjb2xvcjogdHJhbnNwYXJlbnQ7XG5cdHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uc3Bpbm5lciB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0dG9wOiA1MCU7XG5cdGxlZnQ6IDUwJTtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG5cdHdpZHRoOiAxZW07XG5cdGhlaWdodDogMWVtO1xufVxuXG4uc3Bpbm5lcjo6YWZ0ZXIge1xuXHRjb250ZW50OiAnJztcblx0ZGlzcGxheTogYmxvY2s7XG5cdHdpZHRoOiAxZW07XG5cdGhlaWdodDogMWVtO1xuXHRib3JkZXI6IDJweCBzb2xpZCBjdXJyZW50Q29sb3I7XG5cdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0Ym9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdGFuaW1hdGlvbjogc3BpbiAwLjZzIGxpbmVhciBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBzcGluIHtcblx0dG8ge1xuXHRcdHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG5cdH1cbn1cblxuLyogSWNvbiBzdHlsZXMgKi9cbi5pY29uTGVmdCxcbi5pY29uUmlnaHQge1xuXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdHdpZHRoOiAxLjI1ZW07XG5cdGhlaWdodDogMS4yNWVtO1xuXHRmbGV4LXNocmluazogMDtcbn1cblxuLmljb25MZWZ0IHtcblx0bWFyZ2luLWxlZnQ6IGNhbGModmFyKC0tc3BhY2luZy14cykgKiAtMSk7XG59XG5cbi5pY29uUmlnaHQge1xuXHRtYXJnaW4tcmlnaHQ6IGNhbGModmFyKC0tc3BhY2luZy14cykgKiAtMSk7XG59XG5cbi8qIEZvY3VzIHZpc2libGUgZm9yIGFjY2Vzc2liaWxpdHkgKi9cbi5idXR0b246Zm9jdXMtdmlzaWJsZSB7XG5cdG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1jb2xvci1wcmltYXJ5KTtcblx0b3V0bGluZS1vZmZzZXQ6IDJweDtcbn1cblxuLyogRGFyayBtb2RlIGFkanVzdG1lbnRzICovXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLnByaW1hcnkge1xuXHRib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbWQpLCAwIDRweCAxNHB4IDAgcmdiYSgxNjcsIDEzOSwgMjUwLCAwLjMpO1xufVxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLnByaW1hcnk6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuXHRib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGcpLCAwIDZweCAyMHB4IDAgcmdiYSgxNjcsIDEzOSwgMjUwLCAwLjQpO1xufVxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLnNlY29uZGFyeSB7XG5cdGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1zbSksIDAgMnB4IDhweCAwIHJnYmEoNDUsIDIxMiwgMTkxLCAwLjIpO1xufVxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLnNlY29uZGFyeTpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG5cdGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tZCksIDAgNHB4IDEycHggMCByZ2JhKDQ1LCAyMTIsIDE5MSwgMC4zKTtcbn0iXX0= */";
|
|
82
|
+
var styles$k = {"button":"Button-module_button__c6nkW","primary":"Button-module_primary__pMqAs","secondary":"Button-module_secondary__mBWx9","outline":"Button-module_outline__NGGGN","ghost":"Button-module_ghost__u2QBF","danger":"Button-module_danger__2ewhr","small":"Button-module_small__ZI9RX","medium":"Button-module_medium__Wnf9t","large":"Button-module_large__cQCpA","fullWidth":"Button-module_fullWidth__N8vYg","loading":"Button-module_loading__hcSI4","spinner":"Button-module_spinner__HtM96","spin":"Button-module_spin__jblrj","iconLeft":"Button-module_iconLeft__Fpz-y","iconRight":"Button-module_iconRight__kTfjS"};
|
|
83
|
+
styleInject(css_248z$m);
|
|
64
84
|
|
|
65
85
|
const Button = ({ variant = 'primary', size = 'medium', fullWidth = false, loading = false, iconLeft, iconRight, children, className = '', disabled, motionProps, ...rest }) => {
|
|
66
86
|
const buttonClasses = [
|
|
67
|
-
styles$
|
|
68
|
-
styles$
|
|
69
|
-
styles$
|
|
70
|
-
fullWidth && styles$
|
|
71
|
-
loading && styles$
|
|
87
|
+
styles$k.button,
|
|
88
|
+
styles$k[variant],
|
|
89
|
+
styles$k[size],
|
|
90
|
+
fullWidth && styles$k.fullWidth,
|
|
91
|
+
loading && styles$k.loading,
|
|
72
92
|
className
|
|
73
93
|
].filter(Boolean).join(' ');
|
|
74
|
-
return (jsxRuntime.jsxs(framerMotion.motion.button, { className: buttonClasses, disabled: disabled || loading, whileHover: { scale: disabled || loading ? 1 : 1.02 }, whileTap: { scale: disabled || loading ? 1 : 0.98 }, transition: { type: "spring", stiffness: 400, damping: 17 }, ...motionProps, ...rest, children: [loading && jsxRuntime.jsx("span", { className: styles$
|
|
94
|
+
return (jsxRuntime.jsxs(framerMotion.motion.button, { className: buttonClasses, disabled: disabled || loading, whileHover: { scale: disabled || loading ? 1 : 1.02 }, whileTap: { scale: disabled || loading ? 1 : 0.98 }, transition: { type: "spring", stiffness: 400, damping: 17 }, ...motionProps, ...rest, children: [loading && jsxRuntime.jsx("span", { className: styles$k.spinner }), iconLeft && jsxRuntime.jsx("span", { className: styles$k.iconLeft, children: iconLeft }), children, iconRight && jsxRuntime.jsx("span", { className: styles$k.iconRight, children: iconRight })] }));
|
|
75
95
|
};
|
|
76
96
|
|
|
77
|
-
var css_248z$2 = ".Card-module_card__Cb1o4{background-color:var(--color-background);border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius-lg);overflow:hidden;transition:all var(--transition-base)}.Card-module_card__Cb1o4:hover.Card-module_hoverable__aGYcW{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.Card-module_elevated__5VEDw{box-shadow:var(--shadow-md)}.Card-module_elevated__5VEDw:hover.Card-module_hoverable__aGYcW{box-shadow:var(--shadow-xl)}.Card-module_outlined__Tkn0-{border-color:var(--border-color);box-shadow:none}.Card-module_flat__LRpce{background-color:var(--color-surface);border:none;box-shadow:none}.Card-module_image__bEGMz{display:block;height:auto;width:100%}.Card-module_imageContainer__aBzxr{overflow:hidden;position:relative}.Card-module_header__PTXf2{border-bottom:var(--border-width) solid var(--border-color);padding:var(--spacing-lg)}.Card-module_body__W441Z{padding:var(--spacing-lg)}.Card-module_footer__Mu-JC{align-items:center;border-top:var(--border-width) solid var(--border-color);display:flex;gap:var(--spacing-sm);justify-content:flex-end;padding:var(--spacing-lg)}.Card-module_title__mSgoo{color:var(--color-text);font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);margin:0}.Card-module_subtitle__dBqgy{color:var(--color-text-secondary);font-size:var(--font-size-sm);margin:var(--spacing-xs) 0 0}.Card-module_clickable__qbwhm{cursor:pointer}.Card-module_padding__o07TN{padding:var(--spacing-lg)}.Card-module_noPadding__jt3Vd{padding:0}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNhcmQubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5QkFDRSx3Q0FBeUMsQ0FDekMsb0RBQXFELENBQ3JELHFDQUFzQyxDQUN0QyxlQUFnQixDQUNoQixxQ0FDRixDQUVBLDREQUVFLDJCQUE0QixDQUQ1QiwwQkFFRixDQUVBLDZCQUNFLDJCQUNGLENBRUEsZ0VBQ0UsMkJBQ0YsQ0FFQSw2QkFDRSxnQ0FBaUMsQ0FDakMsZUFDRixDQUVBLHlCQUdFLHFDQUFzQyxDQUZ0QyxXQUFZLENBQ1osZUFFRixDQUVBLDBCQUdFLGFBQWMsQ0FEZCxXQUFZLENBRFosVUFHRixDQUVBLG1DQUVFLGVBQWdCLENBRGhCLGlCQUVGLENBRUEsMkJBRUUsMkRBQTRELENBRDVELHlCQUVGLENBRUEseUJBQ0UseUJBQ0YsQ0FFQSwyQkFJRSxrQkFBbUIsQ0FGbkIsd0RBQXlELENBQ3pELFlBQWEsQ0FHYixxQkFBc0IsQ0FEdEIsd0JBQXlCLENBSnpCLHlCQU1GLENBRUEsMEJBSUUsdUJBQXdCLENBRnhCLDZCQUE4QixDQUM5Qix1Q0FBd0MsQ0FGeEMsUUFJRixDQUVBLDZCQUdFLGlDQUFrQyxDQURsQyw2QkFBOEIsQ0FEOUIsNEJBR0YsQ0FFQSw4QkFDRSxjQUNGLENBRUEsNEJBQ0UseUJBQ0YsQ0FFQSw4QkFDRSxTQUNGIiwiZmlsZSI6IkNhcmQubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jYXJkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYmFja2dyb3VuZCk7XG4gIGJvcmRlcjogdmFyKC0tYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzLWxnKTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi5jYXJkOmhvdmVyLmhvdmVyYWJsZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWxnKTtcbn1cblxuLmVsZXZhdGVkIHtcbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LW1kKTtcbn1cblxuLmVsZXZhdGVkOmhvdmVyLmhvdmVyYWJsZSB7XG4gIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy14bCk7XG59XG5cbi5vdXRsaW5lZCB7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyLWNvbG9yKTtcbiAgYm94LXNoYWRvdzogbm9uZTtcbn1cblxuLmZsYXQge1xuICBib3JkZXI6IG5vbmU7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXN1cmZhY2UpO1xufVxuXG4uaW1hZ2Uge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmltYWdlQ29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uaGVhZGVyIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1sZyk7XG4gIGJvcmRlci1ib3R0b206IHZhcigtLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtcbn1cblxuLmJvZHkge1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLWxnKTtcbn1cblxuLmZvb3RlciB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctbGcpO1xuICBib3JkZXItdG9wOiB2YXIoLS1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIGdhcDogdmFyKC0tc3BhY2luZy1zbSk7XG59XG5cbi50aXRsZSB7XG4gIG1hcmdpbjogMDtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteGwpO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG59XG5cbi5zdWJ0aXRsZSB7XG4gIG1hcmdpbjogdmFyKC0tc3BhY2luZy14cykgMCAwO1xuICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi5jbGlja2FibGUge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5wYWRkaW5nIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1sZyk7XG59XG5cbi5ub1BhZGRpbmcge1xuICBwYWRkaW5nOiAwO1xufSJdfQ== */";
|
|
78
|
-
var styles$
|
|
79
|
-
styleInject(css_248z$
|
|
97
|
+
var css_248z$l = ".Card-module_card__r2DB2{background:linear-gradient(135deg,var(--color-surface),var(--color-background));border:1px solid var(--color-border);border-radius:var(--radius-xl);overflow:hidden;position:relative;transition:all var(--transition-base)}.Card-module_card__r2DB2:before{background:linear-gradient(135deg,transparent,rgba(124,58,237,.01) 50%,rgba(20,184,166,.01));bottom:0;content:\"\";left:0;opacity:0;pointer-events:none;position:absolute;right:0;top:0;transition:opacity var(--transition-slow)}.Card-module_card__r2DB2:hover.Card-module_hoverable__X3OpS:before{opacity:1}.Card-module_card__r2DB2:hover.Card-module_hoverable__X3OpS{border-color:var(--color-primary-light);box-shadow:var(--shadow-xl);transform:translateY(-4px)}.Card-module_elevated__hGV6-{background:linear-gradient(145deg,var(--color-surface),var(--color-background));border:none;box-shadow:var(--shadow-lg)}.Card-module_elevated__hGV6-:hover.Card-module_hoverable__X3OpS{box-shadow:var(--shadow-2xl);transform:translateY(-6px)}.Card-module_outlined__ngRag{background:var(--color-background);border:1px solid var(--color-border);box-shadow:none;position:relative}.Card-module_outlined__ngRag:after{background:linear-gradient(135deg,var(--color-primary),var(--color-secondary));border-radius:var(--radius-xl);bottom:-1px;content:\"\";left:-1px;opacity:0;position:absolute;right:-1px;top:-1px;transition:opacity var(--transition-base);z-index:-1}.Card-module_outlined__ngRag:hover.Card-module_hoverable__X3OpS{border-color:transparent;transform:translateY(-2px)}.Card-module_outlined__ngRag:hover.Card-module_hoverable__X3OpS:after{opacity:1}.Card-module_flat__xy-xt{background:var(--color-background-secondary);border:none;box-shadow:none}.Card-module_flat__xy-xt:hover.Card-module_hoverable__X3OpS{background:var(--color-background-tertiary);box-shadow:var(--shadow-sm)}.Card-module_imageContainer__L4ma6{margin:-1px -1px 0;overflow:hidden;position:relative}.Card-module_image__bQBt6{display:block;height:auto;transition:transform var(--transition-slow);width:100%}.Card-module_card__r2DB2:hover.Card-module_hoverable__X3OpS .Card-module_image__bQBt6{transform:scale(1.05)}.Card-module_header__0dtj3{background:linear-gradient(180deg,var(--color-background) 0,var(--color-background-secondary) 100%);border-bottom:1px solid var(--color-border);padding:var(--spacing-lg)}.Card-module_body__K7eL3{padding:var(--spacing-lg)}.Card-module_footer__L5wO-{align-items:center;background:var(--color-background-secondary);border-top:1px solid var(--color-border);display:flex;gap:var(--spacing-md);justify-content:flex-end;padding:var(--spacing-md) var(--spacing-lg)}.Card-module_title__pW9g8{color:var(--color-text);font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);letter-spacing:var(--letter-spacing-tight);line-height:var(--line-height-tight);margin:0}.Card-module_subtitle__gejH4{color:var(--color-text-secondary);font-size:var(--font-size-sm);line-height:var(--line-height-relaxed);margin:var(--spacing-xs) 0 0}.Card-module_clickable__Y6fm8{cursor:pointer;user-select:none}.Card-module_clickable__Y6fm8:active{box-shadow:var(--shadow-md);transform:translateY(0)}.Card-module_padding__wtyDo{padding:var(--spacing-lg)}.Card-module_noPadding__r5Qq0{padding:0}.Card-module_loading__S4Wng{overflow:hidden;position:relative}.Card-module_loading__S4Wng:after{animation:Card-module_shimmer__Pi3ap 2s infinite;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);content:\"\";height:100%;left:-100%;position:absolute;top:0;width:100%}@keyframes Card-module_shimmer__Pi3ap{to{left:100%}}[data-theme=dark] .Card-module_card__r2DB2{background:linear-gradient(135deg,var(--color-surface),var(--color-background-secondary))}[data-theme=dark] .Card-module_card__r2DB2:before{background:linear-gradient(135deg,transparent,rgba(167,139,250,.02) 50%,rgba(45,212,191,.02))}[data-theme=dark] .Card-module_elevated__hGV6-{background:linear-gradient(145deg,var(--color-surface),var(--color-background-secondary))}[data-theme=dark] .Card-module_header__0dtj3{background:linear-gradient(180deg,var(--color-background-secondary) 0,var(--color-background-tertiary) 100%)}[data-theme=dark] .Card-module_footer__L5wO-{background:var(--color-background-tertiary)}@media (max-width:768px){.Card-module_card__r2DB2{border-radius:var(--radius-lg)}.Card-module_body__K7eL3,.Card-module_footer__L5wO-,.Card-module_header__0dtj3{padding:var(--spacing-md)}.Card-module_title__pW9g8{font-size:var(--font-size-lg)}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNhcmQubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5QkFDQywrRUFHQyxDQUNELG9DQUFxQyxDQUNyQyw4QkFBK0IsQ0FDL0IsZUFBZ0IsQ0FFaEIsaUJBQWtCLENBRGxCLHFDQUVELENBR0EsZ0NBT0MsNEZBS0MsQ0FORCxRQUFTLENBTFQsVUFBVyxDQUdYLE1BQU8sQ0FVUCxTQUFVLENBRFYsbUJBQW9CLENBWHBCLGlCQUFrQixDQUdsQixPQUFRLENBRlIsS0FBTSxDQVlOLHlDQUNELENBRUEsbUVBQ0MsU0FDRCxDQUVBLDREQUdDLHVDQUF3QyxDQUR4QywyQkFBNEIsQ0FENUIsMEJBR0QsQ0FHQSw2QkFHQywrRUFJQyxDQUxELFdBQVksQ0FEWiwyQkFPRCxDQUVBLGdFQUNDLDRCQUE2QixDQUM3QiwwQkFDRCxDQUdBLDZCQUNDLGtDQUFtQyxDQUNuQyxvQ0FBcUMsQ0FDckMsZUFBZ0IsQ0FDaEIsaUJBQ0QsQ0FFQSxtQ0FPQyw4RUFJQyxDQUNELDhCQUErQixDQU4vQixXQUFZLENBTFosVUFBVyxDQUdYLFNBQVUsQ0FTVixTQUFVLENBWFYsaUJBQWtCLENBR2xCLFVBQVcsQ0FGWCxRQUFTLENBWVQseUNBQTBDLENBRDFDLFVBRUQsQ0FFQSxnRUFDQyx3QkFBeUIsQ0FDekIsMEJBQ0QsQ0FFQSxzRUFDQyxTQUNELENBR0EseUJBR0MsNENBQTZDLENBRjdDLFdBQVksQ0FDWixlQUVELENBRUEsNERBQ0MsMkNBQTRDLENBQzVDLDJCQUNELENBR0EsbUNBR0Msa0JBQXdCLENBRHhCLGVBQWdCLENBRGhCLGlCQUdELENBRUEsMEJBR0MsYUFBYyxDQURkLFdBQVksQ0FFWiwyQ0FBNEMsQ0FINUMsVUFJRCxDQUVBLHNGQUNDLHFCQUNELENBR0EsMkJBR0MsbUdBSUMsQ0FMRCwyQ0FBNEMsQ0FENUMseUJBT0QsQ0FHQSx5QkFDQyx5QkFDRCxDQUdBLDJCQUlDLGtCQUFtQixDQUduQiw0Q0FBNkMsQ0FMN0Msd0NBQXlDLENBQ3pDLFlBQWEsQ0FHYixxQkFBc0IsQ0FEdEIsd0JBQXlCLENBSnpCLDJDQU9ELENBR0EsMEJBSUMsdUJBQXdCLENBRnhCLDZCQUE4QixDQUM5QixtQ0FBb0MsQ0FHcEMsMENBQTJDLENBRDNDLG9DQUFxQyxDQUpyQyxRQU1ELENBR0EsNkJBR0MsaUNBQWtDLENBRGxDLDZCQUE4QixDQUU5QixzQ0FBdUMsQ0FIdkMsNEJBSUQsQ0FHQSw4QkFDQyxjQUFlLENBQ2YsZ0JBQ0QsQ0FFQSxxQ0FFQywyQkFBNEIsQ0FENUIsdUJBRUQsQ0FHQSw0QkFDQyx5QkFDRCxDQUVBLDhCQUNDLFNBQ0QsQ0FHQSw0QkFFQyxlQUFnQixDQURoQixpQkFFRCxDQUVBLGtDQWFDLGdEQUE4QixDQU45Qiw0RUFLQyxDQVhELFVBQVcsQ0FLWCxXQUFZLENBRlosVUFBVyxDQUZYLGlCQUFrQixDQUNsQixLQUFNLENBRU4sVUFTRCxDQUVBLHNDQUNDLEdBQ0MsU0FDRCxDQUNELENBR0EsMkNBQ0MseUZBSUQsQ0FFQSxrREFDQyw2RkFNRCxDQUVBLCtDQUNDLHlGQUtELENBRUEsNkNBQ0MsNEdBS0QsQ0FFQSw2Q0FDQywyQ0FDRCxDQUdBLHlCQUNDLHlCQUNDLDhCQUNELENBRUEsK0VBR0MseUJBQ0QsQ0FFQSwwQkFDQyw2QkFDRCxDQUNEIiwiZmlsZSI6IkNhcmQubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jYXJkIHtcblx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG5cdFx0dmFyKC0tY29sb3Itc3VyZmFjZSksIFxuXHRcdHZhcigtLWNvbG9yLWJhY2tncm91bmQpXG5cdCk7XG5cdGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG5cdGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy14bCk7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi8qIFN1YnRsZSBncmFkaWVudCBvdmVybGF5IGZvciBkZXB0aCAqL1xuLmNhcmQ6OmJlZm9yZSB7XG5cdGNvbnRlbnQ6ICcnO1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHRvcDogMDtcblx0bGVmdDogMDtcblx0cmlnaHQ6IDA7XG5cdGJvdHRvbTogMDtcblx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuXHRcdDEzNWRlZyxcblx0XHR0cmFuc3BhcmVudCAwJSxcblx0XHRyZ2JhKDEyNCwgNTgsIDIzNywgMC4wMSkgNTAlLFxuXHRcdHJnYmEoMjAsIDE4NCwgMTY2LCAwLjAxKSAxMDAlXG5cdCk7XG5cdHBvaW50ZXItZXZlbnRzOiBub25lO1xuXHRvcGFjaXR5OiAwO1xuXHR0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXRyYW5zaXRpb24tc2xvdyk7XG59XG5cbi5jYXJkOmhvdmVyLmhvdmVyYWJsZTo6YmVmb3JlIHtcblx0b3BhY2l0eTogMTtcbn1cblxuLmNhcmQ6aG92ZXIuaG92ZXJhYmxlIHtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpO1xuXHRib3gtc2hhZG93OiB2YXIoLS1zaGFkb3cteGwpO1xuXHRib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktbGlnaHQpO1xufVxuXG4vKiBFbGV2YXRlZCB2YXJpYW50IC0gU3Ryb25nIHNoYWRvd3MgKi9cbi5lbGV2YXRlZCB7XG5cdGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZyk7XG5cdGJvcmRlcjogbm9uZTtcblx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuXHRcdDE0NWRlZyxcblx0XHR2YXIoLS1jb2xvci1zdXJmYWNlKSxcblx0XHR2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKVxuXHQpO1xufVxuXG4uZWxldmF0ZWQ6aG92ZXIuaG92ZXJhYmxlIHtcblx0Ym94LXNoYWRvdzogdmFyKC0tc2hhZG93LTJ4bCk7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNnB4KTtcbn1cblxuLyogT3V0bGluZWQgdmFyaWFudCAtIE1pbmltYWwgd2l0aCBncmFkaWVudCBib3JkZXIgb24gaG92ZXIgKi9cbi5vdXRsaW5lZCB7XG5cdGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQpO1xuXHRib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXIpO1xuXHRib3gtc2hhZG93OiBub25lO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5vdXRsaW5lZDo6YWZ0ZXIge1xuXHRjb250ZW50OiAnJztcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IC0xcHg7XG5cdGxlZnQ6IC0xcHg7XG5cdHJpZ2h0OiAtMXB4O1xuXHRib3R0b206IC0xcHg7XG5cdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcblx0XHQxMzVkZWcsXG5cdFx0dmFyKC0tY29sb3ItcHJpbWFyeSksXG5cdFx0dmFyKC0tY29sb3Itc2Vjb25kYXJ5KVxuXHQpO1xuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteGwpO1xuXHRvcGFjaXR5OiAwO1xuXHR6LWluZGV4OiAtMTtcblx0dHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4ub3V0bGluZWQ6aG92ZXIuaG92ZXJhYmxlIHtcblx0Ym9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xufVxuXG4ub3V0bGluZWQ6aG92ZXIuaG92ZXJhYmxlOjphZnRlciB7XG5cdG9wYWNpdHk6IDE7XG59XG5cbi8qIEZsYXQgdmFyaWFudCAtIE5vIGJvcmRlcnMgb3Igc2hhZG93cyAqL1xuLmZsYXQge1xuXHRib3JkZXI6IG5vbmU7XG5cdGJveC1zaGFkb3c6IG5vbmU7XG5cdGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KTtcbn1cblxuLmZsYXQ6aG92ZXIuaG92ZXJhYmxlIHtcblx0YmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSk7XG5cdGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1zbSk7XG59XG5cbi8qIEltYWdlIGNvbnRhaW5lciAqL1xuLmltYWdlQ29udGFpbmVyIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuXHRtYXJnaW46IC0xcHggLTFweCAwIC0xcHg7IC8qIENvbXBlbnNhdGUgZm9yIGNhcmQgYm9yZGVyICovXG59XG5cbi5pbWFnZSB7XG5cdHdpZHRoOiAxMDAlO1xuXHRoZWlnaHQ6IGF1dG87XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdHJhbnNpdGlvbi1zbG93KTtcbn1cblxuLmNhcmQ6aG92ZXIuaG92ZXJhYmxlIC5pbWFnZSB7XG5cdHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG59XG5cbi8qIEhlYWRlciBzZWN0aW9uICovXG4uaGVhZGVyIHtcblx0cGFkZGluZzogdmFyKC0tc3BhY2luZy1sZyk7XG5cdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXIpO1xuXHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXG5cdFx0MTgwZGVnLFxuXHRcdHZhcigtLWNvbG9yLWJhY2tncm91bmQpIDAlLFxuXHRcdHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KSAxMDAlXG5cdCk7XG59XG5cbi8qIEJvZHkgc2VjdGlvbiAqL1xuLmJvZHkge1xuXHRwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLWxnKTtcbn1cblxuLyogRm9vdGVyIHNlY3Rpb24gKi9cbi5mb290ZXIge1xuXHRwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLW1kKSB2YXIoLS1zcGFjaW5nLWxnKTtcblx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cdGdhcDogdmFyKC0tc3BhY2luZy1tZCk7XG5cdGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KTtcbn1cblxuLyogVGl0bGUgc3R5bGluZyAqL1xuLnRpdGxlIHtcblx0bWFyZ2luOiAwO1xuXHRmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14bCk7XG5cdGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcblx0Y29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuXHRsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtdGlnaHQpO1xuXHRsZXR0ZXItc3BhY2luZzogdmFyKC0tbGV0dGVyLXNwYWNpbmctdGlnaHQpO1xufVxuXG4vKiBTdWJ0aXRsZSBzdHlsaW5nICovXG4uc3VidGl0bGUge1xuXHRtYXJnaW46IHZhcigtLXNwYWNpbmcteHMpIDAgMDtcblx0Zm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuXHRjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuXHRsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtcmVsYXhlZCk7XG59XG5cbi8qIENsaWNrYWJsZSBzdGF0ZSAqL1xuLmNsaWNrYWJsZSB7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0dXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi5jbGlja2FibGU6YWN0aXZlIHtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuXHRib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbWQpO1xufVxuXG4vKiBQYWRkaW5nIHV0aWxpdGllcyAqL1xuLnBhZGRpbmcge1xuXHRwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLWxnKTtcbn1cblxuLm5vUGFkZGluZyB7XG5cdHBhZGRpbmc6IDA7XG59XG5cbi8qIExvYWRpbmcgc3RhdGUgKi9cbi5sb2FkaW5nIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ubG9hZGluZzo6YWZ0ZXIge1xuXHRjb250ZW50OiAnJztcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDA7XG5cdGxlZnQ6IC0xMDAlO1xuXHR3aWR0aDogMTAwJTtcblx0aGVpZ2h0OiAxMDAlO1xuXHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXG5cdFx0OTBkZWcsXG5cdFx0dHJhbnNwYXJlbnQsXG5cdFx0cmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpLFxuXHRcdHRyYW5zcGFyZW50XG5cdCk7XG5cdGFuaW1hdGlvbjogc2hpbW1lciAycyBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBzaGltbWVyIHtcblx0MTAwJSB7XG5cdFx0bGVmdDogMTAwJTtcblx0fVxufVxuXG4vKiBEYXJrIG1vZGUgYWRqdXN0bWVudHMgKi9cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAuY2FyZCB7XG5cdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuXHRcdHZhcigtLWNvbG9yLXN1cmZhY2UpLCBcblx0XHR2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSlcblx0KTtcbn1cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5jYXJkOjpiZWZvcmUge1xuXHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXG5cdFx0MTM1ZGVnLFxuXHRcdHRyYW5zcGFyZW50IDAlLFxuXHRcdHJnYmEoMTY3LCAxMzksIDI1MCwgMC4wMikgNTAlLFxuXHRcdHJnYmEoNDUsIDIxMiwgMTkxLCAwLjAyKSAxMDAlXG5cdCk7XG59XG5cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAuZWxldmF0ZWQge1xuXHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXG5cdFx0MTQ1ZGVnLFxuXHRcdHZhcigtLWNvbG9yLXN1cmZhY2UpLFxuXHRcdHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KVxuXHQpO1xufVxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLmhlYWRlciB7XG5cdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcblx0XHQxODBkZWcsXG5cdFx0dmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpIDAlLFxuXHRcdHZhcigtLWNvbG9yLWJhY2tncm91bmQtdGVydGlhcnkpIDEwMCVcblx0KTtcbn1cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5mb290ZXIge1xuXHRiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXRlcnRpYXJ5KTtcbn1cblxuLyogUmVzcG9uc2l2ZSBhZGp1c3RtZW50cyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG5cdC5jYXJkIHtcblx0XHRib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuXHR9XG5cdFxuXHQuaGVhZGVyLFxuXHQuYm9keSxcblx0LmZvb3RlciB7XG5cdFx0cGFkZGluZzogdmFyKC0tc3BhY2luZy1tZCk7XG5cdH1cblx0XG5cdC50aXRsZSB7XG5cdFx0Zm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xuXHR9XG59Il19 */";
|
|
98
|
+
var styles$j = {"card":"Card-module_card__r2DB2","hoverable":"Card-module_hoverable__X3OpS","elevated":"Card-module_elevated__hGV6-","outlined":"Card-module_outlined__ngRag","flat":"Card-module_flat__xy-xt","imageContainer":"Card-module_imageContainer__L4ma6","image":"Card-module_image__bQBt6","header":"Card-module_header__0dtj3","body":"Card-module_body__K7eL3","footer":"Card-module_footer__L5wO-","title":"Card-module_title__pW9g8","subtitle":"Card-module_subtitle__gejH4","clickable":"Card-module_clickable__Y6fm8","padding":"Card-module_padding__wtyDo","noPadding":"Card-module_noPadding__r5Qq0","loading":"Card-module_loading__S4Wng","shimmer":"Card-module_shimmer__Pi3ap"};
|
|
99
|
+
styleInject(css_248z$l);
|
|
80
100
|
|
|
81
101
|
const Card = ({ variant = 'elevated', hoverable = false, clickable = false, padding = true, image, imageAlt = '', title, subtitle, header, footer, children, className = '', onClick, motionProps, ...rest }) => {
|
|
82
102
|
const cardClasses = [
|
|
83
|
-
styles$
|
|
84
|
-
styles$
|
|
85
|
-
hoverable && styles$
|
|
86
|
-
clickable && styles$
|
|
87
|
-
!padding && styles$
|
|
103
|
+
styles$j.card,
|
|
104
|
+
styles$j[variant],
|
|
105
|
+
hoverable && styles$j.hoverable,
|
|
106
|
+
clickable && styles$j.clickable,
|
|
107
|
+
!padding && styles$j.noPadding,
|
|
88
108
|
className
|
|
89
109
|
].filter(Boolean).join(' ');
|
|
90
|
-
const cardContent = (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [image && (jsxRuntime.jsx("div", { className: styles$
|
|
110
|
+
const cardContent = (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [image && (jsxRuntime.jsx("div", { className: styles$j.imageContainer, children: jsxRuntime.jsx("img", { src: image, alt: imageAlt, className: styles$j.image }) })), header && jsxRuntime.jsx("div", { className: styles$j.header, children: header }), (title || subtitle) && !header && (jsxRuntime.jsxs("div", { className: styles$j.header, children: [title && jsxRuntime.jsx("h3", { className: styles$j.title, children: title }), subtitle && jsxRuntime.jsx("p", { className: styles$j.subtitle, children: subtitle })] })), children && (jsxRuntime.jsx("div", { className: padding ? styles$j.body : undefined, children: children })), footer && jsxRuntime.jsx("div", { className: styles$j.footer, children: footer })] }));
|
|
91
111
|
return (jsxRuntime.jsx(framerMotion.motion.div, { className: cardClasses, onClick: clickable ? onClick : undefined, whileHover: hoverable ? { y: -4 } : undefined, transition: { type: "spring", stiffness: 400, damping: 17 }, ...motionProps, ...rest, children: cardContent }));
|
|
92
112
|
};
|
|
93
113
|
|
|
94
|
-
var css_248z$1 = ".Modal-module_overlay__dd9h1{align-items:center;background-color:rgba(0,0,0,.5);bottom:0;display:flex;justify-content:center;left:0;padding:var(--spacing-lg);position:fixed;right:0;top:0;z-index:var(--z-index-modal-backdrop)}.Modal-module_modal__aD7aP{background-color:var(--color-background);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-xl);display:flex;flex-direction:column;max-height:90vh;max-width:90vw;overflow:auto;position:relative;z-index:var(--z-index-modal)}.Modal-module_small__Xlbt5{width:400px}.Modal-module_medium__OnN1W{width:600px}.Modal-module_large__p-8Oq{width:800px}.Modal-module_fullscreen__o84Xi{border-radius:0;height:100vh;max-height:100vh;max-width:100vw;width:100vw}.Modal-module_header__ILG9i{align-items:center;border-bottom:var(--border-width) solid var(--border-color);display:flex;flex-shrink:0;justify-content:space-between;padding:var(--spacing-lg)}.Modal-module_title__A5OeE{color:var(--color-text);font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);margin:0}.Modal-module_closeButton__3LpSf{align-items:center;background:none;border:none;border-radius:var(--border-radius-md);color:var(--color-text-secondary);cursor:pointer;display:flex;font-size:var(--font-size-xl);justify-content:center;padding:var(--spacing-xs);transition:all var(--transition-fast)}.Modal-module_closeButton__3LpSf:hover{background-color:var(--color-surface);color:var(--color-text)}.Modal-module_body__lVhql{flex:1;overflow-y:auto;padding:var(--spacing-lg)}.Modal-module_footer__rro2w{align-items:center;border-top:var(--border-width) solid var(--border-color);display:flex;flex-shrink:0;gap:var(--spacing-sm);justify-content:flex-end;padding:var(--spacing-lg)}.Modal-module_centered__UfBxf{text-align:center}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1vZGFsLm1vZHVsZS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkJBUUUsa0JBQW1CLENBRm5CLCtCQUFvQyxDQURwQyxRQUFTLENBRVQsWUFBYSxDQUViLHNCQUF1QixDQU52QixNQUFPLENBUVAseUJBQTBCLENBVjFCLGNBQWUsQ0FHZixPQUFRLENBRlIsS0FBTSxDQVFOLHFDQUVGLENBRUEsMkJBQ0Usd0NBQXlDLENBQ3pDLHFDQUFzQyxDQUN0QywyQkFBNEIsQ0FNNUIsWUFBYSxDQUNiLHFCQUFzQixDQUx0QixlQUFnQixDQURoQixjQUFlLENBRWYsYUFBYyxDQUNkLGlCQUFrQixDQUNsQiw0QkFHRixDQUVBLDJCQUNFLFdBQ0YsQ0FFQSw0QkFDRSxXQUNGLENBRUEsMkJBQ0UsV0FDRixDQUVBLGdDQUtFLGVBQWdCLENBSGhCLFlBQWEsQ0FFYixnQkFBaUIsQ0FEakIsZUFBZ0IsQ0FGaEIsV0FLRixDQUVBLDRCQUlFLGtCQUFtQixDQUZuQiwyREFBNEQsQ0FDNUQsWUFBYSxDQUdiLGFBQWMsQ0FEZCw2QkFBOEIsQ0FKOUIseUJBTUYsQ0FFQSwyQkFJRSx1QkFBd0IsQ0FGeEIsNkJBQThCLENBQzlCLHVDQUF3QyxDQUZ4QyxRQUlGLENBRUEsaUNBUUUsa0JBQW1CLENBUG5CLGVBQWdCLENBQ2hCLFdBQVksQ0FRWixxQ0FBc0MsQ0FMdEMsaUNBQWtDLENBRGxDLGNBQWUsQ0FHZixZQUFhLENBSmIsNkJBQThCLENBTTlCLHNCQUF1QixDQUh2Qix5QkFBMEIsQ0FLMUIscUNBQ0YsQ0FFQSx1Q0FDRSxxQ0FBc0MsQ0FDdEMsdUJBQ0YsQ0FFQSwwQkFFRSxNQUFPLENBQ1AsZUFBZ0IsQ0FGaEIseUJBR0YsQ0FFQSw0QkFJRSxrQkFBbUIsQ0FGbkIsd0RBQXlELENBQ3pELFlBQWEsQ0FJYixhQUFjLENBRGQscUJBQXNCLENBRHRCLHdCQUF5QixDQUp6Qix5QkFPRixDQUVBLDhCQUNFLGlCQUNGIiwiZmlsZSI6Ik1vZGFsLm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIub3ZlcmxheSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB6LWluZGV4OiB2YXIoLS16LWluZGV4LW1vZGFsLWJhY2tkcm9wKTtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1sZyk7XG59XG5cbi5tb2RhbCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWJhY2tncm91bmQpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzLWxnKTtcbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LXhsKTtcbiAgbWF4LXdpZHRoOiA5MHZ3O1xuICBtYXgtaGVpZ2h0OiA5MHZoO1xuICBvdmVyZmxvdzogYXV0bztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiB2YXIoLS16LWluZGV4LW1vZGFsKTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLnNtYWxsIHtcbiAgd2lkdGg6IDQwMHB4O1xufVxuXG4ubWVkaXVtIHtcbiAgd2lkdGg6IDYwMHB4O1xufVxuXG4ubGFyZ2Uge1xuICB3aWR0aDogODAwcHg7XG59XG5cbi5mdWxsc2NyZWVuIHtcbiAgd2lkdGg6IDEwMHZ3O1xuICBoZWlnaHQ6IDEwMHZoO1xuICBtYXgtd2lkdGg6IDEwMHZ3O1xuICBtYXgtaGVpZ2h0OiAxMDB2aDtcbiAgYm9yZGVyLXJhZGl1czogMDtcbn1cblxuLmhlYWRlciB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctbGcpO1xuICBib3JkZXItYm90dG9tOiB2YXIoLS1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi50aXRsZSB7XG4gIG1hcmdpbjogMDtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteGwpO1xuICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG59XG5cbi5jbG9zZUJ1dHRvbiB7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteGwpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNpbmcteHMpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cy1tZCk7XG4gIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4uY2xvc2VCdXR0b246aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1zdXJmYWNlKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xufVxuXG4uYm9keSB7XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctbGcpO1xuICBmbGV4OiAxO1xuICBvdmVyZmxvdy15OiBhdXRvO1xufVxuXG4uZm9vdGVyIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1sZyk7XG4gIGJvcmRlci10b3A6IHZhcigtLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgZ2FwOiB2YXIoLS1zcGFjaW5nLXNtKTtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5jZW50ZXJlZCB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn0iXX0= */";
|
|
95
|
-
var styles$
|
|
96
|
-
styleInject(css_248z$
|
|
114
|
+
var css_248z$k = ".TextInput-module_textInput__b2LVM{margin-bottom:var(--spacing-lg);position:relative}.TextInput-module_textInput__b2LVM label{color:var(--color-text);display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-wide);margin-bottom:var(--spacing-sm);transition:color var(--transition-base)}.TextInput-module_textInput__b2LVM input{-webkit-appearance:none;background:linear-gradient(135deg,var(--color-background),var(--color-background-secondary));border:2px solid var(--color-border);border-radius:var(--radius-lg);box-sizing:border-box;color:var(--color-text);display:block;font-size:var(--font-size-base);font-weight:var(--font-weight-medium);min-height:44px;outline:none;padding:var(--spacing-sm) var(--spacing-md);transition:all var(--transition-base);width:100%}.TextInput-module_textInput__b2LVM input:hover:not(:focus):not(:disabled){background:var(--color-background);border-color:var(--color-border-hover);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.TextInput-module_textInput__b2LVM input:focus{background:var(--color-background);border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(124,58,237,.1);transform:translateY(-2px)}.TextInput-module_textInput__b2LVM input::placeholder{color:var(--color-text-secondary);opacity:.6}.TextInput-module_textInput__b2LVM input:disabled{background:var(--color-background-tertiary);border-color:var(--color-border);color:var(--color-text-tertiary);cursor:not-allowed;opacity:.6;transform:none}.TextInput-module_textInput__b2LVM input[type=password]{font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,monospace;letter-spacing:.15em}.TextInput-module_textInput__b2LVM input[type=number]::-webkit-inner-spin-button,.TextInput-module_textInput__b2LVM input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.TextInput-module_textInput__b2LVM input[type=number]{-moz-appearance:textfield}.TextInput-module_required__7uLiM{color:var(--color-error);font-weight:var(--font-weight-bold);margin-left:4px}.TextInput-module_inputError__QD0a-{animation:TextInput-module_shake__qh8VR .3s cubic-bezier(.36,.07,.19,.97) both;background:linear-gradient(135deg,var(--color-error-bg),var(--color-background))!important;border-color:var(--color-error)!important}.TextInput-module_inputError__QD0a-:focus{box-shadow:0 0 0 3px rgba(244,63,94,.15)!important}.TextInput-module_errorMessage__nIDoQ{align-items:center;animation:TextInput-module_slideDown__YbEGs .3s ease-out;color:var(--color-error);display:flex;font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);gap:var(--spacing-xs);margin-top:var(--spacing-xs);position:absolute}.TextInput-module_errorMessage__nIDoQ:before{content:\"⚠\";font-size:1.2em}@keyframes TextInput-module_shake__qh8VR{10%,90%{transform:translateX(-1px)}20%,80%{transform:translateX(2px)}30%,50%,70%{transform:translateX(-3px)}40%,60%{transform:translateX(3px)}}@keyframes TextInput-module_slideDown__YbEGs{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.TextInput-module_success__KbSS3 input{border-color:var(--color-success)!important}.TextInput-module_success__KbSS3:after{animation:TextInput-module_checkIn__d-7t6 .3s ease-out;color:var(--color-success);content:\"✓\";font-size:var(--font-size-lg);font-weight:700;pointer-events:none;position:absolute;right:var(--spacing-md);top:50%;transform:translateY(-50%)}@keyframes TextInput-module_checkIn__d-7t6{0%{opacity:0;transform:translateY(-50%) scale(0) rotate(-45deg)}to{opacity:1;transform:translateY(-50%) scale(1) rotate(0)}}.TextInput-module_loading__qXaca input{animation:TextInput-module_loading__qXaca 2s ease-in-out infinite;background-image:linear-gradient(90deg,var(--color-background) 0,rgba(124,58,237,.05) 50%,var(--color-background) 100%);background-size:200% 100%}@keyframes TextInput-module_loading__qXaca{0%{background-position:200% 0}to{background-position:-200% 0}}.TextInput-module_withIcon__-8swm{position:relative}.TextInput-module_withIcon__-8swm input{padding-left:44px}.TextInput-module_inputIcon__B4czN{color:var(--color-text-secondary);height:20px;left:var(--spacing-md);pointer-events:none;position:absolute;top:50%;transform:translateY(-50%);transition:color var(--transition-base);width:20px}.TextInput-module_textInput__b2LVM input:focus~.TextInput-module_inputIcon__B4czN{color:var(--color-primary)}.TextInput-module_withAction__JD3ku input{padding-right:100px}.TextInput-module_actionButton__zFJel{background:linear-gradient(135deg,var(--color-primary),var(--color-primary-hover));border:none;border-radius:var(--radius-md);color:var(--color-text-inverse);cursor:pointer;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);padding:6px 12px;position:absolute;right:8px;top:50%;transform:translateY(-50%);transition:all var(--transition-base)}.TextInput-module_actionButton__zFJel:hover{background:linear-gradient(135deg,var(--color-primary-hover),var(--color-primary-active));transform:translateY(-50%) scale(1.05)}.TextInput-module_actionButton__zFJel:active{transform:translateY(-50%) scale(.95)}[data-theme=dark] .TextInput-module_textInput__b2LVM input{background:linear-gradient(135deg,var(--color-background-secondary),var(--color-background-tertiary));border-color:var(--color-border)}[data-theme=dark] .TextInput-module_textInput__b2LVM input:hover:not(:focus):not(:disabled){background:var(--color-background-secondary);border-color:var(--color-border-hover)}[data-theme=dark] .TextInput-module_textInput__b2LVM input:focus{background:var(--color-background-secondary);border-color:var(--color-primary-light);box-shadow:0 0 0 3px rgba(167,139,250,.1)}[data-theme=dark] .TextInput-module_inputError__QD0a-{background:linear-gradient(135deg,rgba(244,63,94,.1),var(--color-background-secondary))!important}[data-theme=dark] .TextInput-module_inputIcon__B4czN{color:var(--color-text-tertiary)}[data-theme=dark] .TextInput-module_textInput__b2LVM input:focus~.TextInput-module_inputIcon__B4czN{color:var(--color-primary-light)}@media (max-width:768px){.TextInput-module_textInput__b2LVM{margin-bottom:var(--spacing-md)}.TextInput-module_textInput__b2LVM label{font-size:var(--font-size-base);margin-bottom:var(--spacing-xs)}.TextInput-module_textInput__b2LVM input{border-radius:var(--radius-md);font-size:16px;min-height:48px;padding:var(--spacing-md)}.TextInput-module_withIcon__-8swm input{padding-left:48px}.TextInput-module_inputIcon__B4czN{height:24px;left:var(--spacing-md);width:24px}.TextInput-module_errorMessage__nIDoQ{font-size:var(--font-size-sm);margin-top:var(--spacing-sm);position:static}}@media (prefers-contrast:high){.TextInput-module_textInput__b2LVM input{border-width:3px}.TextInput-module_textInput__b2LVM input:focus{outline:2px solid var(--color-primary);outline-offset:2px}}@media (prefers-reduced-motion:reduce){.TextInput-module_errorMessage__nIDoQ,.TextInput-module_inputIcon__B4czN,.TextInput-module_textInput__b2LVM input{animation:none;transition:none}}.TextInput-module_textInput__b2LVM input:-webkit-autofill,.TextInput-module_textInput__b2LVM input:-webkit-autofill:focus,.TextInput-module_textInput__b2LVM input:-webkit-autofill:hover{-webkit-text-fill-color:var(--color-text);border:2px solid var(--color-primary);-webkit-box-shadow:0 0 0 1000px var(--color-background) inset;transition:background-color 5000s ease-in-out 0s}.TextInput-module_textInput__b2LVM input[type=search]::-webkit-search-cancel-button,.TextInput-module_textInput__b2LVM input[type=search]::-webkit-search-decoration,.TextInput-module_textInput__b2LVM input[type=search]::-webkit-search-results-button,.TextInput-module_textInput__b2LVM input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRleHRJbnB1dC5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1DQUNJLCtCQUFnQyxDQUNoQyxpQkFDSixDQUVBLHlDQUlJLHVCQUF3QixDQUh4QixhQUFjLENBQ2QsNkJBQThCLENBQzlCLHVDQUF3QyxDQUd4Qyx5Q0FBMEMsQ0FEMUMsK0JBQWdDLENBRWhDLHVDQUNKLENBRUEseUNBZUksdUJBQXdCLENBVnhCLDRGQUdDLENBTEQsb0NBQXFDLENBQ3JDLDhCQUErQixDQWEvQixxQkFBc0IsQ0FOdEIsdUJBQXdCLENBQ3hCLGFBQWMsQ0FIZCwrQkFBZ0MsQ0FDaEMscUNBQXNDLENBSXRDLGVBQWdCLENBRWhCLFlBQWEsQ0FkYiwyQ0FBNEMsQ0FXNUMscUNBQXNDLENBWnRDLFVBaUJKLENBRUEsMEVBRUksa0NBQW1DLENBRG5DLHNDQUF1QyxDQUV2QywyQkFBNEIsQ0FDNUIsMEJBQ0osQ0FFQSwrQ0FFSSxrQ0FBbUMsQ0FEbkMsaUNBQWtDLENBRWxDLHdDQUE2QyxDQUM3QywwQkFDSixDQUVBLHNEQUNJLGlDQUFrQyxDQUNsQyxVQUNKLENBRUEsa0RBQ0ksMkNBQTRDLENBQzVDLGdDQUFpQyxDQUNqQyxnQ0FBaUMsQ0FDakMsa0JBQW1CLENBQ25CLFVBQVksQ0FDWixjQUNKLENBR0Esd0RBQ0ksdUVBQW1GLENBQ25GLG9CQUNKLENBR0Esa0tBRUksdUJBQXdCLENBQ3hCLFFBQ0osQ0FFQSxzREFDSSx5QkFDSixDQUdBLGtDQUNJLHdCQUF5QixDQUN6QixtQ0FBb0MsQ0FDcEMsZUFDSixDQUdBLG9DQU1JLDhFQUErRCxDQUovRCwwRkFHWSxDQUpaLHlDQU1KLENBRUEsMENBQ0ksa0RBQ0osQ0FFQSxzQ0FNSSxrQkFBbUIsQ0FFbkIsd0RBQWtDLENBTmxDLHdCQUF5QixDQUd6QixZQUFhLENBRmIsNkJBQThCLENBTTlCLHFDQUFzQyxDQUZ0QyxxQkFBc0IsQ0FIdEIsNEJBQTZCLENBSDdCLGlCQVNKLENBRUEsNkNBQ0ksV0FBWSxDQUNaLGVBQ0osQ0FFQSx5Q0FDSSxRQUFXLDBCQUE2QixDQUN4QyxRQUFXLHlCQUE0QixDQUN2QyxZQUFnQiwwQkFBNkIsQ0FDN0MsUUFBVyx5QkFBNEIsQ0FDM0MsQ0FFQSw2Q0FDSSxHQUNJLFNBQVUsQ0FDViwyQkFDSixDQUNBLEdBQ0ksU0FBVSxDQUNWLHVCQUNKLENBQ0osQ0FHQSx1Q0FDSSwyQ0FDSixDQUVBLHVDQVNJLHNEQUFnQyxDQUhoQywwQkFBMkIsQ0FMM0IsV0FBWSxDQU9aLDZCQUE4QixDQUQ5QixlQUFpQixDQUdqQixtQkFBb0IsQ0FScEIsaUJBQWtCLENBQ2xCLHVCQUF3QixDQUN4QixPQUFRLENBQ1IsMEJBTUosQ0FFQSwyQ0FDSSxHQUNJLFNBQVUsQ0FDVixrREFDSixDQUNBLEdBQ0ksU0FBVSxDQUNWLDZDQUNKLENBQ0osQ0FHQSx1Q0FRSSxpRUFBMEMsQ0FQMUMsdUhBS0MsQ0FDRCx5QkFFSixDQUVBLDJDQUNJLEdBQUssMEJBQTZCLENBQ2xDLEdBQU8sMkJBQThCLENBQ3pDLENBR0Esa0NBQ0ksaUJBQ0osQ0FFQSx3Q0FDSSxpQkFDSixDQUVBLG1DQUtJLGlDQUFrQyxDQUVsQyxXQUFZLENBTFosc0JBQXVCLENBTXZCLG1CQUFvQixDQVBwQixpQkFBa0IsQ0FFbEIsT0FBUSxDQUNSLDBCQUEyQixDQUszQix1Q0FBd0MsQ0FIeEMsVUFJSixDQUVBLGtGQUNJLDBCQUNKLENBR0EsMENBQ0ksbUJBQ0osQ0FFQSxzQ0FNSSxrRkFHQyxDQUVELFdBQVksQ0FDWiw4QkFBK0IsQ0FGL0IsK0JBQWdDLENBS2hDLGNBQWUsQ0FGZiw2QkFBOEIsQ0FDOUIscUNBQXNDLENBVHRDLGdCQUFpQixDQUpqQixpQkFBa0IsQ0FDbEIsU0FBVSxDQUNWLE9BQVEsQ0FDUiwwQkFBMkIsQ0FZM0IscUNBQ0osQ0FFQSw0Q0FDSSx5RkFHQyxDQUNELHNDQUNKLENBRUEsNkNBQ0kscUNBQ0osQ0FHQSwyREFDSSxxR0FHQyxDQUNELGdDQUNKLENBRUEsNEZBQ0ksNENBQTZDLENBQzdDLHNDQUNKLENBRUEsaUVBQ0ksNENBQTZDLENBQzdDLHVDQUF3QyxDQUN4Qyx5Q0FDSixDQUVBLHNEQUNJLGlHQUlKLENBRUEscURBQ0ksZ0NBQ0osQ0FFQSxvR0FDSSxnQ0FDSixDQUdBLHlCQUNJLG1DQUNJLCtCQUNKLENBRUEseUNBQ0ksK0JBQWdDLENBQ2hDLCtCQUNKLENBRUEseUNBSUksOEJBQStCLENBRC9CLGNBQWUsQ0FGZixlQUFnQixDQUNoQix5QkFHSixDQUVBLHdDQUNJLGlCQUNKLENBRUEsbUNBR0ksV0FBWSxDQUZaLHNCQUF1QixDQUN2QixVQUVKLENBRUEsc0NBQ0ksNkJBQThCLENBRTlCLDRCQUE2QixDQUQ3QixlQUVKLENBQ0osQ0FHQSwrQkFDSSx5Q0FDSSxnQkFDSixDQUVBLCtDQUNJLHNDQUF1QyxDQUN2QyxrQkFDSixDQUNKLENBR0EsdUNBQ0ksa0hBR0ksY0FBZSxDQUNmLGVBQ0osQ0FDSixDQUdBLDBMQUdJLHlDQUEwQyxDQUcxQyxxQ0FBc0MsQ0FGdEMsNkRBQWdFLENBQ2hFLGdEQUVKLENBR0EsbVZBSUksdUJBQ0oiLCJmaWxlIjoiVGV4dElucHV0Lm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIudGV4dElucHV0IHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLWxnKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi50ZXh0SW5wdXQgbGFiZWwge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLXNtKTtcbiAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tbGV0dGVyLXNwYWNpbmctd2lkZSk7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbn1cblxuLnRleHRJbnB1dCBpbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1zbSkgdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSwgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KVxuICAgICk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xuICAgIG1pbi1oZWlnaHQ6IDQ0cHg7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuLnRleHRJbnB1dCBpbnB1dDpob3Zlcjpub3QoOmZvY3VzKTpub3QoOmRpc2FibGVkKSB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1ib3JkZXItaG92ZXIpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1zbSk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xufVxuXG4udGV4dElucHV0IGlucHV0OmZvY3VzIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQpO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDEyNCwgNTgsIDIzNywgMC4xKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG59XG5cbi50ZXh0SW5wdXQgaW5wdXQ6OnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgIG9wYWNpdHk6IDAuNjtcbn1cblxuLnRleHRJbnB1dCBpbnB1dDpkaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1ib3JkZXIpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXRlcnRpYXJ5KTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIG9wYWNpdHk6IDAuNjtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG59XG5cbi8qIFBhc3N3b3JkIGlucHV0IHNwZWNpZmljICovXG4udGV4dElucHV0IGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXSB7XG4gICAgZm9udC1mYW1pbHk6ICdTRiBNb25vJywgTW9uYWNvLCAnQ2FzY2FkaWEgQ29kZScsICdSb2JvdG8gTW9ubycsIENvbnNvbGFzLCBtb25vc3BhY2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMTVlbTtcbn1cblxuLyogTnVtYmVyIGlucHV0IC0gaGlkZSBzcGlubmVycyAqL1xuLnRleHRJbnB1dCBpbnB1dFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuLnRleHRJbnB1dCBpbnB1dFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4udGV4dElucHV0IGlucHV0W3R5cGU9XCJudW1iZXJcIl0ge1xuICAgIC1tb3otYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xufVxuXG4vKiBSZXF1aXJlZCBpbmRpY2F0b3IgKi9cbi5yZXF1aXJlZCB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWVycm9yKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG4gICAgbWFyZ2luLWxlZnQ6IDRweDtcbn1cblxuLyogRXJyb3Igc3RhdGUgKi9cbi5pbnB1dEVycm9yIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWVycm9yKSAhaW1wb3J0YW50O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgICAgICB2YXIoLS1jb2xvci1lcnJvci1iZyksIFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKVxuICAgICkgIWltcG9ydGFudDtcbiAgICBhbmltYXRpb246IHNoYWtlIDAuM3MgY3ViaWMtYmV6aWVyKDAuMzYsIDAuMDcsIDAuMTksIDAuOTcpIGJvdGg7XG59XG5cbi5pbnB1dEVycm9yOmZvY3VzIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgyNDQsIDYzLCA5NCwgMC4xNSkgIWltcG9ydGFudDtcbn1cblxuLmVycm9yTWVzc2FnZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1lcnJvcik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteHMpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmcteHMpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXNwYWNpbmcteHMpO1xuICAgIGFuaW1hdGlvbjogc2xpZGVEb3duIDAuM3MgZWFzZS1vdXQ7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XG59XG5cbi5lcnJvck1lc3NhZ2U6OmJlZm9yZSB7XG4gICAgY29udGVudDogXCLimqBcIjtcbiAgICBmb250LXNpemU6IDEuMmVtO1xufVxuXG5Aa2V5ZnJhbWVzIHNoYWtlIHtcbiAgICAxMCUsIDkwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMXB4KTsgfVxuICAgIDIwJSwgODAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDJweCk7IH1cbiAgICAzMCUsIDUwJSwgNzAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zcHgpOyB9XG4gICAgNDAlLCA2MCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoM3B4KTsgfVxufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlRG93biB7XG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCk7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIH1cbn1cblxuLyogU3VjY2VzcyBzdGF0ZSAqL1xuLnN1Y2Nlc3MgaW5wdXQge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3Itc3VjY2VzcykgIWltcG9ydGFudDtcbn1cblxuLnN1Y2Nlc3M6OmFmdGVyIHtcbiAgICBjb250ZW50OiAn4pyTJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IHZhcigtLXNwYWNpbmctbWQpO1xuICAgIHRvcDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3Itc3VjY2Vzcyk7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xuICAgIGFuaW1hdGlvbjogY2hlY2tJbiAwLjNzIGVhc2Utb3V0O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG5Aa2V5ZnJhbWVzIGNoZWNrSW4ge1xuICAgIDAlIHsgXG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSBzY2FsZSgwKSByb3RhdGUoLTQ1ZGVnKTtcbiAgICB9XG4gICAgMTAwJSB7IFxuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgc2NhbGUoMSkgcm90YXRlKDApO1xuICAgIH1cbn1cblxuLyogTG9hZGluZyBzdGF0ZSAqL1xuLmxvYWRpbmcgaW5wdXQge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgOTBkZWcsXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQpIDAlLFxuICAgICAgICByZ2JhKDEyNCwgNTgsIDIzNywgMC4wNSkgNTAlLFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSAxMDAlXG4gICAgKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDIwMCUgMTAwJTtcbiAgICBhbmltYXRpb246IGxvYWRpbmcgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgbG9hZGluZyB7XG4gICAgMCUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAyMDAlIDA7IH1cbiAgICAxMDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTIwMCUgMDsgfVxufVxuXG4vKiBJY29uIHN1cHBvcnQgKi9cbi53aXRoSWNvbiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4ud2l0aEljb24gaW5wdXQge1xuICAgIHBhZGRpbmctbGVmdDogNDRweDtcbn1cblxuLmlucHV0SWNvbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IHZhcigtLXNwYWNpbmctbWQpO1xuICAgIHRvcDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMjBweDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4udGV4dElucHV0IGlucHV0OmZvY3VzIH4gLmlucHV0SWNvbiB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xufVxuXG4vKiBBY3Rpb24gYnV0dG9uIHN1cHBvcnQgKi9cbi53aXRoQWN0aW9uIGlucHV0IHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMDBweDtcbn1cblxuLmFjdGlvbkJ1dHRvbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiA4cHg7XG4gICAgdG9wOiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIHBhZGRpbmc6IDZweCAxMnB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgICAgICB2YXIoLS1jb2xvci1wcmltYXJ5KSwgXG4gICAgICAgIHZhcigtLWNvbG9yLXByaW1hcnktaG92ZXIpXG4gICAgKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1pbnZlcnNlKTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4uYWN0aW9uQnV0dG9uOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICAgICAgdmFyKC0tY29sb3ItcHJpbWFyeS1ob3ZlciksIFxuICAgICAgICB2YXIoLS1jb2xvci1wcmltYXJ5LWFjdGl2ZSlcbiAgICApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSBzY2FsZSgxLjA1KTtcbn1cblxuLmFjdGlvbkJ1dHRvbjphY3RpdmUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSBzY2FsZSgwLjk1KTtcbn1cblxuLyogRGFyayBtb2RlIGFkanVzdG1lbnRzICovXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLnRleHRJbnB1dCBpbnB1dCB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KSwgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtdGVydGlhcnkpXG4gICAgKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJvcmRlcik7XG59XG5cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAudGV4dElucHV0IGlucHV0OmhvdmVyOm5vdCg6Zm9jdXMpOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1ib3JkZXItaG92ZXIpO1xufVxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLnRleHRJbnB1dCBpbnB1dDpmb2N1cyB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1saWdodCk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMTY3LCAxMzksIDI1MCwgMC4xKTtcbn1cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5pbnB1dEVycm9yIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICAgICAgcmdiYSgyNDQsIDYzLCA5NCwgMC4xKSwgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KVxuICAgICkgIWltcG9ydGFudDtcbn1cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5pbnB1dEljb24ge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXRlcnRpYXJ5KTtcbn1cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC50ZXh0SW5wdXQgaW5wdXQ6Zm9jdXMgfiAuaW5wdXRJY29uIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1saWdodCk7XG59XG5cbi8qIE1vYmlsZSBvcHRpbWl6YXRpb25zICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAudGV4dElucHV0IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgfVxuICAgIFxuICAgIC50ZXh0SW5wdXQgbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy14cyk7XG4gICAgfVxuICAgIFxuICAgIC50ZXh0SW5wdXQgaW5wdXQge1xuICAgICAgICBtaW4taGVpZ2h0OiA0OHB4O1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4OyAvKiBQcmV2ZW50cyBpT1Mgem9vbSAqL1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICAgIH1cbiAgICBcbiAgICAud2l0aEljb24gaW5wdXQge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDQ4cHg7XG4gICAgfVxuICAgIFxuICAgIC5pbnB1dEljb24ge1xuICAgICAgICBsZWZ0OiB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgICAgICAgd2lkdGg6IDI0cHg7XG4gICAgICAgIGhlaWdodDogMjRweDtcbiAgICB9XG4gICAgXG4gICAgLmVycm9yTWVzc2FnZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICAgICAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2luZy1zbSk7XG4gICAgfVxufVxuXG4vKiBIaWdoIGNvbnRyYXN0IG1vZGUgc3VwcG9ydCAqL1xuQG1lZGlhIChwcmVmZXJzLWNvbnRyYXN0OiBoaWdoKSB7XG4gICAgLnRleHRJbnB1dCBpbnB1dCB7XG4gICAgICAgIGJvcmRlci13aWR0aDogM3B4O1xuICAgIH1cbiAgICBcbiAgICAudGV4dElucHV0IGlucHV0OmZvY3VzIHtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICAgIH1cbn1cblxuLyogUmVkdWNlZCBtb3Rpb24gKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gICAgLnRleHRJbnB1dCBpbnB1dCxcbiAgICAuaW5wdXRJY29uLFxuICAgIC5lcnJvck1lc3NhZ2Uge1xuICAgICAgICBhbmltYXRpb246IG5vbmU7XG4gICAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgfVxufVxuXG4vKiBBdXRvZmlsbCBzdHlsZXMgKi9cbi50ZXh0SW5wdXQgaW5wdXQ6LXdlYmtpdC1hdXRvZmlsbCxcbi50ZXh0SW5wdXQgaW5wdXQ6LXdlYmtpdC1hdXRvZmlsbDpob3Zlcixcbi50ZXh0SW5wdXQgaW5wdXQ6LXdlYmtpdC1hdXRvZmlsbDpmb2N1cyB7XG4gICAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDBweCAxMDAwcHggdmFyKC0tY29sb3ItYmFja2dyb3VuZCkgaW5zZXQ7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciA1MDAwcyBlYXNlLWluLW91dCAwcztcbiAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbn1cblxuLyogU2VhcmNoIGlucHV0IHNwZWNpZmljICovXG4udGV4dElucHV0IGlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24sXG4udGV4dElucHV0IGlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXG4udGV4dElucHV0IGlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9uLFxuLnRleHRJbnB1dCBpbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWRlY29yYXRpb24ge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn0iXX0= */";
|
|
115
|
+
var styles$i = {"textInput":"TextInput-module_textInput__b2LVM","required":"TextInput-module_required__7uLiM","inputError":"TextInput-module_inputError__QD0a-","errorMessage":"TextInput-module_errorMessage__nIDoQ","success":"TextInput-module_success__KbSS3","loading":"TextInput-module_loading__qXaca","withIcon":"TextInput-module_withIcon__-8swm","inputIcon":"TextInput-module_inputIcon__B4czN","withAction":"TextInput-module_withAction__JD3ku","actionButton":"TextInput-module_actionButton__zFJel"};
|
|
116
|
+
styleInject(css_248z$k);
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* TextInput component - A versatile text input field with label and error handling
|
|
120
|
+
*
|
|
121
|
+
* @component
|
|
122
|
+
* @description
|
|
123
|
+
* A foundational input component that provides a clean, accessible text field with
|
|
124
|
+
* built-in support for labels, validation errors, and various HTML5 input types.
|
|
125
|
+
* Follows design system tokens for consistent theming across light/dark modes.
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* // Basic usage
|
|
129
|
+
* <TextInput
|
|
130
|
+
* label="Email Address"
|
|
131
|
+
* value={email}
|
|
132
|
+
* onChange={setEmail}
|
|
133
|
+
* type="email"
|
|
134
|
+
* placeholder="Enter your email"
|
|
135
|
+
* />
|
|
136
|
+
*
|
|
137
|
+
* @example
|
|
138
|
+
* // With validation error
|
|
139
|
+
* <TextInput
|
|
140
|
+
* label="Password"
|
|
141
|
+
* value={password}
|
|
142
|
+
* onChange={setPassword}
|
|
143
|
+
* type="password"
|
|
144
|
+
* error="Password must be at least 8 characters"
|
|
145
|
+
* required
|
|
146
|
+
* />
|
|
147
|
+
*/
|
|
148
|
+
function TextInput({ label, value, onChange, type = "text", onFocus, onBlur, placeholder, error, required, disabled = false, success = false, loading = false, icon, actionButton, maxLength, autoComplete }) {
|
|
149
|
+
const inputId = `input-${Math.random().toString(36).substr(2, 9)}`;
|
|
150
|
+
const getContainerClassName = () => {
|
|
151
|
+
const classes = [styles$i.textInput];
|
|
152
|
+
if (success)
|
|
153
|
+
classes.push(styles$i.success);
|
|
154
|
+
if (loading)
|
|
155
|
+
classes.push(styles$i.loading);
|
|
156
|
+
if (icon)
|
|
157
|
+
classes.push(styles$i.withIcon);
|
|
158
|
+
if (actionButton)
|
|
159
|
+
classes.push(styles$i.withAction);
|
|
160
|
+
return classes.join(' ');
|
|
161
|
+
};
|
|
162
|
+
return (jsxRuntime.jsxs("div", { className: getContainerClassName(), children: [jsxRuntime.jsxs("label", { htmlFor: inputId, children: [label, required && jsxRuntime.jsx("span", { className: styles$i.required, children: "*" })] }), jsxRuntime.jsxs("div", { style: { position: 'relative' }, children: [icon && jsxRuntime.jsx("div", { className: styles$i.inputIcon, children: icon }), jsxRuntime.jsx("input", { id: inputId, type: type, value: value, onChange: (e) => onChange(e.target.value), onFocus: onFocus, onBlur: onBlur, placeholder: placeholder, className: error ? styles$i.inputError : '', "aria-invalid": !!error, "aria-describedby": error ? `${inputId}-error` : undefined, disabled: disabled || loading, maxLength: maxLength, autoComplete: autoComplete }), actionButton && (jsxRuntime.jsx("button", { type: "button", className: styles$i.actionButton, onClick: actionButton.onClick, disabled: disabled || loading, children: actionButton.label }))] }), error && (jsxRuntime.jsx("span", { id: `${inputId}-error`, className: styles$i.errorMessage, children: error }))] }));
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
var css_248z$j = ".ArrayInput-module_arrayInput__FNrd2{margin-bottom:var(--spacing-lg)}.ArrayInput-module_arrayInputLabel__7Rpkj{color:var(--color-text);display:block;font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-wide);margin-bottom:var(--spacing-md)}.ArrayInput-module_arrayInputItem__eSH-6{align-items:flex-start;background:linear-gradient(135deg,var(--color-background-secondary),var(--color-background));border:1px solid var(--color-border);border-radius:var(--radius-lg);display:flex;flex-direction:row;gap:var(--spacing-sm);margin-bottom:var(--spacing-md);min-width:0;padding:var(--spacing-md);transition:all var(--transition-base);width:100%}.ArrayInput-module_arrayInputItem__eSH-6:hover{border-color:var(--color-border-hover);box-shadow:var(--shadow-sm)}.ArrayInput-module_inputWrapper__i-MB-{display:flex;flex:1 1 auto;min-width:0}.ArrayInput-module_input__792ru{background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);font-size:var(--font-size-base);padding:var(--spacing-sm) var(--spacing-md);transition:all var(--transition-base);width:100%}.ArrayInput-module_input__792ru:hover{border-color:var(--color-border-hover)}.ArrayInput-module_input__792ru:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(124,58,237,.1);outline:none}.ArrayInput-module_input__792ru::placeholder{color:var(--color-text-secondary);opacity:.6}.ArrayInput-module_complexItem__iX3v6{align-items:stretch;flex-direction:column;gap:var(--spacing-md)}.ArrayInput-module_fieldsWrapper__fzqvn{display:flex;flex:1;flex-wrap:wrap;gap:var(--spacing-md)}.ArrayInput-module_fieldsWrapper__fzqvn>*{flex:1;min-width:200px}.ArrayInput-module_arrayInputItem__eSH-6 button{flex-shrink:0;white-space:nowrap}.ArrayInput-module_complexItem__iX3v6 button{align-self:flex-end}@media (max-width:768px){.ArrayInput-module_fieldsWrapper__fzqvn{flex-direction:column}.ArrayInput-module_fieldsWrapper__fzqvn>*{min-width:100%}.ArrayInput-module_complexItem__iX3v6 button{align-self:stretch}}[data-theme=dark] .ArrayInput-module_arrayInputItem__eSH-6{background:linear-gradient(135deg,var(--color-background-tertiary),var(--color-background-secondary))}[data-theme=dark] .ArrayInput-module_input__792ru{background:var(--color-background);border-color:var(--color-border)}[data-theme=dark] .ArrayInput-module_input__792ru:focus{box-shadow:0 0 0 3px rgba(167,139,250,.1)}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFycmF5SW5wdXQubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQ0FDSSwrQkFDSixDQUVBLDBDQUlJLHVCQUF3QixDQUh4QixhQUFjLENBSWQsNkJBQThCLENBRjlCLHVDQUF3QyxDQUd4Qyx5Q0FBMEMsQ0FKMUMsK0JBS0osQ0FFQSx5Q0FLSSxzQkFBdUIsQ0FFdkIsNEZBR0MsQ0FDRCxvQ0FBcUMsQ0FDckMsOEJBQStCLENBWC9CLFlBQWEsQ0FDYixrQkFBbUIsQ0FDbkIscUJBQXNCLENBQ3RCLCtCQUFnQyxDQVdoQyxXQUFZLENBVFoseUJBQTBCLENBTzFCLHFDQUFzQyxDQUN0QyxVQUVKLENBRUEsK0NBRUksc0NBQXVDLENBRHZDLDJCQUVKLENBR0EsdUNBR0ksWUFBYSxDQUZiLGFBQWMsQ0FDZCxXQUVKLENBRUEsZ0NBS0ksa0NBQW1DLENBRm5DLG9DQUFxQyxDQUNyQyw4QkFBK0IsQ0FFL0IsdUJBQXdCLENBQ3hCLCtCQUFnQyxDQUxoQywyQ0FBNEMsQ0FNNUMscUNBQXNDLENBUHRDLFVBUUosQ0FFQSxzQ0FDSSxzQ0FDSixDQUVBLHNDQUVJLGlDQUFrQyxDQUNsQyx3Q0FBNkMsQ0FGN0MsWUFHSixDQUVBLDZDQUNJLGlDQUFrQyxDQUNsQyxVQUNKLENBR0Esc0NBRUksbUJBQW9CLENBRHBCLHFCQUFzQixDQUV0QixxQkFDSixDQUVBLHdDQUNJLFlBQWEsQ0FFYixNQUFPLENBQ1AsY0FBZSxDQUZmLHFCQUdKLENBRUEsMENBQ0ksTUFBTyxDQUNQLGVBQ0osQ0FHQSxnREFDSSxhQUFjLENBQ2Qsa0JBQ0osQ0FHQSw2Q0FDSSxtQkFDSixDQUdBLHlCQUNJLHdDQUNJLHFCQUNKLENBRUEsMENBQ0ksY0FDSixDQUVBLDZDQUNJLGtCQUNKLENBQ0osQ0FHQSwyREFDSSxxR0FJSixDQUVBLGtEQUNJLGtDQUFtQyxDQUNuQyxnQ0FDSixDQUVBLHdEQUNJLHlDQUNKIiwiZmlsZSI6IkFycmF5SW5wdXQubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5hcnJheUlucHV0IHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLWxnKTtcbn1cblxuLmFycmF5SW5wdXRMYWJlbCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xuICAgIGxldHRlci1zcGFjaW5nOiB2YXIoLS1sZXR0ZXItc3BhY2luZy13aWRlKTtcbn1cblxuLmFycmF5SW5wdXRJdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgZ2FwOiB2YXIoLS1zcGFjaW5nLXNtKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICAgICAgdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpLCBcbiAgICAgICAgdmFyKC0tY29sb3ItYmFja2dyb3VuZClcbiAgICApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtaW4td2lkdGg6IDA7XG59XG5cbi5hcnJheUlucHV0SXRlbTpob3ZlciB7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LXNtKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJvcmRlci1ob3Zlcik7XG59XG5cbi8qIFNpbXBsZSB2YXJpYW50IHN0eWxpbmcgKi9cbi5pbnB1dFdyYXBwZXIge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIG1pbi13aWR0aDogMDtcbiAgICBkaXNwbGF5OiBmbGV4O1xufVxuXG4uaW5wdXQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctc20pIHZhcigtLXNwYWNpbmctbWQpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYmFzZSk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi5pbnB1dDpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1ib3JkZXItaG92ZXIpO1xufVxuXG4uaW5wdXQ6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgxMjQsIDU4LCAyMzcsIDAuMSk7XG59XG5cbi5pbnB1dDo6cGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG4gICAgb3BhY2l0eTogMC42O1xufVxuXG4vKiBDb21wbGV4IHZhcmlhbnQgc3R5bGluZyAqL1xuLmNvbXBsZXhJdGVtIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgIGdhcDogdmFyKC0tc3BhY2luZy1tZCk7XG59XG5cbi5maWVsZHNXcmFwcGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgZmxleDogMTtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG59XG5cbi5maWVsZHNXcmFwcGVyID4gKiB7XG4gICAgZmxleDogMTtcbiAgICBtaW4td2lkdGg6IDIwMHB4O1xufVxuXG4vKiBCdXR0b24gc3R5bGVzIC0gZW5zdXJlIG5vIG92ZXJsYXAgKi9cbi5hcnJheUlucHV0SXRlbSBidXR0b24ge1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi8qIEJ1dHRvbiBhbGlnbm1lbnQgZm9yIGNvbXBsZXggaXRlbXMgKi9cbi5jb21wbGV4SXRlbSBidXR0b24ge1xuICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kO1xufVxuXG4vKiBSZXNwb25zaXZlIGRlc2lnbiAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgLmZpZWxkc1dyYXBwZXIge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIH1cbiAgICBcbiAgICAuZmllbGRzV3JhcHBlciA+ICoge1xuICAgICAgICBtaW4td2lkdGg6IDEwMCU7XG4gICAgfVxuICAgIFxuICAgIC5jb21wbGV4SXRlbSBidXR0b24ge1xuICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICAgIH1cbn1cblxuLyogRGFyayBtb2RlIGFkanVzdG1lbnRzICovXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLmFycmF5SW5wdXRJdGVtIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICAgICAgdmFyKC0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSksIFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSlcbiAgICApO1xufVxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLmlucHV0IHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJvcmRlcik7XG59XG5cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAuaW5wdXQ6Zm9jdXMge1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDE2NywgMTM5LCAyNTAsIDAuMSk7XG59Il19 */";
|
|
166
|
+
var styles$h = {"arrayInput":"ArrayInput-module_arrayInput__FNrd2","arrayInputLabel":"ArrayInput-module_arrayInputLabel__7Rpkj","arrayInputItem":"ArrayInput-module_arrayInputItem__eSH-6","inputWrapper":"ArrayInput-module_inputWrapper__i-MB-","input":"ArrayInput-module_input__792ru","complexItem":"ArrayInput-module_complexItem__iX3v6","fieldsWrapper":"ArrayInput-module_fieldsWrapper__fzqvn"};
|
|
167
|
+
styleInject(css_248z$j);
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* ArrayInput component - Versatile dynamic list manager
|
|
171
|
+
*
|
|
172
|
+
* @component
|
|
173
|
+
* @description
|
|
174
|
+
* A flexible component that can handle both simple string arrays and complex object arrays.
|
|
175
|
+
* Users can add, remove, and edit items dynamically. Supports custom field configurations
|
|
176
|
+
* for complex data structures.
|
|
177
|
+
*
|
|
178
|
+
* @example
|
|
179
|
+
* // Simple string array
|
|
180
|
+
* <ArrayInput
|
|
181
|
+
* label="Tags"
|
|
182
|
+
* values={tags}
|
|
183
|
+
* onChange={setTags}
|
|
184
|
+
* placeholder="Enter tag"
|
|
185
|
+
* />
|
|
186
|
+
*
|
|
187
|
+
* @example
|
|
188
|
+
* // Complex object array
|
|
189
|
+
* <ArrayInput
|
|
190
|
+
* type="complex"
|
|
191
|
+
* label="Social Links"
|
|
192
|
+
* values={links}
|
|
193
|
+
* onChange={setLinks}
|
|
194
|
+
* fields={[
|
|
195
|
+
* { name: 'label', label: 'Label', placeholder: 'GitHub' },
|
|
196
|
+
* { name: 'url', label: 'URL', type: 'url', placeholder: 'https://github.com/...' }
|
|
197
|
+
* ]}
|
|
198
|
+
* />
|
|
199
|
+
*/
|
|
200
|
+
function ArrayInput(props) {
|
|
201
|
+
if (props.type === 'complex') {
|
|
202
|
+
return jsxRuntime.jsx(ComplexArrayInput, { ...props });
|
|
203
|
+
}
|
|
204
|
+
return jsxRuntime.jsx(SimpleArrayInput, { ...props });
|
|
205
|
+
}
|
|
206
|
+
// Simple string array implementation
|
|
207
|
+
function SimpleArrayInput({ label, values, onChange, placeholder }) {
|
|
208
|
+
const handleChange = (index, value) => {
|
|
209
|
+
const newValues = [...values];
|
|
210
|
+
newValues[index] = value;
|
|
211
|
+
onChange(newValues);
|
|
212
|
+
};
|
|
213
|
+
const handleAdd = () => {
|
|
214
|
+
onChange([...values, '']);
|
|
215
|
+
};
|
|
216
|
+
const handleRemove = (index) => {
|
|
217
|
+
const newValues = values.filter((_, i) => i !== index);
|
|
218
|
+
onChange(newValues);
|
|
219
|
+
};
|
|
220
|
+
return (jsxRuntime.jsxs("div", { className: styles$h.arrayInput, children: [jsxRuntime.jsx("h3", { className: styles$h.arrayInputLabel, children: label }), values.map((value, index) => (jsxRuntime.jsxs("div", { className: styles$h.arrayInputItem, children: [jsxRuntime.jsx("div", { className: styles$h.inputWrapper, children: jsxRuntime.jsx("input", { type: "text", value: value, onChange: (e) => handleChange(index, e.target.value), placeholder: placeholder, className: styles$h.input }) }), jsxRuntime.jsx(Button, { variant: "ghost", size: "small", onClick: () => handleRemove(index), children: "Remove" })] }, `item-${index}`))), jsxRuntime.jsxs(Button, { variant: "primary", size: "small", onClick: handleAdd, children: ["Add ", label] })] }));
|
|
221
|
+
}
|
|
222
|
+
// Complex object array implementation
|
|
223
|
+
function ComplexArrayInput({ label, values, onChange, fields, getKey }) {
|
|
224
|
+
const handleChange = (index, field, value) => {
|
|
225
|
+
const newValues = [...values];
|
|
226
|
+
newValues[index] = { ...newValues[index], [field]: value };
|
|
227
|
+
onChange(newValues);
|
|
228
|
+
};
|
|
229
|
+
const handleAdd = () => {
|
|
230
|
+
const newItem = fields.reduce((acc, field) => {
|
|
231
|
+
return { ...acc, [field.name]: '' };
|
|
232
|
+
}, {});
|
|
233
|
+
onChange([...values, newItem]);
|
|
234
|
+
};
|
|
235
|
+
const handleRemove = (index) => {
|
|
236
|
+
const newValues = values.filter((_, i) => i !== index);
|
|
237
|
+
onChange(newValues);
|
|
238
|
+
};
|
|
239
|
+
const generateKey = (item, index) => {
|
|
240
|
+
if (getKey)
|
|
241
|
+
return getKey(item, index);
|
|
242
|
+
// Generate key from all field values
|
|
243
|
+
return fields.map(f => item[f.name] || '').join('-') + `-${index}`;
|
|
244
|
+
};
|
|
245
|
+
return (jsxRuntime.jsxs("div", { className: styles$h.arrayInput, children: [jsxRuntime.jsx("h3", { className: styles$h.arrayInputLabel, children: label }), values.map((value, index) => (jsxRuntime.jsxs("div", { className: `${styles$h.arrayInputItem} ${fields.length > 1 ? styles$h.complexItem : ''}`, children: [jsxRuntime.jsx("div", { className: styles$h.fieldsWrapper, children: fields.map((field) => (jsxRuntime.jsx(TextInput, { value: value[field.name] || '', onChange: (newValue) => handleChange(index, field.name, newValue), label: field.label, type: field.type, placeholder: field.placeholder }, field.name))) }), jsxRuntime.jsx(Button, { variant: "ghost", size: "small", onClick: () => handleRemove(index), children: "Remove" })] }, generateKey(value, index)))), jsxRuntime.jsxs(Button, { variant: "primary", size: "small", onClick: handleAdd, children: ["Add ", label] })] }));
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
var css_248z$i = ".Checkbox-module_checkboxLabel__4tBVg{align-items:center;cursor:pointer;display:inline-flex;gap:var(--spacing-sm);padding:var(--spacing-xs) 0;position:relative;transition:all var(--transition-base);user-select:none}.Checkbox-module_checkboxLabel__4tBVg:hover .Checkbox-module_checkbox__BbJul{border-color:var(--color-primary);box-shadow:0 0 0 4px rgba(124,58,237,.1);transform:scale(1.05)}.Checkbox-module_checkbox__BbJul{align-items:center;appearance:none;-webkit-appearance:none;background:linear-gradient(135deg,var(--color-background),var(--color-background-secondary));border:2px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;display:flex;flex-shrink:0;height:20px;justify-content:center;position:relative;transition:all var(--transition-base);width:20px}.Checkbox-module_checkbox__BbJul:checked{animation:Checkbox-module_checkboxBounce__Ohdoj .4s cubic-bezier(.68,-.55,.265,1.55);background:linear-gradient(135deg,var(--color-primary),var(--color-primary-hover));border-color:var(--color-primary)}.Checkbox-module_checkbox__BbJul:checked:after{animation:Checkbox-module_checkmark__VCRvy .3s cubic-bezier(.68,-.55,.265,1.55) .1s forwards;border:solid var(--color-text-inverse);border-width:0 2.5px 2.5px 0;content:\"\";height:9px;left:50%;position:absolute;top:50%;transform:translate(-50%,-60%) rotate(45deg) scale(0);width:5px}@keyframes Checkbox-module_checkboxBounce__Ohdoj{0%{transform:scale(1)}30%{transform:scale(.9)}60%{transform:scale(1.15)}to{transform:scale(1)}}@keyframes Checkbox-module_checkmark__VCRvy{0%{transform:translate(-50%,-60%) rotate(45deg) scale(0)}to{transform:translate(-50%,-60%) rotate(45deg) scale(1)}}.Checkbox-module_checkbox__BbJul:focus-visible{box-shadow:0 0 0 3px rgba(124,58,237,.2);outline:none}.Checkbox-module_checkbox__BbJul:disabled{background:var(--color-background-tertiary);cursor:not-allowed;opacity:.5}.Checkbox-module_checkboxLabel__4tBVg:has(.Checkbox-module_checkbox__BbJul:disabled){cursor:not-allowed;opacity:.6}.Checkbox-module_checkboxText__oJsc9{color:var(--color-text);font-size:var(--font-size-base);line-height:var(--line-height-normal);transition:color var(--transition-base)}.Checkbox-module_checkbox__BbJul:indeterminate{background:linear-gradient(135deg,var(--color-primary),var(--color-primary-hover));border-color:var(--color-primary)}.Checkbox-module_checkbox__BbJul:indeterminate:after{animation:Checkbox-module_indeterminate__H5-tj .3s cubic-bezier(.68,-.55,.265,1.55) forwards;background:var(--color-text-inverse);border:none;content:\"\";height:2px;position:absolute;transform:none;width:10px}@keyframes Checkbox-module_indeterminate__H5-tj{0%{width:0}to{width:10px}}[data-theme=dark] .Checkbox-module_checkbox__BbJul{background:linear-gradient(135deg,var(--color-background-secondary),var(--color-background-tertiary));border-color:var(--color-border)}[data-theme=dark] .Checkbox-module_checkbox__BbJul:checked{background:linear-gradient(135deg,var(--color-primary-light),var(--color-primary));border-color:var(--color-primary-light)}[data-theme=dark] .Checkbox-module_checkboxLabel__4tBVg:hover .Checkbox-module_checkbox__BbJul{border-color:var(--color-primary-light);box-shadow:0 0 0 4px rgba(167,139,250,.1)}@media (max-width:768px){.Checkbox-module_checkbox__BbJul{height:22px;min-height:22px;min-width:22px;width:22px}.Checkbox-module_checkbox__BbJul:checked:after{height:10px;width:6px}.Checkbox-module_checkboxLabel__4tBVg{gap:var(--spacing-md)}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNoZWNrYm94Lm1vZHVsZS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0NBRUksa0JBQW1CLENBQ25CLGNBQWUsQ0FGZixtQkFBb0IsQ0FLcEIscUJBQXNCLENBQ3RCLDJCQUE0QixDQUY1QixpQkFBa0IsQ0FHbEIscUNBQXNDLENBSnRDLGdCQUtKLENBRUEsNkVBQ0ksaUNBQWtDLENBRWxDLHdDQUE2QyxDQUQ3QyxxQkFFSixDQUVBLGlDQWdCSSxrQkFBbUIsQ0FmbkIsZUFBZ0IsQ0FDaEIsdUJBQXdCLENBUXhCLDRGQUdDLENBUkQsb0NBQXFDLENBQ3JDLDhCQUErQixDQUMvQixjQUFlLENBUWYsWUFBYSxDQURiLGFBQWMsQ0FWZCxXQUFZLENBYVosc0JBQXVCLENBVHZCLGlCQUFrQixDQUNsQixxQ0FBc0MsQ0FOdEMsVUFlSixDQUVBLHlDQU1JLG9GQUFxRSxDQUxyRSxrRkFHQyxDQUNELGlDQUVKLENBRUEsK0NBVUksNEZBQThFLENBSDlFLHNDQUF1QyxDQUN2Qyw0QkFBNkIsQ0FQN0IsVUFBVyxDQUtYLFVBQVcsQ0FIWCxRQUFTLENBRFQsaUJBQWtCLENBRWxCLE9BQVEsQ0FLUixxREFBdUQsQ0FKdkQsU0FNSixDQUVBLGlEQUNJLEdBQUssa0JBQXFCLENBQzFCLElBQU0sbUJBQXVCLENBQzdCLElBQU0scUJBQXdCLENBQzlCLEdBQU8sa0JBQXFCLENBQ2hDLENBRUEsNENBQ0ksR0FDSSxxREFDSixDQUNBLEdBQ0kscURBQ0osQ0FDSixDQUVBLCtDQUVJLHdDQUE2QyxDQUQ3QyxZQUVKLENBRUEsMENBR0ksMkNBQTRDLENBRDVDLGtCQUFtQixDQURuQixVQUdKLENBRUEscUZBQ0ksa0JBQW1CLENBQ25CLFVBQ0osQ0FFQSxxQ0FFSSx1QkFBd0IsQ0FEeEIsK0JBQWdDLENBRWhDLHFDQUFzQyxDQUN0Qyx1Q0FDSixDQUdBLCtDQUNJLGtGQUdDLENBQ0QsaUNBQ0osQ0FFQSxxREFRSSw0RkFBNkUsQ0FIN0Usb0NBQXFDLENBQ3JDLFdBQVksQ0FMWixVQUFXLENBR1gsVUFBVyxDQUZYLGlCQUFrQixDQUtsQixjQUFlLENBSmYsVUFNSixDQUVBLGdEQUNJLEdBQ0ksT0FDSixDQUNBLEdBQ0ksVUFDSixDQUNKLENBR0EsbURBQ0kscUdBR0MsQ0FDRCxnQ0FDSixDQUVBLDJEQUNJLGtGQUdDLENBQ0QsdUNBQ0osQ0FFQSwrRkFDSSx1Q0FBd0MsQ0FDeEMseUNBQ0osQ0FHQSx5QkFDSSxpQ0FFSSxXQUFZLENBRVosZUFBZ0IsQ0FEaEIsY0FBZSxDQUZmLFVBSUosQ0FFQSwrQ0FFSSxXQUFZLENBRFosU0FFSixDQUVBLHNDQUNJLHFCQUNKLENBQ0oiLCJmaWxlIjoiQ2hlY2tib3gubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jaGVja2JveExhYmVsIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZ2FwOiB2YXIoLS1zcGFjaW5nLXNtKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXhzKSAwO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4uY2hlY2tib3hMYWJlbDpob3ZlciAuY2hlY2tib3gge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTtcbiAgICBib3gtc2hhZG93OiAwIDAgMCA0cHggcmdiYSgxMjQsIDU4LCAyMzcsIDAuMSk7XG59XG5cbi5jaGVja2JveCB7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgd2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSwgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KVxuICAgICk7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4uY2hlY2tib3g6Y2hlY2tlZCB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgICAgIHZhcigtLWNvbG9yLXByaW1hcnkpLCBcbiAgICAgICAgdmFyKC0tY29sb3ItcHJpbWFyeS1ob3ZlcilcbiAgICApO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgYW5pbWF0aW9uOiBjaGVja2JveEJvdW5jZSAwLjRzIGN1YmljLWJlemllcigwLjY4LCAtMC41NSwgMC4yNjUsIDEuNTUpO1xufVxuXG4uY2hlY2tib3g6Y2hlY2tlZDo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdG9wOiA1MCU7XG4gICAgd2lkdGg6IDVweDtcbiAgICBoZWlnaHQ6IDlweDtcbiAgICBib3JkZXI6IHNvbGlkIHZhcigtLWNvbG9yLXRleHQtaW52ZXJzZSk7XG4gICAgYm9yZGVyLXdpZHRoOiAwIDIuNXB4IDIuNXB4IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTYwJSkgcm90YXRlKDQ1ZGVnKSBzY2FsZSgwKTtcbiAgICBhbmltYXRpb246IGNoZWNrbWFyayAwLjNzIDAuMXMgY3ViaWMtYmV6aWVyKDAuNjgsIC0wLjU1LCAwLjI2NSwgMS41NSkgZm9yd2FyZHM7XG59XG5cbkBrZXlmcmFtZXMgY2hlY2tib3hCb3VuY2Uge1xuICAgIDAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxKTsgfVxuICAgIDMwJSB7IHRyYW5zZm9ybTogc2NhbGUoMC45KTsgfVxuICAgIDYwJSB7IHRyYW5zZm9ybTogc2NhbGUoMS4xNSk7IH1cbiAgICAxMDAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxKTsgfVxufVxuXG5Aa2V5ZnJhbWVzIGNoZWNrbWFyayB7XG4gICAgMCUgeyBcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTYwJSkgcm90YXRlKDQ1ZGVnKSBzY2FsZSgwKTtcbiAgICB9XG4gICAgMTAwJSB7IFxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNjAlKSByb3RhdGUoNDVkZWcpIHNjYWxlKDEpO1xuICAgIH1cbn1cblxuLmNoZWNrYm94OmZvY3VzLXZpc2libGUge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMTI0LCA1OCwgMjM3LCAwLjIpO1xufVxuXG4uY2hlY2tib3g6ZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtdGVydGlhcnkpO1xufVxuXG4uY2hlY2tib3hMYWJlbDpoYXMoLmNoZWNrYm94OmRpc2FibGVkKSB7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICBvcGFjaXR5OiAwLjY7XG59XG5cbi5jaGVja2JveFRleHQge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtbm9ybWFsKTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4vKiBJbmRldGVybWluYXRlIHN0YXRlICovXG4uY2hlY2tib3g6aW5kZXRlcm1pbmF0ZSB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgICAgIHZhcigtLWNvbG9yLXByaW1hcnkpLCBcbiAgICAgICAgdmFyKC0tY29sb3ItcHJpbWFyeS1ob3ZlcilcbiAgICApO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG59XG5cbi5jaGVja2JveDppbmRldGVybWluYXRlOjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxMHB4O1xuICAgIGhlaWdodDogMnB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXRleHQtaW52ZXJzZSk7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICBhbmltYXRpb246IGluZGV0ZXJtaW5hdGUgMC4zcyBjdWJpYy1iZXppZXIoMC42OCwgLTAuNTUsIDAuMjY1LCAxLjU1KSBmb3J3YXJkcztcbn1cblxuQGtleWZyYW1lcyBpbmRldGVybWluYXRlIHtcbiAgICAwJSB7IFxuICAgICAgICB3aWR0aDogMDtcbiAgICB9XG4gICAgMTAwJSB7IFxuICAgICAgICB3aWR0aDogMTBweDtcbiAgICB9XG59XG5cbi8qIERhcmsgbW9kZSBhZGp1c3RtZW50cyAqL1xuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5jaGVja2JveCB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KSwgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtdGVydGlhcnkpXG4gICAgKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJvcmRlcik7XG59XG5cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAuY2hlY2tib3g6Y2hlY2tlZCB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgICAgIHZhcigtLWNvbG9yLXByaW1hcnktbGlnaHQpLCBcbiAgICAgICAgdmFyKC0tY29sb3ItcHJpbWFyeSlcbiAgICApO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1saWdodCk7XG59XG5cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAuY2hlY2tib3hMYWJlbDpob3ZlciAuY2hlY2tib3gge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1saWdodCk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgNHB4IHJnYmEoMTY3LCAxMzksIDI1MCwgMC4xKTtcbn1cblxuLyogTW9iaWxlIGFkanVzdG1lbnRzICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAuY2hlY2tib3gge1xuICAgICAgICB3aWR0aDogMjJweDtcbiAgICAgICAgaGVpZ2h0OiAyMnB4O1xuICAgICAgICBtaW4td2lkdGg6IDIycHg7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDIycHg7XG4gICAgfVxuICAgIFxuICAgIC5jaGVja2JveDpjaGVja2VkOjphZnRlciB7XG4gICAgICAgIHdpZHRoOiA2cHg7XG4gICAgICAgIGhlaWdodDogMTBweDtcbiAgICB9XG4gICAgXG4gICAgLmNoZWNrYm94TGFiZWwge1xuICAgICAgICBnYXA6IHZhcigtLXNwYWNpbmctbWQpO1xuICAgIH1cbn0gIl19 */";
|
|
249
|
+
var styles$g = {"checkboxLabel":"Checkbox-module_checkboxLabel__4tBVg","checkbox":"Checkbox-module_checkbox__BbJul","checkboxText":"Checkbox-module_checkboxText__oJsc9"};
|
|
250
|
+
styleInject(css_248z$i);
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Checkbox component - Modern interactive checkbox with animations
|
|
254
|
+
*
|
|
255
|
+
* @component
|
|
256
|
+
* @description
|
|
257
|
+
* A customizable checkbox component with smooth animations, hover effects,
|
|
258
|
+
* and support for checked, unchecked, and indeterminate states. Features
|
|
259
|
+
* gradient backgrounds, bounce animations, and accessible focus states.
|
|
260
|
+
*
|
|
261
|
+
* @example
|
|
262
|
+
* // Basic usage
|
|
263
|
+
* <Checkbox
|
|
264
|
+
* checked={isChecked}
|
|
265
|
+
* onChange={setIsChecked}
|
|
266
|
+
* label="Accept terms and conditions"
|
|
267
|
+
* />
|
|
268
|
+
*
|
|
269
|
+
* @example
|
|
270
|
+
* // Indeterminate state
|
|
271
|
+
* <Checkbox
|
|
272
|
+
* checked={false}
|
|
273
|
+
* indeterminate={true}
|
|
274
|
+
* onChange={handleChange}
|
|
275
|
+
* label="Select all"
|
|
276
|
+
* />
|
|
277
|
+
*
|
|
278
|
+
* @example
|
|
279
|
+
* // Disabled state
|
|
280
|
+
* <Checkbox
|
|
281
|
+
* checked={true}
|
|
282
|
+
* onChange={handleChange}
|
|
283
|
+
* label="Premium feature"
|
|
284
|
+
* disabled={true}
|
|
285
|
+
* />
|
|
286
|
+
*/
|
|
287
|
+
const Checkbox = ({ checked, onChange, label, disabled = false, indeterminate = false, id, name, value }) => {
|
|
288
|
+
const checkboxRef = React.useRef(null);
|
|
289
|
+
React.useEffect(() => {
|
|
290
|
+
if (checkboxRef.current) {
|
|
291
|
+
checkboxRef.current.indeterminate = indeterminate;
|
|
292
|
+
}
|
|
293
|
+
}, [indeterminate]);
|
|
294
|
+
return (jsxRuntime.jsxs("label", { className: styles$g.checkboxLabel, children: [jsxRuntime.jsx("input", { ref: checkboxRef, type: "checkbox", checked: checked, onChange: (e) => onChange(e.target.checked), className: styles$g.checkbox, disabled: disabled, id: id, name: name, value: value, "aria-checked": indeterminate ? 'mixed' : checked }), label && jsxRuntime.jsx("span", { className: styles$g.checkboxText, children: label })] }));
|
|
295
|
+
};
|
|
296
|
+
|
|
297
|
+
var DefaultContext = {
|
|
298
|
+
color: undefined,
|
|
299
|
+
size: undefined,
|
|
300
|
+
className: undefined,
|
|
301
|
+
style: undefined,
|
|
302
|
+
attr: undefined
|
|
303
|
+
};
|
|
304
|
+
var IconContext = React.createContext && /*#__PURE__*/React.createContext(DefaultContext);
|
|
305
|
+
|
|
306
|
+
var _excluded = ["attr", "size", "title"];
|
|
307
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
308
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }
|
|
309
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
310
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
311
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
312
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
313
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
314
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
315
|
+
function Tree2Element(tree) {
|
|
316
|
+
return tree && tree.map((node, i) => /*#__PURE__*/React.createElement(node.tag, _objectSpread({
|
|
317
|
+
key: i
|
|
318
|
+
}, node.attr), Tree2Element(node.child)));
|
|
319
|
+
}
|
|
320
|
+
function GenIcon(data) {
|
|
321
|
+
return props => /*#__PURE__*/React.createElement(IconBase, _extends({
|
|
322
|
+
attr: _objectSpread({}, data.attr)
|
|
323
|
+
}, props), Tree2Element(data.child));
|
|
324
|
+
}
|
|
325
|
+
function IconBase(props) {
|
|
326
|
+
var elem = conf => {
|
|
327
|
+
var {
|
|
328
|
+
attr,
|
|
329
|
+
size,
|
|
330
|
+
title
|
|
331
|
+
} = props,
|
|
332
|
+
svgProps = _objectWithoutProperties(props, _excluded);
|
|
333
|
+
var computedSize = size || conf.size || "1em";
|
|
334
|
+
var className;
|
|
335
|
+
if (conf.className) className = conf.className;
|
|
336
|
+
if (props.className) className = (className ? className + " " : "") + props.className;
|
|
337
|
+
return /*#__PURE__*/React.createElement("svg", _extends({
|
|
338
|
+
stroke: "currentColor",
|
|
339
|
+
fill: "currentColor",
|
|
340
|
+
strokeWidth: "0"
|
|
341
|
+
}, conf.attr, attr, svgProps, {
|
|
342
|
+
className: className,
|
|
343
|
+
style: _objectSpread(_objectSpread({
|
|
344
|
+
color: props.color || conf.color
|
|
345
|
+
}, conf.style), props.style),
|
|
346
|
+
height: computedSize,
|
|
347
|
+
width: computedSize,
|
|
348
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
349
|
+
}), title && /*#__PURE__*/React.createElement("title", null, title), props.children);
|
|
350
|
+
};
|
|
351
|
+
return IconContext !== undefined ? /*#__PURE__*/React.createElement(IconContext.Consumer, null, conf => elem(conf)) : elem(DefaultContext);
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
// THIS FILE IS AUTO GENERATED
|
|
355
|
+
function FiBook (props) {
|
|
356
|
+
return GenIcon({"attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"path","attr":{"d":"M4 19.5A2.5 2.5 0 0 1 6.5 17H20"},"child":[]},{"tag":"path","attr":{"d":"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"},"child":[]}]})(props);
|
|
357
|
+
}function FiCalendar (props) {
|
|
358
|
+
return GenIcon({"attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"rect","attr":{"x":"3","y":"4","width":"18","height":"18","rx":"2","ry":"2"},"child":[]},{"tag":"line","attr":{"x1":"16","y1":"2","x2":"16","y2":"6"},"child":[]},{"tag":"line","attr":{"x1":"8","y1":"2","x2":"8","y2":"6"},"child":[]},{"tag":"line","attr":{"x1":"3","y1":"10","x2":"21","y2":"10"},"child":[]}]})(props);
|
|
359
|
+
}function FiCheck (props) {
|
|
360
|
+
return GenIcon({"attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"polyline","attr":{"points":"20 6 9 17 4 12"},"child":[]}]})(props);
|
|
361
|
+
}function FiChevronDown (props) {
|
|
362
|
+
return GenIcon({"attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"polyline","attr":{"points":"6 9 12 15 18 9"},"child":[]}]})(props);
|
|
363
|
+
}function FiClock (props) {
|
|
364
|
+
return GenIcon({"attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"circle","attr":{"cx":"12","cy":"12","r":"10"},"child":[]},{"tag":"polyline","attr":{"points":"12 6 12 12 16 14"},"child":[]}]})(props);
|
|
365
|
+
}function FiFolder (props) {
|
|
366
|
+
return GenIcon({"attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"path","attr":{"d":"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"},"child":[]}]})(props);
|
|
367
|
+
}function FiMenu (props) {
|
|
368
|
+
return GenIcon({"attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"line","attr":{"x1":"3","y1":"12","x2":"21","y2":"12"},"child":[]},{"tag":"line","attr":{"x1":"3","y1":"6","x2":"21","y2":"6"},"child":[]},{"tag":"line","attr":{"x1":"3","y1":"18","x2":"21","y2":"18"},"child":[]}]})(props);
|
|
369
|
+
}function FiMessageSquare (props) {
|
|
370
|
+
return GenIcon({"attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"path","attr":{"d":"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"},"child":[]}]})(props);
|
|
371
|
+
}function FiMoon (props) {
|
|
372
|
+
return GenIcon({"attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"path","attr":{"d":"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"},"child":[]}]})(props);
|
|
373
|
+
}function FiSearch (props) {
|
|
374
|
+
return GenIcon({"attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"circle","attr":{"cx":"11","cy":"11","r":"8"},"child":[]},{"tag":"line","attr":{"x1":"21","y1":"21","x2":"16.65","y2":"16.65"},"child":[]}]})(props);
|
|
375
|
+
}function FiSun (props) {
|
|
376
|
+
return GenIcon({"attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"circle","attr":{"cx":"12","cy":"12","r":"5"},"child":[]},{"tag":"line","attr":{"x1":"12","y1":"1","x2":"12","y2":"3"},"child":[]},{"tag":"line","attr":{"x1":"12","y1":"21","x2":"12","y2":"23"},"child":[]},{"tag":"line","attr":{"x1":"4.22","y1":"4.22","x2":"5.64","y2":"5.64"},"child":[]},{"tag":"line","attr":{"x1":"18.36","y1":"18.36","x2":"19.78","y2":"19.78"},"child":[]},{"tag":"line","attr":{"x1":"1","y1":"12","x2":"3","y2":"12"},"child":[]},{"tag":"line","attr":{"x1":"21","y1":"12","x2":"23","y2":"12"},"child":[]},{"tag":"line","attr":{"x1":"4.22","y1":"19.78","x2":"5.64","y2":"18.36"},"child":[]},{"tag":"line","attr":{"x1":"18.36","y1":"5.64","x2":"19.78","y2":"4.22"},"child":[]}]})(props);
|
|
377
|
+
}function FiUserPlus (props) {
|
|
378
|
+
return GenIcon({"attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"path","attr":{"d":"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"},"child":[]},{"tag":"circle","attr":{"cx":"8.5","cy":"7","r":"4"},"child":[]},{"tag":"line","attr":{"x1":"20","y1":"8","x2":"20","y2":"14"},"child":[]},{"tag":"line","attr":{"x1":"23","y1":"11","x2":"17","y2":"11"},"child":[]}]})(props);
|
|
379
|
+
}function FiUsers (props) {
|
|
380
|
+
return GenIcon({"attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"path","attr":{"d":"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"},"child":[]},{"tag":"circle","attr":{"cx":"9","cy":"7","r":"4"},"child":[]},{"tag":"path","attr":{"d":"M23 21v-2a4 4 0 0 0-3-3.87"},"child":[]},{"tag":"path","attr":{"d":"M16 3.13a4 4 0 0 1 0 7.75"},"child":[]}]})(props);
|
|
381
|
+
}function FiX (props) {
|
|
382
|
+
return GenIcon({"attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"line","attr":{"x1":"18","y1":"6","x2":"6","y2":"18"},"child":[]},{"tag":"line","attr":{"x1":"6","y1":"6","x2":"18","y2":"18"},"child":[]}]})(props);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
const formatDateToEuropean = (date) => {
|
|
386
|
+
if (!date)
|
|
387
|
+
return '';
|
|
388
|
+
const d = new Date(date);
|
|
389
|
+
if (isNaN(d.getTime()))
|
|
390
|
+
return '';
|
|
391
|
+
const day = d.getDate().toString().padStart(2, '0');
|
|
392
|
+
const month = (d.getMonth() + 1).toString().padStart(2, '0');
|
|
393
|
+
const year = d.getFullYear();
|
|
394
|
+
return `${day}/${month}/${year}`;
|
|
395
|
+
};
|
|
396
|
+
const parseEuropeanDate = (dateString) => {
|
|
397
|
+
if (!dateString)
|
|
398
|
+
return '';
|
|
399
|
+
const cleanDate = dateString.replace(/[^\d/]/g, '');
|
|
400
|
+
const parts = cleanDate.split('/');
|
|
401
|
+
if (parts.length === 3) {
|
|
402
|
+
const [day, month, year] = parts;
|
|
403
|
+
const fullYear = year.length === 2 ? `20${year}` : year;
|
|
404
|
+
const isoDate = `${fullYear}-${month.padStart(2, '0')}-${day.padStart(2, '0')}`;
|
|
405
|
+
const testDate = new Date(isoDate);
|
|
406
|
+
if (!isNaN(testDate.getTime())) {
|
|
407
|
+
return isoDate;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
return '';
|
|
411
|
+
};
|
|
412
|
+
|
|
413
|
+
var css_248z$h = ".DateInput-module_dateInput__54VPD{margin-bottom:var(--spacing-lg);position:relative}.DateInput-module_label__yDdUw{color:var(--color-text);display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-wide);margin-bottom:var(--spacing-sm);transition:color var(--transition-base)}.DateInput-module_inputWrapper__x-r1d{align-items:stretch;background:linear-gradient(135deg,var(--color-background),var(--color-background-secondary));border:2px solid var(--color-border);border-radius:var(--radius-lg);display:flex;overflow:hidden;position:relative;transition:all var(--transition-base)}.DateInput-module_inputWrapper__x-r1d:hover{border-color:var(--color-border-hover);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.DateInput-module_inputWrapper__x-r1d:focus-within{background:var(--color-background);border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(124,58,237,.1);transform:translateY(-2px)}.DateInput-module_textInput__ToOSX{background:transparent;border:none;color:var(--color-text);flex:1;font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,Courier New,monospace;font-size:var(--font-size-base);font-weight:var(--font-weight-medium);letter-spacing:.05em;min-height:44px;outline:none;padding:var(--spacing-sm) var(--spacing-md)}.DateInput-module_textInput__ToOSX::placeholder{color:var(--color-text-secondary);font-family:inherit;opacity:.6}.DateInput-module_textInput__ToOSX:disabled{background:var(--color-background-tertiary);color:var(--color-text-tertiary);cursor:not-allowed;opacity:.6}.DateInput-module_calendarButton__JzDGD{align-items:center;background:linear-gradient(135deg,var(--color-primary),var(--color-primary-hover));border:none;border-left:1px solid rgba(124,58,237,.2);color:var(--color-text-inverse);cursor:pointer;display:flex;font-size:18px;justify-content:center;min-width:44px;outline:none;padding:0 var(--spacing-md);position:relative;transition:all var(--transition-base)}.DateInput-module_calendarButton__JzDGD:hover{background:linear-gradient(135deg,var(--color-primary-hover),var(--color-primary-active));filter:brightness(1.1)}.DateInput-module_calendarButton__JzDGD:active{transform:scale(.95)}.DateInput-module_calendarButton__JzDGD:focus-visible{box-shadow:inset 0 0 0 2px hsla(0,0%,100%,.3)}.DateInput-module_calendarButton__JzDGD svg{display:block;height:20px;width:20px}.DateInput-module_inputWrapper__x-r1d:hover .DateInput-module_calendarButton__JzDGD svg{animation:DateInput-module_calendarPulse__-bPQQ .5s ease-in-out}@keyframes DateInput-module_calendarPulse__-bPQQ{0%,to{transform:scale(1) rotate(0deg)}50%{transform:scale(1.2) rotate(5deg)}}.DateInput-module_hiddenDateInput__IWNg3{height:1px;left:0;opacity:0;position:absolute;top:0;width:1px;z-index:-1}.DateInput-module_error__ieuPO .DateInput-module_inputWrapper__x-r1d{animation:DateInput-module_shake__I6OHO .3s cubic-bezier(.36,.07,.19,.97) both;background:linear-gradient(135deg,var(--color-error-bg),var(--color-background));border-color:var(--color-error)}.DateInput-module_error__ieuPO .DateInput-module_label__yDdUw{color:var(--color-error)}.DateInput-module_error__ieuPO .DateInput-module_inputWrapper__x-r1d:focus-within{box-shadow:0 0 0 3px rgba(244,63,94,.15)}@keyframes DateInput-module_shake__I6OHO{10%,90%{transform:translateX(-1px)}20%,80%{transform:translateX(2px)}30%,50%,70%{transform:translateX(-3px)}40%,60%{transform:translateX(3px)}}.DateInput-module_success__rPA93 .DateInput-module_inputWrapper__x-r1d{border-color:var(--color-success)}.DateInput-module_success__rPA93 .DateInput-module_inputWrapper__x-r1d:after{animation:DateInput-module_checkIn__WfYdg .3s ease-out;color:var(--color-success);content:\"✓\";font-weight:700;position:absolute;right:calc(var(--spacing-md) + 44px);top:50%;transform:translateY(-50%)}@keyframes DateInput-module_checkIn__WfYdg{0%{opacity:0;transform:translateY(-50%) scale(0)}to{opacity:1;transform:translateY(-50%) scale(1)}}[data-theme=dark] .DateInput-module_inputWrapper__x-r1d{background:linear-gradient(135deg,var(--color-background-secondary),var(--color-background-tertiary));border-color:var(--color-border)}[data-theme=dark] .DateInput-module_inputWrapper__x-r1d:focus-within{background:var(--color-background-secondary);border-color:var(--color-primary-light);box-shadow:0 0 0 3px rgba(167,139,250,.1)}[data-theme=dark] .DateInput-module_calendarButton__JzDGD{background:linear-gradient(135deg,var(--color-primary-light),var(--color-primary));border-left-color:rgba(167,139,250,.2)}[data-theme=dark] .DateInput-module_calendarButton__JzDGD:hover{background:linear-gradient(135deg,var(--color-primary),var(--color-primary-hover))}@media (max-width:768px){.DateInput-module_dateInput__54VPD{margin-bottom:var(--spacing-md)}.DateInput-module_label__yDdUw{font-size:var(--font-size-base);margin-bottom:var(--spacing-xs)}.DateInput-module_textInput__ToOSX{font-size:16px;min-height:48px;padding:var(--spacing-md)}.DateInput-module_calendarButton__JzDGD{font-size:20px;min-width:48px}.DateInput-module_calendarButton__JzDGD svg{height:22px;width:22px}}.DateInput-module_loading__1DAmD .DateInput-module_inputWrapper__x-r1d{overflow:hidden;position:relative}.DateInput-module_loading__1DAmD .DateInput-module_inputWrapper__x-r1d:before{animation:DateInput-module_shimmer__XK7zx 2s infinite;background:linear-gradient(90deg,transparent,rgba(124,58,237,.1),transparent);content:\"\";height:100%;left:-100%;position:absolute;top:0;width:100%}@keyframes DateInput-module_shimmer__XK7zx{to{left:100%}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRhdGVJbnB1dC5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1DQUNJLCtCQUFnQyxDQUNoQyxpQkFDSixDQUVBLCtCQUlJLHVCQUF3QixDQUh4QixhQUFjLENBQ2QsNkJBQThCLENBQzlCLHVDQUF3QyxDQUd4Qyx5Q0FBMEMsQ0FEMUMsK0JBQWdDLENBRWhDLHVDQUNKLENBRUEsc0NBR0ksbUJBQW9CLENBQ3BCLDRGQUdDLENBQ0Qsb0NBQXFDLENBQ3JDLDhCQUErQixDQVAvQixZQUFhLENBUWIsZUFBZ0IsQ0FUaEIsaUJBQWtCLENBVWxCLHFDQUNKLENBRUEsNENBQ0ksc0NBQXVDLENBQ3ZDLDJCQUE0QixDQUM1QiwwQkFDSixDQUVBLG1EQUlJLGtDQUFtQyxDQUhuQyxpQ0FBa0MsQ0FDbEMsd0NBQTZDLENBQzdDLDBCQUVKLENBRUEsbUNBSUksc0JBQXVCLENBRHZCLFdBQVksQ0FNWix1QkFBd0IsQ0FSeEIsTUFBTyxDQUtQLG1GQUFrRyxDQURsRywrQkFBZ0MsQ0FHaEMscUNBQXNDLENBRHRDLG9CQUFzQixDQUl0QixlQUFnQixDQURoQixZQUFhLENBUmIsMkNBVUosQ0FFQSxnREFDSSxpQ0FBa0MsQ0FFbEMsbUJBQW9CLENBRHBCLFVBRUosQ0FFQSw0Q0FDSSwyQ0FBNEMsQ0FDNUMsZ0NBQWlDLENBQ2pDLGtCQUFtQixDQUNuQixVQUNKLENBRUEsd0NBWUksa0JBQW1CLENBVm5CLGtGQUdDLENBRUQsV0FBOEMsQ0FBOUMseUNBQThDLENBQzlDLCtCQUFnQyxDQUNoQyxjQUFlLENBRWYsWUFBYSxDQUdiLGNBQWUsQ0FEZixzQkFBdUIsQ0FJdkIsY0FBZSxDQURmLFlBQWEsQ0FOYiwyQkFBNEIsQ0FUNUIsaUJBQWtCLENBY2xCLHFDQUdKLENBRUEsOENBQ0kseUZBR0MsQ0FDRCxzQkFDSixDQUVBLCtDQUNJLG9CQUNKLENBRUEsc0RBQ0ksNkNBQ0osQ0FFQSw0Q0FHSSxhQUFjLENBRGQsV0FBWSxDQURaLFVBR0osQ0FHQSx3RkFDSSwrREFDSixDQUVBLGlEQUNJLE1BQVcsK0JBQWtDLENBQzdDLElBQU0saUNBQW9DLENBQzlDLENBRUEseUNBSUksVUFBVyxDQUVYLE1BQU8sQ0FKUCxTQUFVLENBRFYsaUJBQWtCLENBSWxCLEtBQU0sQ0FGTixTQUFVLENBSVYsVUFDSixDQUdBLHFFQU1JLDhFQUErRCxDQUovRCxnRkFHQyxDQUpELCtCQU1KLENBRUEsOERBQ0ksd0JBQ0osQ0FFQSxrRkFDSSx3Q0FDSixDQUVBLHlDQUNJLFFBQVcsMEJBQTZCLENBQ3hDLFFBQVcseUJBQTRCLENBQ3ZDLFlBQWdCLDBCQUE2QixDQUM3QyxRQUFXLHlCQUE0QixDQUMzQyxDQUdBLHVFQUNJLGlDQUNKLENBRUEsNkVBUUksc0RBQWdDLENBRmhDLDBCQUEyQixDQUwzQixXQUFZLENBTVosZUFBaUIsQ0FMakIsaUJBQWtCLENBQ2xCLG9DQUFxQyxDQUNyQyxPQUFRLENBQ1IsMEJBSUosQ0FFQSwyQ0FDSSxHQUNJLFNBQVUsQ0FDVixtQ0FDSixDQUNBLEdBQ0ksU0FBVSxDQUNWLG1DQUNKLENBQ0osQ0FHQSx3REFDSSxxR0FHQyxDQUNELGdDQUNKLENBRUEscUVBQ0ksNENBQTZDLENBQzdDLHVDQUF3QyxDQUN4Qyx5Q0FDSixDQUVBLDBEQUNJLGtGQUdDLENBQ0Qsc0NBQ0osQ0FFQSxnRUFDSSxrRkFJSixDQUdBLHlCQUNJLG1DQUNJLCtCQUNKLENBRUEsK0JBQ0ksK0JBQWdDLENBQ2hDLCtCQUNKLENBRUEsbUNBQ0ksY0FBZSxDQUVmLGVBQWdCLENBRGhCLHlCQUVKLENBRUEsd0NBRUksY0FBZSxDQURmLGNBRUosQ0FFQSw0Q0FFSSxXQUFZLENBRFosVUFFSixDQUNKLENBR0EsdUVBRUksZUFBZ0IsQ0FEaEIsaUJBRUosQ0FFQSw4RUFhSSxxREFBOEIsQ0FOOUIsNkVBS0MsQ0FYRCxVQUFXLENBS1gsV0FBWSxDQUZaLFVBQVcsQ0FGWCxpQkFBa0IsQ0FDbEIsS0FBTSxDQUVOLFVBU0osQ0FFQSwyQ0FDSSxHQUNJLFNBQ0osQ0FDSiIsImZpbGUiOiJEYXRlSW5wdXQubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5kYXRlSW5wdXQge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctbGcpO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmxhYmVsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy1zbSk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLWxldHRlci1zcGFjaW5nLXdpZGUpO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi5pbnB1dFdyYXBwZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSwgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KVxuICAgICk7XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi5pbnB1dFdyYXBwZXI6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItYm9yZGVyLWhvdmVyKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc20pO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbn1cblxuLmlucHV0V3JhcHBlcjpmb2N1cy13aXRoaW4ge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMTI0LCA1OCwgMjM3LCAwLjEpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbn1cblxuLnRleHRJbnB1dCB7XG4gICAgZmxleDogMTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXNtKSB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYmFzZSk7XG4gICAgZm9udC1mYW1pbHk6ICdTRiBNb25vJywgTW9uYWNvLCAnQ2FzY2FkaWEgQ29kZScsICdSb2JvdG8gTW9ubycsIENvbnNvbGFzLCAnQ291cmllciBOZXcnLCBtb25vc3BhY2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBtaW4taGVpZ2h0OiA0NHB4O1xufVxuXG4udGV4dElucHV0OjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBvcGFjaXR5OiAwLjY7XG4gICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG59XG5cbi50ZXh0SW5wdXQ6ZGlzYWJsZWQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtdGVydGlhcnkpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXRlcnRpYXJ5KTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIG9wYWNpdHk6IDAuNjtcbn1cblxuLmNhbGVuZGFyQnV0dG9uIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgICAgIHZhcigtLWNvbG9yLXByaW1hcnkpLCBcbiAgICAgICAgdmFyKC0tY29sb3ItcHJpbWFyeS1ob3ZlcilcbiAgICApO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHJnYmEoMTI0LCA1OCwgMjM3LCAwLjIpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LWludmVyc2UpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwYWRkaW5nOiAwIHZhcigtLXNwYWNpbmctbWQpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBtaW4td2lkdGg6IDQ0cHg7XG59XG5cbi5jYWxlbmRhckJ1dHRvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgICAgIHZhcigtLWNvbG9yLXByaW1hcnktaG92ZXIpLCBcbiAgICAgICAgdmFyKC0tY29sb3ItcHJpbWFyeS1hY3RpdmUpXG4gICAgKTtcbiAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMS4xKTtcbn1cblxuLmNhbGVuZGFyQnV0dG9uOmFjdGl2ZSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk1KTtcbn1cblxuLmNhbGVuZGFyQnV0dG9uOmZvY3VzLXZpc2libGUge1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDJweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XG59XG5cbi5jYWxlbmRhckJ1dHRvbiBzdmcge1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMjBweDtcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cblxuLyogSWNvbiBhbmltYXRpb24gb24gaG92ZXIgKi9cbi5pbnB1dFdyYXBwZXI6aG92ZXIgLmNhbGVuZGFyQnV0dG9uIHN2ZyB7XG4gICAgYW5pbWF0aW9uOiBjYWxlbmRhclB1bHNlIDAuNXMgZWFzZS1pbi1vdXQ7XG59XG5cbkBrZXlmcmFtZXMgY2FsZW5kYXJQdWxzZSB7XG4gICAgMCUsIDEwMCUgeyB0cmFuc2Zvcm06IHNjYWxlKDEpIHJvdGF0ZSgwZGVnKTsgfVxuICAgIDUwJSB7IHRyYW5zZm9ybTogc2NhbGUoMS4yKSByb3RhdGUoNWRlZyk7IH1cbn1cblxuLmhpZGRlbkRhdGVJbnB1dCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgd2lkdGg6IDFweDtcbiAgICBoZWlnaHQ6IDFweDtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB6LWluZGV4OiAtMTtcbn1cblxuLyogRXJyb3Igc3RhdGUgKi9cbi5lcnJvciAuaW5wdXRXcmFwcGVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWVycm9yKTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICAgICAgdmFyKC0tY29sb3ItZXJyb3ItYmcpLCBcbiAgICAgICAgdmFyKC0tY29sb3ItYmFja2dyb3VuZClcbiAgICApO1xuICAgIGFuaW1hdGlvbjogc2hha2UgMC4zcyBjdWJpYy1iZXppZXIoMC4zNiwgMC4wNywgMC4xOSwgMC45NykgYm90aDtcbn1cblxuLmVycm9yIC5sYWJlbCB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWVycm9yKTtcbn1cblxuLmVycm9yIC5pbnB1dFdyYXBwZXI6Zm9jdXMtd2l0aGluIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgyNDQsIDYzLCA5NCwgMC4xNSk7XG59XG5cbkBrZXlmcmFtZXMgc2hha2Uge1xuICAgIDEwJSwgOTAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xcHgpOyB9XG4gICAgMjAlLCA4MCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMnB4KTsgfVxuICAgIDMwJSwgNTAlLCA3MCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTNweCk7IH1cbiAgICA0MCUsIDYwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgzcHgpOyB9XG59XG5cbi8qIFN1Y2Nlc3Mgc3RhdGUgKi9cbi5zdWNjZXNzIC5pbnB1dFdyYXBwZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3Itc3VjY2Vzcyk7XG59XG5cbi5zdWNjZXNzIC5pbnB1dFdyYXBwZXI6OmFmdGVyIHtcbiAgICBjb250ZW50OiAn4pyTJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IGNhbGModmFyKC0tc3BhY2luZy1tZCkgKyA0NHB4KTtcbiAgICB0b3A6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXN1Y2Nlc3MpO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGFuaW1hdGlvbjogY2hlY2tJbiAwLjNzIGVhc2Utb3V0O1xufVxuXG5Aa2V5ZnJhbWVzIGNoZWNrSW4ge1xuICAgIDAlIHsgXG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSBzY2FsZSgwKTtcbiAgICB9XG4gICAgMTAwJSB7IFxuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgc2NhbGUoMSk7XG4gICAgfVxufVxuXG4vKiBEYXJrIG1vZGUgYWRqdXN0bWVudHMgKi9cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAuaW5wdXRXcmFwcGVyIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICAgICAgdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpLCBcbiAgICAgICAgdmFyKC0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSlcbiAgICApO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItYm9yZGVyKTtcbn1cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5pbnB1dFdyYXBwZXI6Zm9jdXMtd2l0aGluIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWxpZ2h0KTtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgxNjcsIDEzOSwgMjUwLCAwLjEpO1xufVxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLmNhbGVuZGFyQnV0dG9uIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICAgICAgdmFyKC0tY29sb3ItcHJpbWFyeS1saWdodCksIFxuICAgICAgICB2YXIoLS1jb2xvci1wcmltYXJ5KVxuICAgICk7XG4gICAgYm9yZGVyLWxlZnQtY29sb3I6IHJnYmEoMTY3LCAxMzksIDI1MCwgMC4yKTtcbn1cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5jYWxlbmRhckJ1dHRvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgICAgIHZhcigtLWNvbG9yLXByaW1hcnkpLCBcbiAgICAgICAgdmFyKC0tY29sb3ItcHJpbWFyeS1ob3ZlcilcbiAgICApO1xufVxuXG4vKiBNb2JpbGUgb3B0aW1pemF0aW9ucyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgLmRhdGVJbnB1dCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctbWQpO1xuICAgIH1cbiAgICBcbiAgICAubGFiZWwge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy14cyk7XG4gICAgfVxuICAgIFxuICAgIC50ZXh0SW5wdXQge1xuICAgICAgICBmb250LXNpemU6IDE2cHg7IC8qIFByZXZlbnQgem9vbSBvbiBpT1MgKi9cbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gICAgfVxuICAgIFxuICAgIC5jYWxlbmRhckJ1dHRvbiB7XG4gICAgICAgIG1pbi13aWR0aDogNDhweDtcbiAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgIH1cbiAgICBcbiAgICAuY2FsZW5kYXJCdXR0b24gc3ZnIHtcbiAgICAgICAgd2lkdGg6IDIycHg7XG4gICAgICAgIGhlaWdodDogMjJweDtcbiAgICB9XG59XG5cbi8qIExvYWRpbmcgc3RhdGUgKi9cbi5sb2FkaW5nIC5pbnB1dFdyYXBwZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ubG9hZGluZyAuaW5wdXRXcmFwcGVyOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogLTEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgOTBkZWcsXG4gICAgICAgIHRyYW5zcGFyZW50LFxuICAgICAgICByZ2JhKDEyNCwgNTgsIDIzNywgMC4xKSxcbiAgICAgICAgdHJhbnNwYXJlbnRcbiAgICApO1xuICAgIGFuaW1hdGlvbjogc2hpbW1lciAycyBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBzaGltbWVyIHtcbiAgICAxMDAlIHtcbiAgICAgICAgbGVmdDogMTAwJTtcbiAgICB9XG59Il19 */";
|
|
414
|
+
var styles$f = {"dateInput":"DateInput-module_dateInput__54VPD","label":"DateInput-module_label__yDdUw","inputWrapper":"DateInput-module_inputWrapper__x-r1d","textInput":"DateInput-module_textInput__ToOSX","calendarButton":"DateInput-module_calendarButton__JzDGD","hiddenDateInput":"DateInput-module_hiddenDateInput__IWNg3","error":"DateInput-module_error__ieuPO","success":"DateInput-module_success__rPA93","loading":"DateInput-module_loading__1DAmD"};
|
|
415
|
+
styleInject(css_248z$h);
|
|
416
|
+
|
|
417
|
+
/**
|
|
418
|
+
* DateInput component - European format date picker with manual input support
|
|
419
|
+
*
|
|
420
|
+
* @component
|
|
421
|
+
* @description
|
|
422
|
+
* A date input component that supports both manual text entry in DD/MM/YYYY format
|
|
423
|
+
* and native calendar picker selection. Automatically formats dates as users type,
|
|
424
|
+
* adding slashes at appropriate positions. Stores dates internally in ISO format
|
|
425
|
+
* while displaying them in European format for better UX in European contexts.
|
|
426
|
+
*
|
|
427
|
+
* Features:
|
|
428
|
+
* - Auto-formatting while typing (adds slashes automatically)
|
|
429
|
+
* - Calendar icon for native date picker access
|
|
430
|
+
* - Seamless conversion between European display and ISO storage formats
|
|
431
|
+
* - Mobile-optimized with proper touch targets
|
|
432
|
+
*
|
|
433
|
+
* @example
|
|
434
|
+
* // Basic usage
|
|
435
|
+
* <DateInput
|
|
436
|
+
* label="Date of Birth"
|
|
437
|
+
* value={birthDate}
|
|
438
|
+
* onChange={setBirthDate}
|
|
439
|
+
* placeholder="31/12/2000"
|
|
440
|
+
* />
|
|
441
|
+
*
|
|
442
|
+
* @example
|
|
443
|
+
* // With focus handlers
|
|
444
|
+
* <DateInput
|
|
445
|
+
* label="Event Date"
|
|
446
|
+
* value={eventDate}
|
|
447
|
+
* onChange={setEventDate}
|
|
448
|
+
* onFocus={() => console.log('Focused')}
|
|
449
|
+
* onBlur={() => validateDate(eventDate)}
|
|
450
|
+
* />
|
|
451
|
+
*/
|
|
452
|
+
function DateInput({ label, value, onChange, placeholder = "25/12/2024", onFocus, onBlur, error = false, success = false, loading = false, disabled = false }) {
|
|
453
|
+
const hiddenDateInputRef = React.useRef(null);
|
|
454
|
+
const handleTextChange = (textValue) => {
|
|
455
|
+
// Auto-format as user types
|
|
456
|
+
let formatted = textValue.replace(/[^\d/]/g, '');
|
|
457
|
+
// Add slashes automatically
|
|
458
|
+
if (formatted.length >= 2 && formatted.charAt(2) !== '/') {
|
|
459
|
+
formatted = formatted.substring(0, 2) + '/' + formatted.substring(2);
|
|
460
|
+
}
|
|
461
|
+
if (formatted.length >= 5 && formatted.charAt(5) !== '/') {
|
|
462
|
+
formatted = formatted.substring(0, 5) + '/' + formatted.substring(5);
|
|
463
|
+
}
|
|
464
|
+
// Limit length
|
|
465
|
+
if (formatted.length > 10) {
|
|
466
|
+
formatted = formatted.substring(0, 10);
|
|
467
|
+
}
|
|
468
|
+
// Convert to ISO format when complete and valid, otherwise store display format
|
|
469
|
+
if (formatted.length === 10) {
|
|
470
|
+
const isoDate = parseEuropeanDate(formatted);
|
|
471
|
+
onChange(isoDate || formatted);
|
|
472
|
+
}
|
|
473
|
+
else {
|
|
474
|
+
onChange(formatted);
|
|
475
|
+
}
|
|
476
|
+
};
|
|
477
|
+
const handleCalendarClick = () => {
|
|
478
|
+
// Set the hidden input to current value for calendar
|
|
479
|
+
if (hiddenDateInputRef.current) {
|
|
480
|
+
// If value is already ISO format, use it directly
|
|
481
|
+
// If it's European format, convert it
|
|
482
|
+
const isoDate = value.includes('-') ? value : parseEuropeanDate(value);
|
|
483
|
+
if (isoDate) {
|
|
484
|
+
hiddenDateInputRef.current.value = isoDate;
|
|
485
|
+
}
|
|
486
|
+
// Try showPicker first (modern browsers), fallback to click
|
|
487
|
+
if (hiddenDateInputRef.current.showPicker) {
|
|
488
|
+
hiddenDateInputRef.current.showPicker();
|
|
489
|
+
}
|
|
490
|
+
else {
|
|
491
|
+
hiddenDateInputRef.current.click();
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
};
|
|
495
|
+
const handleCalendarChange = (e) => {
|
|
496
|
+
const isoDate = e.target.value;
|
|
497
|
+
if (isoDate) {
|
|
498
|
+
onChange(isoDate);
|
|
499
|
+
}
|
|
500
|
+
};
|
|
501
|
+
const getClassName = () => {
|
|
502
|
+
const classes = [styles$f.dateInput];
|
|
503
|
+
if (error)
|
|
504
|
+
classes.push(styles$f.error);
|
|
505
|
+
if (success)
|
|
506
|
+
classes.push(styles$f.success);
|
|
507
|
+
if (loading)
|
|
508
|
+
classes.push(styles$f.loading);
|
|
509
|
+
return classes.join(' ');
|
|
510
|
+
};
|
|
511
|
+
return (jsxRuntime.jsxs("div", { className: getClassName(), children: [jsxRuntime.jsx("label", { className: styles$f.label, children: label }), jsxRuntime.jsxs("div", { className: styles$f.inputWrapper, children: [jsxRuntime.jsx("input", { type: "text", value: value.includes('-') ? formatDateToEuropean(value) : value, onChange: (e) => handleTextChange(e.target.value), onFocus: onFocus, onBlur: onBlur, placeholder: placeholder, className: styles$f.textInput, disabled: disabled || loading }), jsxRuntime.jsx("button", { type: "button", onClick: handleCalendarClick, className: styles$f.calendarButton, title: "Select date from calendar", disabled: disabled || loading, children: jsxRuntime.jsx(FiCalendar, {}) }), jsxRuntime.jsx("input", { ref: hiddenDateInputRef, type: "date", onChange: handleCalendarChange, className: styles$f.hiddenDateInput, tabIndex: -1, disabled: disabled || loading })] })] }));
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
var css_248z$g = ".SearchableDropdown-module_searchableDropdown__S2Nh5{margin-bottom:var(--spacing-lg);position:relative;width:100%}.SearchableDropdown-module_searchableDropdown__S2Nh5 label{color:var(--color-text);display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-wide);margin-bottom:var(--spacing-sm);transition:color var(--transition-base)}.SearchableDropdown-module_dropdownTrigger__dihdr{align-items:center;background:linear-gradient(135deg,var(--color-background),var(--color-background-secondary));border:2px solid var(--color-border);border-radius:var(--radius-lg);color:var(--color-text);cursor:pointer;display:flex;font-size:var(--font-size-base);min-height:44px;padding:var(--spacing-sm) var(--spacing-lg);padding-right:48px;position:relative;text-align:left;transition:all var(--transition-base);width:100%}.SearchableDropdown-module_dropdownTrigger__dihdr:hover{background:var(--color-background);border-color:var(--color-border-hover);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.SearchableDropdown-module_dropdownTrigger__dihdr.SearchableDropdown-module_open__P7mRt{background:var(--color-background);border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(124,58,237,.1);transform:translateY(-2px)}.SearchableDropdown-module_dropdownValue__ydrc2{flex:1;font-weight:var(--font-weight-medium);overflow:hidden;text-align:left;text-overflow:ellipsis;white-space:nowrap}.SearchableDropdown-module_dropdownValue__ydrc2.SearchableDropdown-module_placeholder__BwM2W{color:var(--color-text-secondary);font-weight:var(--font-weight-normal);opacity:.6}.SearchableDropdown-module_dropdownArrow__yd5fp{color:var(--color-primary);height:20px;position:absolute;right:var(--spacing-md);top:50%;transform:translateY(-50%) rotate(0deg);transition:transform var(--transition-base),color var(--transition-base);width:20px}.SearchableDropdown-module_dropdownTrigger__dihdr.SearchableDropdown-module_open__P7mRt .SearchableDropdown-module_dropdownArrow__yd5fp{color:var(--color-primary-hover);transform:translateY(-50%) rotate(180deg)}.SearchableDropdown-module_dropdownMenu__2Z5cc{background:var(--color-background);border:2px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);box-sizing:border-box;display:flex;flex-direction:column;left:0;max-height:320px;overflow:hidden;position:absolute;right:0;top:calc(100% + 8px);width:100%;z-index:var(--z-index-dropdown)}.SearchableDropdown-module_dropdownSearch__NRk7j{background:linear-gradient(180deg,var(--color-background-secondary),var(--color-background));border-bottom:1px solid var(--color-border);padding:var(--spacing-md);position:relative}.SearchableDropdown-module_searchInput__VS2Hw{background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-md);box-sizing:border-box;color:var(--color-text);font-size:var(--font-size-base);outline:none;padding:var(--spacing-sm) var(--spacing-md);padding-left:40px;transition:all var(--transition-base);width:100%}.SearchableDropdown-module_searchInput__VS2Hw:focus{background:var(--color-background);border-color:var(--color-primary);box-shadow:0 0 0 2px rgba(124,58,237,.1)}.SearchableDropdown-module_searchInput__VS2Hw::placeholder{color:var(--color-text-secondary);opacity:.6}.SearchableDropdown-module_searchIcon__2vKFF{color:var(--color-text-secondary);height:18px;left:calc(var(--spacing-md) + 12px);pointer-events:none;position:absolute;top:50%;transform:translateY(-50%);transition:color var(--transition-base);width:18px}.SearchableDropdown-module_searchInput__VS2Hw:focus~.SearchableDropdown-module_searchIcon__2vKFF{color:var(--color-primary)}.SearchableDropdown-module_dropdownOptions__6YXqF{flex:1;max-height:250px;overflow-y:auto;padding:var(--spacing-xs)}.SearchableDropdown-module_dropdownOptions__6YXqF::-webkit-scrollbar{width:6px}.SearchableDropdown-module_dropdownOptions__6YXqF::-webkit-scrollbar-track{background:var(--color-background-secondary);border-radius:var(--radius-sm)}.SearchableDropdown-module_dropdownOptions__6YXqF::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-sm);transition:background var(--transition-base)}.SearchableDropdown-module_dropdownOptions__6YXqF::-webkit-scrollbar-thumb:hover{background:var(--color-border-hover)}.SearchableDropdown-module_dropdownOption__YwDr-{background:transparent;border:none;border-radius:var(--radius-md);color:var(--color-text);cursor:pointer;font-size:var(--font-size-base);margin:2px 0;overflow:hidden;padding:var(--spacing-sm) var(--spacing-md);position:relative;text-align:left;text-overflow:ellipsis;transition:all var(--transition-base);white-space:nowrap;width:100%}.SearchableDropdown-module_dropdownOption__YwDr-:before{background:var(--color-primary);content:\"\";height:100%;left:0;position:absolute;top:0;transform:translateX(-100%);transition:transform var(--transition-base);width:3px}.SearchableDropdown-module_dropdownOption__YwDr-:hover{background:linear-gradient(90deg,rgba(124,58,237,.05),rgba(124,58,237,.02));padding-left:calc(var(--spacing-md) + 4px)}.SearchableDropdown-module_dropdownOption__YwDr-:hover:before{transform:translateX(0)}.SearchableDropdown-module_dropdownOption__YwDr-.SearchableDropdown-module_selected__31JeB{background:linear-gradient(135deg,var(--color-primary),var(--color-primary-hover));box-shadow:var(--shadow-sm);color:var(--color-text-inverse);font-weight:var(--font-weight-medium)}.SearchableDropdown-module_dropdownOption__YwDr-.SearchableDropdown-module_selected__31JeB:before{display:none}.SearchableDropdown-module_dropdownOption__YwDr-.SearchableDropdown-module_selected__31JeB:hover{background:linear-gradient(135deg,var(--color-primary-hover),var(--color-primary-active));transform:translateX(2px)}.SearchableDropdown-module_dropdownOption__YwDr-.SearchableDropdown-module_highlighted__P0bBq:not(.SearchableDropdown-module_selected__31JeB){background:linear-gradient(90deg,rgba(124,58,237,.08),rgba(124,58,237,.03));padding-left:calc(var(--spacing-md) + 4px)}.SearchableDropdown-module_dropdownOption__YwDr-.SearchableDropdown-module_highlighted__P0bBq:not(.SearchableDropdown-module_selected__31JeB):before{transform:translateX(0)}.SearchableDropdown-module_checkIcon__YxowK{animation:SearchableDropdown-module_checkIn__oUZdd .3s ease-out;color:var(--color-text-inverse);height:16px;position:absolute;right:var(--spacing-md);width:16px}@keyframes SearchableDropdown-module_checkIn__oUZdd{0%{opacity:0;transform:scale(0) rotate(-45deg)}to{opacity:1;transform:scale(1) rotate(0deg)}}.SearchableDropdown-module_dropdownNoResults__WW-Da{color:var(--color-text-secondary);font-style:italic;opacity:.7;padding:var(--spacing-lg);text-align:center}@keyframes SearchableDropdown-module_slideIn__V9S0g{0%{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}.SearchableDropdown-module_dropdownOption__YwDr-{animation:SearchableDropdown-module_slideIn__V9S0g .2s ease-out forwards}[data-theme=dark] .SearchableDropdown-module_dropdownTrigger__dihdr{background:linear-gradient(135deg,var(--color-background-secondary),var(--color-background-tertiary));border-color:var(--color-border)}[data-theme=dark] .SearchableDropdown-module_dropdownTrigger__dihdr:hover{background:var(--color-background-secondary);border-color:var(--color-border-hover)}[data-theme=dark] .SearchableDropdown-module_dropdownTrigger__dihdr.SearchableDropdown-module_open__P7mRt{background:var(--color-background-secondary);border-color:var(--color-primary-light);box-shadow:0 0 0 3px rgba(167,139,250,.1)}[data-theme=dark] .SearchableDropdown-module_dropdownMenu__2Z5cc{background:var(--color-background-secondary);border-color:var(--color-border)}[data-theme=dark] .SearchableDropdown-module_dropdownSearch__NRk7j{background:linear-gradient(180deg,var(--color-background-tertiary),var(--color-background-secondary))}[data-theme=dark] .SearchableDropdown-module_searchInput__VS2Hw{background:var(--color-background);border-color:var(--color-border)}[data-theme=dark] .SearchableDropdown-module_searchInput__VS2Hw:focus{border-color:var(--color-primary-light);box-shadow:0 0 0 2px rgba(167,139,250,.1)}[data-theme=dark] .SearchableDropdown-module_dropdownOption__YwDr-:hover{background:linear-gradient(90deg,rgba(167,139,250,.1),rgba(167,139,250,.05))}[data-theme=dark] .SearchableDropdown-module_dropdownOption__YwDr-.SearchableDropdown-module_selected__31JeB{background:linear-gradient(135deg,var(--color-primary-light),var(--color-primary))}@media (max-width:768px){.SearchableDropdown-module_dropdownMenu__2Z5cc{left:var(--spacing-md);max-height:60vh;position:fixed;right:var(--spacing-md);top:50%;transform:translateY(-50%)}.SearchableDropdown-module_dropdownOptions__6YXqF{max-height:40vh}.SearchableDropdown-module_dropdownTrigger__dihdr{font-size:16px;min-height:48px;padding:var(--spacing-md)}.SearchableDropdown-module_searchInput__VS2Hw{font-size:16px;padding:var(--spacing-md);padding-left:44px}.SearchableDropdown-module_dropdownOption__YwDr-{min-height:44px;padding:var(--spacing-md)}}.SearchableDropdown-module_dropdownTrigger__dihdr.SearchableDropdown-module_loading__xlYf0{overflow:hidden;position:relative}.SearchableDropdown-module_dropdownTrigger__dihdr.SearchableDropdown-module_loading__xlYf0:after{animation:SearchableDropdown-module_shimmer__Mbaf- 2s infinite;background:linear-gradient(90deg,transparent,rgba(124,58,237,.1),transparent);content:\"\";height:100%;left:-100%;position:absolute;top:0;width:100%}@keyframes SearchableDropdown-module_shimmer__Mbaf-{to{left:100%}}.SearchableDropdown-module_dropdownTrigger__dihdr:disabled{background:var(--color-background-tertiary);border-color:var(--color-border);cursor:not-allowed;opacity:.5}.SearchableDropdown-module_dropdownTrigger__dihdr:disabled:hover{box-shadow:none;transform:none}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNlYXJjaGFibGVEcm9wZG93bi5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFEQUVJLCtCQUFnQyxDQURoQyxpQkFBa0IsQ0FFbEIsVUFDSixDQUVBLDJEQUlJLHVCQUF3QixDQUh4QixhQUFjLENBQ2QsNkJBQThCLENBQzlCLHVDQUF3QyxDQUd4Qyx5Q0FBMEMsQ0FEMUMsK0JBQWdDLENBRWhDLHVDQUNKLENBRUEsa0RBWUksa0JBQW1CLENBTm5CLDRGQUdDLENBTEQsb0NBQXFDLENBQ3JDLDhCQUErQixDQVkvQix1QkFBd0IsQ0FKeEIsY0FBZSxDQUZmLFlBQWEsQ0FEYiwrQkFBZ0MsQ0FLaEMsZUFBZ0IsQ0FiaEIsMkNBQTRDLENBQzVDLGtCQUFtQixDQVduQixpQkFBa0IsQ0FJbEIsZUFBZ0IsQ0FGaEIscUNBQXNDLENBZnRDLFVBa0JKLENBRUEsd0RBRUksa0NBQW1DLENBRG5DLHNDQUF1QyxDQUV2QywyQkFBNEIsQ0FDNUIsMEJBQ0osQ0FFQSx3RkFHSSxrQ0FBbUMsQ0FGbkMsaUNBQWtDLENBQ2xDLHdDQUE2QyxDQUU3QywwQkFDSixDQUVBLGdEQUNJLE1BQU8sQ0FLUCxxQ0FBc0MsQ0FGdEMsZUFBZ0IsQ0FGaEIsZUFBZ0IsQ0FHaEIsc0JBQXVCLENBRnZCLGtCQUlKLENBRUEsNkZBQ0ksaUNBQWtDLENBRWxDLHFDQUFzQyxDQUR0QyxVQUVKLENBRUEsZ0RBS0ksMEJBQTJCLENBRTNCLFdBQVksQ0FOWixpQkFBa0IsQ0FDbEIsdUJBQXdCLENBQ3hCLE9BQVEsQ0FDUix1Q0FBd0MsQ0FJeEMsd0VBQTBFLENBRjFFLFVBR0osQ0FFQSx3SUFFSSxnQ0FBaUMsQ0FEakMseUNBRUosQ0FFQSwrQ0FTSSxrQ0FBbUMsQ0FGbkMsb0NBQXFDLENBQ3JDLDhCQUErQixDQUUvQiwyQkFBNEIsQ0FKNUIscUJBQXNCLENBUXRCLFlBQWEsQ0FDYixxQkFBc0IsQ0FadEIsTUFBTyxDQVNQLGdCQUFpQixDQUNqQixlQUFnQixDQVpoQixpQkFBa0IsQ0FHbEIsT0FBUSxDQUZSLG9CQUFxQixDQUdyQixVQUFXLENBTVgsK0JBS0osQ0FFQSxpREFJSSw0RkFHQyxDQUpELDJDQUE0QyxDQUQ1Qyx5QkFBMEIsQ0FEMUIsaUJBT0osQ0FFQSw4Q0FRSSxrQ0FBbUMsQ0FIbkMsb0NBQXFDLENBQ3JDLDhCQUErQixDQUovQixxQkFBc0IsQ0FPdEIsdUJBQXdCLENBRnhCLCtCQUFnQyxDQUloQyxZQUFhLENBUmIsMkNBQTRDLENBQzVDLGlCQUFrQixDQU1sQixxQ0FBc0MsQ0FUdEMsVUFXSixDQUVBLG9EQUdJLGtDQUFtQyxDQUZuQyxpQ0FBa0MsQ0FDbEMsd0NBRUosQ0FFQSwyREFDSSxpQ0FBa0MsQ0FDbEMsVUFDSixDQUVBLDZDQUtJLGlDQUFrQyxDQUVsQyxXQUFZLENBTFosbUNBQW9DLENBTXBDLG1CQUFvQixDQVBwQixpQkFBa0IsQ0FFbEIsT0FBUSxDQUNSLDBCQUEyQixDQUszQix1Q0FBd0MsQ0FIeEMsVUFJSixDQUVBLGlHQUNJLDBCQUNKLENBRUEsa0RBQ0ksTUFBTyxDQUVQLGdCQUFpQixDQURqQixlQUFnQixDQUVoQix5QkFDSixDQUdBLHFFQUNJLFNBQ0osQ0FFQSwyRUFDSSw0Q0FBNkMsQ0FDN0MsOEJBQ0osQ0FFQSwyRUFDSSw4QkFBK0IsQ0FDL0IsOEJBQStCLENBQy9CLDRDQUNKLENBRUEsaUZBQ0ksb0NBQ0osQ0FFQSxpREFLSSxzQkFBdUIsQ0FEdkIsV0FBWSxDQU1aLDhCQUErQixDQUQvQix1QkFBd0IsQ0FOeEIsY0FBZSxDQUtmLCtCQUFnQyxDQU5oQyxZQUFhLENBV2IsZUFBZ0IsQ0FaaEIsMkNBQTRDLENBVzVDLGlCQUFrQixDQUxsQixlQUFnQixDQVFoQixzQkFBdUIsQ0FKdkIscUNBQXNDLENBR3RDLGtCQUFtQixDQVJuQixVQVVKLENBRUEsd0RBT0ksK0JBQWdDLENBTmhDLFVBQVcsQ0FLWCxXQUFZLENBSFosTUFBTyxDQURQLGlCQUFrQixDQUVsQixLQUFNLENBSU4sMkJBQTRCLENBQzVCLDJDQUE0QyxDQUo1QyxTQUtKLENBRUEsdURBQ0ksMkVBR0MsQ0FDRCwwQ0FDSixDQUVBLDhEQUNJLHVCQUNKLENBRUEsMkZBQ0ksa0ZBR0MsQ0FHRCwyQkFBNEIsQ0FGNUIsK0JBQWdDLENBQ2hDLHFDQUVKLENBRUEsa0dBQ0ksWUFDSixDQUVBLGlHQUNJLHlGQUdDLENBQ0QseUJBQ0osQ0FFQSw4SUFDSSwyRUFHQyxDQUNELDBDQUNKLENBRUEscUpBQ0ksdUJBQ0osQ0FHQSw0Q0FNSSwrREFBZ0MsQ0FEaEMsK0JBQWdDLENBRGhDLFdBQVksQ0FIWixpQkFBa0IsQ0FDbEIsdUJBQXdCLENBQ3hCLFVBSUosQ0FFQSxvREFDSSxHQUNJLFNBQVUsQ0FDVixpQ0FDSixDQUNBLEdBQ0ksU0FBVSxDQUNWLCtCQUNKLENBQ0osQ0FFQSxvREFHSSxpQ0FBa0MsQ0FDbEMsaUJBQWtCLENBQ2xCLFVBQVksQ0FKWix5QkFBMEIsQ0FDMUIsaUJBSUosQ0FHQSxvREFDSSxHQUNJLFNBQVUsQ0FDViwyQkFDSixDQUNBLEdBQ0ksU0FBVSxDQUNWLHVCQUNKLENBQ0osQ0FFQSxpREFDSSx3RUFDSixDQUdBLG9FQUNJLHFHQUdDLENBQ0QsZ0NBQ0osQ0FFQSwwRUFDSSw0Q0FBNkMsQ0FDN0Msc0NBQ0osQ0FFQSwwR0FDSSw0Q0FBNkMsQ0FDN0MsdUNBQXdDLENBQ3hDLHlDQUNKLENBRUEsaUVBQ0ksNENBQTZDLENBQzdDLGdDQUNKLENBRUEsbUVBQ0kscUdBSUosQ0FFQSxnRUFDSSxrQ0FBbUMsQ0FDbkMsZ0NBQ0osQ0FFQSxzRUFDSSx1Q0FBd0MsQ0FDeEMseUNBQ0osQ0FFQSx5RUFDSSw0RUFJSixDQUVBLDZHQUNJLGtGQUlKLENBR0EseUJBQ0ksK0NBR0ksc0JBQXVCLENBRnZCLGVBQWdCLENBQ2hCLGNBQWUsQ0FFZix1QkFBd0IsQ0FDeEIsT0FBUSxDQUNSLDBCQUNKLENBRUEsa0RBQ0ksZUFDSixDQUVBLGtEQUNJLGNBQWUsQ0FDZixlQUFnQixDQUNoQix5QkFDSixDQUVBLDhDQUNJLGNBQWUsQ0FDZix5QkFBMEIsQ0FDMUIsaUJBQ0osQ0FFQSxpREFFSSxlQUFnQixDQURoQix5QkFFSixDQUNKLENBR0EsMkZBRUksZUFBZ0IsQ0FEaEIsaUJBRUosQ0FFQSxpR0FhSSw4REFBOEIsQ0FOOUIsNkVBS0MsQ0FYRCxVQUFXLENBS1gsV0FBWSxDQUZaLFVBQVcsQ0FGWCxpQkFBa0IsQ0FDbEIsS0FBTSxDQUVOLFVBU0osQ0FFQSxvREFDSSxHQUNJLFNBQ0osQ0FDSixDQUdBLDJEQUdJLDJDQUE0QyxDQUM1QyxnQ0FBaUMsQ0FGakMsa0JBQW1CLENBRG5CLFVBSUosQ0FFQSxpRUFFSSxlQUFnQixDQURoQixjQUVKIiwiZmlsZSI6IlNlYXJjaGFibGVEcm9wZG93bi5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnNlYXJjaGFibGVEcm9wZG93biB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctbGcpO1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4uc2VhcmNoYWJsZURyb3Bkb3duIGxhYmVsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy1zbSk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLWxldHRlci1zcGFjaW5nLXdpZGUpO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi5kcm9wZG93blRyaWdnZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctc20pIHZhcigtLXNwYWNpbmctbGcpO1xuICAgIHBhZGRpbmctcmlnaHQ6IDQ4cHg7XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSwgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KVxuICAgICk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYmFzZSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWluLWhlaWdodDogNDRweDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbn1cblxuLmRyb3Bkb3duVHJpZ2dlcjpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1ib3JkZXItaG92ZXIpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1zbSk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xufVxuXG4uZHJvcGRvd25UcmlnZ2VyLm9wZW4ge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMTI0LCA1OCwgMjM3LCAwLjEpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbn1cblxuLmRyb3Bkb3duVmFsdWUge1xuICAgIGZsZXg6IDE7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XG59XG5cbi5kcm9wZG93blZhbHVlLnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgIG9wYWNpdHk6IDAuNjtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbm9ybWFsKTtcbn1cblxuLmRyb3Bkb3duQXJyb3cge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgdG9wOiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHJvdGF0ZSgwZGVnKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgd2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10cmFuc2l0aW9uLWJhc2UpLCBjb2xvciB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4uZHJvcGRvd25UcmlnZ2VyLm9wZW4gLmRyb3Bkb3duQXJyb3cge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUoMTgwZGVnKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1ob3Zlcik7XG59XG5cbi5kcm9wZG93bk1lbnUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IGNhbGMoMTAwJSArIDhweCk7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3cteGwpO1xuICAgIHotaW5kZXg6IHZhcigtLXotaW5kZXgtZHJvcGRvd24pO1xuICAgIG1heC1oZWlnaHQ6IDMyMHB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4uZHJvcGRvd25TZWFyY2gge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCBcbiAgICAgICAgdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpLCBcbiAgICAgICAgdmFyKC0tY29sb3ItYmFja2dyb3VuZClcbiAgICApO1xufVxuXG4uc2VhcmNoSW5wdXQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1zbSkgdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgcGFkZGluZy1sZWZ0OiA0MHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG4gICAgb3V0bGluZTogbm9uZTtcbn1cblxuLnNlYXJjaElucHV0OmZvY3VzIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2JhKDEyNCwgNTgsIDIzNywgMC4xKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbn1cblxuLnNlYXJjaElucHV0OjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBvcGFjaXR5OiAwLjY7XG59XG5cbi5zZWFyY2hJY29uIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogY2FsYyh2YXIoLS1zcGFjaW5nLW1kKSArIDEycHgpO1xuICAgIHRvcDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgIHdpZHRoOiAxOHB4O1xuICAgIGhlaWdodDogMThweDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4uc2VhcmNoSW5wdXQ6Zm9jdXMgfiAuc2VhcmNoSWNvbiB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xufVxuXG4uZHJvcGRvd25PcHRpb25zIHtcbiAgICBmbGV4OiAxO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgbWF4LWhlaWdodDogMjUwcHg7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy14cyk7XG59XG5cbi8qIEN1c3RvbSBzY3JvbGxiYXIgKi9cbi5kcm9wZG93bk9wdGlvbnM6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICB3aWR0aDogNnB4O1xufVxuXG4uZHJvcGRvd25PcHRpb25zOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG59XG5cbi5kcm9wZG93bk9wdGlvbnM6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4uZHJvcGRvd25PcHRpb25zOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYm9yZGVyLWhvdmVyKTtcbn1cblxuLmRyb3Bkb3duT3B0aW9uIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXNtKSB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgICBtYXJnaW46IDJweCAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuXG4uZHJvcGRvd25PcHRpb246OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDA7XG4gICAgdG9wOiAwO1xuICAgIHdpZHRoOiAzcHg7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi5kcm9wZG93bk9wdGlvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCBcbiAgICAgICAgcmdiYSgxMjQsIDU4LCAyMzcsIDAuMDUpLCBcbiAgICAgICAgcmdiYSgxMjQsIDU4LCAyMzcsIDAuMDIpXG4gICAgKTtcbiAgICBwYWRkaW5nLWxlZnQ6IGNhbGModmFyKC0tc3BhY2luZy1tZCkgKyA0cHgpO1xufVxuXG4uZHJvcGRvd25PcHRpb246aG92ZXI6OmJlZm9yZSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xufVxuXG4uZHJvcGRvd25PcHRpb24uc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgICAgICB2YXIoLS1jb2xvci1wcmltYXJ5KSwgXG4gICAgICAgIHZhcigtLWNvbG9yLXByaW1hcnktaG92ZXIpXG4gICAgKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1pbnZlcnNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc20pO1xufVxuXG4uZHJvcGRvd25PcHRpb24uc2VsZWN0ZWQ6OmJlZm9yZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLmRyb3Bkb3duT3B0aW9uLnNlbGVjdGVkOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICAgICAgdmFyKC0tY29sb3ItcHJpbWFyeS1ob3ZlciksIFxuICAgICAgICB2YXIoLS1jb2xvci1wcmltYXJ5LWFjdGl2ZSlcbiAgICApO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgycHgpO1xufVxuXG4uZHJvcGRvd25PcHRpb24uaGlnaGxpZ2h0ZWQ6bm90KC5zZWxlY3RlZCkge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgXG4gICAgICAgIHJnYmEoMTI0LCA1OCwgMjM3LCAwLjA4KSwgXG4gICAgICAgIHJnYmEoMTI0LCA1OCwgMjM3LCAwLjAzKVxuICAgICk7XG4gICAgcGFkZGluZy1sZWZ0OiBjYWxjKHZhcigtLXNwYWNpbmctbWQpICsgNHB4KTtcbn1cblxuLmRyb3Bkb3duT3B0aW9uLmhpZ2hsaWdodGVkOm5vdCguc2VsZWN0ZWQpOjpiZWZvcmUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbn1cblxuLyogQ2hlY2sgaWNvbiBmb3Igc2VsZWN0ZWQgaXRlbXMgKi9cbi5jaGVja0ljb24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LWludmVyc2UpO1xuICAgIGFuaW1hdGlvbjogY2hlY2tJbiAwLjNzIGVhc2Utb3V0O1xufVxuXG5Aa2V5ZnJhbWVzIGNoZWNrSW4ge1xuICAgIDAlIHsgXG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCkgcm90YXRlKC00NWRlZyk7XG4gICAgfVxuICAgIDEwMCUgeyBcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKSByb3RhdGUoMGRlZyk7XG4gICAgfVxufVxuXG4uZHJvcGRvd25Ob1Jlc3VsdHMge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctbGcpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBvcGFjaXR5OiAwLjc7XG59XG5cbi8qIFN0YWdnZXIgYW5pbWF0aW9uIGZvciBvcHRpb25zICovXG5Aa2V5ZnJhbWVzIHNsaWRlSW4ge1xuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwcHgpO1xuICAgIH1cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICB9XG59XG5cbi5kcm9wZG93bk9wdGlvbiB7XG4gICAgYW5pbWF0aW9uOiBzbGlkZUluIDAuMnMgZWFzZS1vdXQgZm9yd2FyZHM7XG59XG5cbi8qIERhcmsgbW9kZSBhZGp1c3RtZW50cyAqL1xuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5kcm9wZG93blRyaWdnZXIge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSksIFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXRlcnRpYXJ5KVxuICAgICk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1ib3JkZXIpO1xufVxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLmRyb3Bkb3duVHJpZ2dlcjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItYm9yZGVyLWhvdmVyKTtcbn1cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5kcm9wZG93blRyaWdnZXIub3BlbiB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1saWdodCk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMTY3LCAxMzksIDI1MCwgMC4xKTtcbn1cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5kcm9wZG93bk1lbnUge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJvcmRlcik7XG59XG5cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAuZHJvcGRvd25TZWFyY2gge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXRlcnRpYXJ5KSwgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KVxuICAgICk7XG59XG5cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAuc2VhcmNoSW5wdXQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItYm9yZGVyKTtcbn1cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5zZWFyY2hJbnB1dDpmb2N1cyB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWxpZ2h0KTtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAycHggcmdiYSgxNjcsIDEzOSwgMjUwLCAwLjEpO1xufVxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLmRyb3Bkb3duT3B0aW9uOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIFxuICAgICAgICByZ2JhKDE2NywgMTM5LCAyNTAsIDAuMSksIFxuICAgICAgICByZ2JhKDE2NywgMTM5LCAyNTAsIDAuMDUpXG4gICAgKTtcbn1cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5kcm9wZG93bk9wdGlvbi5zZWxlY3RlZCB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgICAgIHZhcigtLWNvbG9yLXByaW1hcnktbGlnaHQpLCBcbiAgICAgICAgdmFyKC0tY29sb3ItcHJpbWFyeSlcbiAgICApO1xufVxuXG4vKiBNb2JpbGUgYWRqdXN0bWVudHMgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgIC5kcm9wZG93bk1lbnUge1xuICAgICAgICBtYXgtaGVpZ2h0OiA2MHZoO1xuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICAgIGxlZnQ6IHZhcigtLXNwYWNpbmctbWQpO1xuICAgICAgICByaWdodDogdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgfVxuICAgIFxuICAgIC5kcm9wZG93bk9wdGlvbnMge1xuICAgICAgICBtYXgtaGVpZ2h0OiA0MHZoO1xuICAgIH1cbiAgICBcbiAgICAuZHJvcGRvd25UcmlnZ2VyIHtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4OyAvKiBQcmV2ZW50IHpvb20gb24gaU9TICovXG4gICAgICAgIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctbWQpO1xuICAgIH1cbiAgICBcbiAgICAuc2VhcmNoSW5wdXQge1xuICAgICAgICBmb250LXNpemU6IDE2cHg7IC8qIFByZXZlbnQgem9vbSBvbiBpT1MgKi9cbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgICAgIHBhZGRpbmctbGVmdDogNDRweDtcbiAgICB9XG4gICAgXG4gICAgLmRyb3Bkb3duT3B0aW9uIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQ0cHg7XG4gICAgfVxufVxuXG4vKiBMb2FkaW5nIHN0YXRlICovXG4uZHJvcGRvd25UcmlnZ2VyLmxvYWRpbmcge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZHJvcGRvd25UcmlnZ2VyLmxvYWRpbmc6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IC0xMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXG4gICAgICAgIDkwZGVnLFxuICAgICAgICB0cmFuc3BhcmVudCxcbiAgICAgICAgcmdiYSgxMjQsIDU4LCAyMzcsIDAuMSksXG4gICAgICAgIHRyYW5zcGFyZW50XG4gICAgKTtcbiAgICBhbmltYXRpb246IHNoaW1tZXIgMnMgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgc2hpbW1lciB7XG4gICAgMTAwJSB7XG4gICAgICAgIGxlZnQ6IDEwMCU7XG4gICAgfVxufVxuXG4vKiBEaXNhYmxlZCBzdGF0ZSAqL1xuLmRyb3Bkb3duVHJpZ2dlcjpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1ib3JkZXIpO1xufVxuXG4uZHJvcGRvd25UcmlnZ2VyOmRpc2FibGVkOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbn0iXX0= */";
|
|
515
|
+
var styles$e = {"searchableDropdown":"SearchableDropdown-module_searchableDropdown__S2Nh5","dropdownTrigger":"SearchableDropdown-module_dropdownTrigger__dihdr","open":"SearchableDropdown-module_open__P7mRt","dropdownValue":"SearchableDropdown-module_dropdownValue__ydrc2","placeholder":"SearchableDropdown-module_placeholder__BwM2W","dropdownArrow":"SearchableDropdown-module_dropdownArrow__yd5fp","dropdownMenu":"SearchableDropdown-module_dropdownMenu__2Z5cc","dropdownSearch":"SearchableDropdown-module_dropdownSearch__NRk7j","searchInput":"SearchableDropdown-module_searchInput__VS2Hw","searchIcon":"SearchableDropdown-module_searchIcon__2vKFF","dropdownOptions":"SearchableDropdown-module_dropdownOptions__6YXqF","dropdownOption":"SearchableDropdown-module_dropdownOption__YwDr-","selected":"SearchableDropdown-module_selected__31JeB","highlighted":"SearchableDropdown-module_highlighted__P0bBq","checkIcon":"SearchableDropdown-module_checkIcon__YxowK","dropdownNoResults":"SearchableDropdown-module_dropdownNoResults__WW-Da","loading":"SearchableDropdown-module_loading__xlYf0"};
|
|
516
|
+
styleInject(css_248z$g);
|
|
517
|
+
|
|
518
|
+
/**
|
|
519
|
+
* SearchableDropdown component - Modern filterable dropdown with animations
|
|
520
|
+
*
|
|
521
|
+
* @component
|
|
522
|
+
* @description
|
|
523
|
+
* A sophisticated dropdown component with real-time search filtering, smooth animations,
|
|
524
|
+
* and keyboard navigation support. Features gradient backgrounds, slide-in animations
|
|
525
|
+
* for options, and a sliding indicator on hover. The dropdown menu includes a search
|
|
526
|
+
* field that filters options as you type.
|
|
527
|
+
*
|
|
528
|
+
* Features:
|
|
529
|
+
* - Real-time search filtering
|
|
530
|
+
* - Smooth animations with Framer Motion
|
|
531
|
+
* - Keyboard navigation (Arrow keys, Enter, Escape)
|
|
532
|
+
* - Custom scrollbar styling
|
|
533
|
+
* - Mobile-optimized with modal-like behavior on small screens
|
|
534
|
+
* - Loading and error states
|
|
535
|
+
* - Selected item highlighting with gradient background
|
|
536
|
+
*
|
|
537
|
+
* @example
|
|
538
|
+
* // Basic usage
|
|
539
|
+
* <SearchableDropdown
|
|
540
|
+
* label="Select Country"
|
|
541
|
+
* value={selectedCountry}
|
|
542
|
+
* onChange={setSelectedCountry}
|
|
543
|
+
* options={countryOptions}
|
|
544
|
+
* placeholder="Choose a country..."
|
|
545
|
+
* />
|
|
546
|
+
*
|
|
547
|
+
* @example
|
|
548
|
+
* // With empty option disabled
|
|
549
|
+
* <SearchableDropdown
|
|
550
|
+
* label="Required Field"
|
|
551
|
+
* value={requiredValue}
|
|
552
|
+
* onChange={setRequiredValue}
|
|
553
|
+
* options={options}
|
|
554
|
+
* allowEmpty={false}
|
|
555
|
+
* error={!requiredValue}
|
|
556
|
+
* />
|
|
557
|
+
*/
|
|
558
|
+
function SearchableDropdown({ label, value, onChange, options, placeholder = "Select...", allowEmpty = true, disabled = false, loading = false, error = false }) {
|
|
559
|
+
const [isOpen, setIsOpen] = React.useState(false);
|
|
560
|
+
const [searchTerm, setSearchTerm] = React.useState("");
|
|
561
|
+
const [highlightedIndex, setHighlightedIndex] = React.useState(-1);
|
|
562
|
+
const dropdownRef = React.useRef(null);
|
|
563
|
+
const inputRef = React.useRef(null);
|
|
564
|
+
// Get the selected option's label
|
|
565
|
+
const selectedOption = options.find(opt => opt.value === value);
|
|
566
|
+
const displayValue = selectedOption ? selectedOption.label : '';
|
|
567
|
+
// Filter options based on search
|
|
568
|
+
const filteredOptions = options.filter(opt => opt.label.toLowerCase().includes(searchTerm.toLowerCase()));
|
|
569
|
+
// Add empty option to filtered list if allowed
|
|
570
|
+
const allOptions = allowEmpty ? [{ label: '(none)', value: '' }, ...filteredOptions] : filteredOptions;
|
|
571
|
+
// Close dropdown when clicking outside
|
|
572
|
+
React.useEffect(() => {
|
|
573
|
+
function handleClickOutside(event) {
|
|
574
|
+
if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
|
|
575
|
+
setIsOpen(false);
|
|
576
|
+
setSearchTerm("");
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
580
|
+
return () => document.removeEventListener('mousedown', handleClickOutside);
|
|
581
|
+
}, []);
|
|
582
|
+
// Focus search input when dropdown opens
|
|
583
|
+
React.useEffect(() => {
|
|
584
|
+
if (isOpen && inputRef.current) {
|
|
585
|
+
inputRef.current.focus();
|
|
586
|
+
}
|
|
587
|
+
}, [isOpen]);
|
|
588
|
+
const handleSelect = (optionValue) => {
|
|
589
|
+
onChange(optionValue);
|
|
590
|
+
setIsOpen(false);
|
|
591
|
+
setSearchTerm("");
|
|
592
|
+
setHighlightedIndex(-1);
|
|
593
|
+
};
|
|
594
|
+
const handleKeyDown = (e) => {
|
|
595
|
+
if (!isOpen)
|
|
596
|
+
return;
|
|
597
|
+
switch (e.key) {
|
|
598
|
+
case 'ArrowDown':
|
|
599
|
+
e.preventDefault();
|
|
600
|
+
setHighlightedIndex(prev => prev < allOptions.length - 1 ? prev + 1 : 0);
|
|
601
|
+
break;
|
|
602
|
+
case 'ArrowUp':
|
|
603
|
+
e.preventDefault();
|
|
604
|
+
setHighlightedIndex(prev => prev > 0 ? prev - 1 : allOptions.length - 1);
|
|
605
|
+
break;
|
|
606
|
+
case 'Enter':
|
|
607
|
+
e.preventDefault();
|
|
608
|
+
if (highlightedIndex >= 0 && highlightedIndex < allOptions.length) {
|
|
609
|
+
handleSelect(allOptions[highlightedIndex].value);
|
|
610
|
+
}
|
|
611
|
+
break;
|
|
612
|
+
case 'Escape':
|
|
613
|
+
e.preventDefault();
|
|
614
|
+
setIsOpen(false);
|
|
615
|
+
setSearchTerm("");
|
|
616
|
+
setHighlightedIndex(-1);
|
|
617
|
+
break;
|
|
618
|
+
}
|
|
619
|
+
};
|
|
620
|
+
const getTriggerClassName = () => {
|
|
621
|
+
const classes = [styles$e.dropdownTrigger];
|
|
622
|
+
if (isOpen)
|
|
623
|
+
classes.push(styles$e.open);
|
|
624
|
+
if (loading)
|
|
625
|
+
classes.push(styles$e.loading);
|
|
626
|
+
if (error)
|
|
627
|
+
classes.push(styles$e.error);
|
|
628
|
+
return classes.join(' ');
|
|
629
|
+
};
|
|
630
|
+
return (jsxRuntime.jsxs("div", { className: styles$e.searchableDropdown, ref: dropdownRef, onKeyDown: handleKeyDown, children: [jsxRuntime.jsx("label", { children: label }), jsxRuntime.jsxs(framerMotion.motion.button, { type: "button", className: getTriggerClassName(), onClick: () => !disabled && !loading && setIsOpen(!isOpen), whileTap: { scale: disabled ? 1 : 0.98 }, style: { willChange: 'transform' }, disabled: disabled, children: [jsxRuntime.jsx("span", { className: `${styles$e.dropdownValue} ${!displayValue ? styles$e.placeholder : ''}`, children: displayValue || placeholder }), jsxRuntime.jsx(FiChevronDown, { className: styles$e.dropdownArrow })] }), jsxRuntime.jsx(framerMotion.AnimatePresence, { children: isOpen && (jsxRuntime.jsxs(framerMotion.motion.div, { className: styles$e.dropdownMenu, initial: { opacity: 0, y: -10, scale: 0.95 }, animate: { opacity: 1, y: 0, scale: 1 }, exit: { opacity: 0, y: -10, scale: 0.95 }, transition: { duration: 0.2, ease: "easeOut" }, children: [jsxRuntime.jsxs("div", { className: styles$e.dropdownSearch, children: [jsxRuntime.jsx(FiSearch, { className: styles$e.searchIcon }), jsxRuntime.jsx("input", { ref: inputRef, type: "text", className: styles$e.searchInput, placeholder: "Cerca...", value: searchTerm, onChange: (e) => setSearchTerm(e.target.value), onClick: (e) => e.stopPropagation() })] }), jsxRuntime.jsxs("div", { className: styles$e.dropdownOptions, children: [allOptions.map((opt, index) => {
|
|
631
|
+
const isSelected = value === opt.value;
|
|
632
|
+
const isHighlighted = highlightedIndex === index;
|
|
633
|
+
return (jsxRuntime.jsxs(framerMotion.motion.button, { type: "button", className: `${styles$e.dropdownOption} ${isSelected ? styles$e.selected : ''} ${isHighlighted ? styles$e.highlighted : ''}`, onClick: () => handleSelect(opt.value), onMouseEnter: () => setHighlightedIndex(index), initial: { opacity: 0, x: -20 }, animate: { opacity: 1, x: 0 }, transition: { delay: index * 0.02 }, whileTap: { scale: 0.98 }, style: { willChange: 'transform' }, children: [jsxRuntime.jsx("span", { children: opt.label }), isSelected && jsxRuntime.jsx(FiCheck, { className: styles$e.checkIcon })] }, `${opt.value}-${index}`));
|
|
634
|
+
}), allOptions.length === 0 && (jsxRuntime.jsx(framerMotion.motion.div, { className: styles$e.dropdownNoResults, initial: { opacity: 0 }, animate: { opacity: 1 }, children: "No results found" }))] })] })) })] }));
|
|
635
|
+
}
|
|
97
636
|
|
|
98
|
-
const Modal = ({ isOpen, onClose, title, size = 'medium', centered = false, closeOnOverlay = true, closeOnEsc = true, showCloseButton = true, header, footer, children, className = '', overlayClassName = '', }) => {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
637
|
+
var css_248z$f = ".SelectInput-module_selectInput__s6zEg{margin-bottom:var(--spacing-lg);position:relative}.SelectInput-module_selectInput__s6zEg label{color:var(--color-text);display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-wide);margin-bottom:var(--spacing-sm);transition:color var(--transition-base)}.SelectInput-module_selectWrapper__Qr4pl{position:relative;width:100%}.SelectInput-module_selectInput__s6zEg select{appearance:none;-webkit-appearance:none;-moz-appearance:none;background:linear-gradient(135deg,var(--color-background),var(--color-background-secondary));border:2px solid var(--color-border);border-radius:var(--radius-lg);color:var(--color-text);cursor:pointer;display:block;font-size:var(--font-size-base);font-weight:var(--font-weight-medium);min-height:44px;outline:none;padding:var(--spacing-sm) var(--spacing-md);padding-right:48px;transition:all var(--transition-base);width:100%}.SelectInput-module_selectInput__s6zEg select:hover:not(:focus):not(:disabled){background:var(--color-background);border-color:var(--color-border-hover);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.SelectInput-module_selectInput__s6zEg select:focus{background:var(--color-background);border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(124,58,237,.1);transform:translateY(-2px)}.SelectInput-module_selectInput__s6zEg select:disabled{background:var(--color-background-tertiary);border-color:var(--color-border);color:var(--color-text-tertiary);cursor:not-allowed;opacity:.6;transform:none}.SelectInput-module_selectIcon__9pjhf{color:var(--color-primary);height:20px;pointer-events:none;position:absolute;right:var(--spacing-md);top:50%;transform:translateY(-50%);transition:color var(--transition-base);width:20px}.SelectInput-module_selectInput__s6zEg select:focus~.SelectInput-module_selectIcon__9pjhf,.SelectInput-module_selectInput__s6zEg select:hover:not(:disabled)~.SelectInput-module_selectIcon__9pjhf{color:var(--color-primary-hover)}.SelectInput-module_selectWrapper__Qr4pl:before{background:linear-gradient(135deg,rgba(124,58,237,.05),rgba(124,58,237,.1));border-radius:var(--radius-md);content:\"\";height:32px;opacity:0;pointer-events:none;position:absolute;right:8px;top:50%;transform:translateY(-50%);transition:opacity var(--transition-base);width:32px}.SelectInput-module_selectInput__s6zEg select:focus~:before{opacity:1}.SelectInput-module_selectInput__s6zEg select option{background:var(--color-background);color:var(--color-text);font-weight:var(--font-weight-normal);padding:var(--spacing-sm)}.SelectInput-module_selectInput__s6zEg select option:checked{background:linear-gradient(135deg,var(--color-primary-lighter),var(--color-primary-light));color:var(--color-text)}.SelectInput-module_selectInput__s6zEg select option[value=\"\"]{color:var(--color-text-secondary);font-style:italic}.SelectInput-module_error__3WNJc select{animation:SelectInput-module_shake__Vo1BV .3s cubic-bezier(.36,.07,.19,.97) both;background:linear-gradient(135deg,var(--color-error-bg),var(--color-background));border-color:var(--color-error)}.SelectInput-module_error__3WNJc label{color:var(--color-error)}.SelectInput-module_error__3WNJc select:focus{box-shadow:0 0 0 3px rgba(244,63,94,.15)}.SelectInput-module_error__3WNJc .SelectInput-module_selectIcon__9pjhf{color:var(--color-error)}@keyframes SelectInput-module_shake__Vo1BV{10%,90%{transform:translateX(-1px)}20%,80%{transform:translateX(2px)}30%,50%,70%{transform:translateX(-3px)}40%,60%{transform:translateX(3px)}}.SelectInput-module_success__WJ5ga select{border-color:var(--color-success)}.SelectInput-module_success__WJ5ga:after{animation:SelectInput-module_checkIn__JE0oH .3s ease-out;color:var(--color-success);content:\"✓\";font-weight:700;position:absolute;right:52px;top:50%;transform:translateY(-50%)}@keyframes SelectInput-module_checkIn__JE0oH{0%{opacity:0;transform:translateY(-50%) scale(0)}to{opacity:1;transform:translateY(-50%) scale(1)}}.SelectInput-module_loading__n35N9 select{overflow:hidden;position:relative}.SelectInput-module_loading__n35N9:after{animation:SelectInput-module_shimmer__bMGaz 2s infinite;background:linear-gradient(90deg,transparent,rgba(124,58,237,.1),transparent);content:\"\";height:100%;left:-100%;pointer-events:none;position:absolute;top:0;width:100%}@keyframes SelectInput-module_shimmer__bMGaz{to{left:100%}}[data-theme=dark] .SelectInput-module_selectInput__s6zEg select{background:linear-gradient(135deg,var(--color-background-secondary),var(--color-background-tertiary));border-color:var(--color-border)}[data-theme=dark] .SelectInput-module_selectInput__s6zEg select:hover:not(:disabled){background:var(--color-background-secondary);border-color:var(--color-border-hover)}[data-theme=dark] .SelectInput-module_selectInput__s6zEg select:focus{background:var(--color-background-secondary);border-color:var(--color-primary-light);box-shadow:0 0 0 3px rgba(167,139,250,.1)}[data-theme=dark] .SelectInput-module_selectIcon__9pjhf{color:var(--color-primary-light)}[data-theme=dark] .SelectInput-module_selectWrapper__Qr4pl:before{background:linear-gradient(135deg,rgba(167,139,250,.05),rgba(167,139,250,.1))}[data-theme=dark] .SelectInput-module_selectInput__s6zEg select option{background:var(--color-background-secondary)}[data-theme=dark] .SelectInput-module_selectInput__s6zEg select option:checked{background:var(--color-primary)}@media (max-width:768px){.SelectInput-module_selectInput__s6zEg{margin-bottom:var(--spacing-md)}.SelectInput-module_selectInput__s6zEg label{font-size:var(--font-size-base);margin-bottom:var(--spacing-xs)}.SelectInput-module_selectInput__s6zEg select{font-size:16px;min-height:48px;padding:var(--spacing-md);padding-right:52px}.SelectInput-module_selectIcon__9pjhf{height:24px;right:var(--spacing-md);width:24px}.SelectInput-module_selectWrapper__Qr4pl:before{height:36px;right:10px;width:36px}.SelectInput-module_selectInput__s6zEg select:active:not(:disabled){background:var(--color-background-tertiary);transform:translateY(0)}}@-moz-document url-prefix(){.SelectInput-module_selectInput__s6zEg select{padding-bottom:calc(var(--spacing-sm) + 1px);padding-top:calc(var(--spacing-sm) + 1px)}}@media (prefers-contrast:high){.SelectInput-module_selectInput__s6zEg select{border-width:3px}.SelectInput-module_selectInput__s6zEg select:focus{outline:2px solid var(--color-primary);outline-offset:2px}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNlbGVjdElucHV0Lm1vZHVsZS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdUNBQ0ksK0JBQWdDLENBQ2hDLGlCQUNKLENBRUEsNkNBSUksdUJBQXdCLENBSHhCLGFBQWMsQ0FDZCw2QkFBOEIsQ0FDOUIsdUNBQXdDLENBR3hDLHlDQUEwQyxDQUQxQywrQkFBZ0MsQ0FFaEMsdUNBQ0osQ0FFQSx5Q0FDSSxpQkFBa0IsQ0FDbEIsVUFDSixDQUVBLDhDQWNJLGVBQWdCLENBQ2hCLHVCQUF3QixDQUN4QixvQkFBcUIsQ0FWckIsNEZBR0MsQ0FMRCxvQ0FBcUMsQ0FDckMsOEJBQStCLENBTy9CLHVCQUF3QixDQUt4QixjQUFlLENBSmYsYUFBYyxDQUhkLCtCQUFnQyxDQUNoQyxxQ0FBc0MsQ0FRdEMsZUFBZ0IsQ0FDaEIsWUFBYSxDQWxCYiwyQ0FBNEMsQ0FDNUMsa0JBQW1CLENBZW5CLHFDQUFzQyxDQWpCdEMsVUFvQkosQ0FFQSwrRUFFSSxrQ0FBbUMsQ0FEbkMsc0NBQXVDLENBRXZDLDJCQUE0QixDQUM1QiwwQkFDSixDQUVBLG9EQUVJLGtDQUFtQyxDQURuQyxpQ0FBa0MsQ0FFbEMsd0NBQTZDLENBQzdDLDBCQUNKLENBRUEsdURBQ0ksMkNBQTRDLENBQzVDLGdDQUFpQyxDQUNqQyxnQ0FBaUMsQ0FDakMsa0JBQW1CLENBQ25CLFVBQVksQ0FDWixjQUNKLENBR0Esc0NBTUksMEJBQTJCLENBRTNCLFdBQVksQ0FIWixtQkFBb0IsQ0FKcEIsaUJBQWtCLENBQ2xCLHVCQUF3QixDQUN4QixPQUFRLENBQ1IsMEJBQTJCLENBSzNCLHVDQUF3QyxDQUZ4QyxVQUdKLENBTUEsbU1BQ0ksZ0NBQ0osQ0FHQSxnREFRSSwyRUFHQyxDQUNELDhCQUErQixDQVgvQixVQUFXLENBTVgsV0FBWSxDQU9aLFNBQVUsQ0FEVixtQkFBb0IsQ0FYcEIsaUJBQWtCLENBQ2xCLFNBQVUsQ0FDVixPQUFRLENBQ1IsMEJBQTJCLENBVTNCLHlDQUEwQyxDQVQxQyxVQVVKLENBRUEsNERBQ0ksU0FDSixDQUdBLHFEQUVJLGtDQUFtQyxDQUNuQyx1QkFBd0IsQ0FDeEIscUNBQXNDLENBSHRDLHlCQUlKLENBRUEsNkRBQ0ksMEZBR0MsQ0FDRCx1QkFDSixDQUdBLCtEQUNJLGlDQUFrQyxDQUNsQyxpQkFDSixDQUdBLHdDQU1JLGdGQUErRCxDQUovRCxnRkFHQyxDQUpELCtCQU1KLENBRUEsdUNBQ0ksd0JBQ0osQ0FFQSw4Q0FDSSx3Q0FDSixDQUVBLHVFQUNJLHdCQUNKLENBRUEsMkNBQ0ksUUFBVywwQkFBNkIsQ0FDeEMsUUFBVyx5QkFBNEIsQ0FDdkMsWUFBZ0IsMEJBQTZCLENBQzdDLFFBQVcseUJBQTRCLENBQzNDLENBR0EsMENBQ0ksaUNBQ0osQ0FFQSx5Q0FRSSx3REFBZ0MsQ0FGaEMsMEJBQTJCLENBTDNCLFdBQVksQ0FNWixlQUFpQixDQUxqQixpQkFBa0IsQ0FDbEIsVUFBVyxDQUNYLE9BQVEsQ0FDUiwwQkFJSixDQUVBLDZDQUNJLEdBQ0ksU0FBVSxDQUNWLG1DQUNKLENBQ0EsR0FDSSxTQUFVLENBQ1YsbUNBQ0osQ0FDSixDQUdBLDBDQUVJLGVBQWdCLENBRGhCLGlCQUVKLENBRUEseUNBYUksdURBQThCLENBTjlCLDZFQUtDLENBWEQsVUFBVyxDQUtYLFdBQVksQ0FGWixVQUFXLENBVVgsbUJBQW9CLENBWnBCLGlCQUFrQixDQUNsQixLQUFNLENBRU4sVUFVSixDQUVBLDZDQUNJLEdBQ0ksU0FDSixDQUNKLENBR0EsZ0VBQ0kscUdBR0MsQ0FDRCxnQ0FDSixDQUVBLHFGQUNJLDRDQUE2QyxDQUM3QyxzQ0FDSixDQUVBLHNFQUNJLDRDQUE2QyxDQUM3Qyx1Q0FBd0MsQ0FDeEMseUNBQ0osQ0FFQSx3REFDSSxnQ0FDSixDQUVBLGtFQUNJLDZFQUlKLENBRUEsdUVBQ0ksNENBQ0osQ0FFQSwrRUFDSSwrQkFDSixDQUdBLHlCQUNJLHVDQUNJLCtCQUNKLENBRUEsNkNBQ0ksK0JBQWdDLENBQ2hDLCtCQUNKLENBRUEsOENBSUksY0FBZSxDQUhmLGVBQWdCLENBQ2hCLHlCQUEwQixDQUMxQixrQkFFSixDQUVBLHNDQUdJLFdBQVksQ0FGWix1QkFBd0IsQ0FDeEIsVUFFSixDQUVBLGdEQUVJLFdBQVksQ0FDWixVQUFXLENBRlgsVUFHSixDQUdBLG9FQUVJLDJDQUE0QyxDQUQ1Qyx1QkFFSixDQUNKLENBR0EsNEJBQ0ksOENBRUksNENBQTZDLENBRDdDLHlDQUVKLENBQ0osQ0FHQSwrQkFDSSw4Q0FDSSxnQkFDSixDQUVBLG9EQUNJLHNDQUF1QyxDQUN2QyxrQkFDSixDQUNKIiwiZmlsZSI6IlNlbGVjdElucHV0Lm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuc2VsZWN0SW5wdXQge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctbGcpO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnNlbGVjdElucHV0IGxhYmVsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy1zbSk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLWxldHRlci1zcGFjaW5nLXdpZGUpO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi5zZWxlY3RXcmFwcGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbi5zZWxlY3RJbnB1dCBzZWxlY3Qge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctc20pIHZhcigtLXNwYWNpbmctbWQpO1xuICAgIHBhZGRpbmctcmlnaHQ6IDQ4cHg7XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSwgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KVxuICAgICk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG4gICAgbWluLWhlaWdodDogNDRweDtcbiAgICBvdXRsaW5lOiBub25lO1xufVxuXG4uc2VsZWN0SW5wdXQgc2VsZWN0OmhvdmVyOm5vdCg6Zm9jdXMpOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJvcmRlci1ob3Zlcik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LXNtKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG59XG5cbi5zZWxlY3RJbnB1dCBzZWxlY3Q6Zm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZCk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMTI0LCA1OCwgMjM3LCAwLjEpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbn1cblxuLnNlbGVjdElucHV0IHNlbGVjdDpkaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1ib3JkZXIpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXRlcnRpYXJ5KTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIG9wYWNpdHk6IDAuNjtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG59XG5cbi8qIEN1c3RvbSBkcm9wZG93biBpY29uICovXG4uc2VsZWN0SWNvbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgICB0b3A6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMjBweDtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4uc2VsZWN0SW5wdXQgc2VsZWN0OmhvdmVyOm5vdCg6ZGlzYWJsZWQpIH4gLnNlbGVjdEljb24ge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWhvdmVyKTtcbn1cblxuLnNlbGVjdElucHV0IHNlbGVjdDpmb2N1cyB+IC5zZWxlY3RJY29uIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1ob3Zlcik7XG59XG5cbi8qIEljb24gYmFja2dyb3VuZCBjaXJjbGUgKi9cbi5zZWxlY3RXcmFwcGVyOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogOHB4O1xuICAgIHRvcDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICB3aWR0aDogMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgICAgIHJnYmEoMTI0LCA1OCwgMjM3LCAwLjA1KSwgXG4gICAgICAgIHJnYmEoMTI0LCA1OCwgMjM3LCAwLjEpXG4gICAgKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4uc2VsZWN0SW5wdXQgc2VsZWN0OmZvY3VzIH4gOjpiZWZvcmUge1xuICAgIG9wYWNpdHk6IDE7XG59XG5cbi8qIE9wdGlvbiBzdHlsaW5nIChsaW1pdGVkIGJyb3dzZXIgc3VwcG9ydCkgKi9cbi5zZWxlY3RJbnB1dCBzZWxlY3Qgb3B0aW9uIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXNtKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW5vcm1hbCk7XG59XG5cbi5zZWxlY3RJbnB1dCBzZWxlY3Qgb3B0aW9uOmNoZWNrZWQge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgICAgICB2YXIoLS1jb2xvci1wcmltYXJ5LWxpZ2h0ZXIpLCBcbiAgICAgICAgdmFyKC0tY29sb3ItcHJpbWFyeS1saWdodClcbiAgICApO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbn1cblxuLyogUGxhY2Vob2xkZXIgb3B0aW9uIHN0eWxpbmcgKi9cbi5zZWxlY3RJbnB1dCBzZWxlY3Qgb3B0aW9uW3ZhbHVlPVwiXCJdIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLyogRXJyb3Igc3RhdGUgKi9cbi5lcnJvciBzZWxlY3Qge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItZXJyb3IpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgICAgICB2YXIoLS1jb2xvci1lcnJvci1iZyksIFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKVxuICAgICk7XG4gICAgYW5pbWF0aW9uOiBzaGFrZSAwLjNzIGN1YmljLWJlemllcigwLjM2LCAwLjA3LCAwLjE5LCAwLjk3KSBib3RoO1xufVxuXG4uZXJyb3IgbGFiZWwge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1lcnJvcik7XG59XG5cbi5lcnJvciBzZWxlY3Q6Zm9jdXMge1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDI0NCwgNjMsIDk0LCAwLjE1KTtcbn1cblxuLmVycm9yIC5zZWxlY3RJY29uIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZXJyb3IpO1xufVxuXG5Aa2V5ZnJhbWVzIHNoYWtlIHtcbiAgICAxMCUsIDkwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMXB4KTsgfVxuICAgIDIwJSwgODAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDJweCk7IH1cbiAgICAzMCUsIDUwJSwgNzAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zcHgpOyB9XG4gICAgNDAlLCA2MCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoM3B4KTsgfVxufVxuXG4vKiBTdWNjZXNzIHN0YXRlICovXG4uc3VjY2VzcyBzZWxlY3Qge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3Itc3VjY2Vzcyk7XG59XG5cbi5zdWNjZXNzOjphZnRlciB7XG4gICAgY29udGVudDogJ+Kckyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiA1MnB4O1xuICAgIHRvcDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3Itc3VjY2Vzcyk7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgYW5pbWF0aW9uOiBjaGVja0luIDAuM3MgZWFzZS1vdXQ7XG59XG5cbkBrZXlmcmFtZXMgY2hlY2tJbiB7XG4gICAgMCUgeyBcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHNjYWxlKDApO1xuICAgIH1cbiAgICAxMDAlIHsgXG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSBzY2FsZSgxKTtcbiAgICB9XG59XG5cbi8qIExvYWRpbmcgc3RhdGUgKi9cbi5sb2FkaW5nIHNlbGVjdCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5sb2FkaW5nOjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAtMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuICAgICAgICA5MGRlZyxcbiAgICAgICAgdHJhbnNwYXJlbnQsXG4gICAgICAgIHJnYmEoMTI0LCA1OCwgMjM3LCAwLjEpLFxuICAgICAgICB0cmFuc3BhcmVudFxuICAgICk7XG4gICAgYW5pbWF0aW9uOiBzaGltbWVyIDJzIGluZmluaXRlO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG5Aa2V5ZnJhbWVzIHNoaW1tZXIge1xuICAgIDEwMCUge1xuICAgICAgICBsZWZ0OiAxMDAlO1xuICAgIH1cbn1cblxuLyogRGFyayBtb2RlIGFkanVzdG1lbnRzICovXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLnNlbGVjdElucHV0IHNlbGVjdCB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KSwgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtdGVydGlhcnkpXG4gICAgKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJvcmRlcik7XG59XG5cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAuc2VsZWN0SW5wdXQgc2VsZWN0OmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1ib3JkZXItaG92ZXIpO1xufVxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLnNlbGVjdElucHV0IHNlbGVjdDpmb2N1cyB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1saWdodCk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMTY3LCAxMzksIDI1MCwgMC4xKTtcbn1cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5zZWxlY3RJY29uIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1saWdodCk7XG59XG5cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAuc2VsZWN0V3JhcHBlcjo6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICAgICAgcmdiYSgxNjcsIDEzOSwgMjUwLCAwLjA1KSwgXG4gICAgICAgIHJnYmEoMTY3LCAxMzksIDI1MCwgMC4xKVxuICAgICk7XG59XG5cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAuc2VsZWN0SW5wdXQgc2VsZWN0IG9wdGlvbiB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpO1xufVxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLnNlbGVjdElucHV0IHNlbGVjdCBvcHRpb246Y2hlY2tlZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG59XG5cbi8qIE1vYmlsZSBvcHRpbWl6YXRpb25zICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAuc2VsZWN0SW5wdXQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgICB9XG4gICAgXG4gICAgLnNlbGVjdElucHV0IGxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYmFzZSk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmcteHMpO1xuICAgIH1cbiAgICBcbiAgICAuc2VsZWN0SW5wdXQgc2VsZWN0IHtcbiAgICAgICAgbWluLWhlaWdodDogNDhweDtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDUycHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDsgLyogUHJldmVudHMgaU9TIHpvb20gKi9cbiAgICB9XG4gICAgXG4gICAgLnNlbGVjdEljb24ge1xuICAgICAgICByaWdodDogdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgfVxuICAgIFxuICAgIC5zZWxlY3RXcmFwcGVyOjpiZWZvcmUge1xuICAgICAgICB3aWR0aDogMzZweDtcbiAgICAgICAgaGVpZ2h0OiAzNnB4O1xuICAgICAgICByaWdodDogMTBweDtcbiAgICB9XG4gICAgXG4gICAgLyogSW1wcm92ZSB0b3VjaCBmZWVkYmFjayAqL1xuICAgIC5zZWxlY3RJbnB1dCBzZWxlY3Q6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXRlcnRpYXJ5KTtcbiAgICB9XG59XG5cbi8qIEZpcmVmb3ggc3BlY2lmaWMgZml4ZXMgKi9cbkAtbW96LWRvY3VtZW50IHVybC1wcmVmaXgoKSB7XG4gICAgLnNlbGVjdElucHV0IHNlbGVjdCB7XG4gICAgICAgIHBhZGRpbmctdG9wOiBjYWxjKHZhcigtLXNwYWNpbmctc20pICsgMXB4KTtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IGNhbGModmFyKC0tc3BhY2luZy1zbSkgKyAxcHgpO1xuICAgIH1cbn1cblxuLyogSGlnaCBjb250cmFzdCBtb2RlIHN1cHBvcnQgKi9cbkBtZWRpYSAocHJlZmVycy1jb250cmFzdDogaGlnaCkge1xuICAgIC5zZWxlY3RJbnB1dCBzZWxlY3Qge1xuICAgICAgICBib3JkZXItd2lkdGg6IDNweDtcbiAgICB9XG4gICAgXG4gICAgLnNlbGVjdElucHV0IHNlbGVjdDpmb2N1cyB7XG4gICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgICB9XG59Il19 */";
|
|
638
|
+
var styles$d = {"selectInput":"SelectInput-module_selectInput__s6zEg","selectWrapper":"SelectInput-module_selectWrapper__Qr4pl","selectIcon":"SelectInput-module_selectIcon__9pjhf","error":"SelectInput-module_error__3WNJc","success":"SelectInput-module_success__WJ5ga","loading":"SelectInput-module_loading__n35N9"};
|
|
639
|
+
styleInject(css_248z$f);
|
|
640
|
+
|
|
641
|
+
/**
|
|
642
|
+
* SelectInput component - Styled dropdown selector with flexible option format
|
|
643
|
+
*
|
|
644
|
+
* @component
|
|
645
|
+
* @description
|
|
646
|
+
* A customizable select dropdown that accepts both simple string arrays and
|
|
647
|
+
* label-value object arrays for options. Features custom styling that maintains
|
|
648
|
+
* consistency across browsers while preserving native select functionality.
|
|
649
|
+
* Includes a styled chevron icon for better visual feedback.
|
|
650
|
+
*
|
|
651
|
+
* @example
|
|
652
|
+
* // With simple string options
|
|
653
|
+
* <SelectInput
|
|
654
|
+
* label="Country"
|
|
655
|
+
* value={country}
|
|
656
|
+
* onChange={setCountry}
|
|
657
|
+
* options={['Italy', 'France', 'Spain', 'Germany']}
|
|
658
|
+
* placeholder="Select a country"
|
|
659
|
+
* />
|
|
660
|
+
*
|
|
661
|
+
* @example
|
|
662
|
+
* // With label-value pairs
|
|
663
|
+
* <SelectInput
|
|
664
|
+
* label="Status"
|
|
665
|
+
* value={status}
|
|
666
|
+
* onChange={setStatus}
|
|
667
|
+
* options={[
|
|
668
|
+
* { label: 'Active', value: 'active' },
|
|
669
|
+
* { label: 'Pending', value: 'pending' },
|
|
670
|
+
* { label: 'Archived', value: 'archived' }
|
|
671
|
+
* ]}
|
|
672
|
+
* />
|
|
673
|
+
*/
|
|
674
|
+
function SelectInput({ label, value, onChange, options, placeholder = "Select...", disabled = false, error = false, success = false, loading = false, required = false }) {
|
|
675
|
+
const getClassName = () => {
|
|
676
|
+
const classes = [styles$d.selectInput];
|
|
677
|
+
if (error)
|
|
678
|
+
classes.push(styles$d.error);
|
|
679
|
+
if (success)
|
|
680
|
+
classes.push(styles$d.success);
|
|
681
|
+
if (loading)
|
|
682
|
+
classes.push(styles$d.loading);
|
|
683
|
+
return classes.join(' ');
|
|
684
|
+
};
|
|
685
|
+
return (jsxRuntime.jsxs("div", { className: getClassName(), children: [jsxRuntime.jsxs("label", { children: [label, required && jsxRuntime.jsx("span", { style: { color: 'var(--color-error)' }, children: " *" })] }), jsxRuntime.jsxs("div", { className: styles$d.selectWrapper, children: [jsxRuntime.jsxs("select", { value: value, onChange: e => onChange(e.target.value), disabled: disabled || loading, required: required, children: [jsxRuntime.jsx("option", { value: "", children: placeholder }), options.map(opt => {
|
|
686
|
+
const optionValue = typeof opt === 'string' ? opt : opt.value;
|
|
687
|
+
const optionLabel = typeof opt === 'string' ? opt : opt.label;
|
|
688
|
+
return (jsxRuntime.jsx("option", { value: optionValue, children: optionLabel }, optionValue));
|
|
689
|
+
})] }), jsxRuntime.jsx(FiChevronDown, { className: styles$d.selectIcon })] })] }));
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
var css_248z$e = ".TextArea-module_textareaContainer__AquFj{margin-bottom:var(--spacing-lg);position:relative}.TextArea-module_textareaLabel__7Vmyx{color:var(--color-text);display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-wide);margin-bottom:var(--spacing-sm);transition:color var(--transition-base)}.TextArea-module_requiredIndicator__3Fxyy{color:var(--color-error);font-weight:var(--font-weight-bold);margin-left:4px}.TextArea-module_textareaInput__VCDZA{background:linear-gradient(135deg,var(--color-background),var(--color-background-secondary));border:2px solid var(--color-border);border-radius:var(--radius-lg);box-sizing:border-box;color:var(--color-text);font-family:inherit;font-size:var(--font-size-base);line-height:var(--line-height-relaxed);max-height:400px;min-height:120px;outline:none;padding:var(--spacing-sm) var(--spacing-md);resize:vertical;transition:all var(--transition-base);width:100%}.TextArea-module_textareaInput__VCDZA:hover:not(:focus):not(:disabled){background:var(--color-background);border-color:var(--color-border-hover);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.TextArea-module_textareaInput__VCDZA:focus{background:var(--color-background);border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(124,58,237,.1);transform:translateY(-2px)}.TextArea-module_textareaInput__VCDZA::placeholder{color:var(--color-text-secondary);opacity:.6}.TextArea-module_textareaInput__VCDZA:disabled{background:var(--color-background-tertiary);border-color:var(--color-border);color:var(--color-text-tertiary);cursor:not-allowed;opacity:.6;resize:none;transform:none}.TextArea-module_characterCount__9FO5N{background:linear-gradient(135deg,var(--color-background),var(--color-background-secondary));border:1px solid var(--color-border);border-radius:var(--radius-sm);bottom:-28px;color:var(--color-text-secondary);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);letter-spacing:var(--letter-spacing-wide);padding:4px 8px;position:absolute;right:0;transition:all var(--transition-base)}.TextArea-module_characterCount__9FO5N.TextArea-module_nearLimit__cUdnw{background:linear-gradient(135deg,rgba(245,158,11,.05),rgba(245,158,11,.1));border-color:var(--color-warning-light);color:var(--color-warning)}.TextArea-module_characterCount__9FO5N.TextArea-module_atLimit__GoWCC{animation:TextArea-module_pulse__baLyb 1s ease-in-out infinite;background:linear-gradient(135deg,rgba(244,63,94,.05),rgba(244,63,94,.1));border-color:var(--color-error-light);color:var(--color-error);font-weight:var(--font-weight-semibold)}@keyframes TextArea-module_pulse__baLyb{0%,to{opacity:1;transform:scale(1)}50%{opacity:.9;transform:scale(1.05)}}.TextArea-module_textareaInput__VCDZA:hover:after{border-bottom:2px solid var(--color-border-hover);border-right:2px solid var(--color-border-hover);bottom:4px;content:\"\";height:12px;opacity:.5;position:absolute;right:4px;width:12px}.TextArea-module_textareaInput__VCDZA::-webkit-scrollbar{width:6px}.TextArea-module_textareaInput__VCDZA::-webkit-scrollbar-track{background:var(--color-background-secondary);border-radius:var(--radius-sm)}.TextArea-module_textareaInput__VCDZA::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-sm);transition:background var(--transition-base)}.TextArea-module_textareaInput__VCDZA::-webkit-scrollbar-thumb:hover{background:var(--color-border-hover)}.TextArea-module_error__ciHgb .TextArea-module_textareaInput__VCDZA{animation:TextArea-module_shake__pmEuv .3s cubic-bezier(.36,.07,.19,.97) both;background:linear-gradient(135deg,var(--color-error-bg),var(--color-background));border-color:var(--color-error)}.TextArea-module_error__ciHgb .TextArea-module_textareaLabel__7Vmyx{color:var(--color-error)}.TextArea-module_error__ciHgb .TextArea-module_textareaInput__VCDZA:focus{box-shadow:0 0 0 3px rgba(244,63,94,.15)}@keyframes TextArea-module_shake__pmEuv{10%,90%{transform:translateX(-1px)}20%,80%{transform:translateX(2px)}30%,50%,70%{transform:translateX(-3px)}40%,60%{transform:translateX(3px)}}.TextArea-module_success__a0-xD .TextArea-module_textareaInput__VCDZA{border-color:var(--color-success)}.TextArea-module_success__a0-xD:after{animation:TextArea-module_checkIn__cfPvm .3s ease-out;color:var(--color-success);content:\"✓\";font-size:var(--font-size-lg);font-weight:700;position:absolute;right:8px;top:8px}@keyframes TextArea-module_checkIn__cfPvm{0%{opacity:0;transform:scale(0) rotate(-45deg)}to{opacity:1;transform:scale(1) rotate(0)}}.TextArea-module_loading__CSFBR .TextArea-module_textareaInput__VCDZA{animation:TextArea-module_loading__CSFBR 2s ease-in-out infinite;background-image:linear-gradient(90deg,var(--color-background) 0,rgba(124,58,237,.05) 50%,var(--color-background) 100%);background-size:200% 100%}@keyframes TextArea-module_loading__CSFBR{0%{background-position:200% 0}to{background-position:-200% 0}}.TextArea-module_focusMode__9A8U- .TextArea-module_textareaInput__VCDZA{min-height:200px;transition:min-height var(--transition-slow)}[data-theme=dark] .TextArea-module_textareaInput__VCDZA{background:linear-gradient(135deg,var(--color-background-secondary),var(--color-background-tertiary));border-color:var(--color-border)}[data-theme=dark] .TextArea-module_textareaInput__VCDZA:hover:not(:focus):not(:disabled){background:var(--color-background-secondary);border-color:var(--color-border-hover)}[data-theme=dark] .TextArea-module_textareaInput__VCDZA:focus{background:var(--color-background-secondary);border-color:var(--color-primary-light);box-shadow:0 0 0 3px rgba(167,139,250,.1)}[data-theme=dark] .TextArea-module_characterCount__9FO5N{background:linear-gradient(135deg,var(--color-background-secondary),var(--color-background-tertiary));border-color:var(--color-border)}[data-theme=dark] .TextArea-module_textareaInput__VCDZA::-webkit-scrollbar-track{background:var(--color-background-tertiary)}[data-theme=dark] .TextArea-module_textareaInput__VCDZA::-webkit-scrollbar-thumb{background:var(--color-border)}@media (max-width:768px){.TextArea-module_textareaContainer__AquFj{margin-bottom:calc(var(--spacing-lg) + 20px)}.TextArea-module_textareaLabel__7Vmyx{font-size:var(--font-size-base);margin-bottom:var(--spacing-xs)}.TextArea-module_textareaInput__VCDZA{border-radius:var(--radius-md);font-size:16px;min-height:100px;padding:var(--spacing-md)}.TextArea-module_textareaInput__VCDZA:focus{min-height:150px}.TextArea-module_characterCount__9FO5N{font-size:var(--font-size-sm);padding:6px 10px}}@media (prefers-contrast:high){.TextArea-module_textareaInput__VCDZA{border-width:3px}.TextArea-module_textareaInput__VCDZA:focus{outline:2px solid var(--color-primary);outline-offset:2px}}@media (prefers-reduced-motion:reduce){.TextArea-module_characterCount__9FO5N,.TextArea-module_textareaInput__VCDZA{transition:none}.TextArea-module_atLimit__GoWCC{animation:none}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRleHRBcmVhLm1vZHVsZS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMENBQ0ksK0JBQWdDLENBQ2hDLGlCQUNKLENBRUEsc0NBSUksdUJBQXdCLENBSHhCLGFBQWMsQ0FDZCw2QkFBOEIsQ0FDOUIsdUNBQXdDLENBR3hDLHlDQUEwQyxDQUQxQywrQkFBZ0MsQ0FFaEMsdUNBQ0osQ0FFQSwwQ0FDSSx3QkFBeUIsQ0FFekIsbUNBQW9DLENBRHBDLGVBRUosQ0FFQSxzQ0FLSSw0RkFHQyxDQUxELG9DQUFxQyxDQUNyQyw4QkFBK0IsQ0FjL0IscUJBQXNCLENBUHRCLHVCQUF3QixDQUl4QixtQkFBb0IsQ0FOcEIsK0JBQWdDLENBQ2hDLHNDQUF1QyxDQUl2QyxnQkFBaUIsQ0FEakIsZ0JBQWlCLENBSWpCLFlBQWEsQ0FmYiwyQ0FBNEMsQ0FVNUMsZUFBZ0IsQ0FJaEIscUNBQXNDLENBZnRDLFVBa0JKLENBRUEsdUVBRUksa0NBQW1DLENBRG5DLHNDQUF1QyxDQUV2QywyQkFBNEIsQ0FDNUIsMEJBQ0osQ0FFQSw0Q0FFSSxrQ0FBbUMsQ0FEbkMsaUNBQWtDLENBRWxDLHdDQUE2QyxDQUM3QywwQkFDSixDQUVBLG1EQUNJLGlDQUFrQyxDQUNsQyxVQUNKLENBRUEsK0NBQ0ksMkNBQTRDLENBQzVDLGdDQUFpQyxDQUNqQyxnQ0FBaUMsQ0FDakMsa0JBQW1CLENBQ25CLFVBQVksQ0FFWixXQUFZLENBRFosY0FFSixDQUdBLHVDQU9JLDRGQUdDLENBQ0Qsb0NBQXFDLENBQ3JDLDhCQUErQixDQVYvQixZQUFhLENBR2IsaUNBQWtDLENBRGxDLDZCQUE4QixDQVM5QixxQ0FBc0MsQ0FFdEMseUNBQTBDLENBVDFDLGVBQWdCLENBTGhCLGlCQUFrQixDQUVsQixPQUFRLENBV1IscUNBRUosQ0FHQSx3RUFFSSwyRUFHQyxDQUNELHVDQUF3QyxDQUx4QywwQkFNSixDQUVBLHNFQVFJLDhEQUF3QyxDQU54Qyx5RUFHQyxDQUNELHFDQUFzQyxDQUx0Qyx3QkFBeUIsQ0FNekIsdUNBRUosQ0FFQSx3Q0FDSSxNQUVJLFNBQVUsQ0FEVixrQkFFSixDQUNBLElBRUksVUFBWSxDQURaLHFCQUVKLENBQ0osQ0FHQSxrREFRSSxpREFBa0QsQ0FEbEQsZ0RBQWlELENBSmpELFVBQVcsQ0FGWCxVQUFXLENBS1gsV0FBWSxDQUdaLFVBQVksQ0FQWixpQkFBa0IsQ0FFbEIsU0FBVSxDQUNWLFVBS0osQ0FHQSx5REFDSSxTQUNKLENBRUEsK0RBQ0ksNENBQTZDLENBQzdDLDhCQUNKLENBRUEsK0RBQ0ksOEJBQStCLENBQy9CLDhCQUErQixDQUMvQiw0Q0FDSixDQUVBLHFFQUNJLG9DQUNKLENBR0Esb0VBTUksNkVBQStELENBSi9ELGdGQUdDLENBSkQsK0JBTUosQ0FFQSxvRUFDSSx3QkFDSixDQUVBLDBFQUNJLHdDQUNKLENBRUEsd0NBQ0ksUUFBVywwQkFBNkIsQ0FDeEMsUUFBVyx5QkFBNEIsQ0FDdkMsWUFBZ0IsMEJBQTZCLENBQzdDLFFBQVcseUJBQTRCLENBQzNDLENBR0Esc0VBQ0ksaUNBQ0osQ0FFQSxzQ0FRSSxxREFBZ0MsQ0FIaEMsMEJBQTJCLENBSjNCLFdBQVksQ0FNWiw2QkFBOEIsQ0FEOUIsZUFBaUIsQ0FKakIsaUJBQWtCLENBRWxCLFNBQVUsQ0FEVixPQU1KLENBRUEsMENBQ0ksR0FDSSxTQUFVLENBQ1YsaUNBQ0osQ0FDQSxHQUNJLFNBQVUsQ0FDViw0QkFDSixDQUNKLENBR0Esc0VBUUksZ0VBQTBDLENBUDFDLHVIQUtDLENBQ0QseUJBRUosQ0FFQSwwQ0FDSSxHQUFLLDBCQUE2QixDQUNsQyxHQUFPLDJCQUE4QixDQUN6QyxDQUdBLHdFQUNJLGdCQUFpQixDQUNqQiw0Q0FDSixDQUdBLHdEQUNJLHFHQUdDLENBQ0QsZ0NBQ0osQ0FFQSx5RkFDSSw0Q0FBNkMsQ0FDN0Msc0NBQ0osQ0FFQSw4REFDSSw0Q0FBNkMsQ0FDN0MsdUNBQXdDLENBQ3hDLHlDQUNKLENBRUEseURBQ0kscUdBR0MsQ0FDRCxnQ0FDSixDQUVBLGlGQUNJLDJDQUNKLENBRUEsaUZBQ0ksOEJBQ0osQ0FHQSx5QkFDSSwwQ0FDSSw0Q0FDSixDQUVBLHNDQUNJLCtCQUFnQyxDQUNoQywrQkFDSixDQUVBLHNDQUlJLDhCQUErQixDQUYvQixjQUFlLENBQ2YsZ0JBQWlCLENBRmpCLHlCQUlKLENBRUEsNENBQ0ksZ0JBQ0osQ0FFQSx1Q0FDSSw2QkFBOEIsQ0FDOUIsZ0JBQ0osQ0FDSixDQUdBLCtCQUNJLHNDQUNJLGdCQUNKLENBRUEsNENBQ0ksc0NBQXVDLENBQ3ZDLGtCQUNKLENBQ0osQ0FHQSx1Q0FDSSw2RUFFSSxlQUNKLENBRUEsZ0NBQ0ksY0FDSixDQUNKIiwiZmlsZSI6IlRleHRBcmVhLm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIudGV4dGFyZWFDb250YWluZXIge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctbGcpO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnRleHRhcmVhTGFiZWwge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLXNtKTtcbiAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tbGV0dGVyLXNwYWNpbmctd2lkZSk7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbn1cblxuLnJlcXVpcmVkSW5kaWNhdG9yIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZXJyb3IpO1xuICAgIG1hcmdpbi1sZWZ0OiA0cHg7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xufVxuXG4udGV4dGFyZWFJbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1zbSkgdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSwgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KVxuICAgICk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYmFzZSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXJlbGF4ZWQpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICAgIG1pbi1oZWlnaHQ6IDEyMHB4O1xuICAgIG1heC1oZWlnaHQ6IDQwMHB4O1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuLnRleHRhcmVhSW5wdXQ6aG92ZXI6bm90KDpmb2N1cyk6bm90KDpkaXNhYmxlZCkge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItYm9yZGVyLWhvdmVyKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc20pO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbn1cblxuLnRleHRhcmVhSW5wdXQ6Zm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZCk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMTI0LCA1OCwgMjM3LCAwLjEpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbn1cblxuLnRleHRhcmVhSW5wdXQ6OnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgIG9wYWNpdHk6IDAuNjtcbn1cblxuLnRleHRhcmVhSW5wdXQ6ZGlzYWJsZWQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtdGVydGlhcnkpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC10ZXJ0aWFyeSk7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICBvcGFjaXR5OiAwLjY7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICAgIHJlc2l6ZTogbm9uZTtcbn1cblxuLyogQ2hhcmFjdGVyIGNvdW50ZXIgKi9cbi5jaGFyYWN0ZXJDb3VudCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogLTI4cHg7XG4gICAgcmlnaHQ6IDA7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteHMpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG4gICAgcGFkZGluZzogNHB4IDhweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICAgICAgdmFyKC0tY29sb3ItYmFja2dyb3VuZCksIFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSlcbiAgICApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbiAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tbGV0dGVyLXNwYWNpbmctd2lkZSk7XG59XG5cbi8qIENoYXJhY3RlciBjb3VudCBzdGF0ZXMgKi9cbi5jaGFyYWN0ZXJDb3VudC5uZWFyTGltaXQge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci13YXJuaW5nKTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICAgICAgcmdiYSgyNDUsIDE1OCwgMTEsIDAuMDUpLCBcbiAgICAgICAgcmdiYSgyNDUsIDE1OCwgMTEsIDAuMSlcbiAgICApO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3Itd2FybmluZy1saWdodCk7XG59XG5cbi5jaGFyYWN0ZXJDb3VudC5hdExpbWl0IHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZXJyb3IpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIFxuICAgICAgICByZ2JhKDI0NCwgNjMsIDk0LCAwLjA1KSwgXG4gICAgICAgIHJnYmEoMjQ0LCA2MywgOTQsIDAuMSlcbiAgICApO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItZXJyb3ItbGlnaHQpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XG4gICAgYW5pbWF0aW9uOiBwdWxzZSAxcyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBwdWxzZSB7XG4gICAgMCUsIDEwMCUgeyBcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gICAgNTAlIHsgXG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG4gICAgICAgIG9wYWNpdHk6IDAuOTtcbiAgICB9XG59XG5cbi8qIEF1dG8tcmVzaXplIGluZGljYXRvciAqL1xuLnRleHRhcmVhSW5wdXQ6aG92ZXI6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiA0cHg7XG4gICAgcmlnaHQ6IDRweDtcbiAgICB3aWR0aDogMTJweDtcbiAgICBoZWlnaHQ6IDEycHg7XG4gICAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyLWhvdmVyKTtcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyLWhvdmVyKTtcbiAgICBvcGFjaXR5OiAwLjU7XG59XG5cbi8qIFNjcm9sbGJhciBzdHlsaW5nICovXG4udGV4dGFyZWFJbnB1dDo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIHdpZHRoOiA2cHg7XG59XG5cbi50ZXh0YXJlYUlucHV0Ojotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG59XG5cbi50ZXh0YXJlYUlucHV0Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbn1cblxuLnRleHRhcmVhSW5wdXQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ib3JkZXItaG92ZXIpO1xufVxuXG4vKiBFcnJvciBzdGF0ZSAqL1xuLmVycm9yIC50ZXh0YXJlYUlucHV0IHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWVycm9yKTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICAgICAgdmFyKC0tY29sb3ItZXJyb3ItYmcpLCBcbiAgICAgICAgdmFyKC0tY29sb3ItYmFja2dyb3VuZClcbiAgICApO1xuICAgIGFuaW1hdGlvbjogc2hha2UgMC4zcyBjdWJpYy1iZXppZXIoMC4zNiwgMC4wNywgMC4xOSwgMC45NykgYm90aDtcbn1cblxuLmVycm9yIC50ZXh0YXJlYUxhYmVsIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZXJyb3IpO1xufVxuXG4uZXJyb3IgLnRleHRhcmVhSW5wdXQ6Zm9jdXMge1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDI0NCwgNjMsIDk0LCAwLjE1KTtcbn1cblxuQGtleWZyYW1lcyBzaGFrZSB7XG4gICAgMTAlLCA5MCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTFweCk7IH1cbiAgICAyMCUsIDgwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgycHgpOyB9XG4gICAgMzAlLCA1MCUsIDcwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtM3B4KTsgfVxuICAgIDQwJSwgNjAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDNweCk7IH1cbn1cblxuLyogU3VjY2VzcyBzdGF0ZSAqL1xuLnN1Y2Nlc3MgLnRleHRhcmVhSW5wdXQge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3Itc3VjY2Vzcyk7XG59XG5cbi5zdWNjZXNzOjphZnRlciB7XG4gICAgY29udGVudDogJ+Kckyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogOHB4O1xuICAgIHJpZ2h0OiA4cHg7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXN1Y2Nlc3MpO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWxnKTtcbiAgICBhbmltYXRpb246IGNoZWNrSW4gMC4zcyBlYXNlLW91dDtcbn1cblxuQGtleWZyYW1lcyBjaGVja0luIHtcbiAgICAwJSB7IFxuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDApIHJvdGF0ZSgtNDVkZWcpO1xuICAgIH1cbiAgICAxMDAlIHsgXG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSkgcm90YXRlKDApO1xuICAgIH1cbn1cblxuLyogTG9hZGluZyBzdGF0ZSAqL1xuLmxvYWRpbmcgLnRleHRhcmVhSW5wdXQge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgOTBkZWcsXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQpIDAlLFxuICAgICAgICByZ2JhKDEyNCwgNTgsIDIzNywgMC4wNSkgNTAlLFxuICAgICAgICB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKSAxMDAlXG4gICAgKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDIwMCUgMTAwJTtcbiAgICBhbmltYXRpb246IGxvYWRpbmcgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgbG9hZGluZyB7XG4gICAgMCUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAyMDAlIDA7IH1cbiAgICAxMDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTIwMCUgMDsgfVxufVxuXG4vKiBGb2N1cyBtb2RlIC0gZXhwYW5kcyB0ZXh0YXJlYSAqL1xuLmZvY3VzTW9kZSAudGV4dGFyZWFJbnB1dCB7XG4gICAgbWluLWhlaWdodDogMjAwcHg7XG4gICAgdHJhbnNpdGlvbjogbWluLWhlaWdodCB2YXIoLS10cmFuc2l0aW9uLXNsb3cpO1xufVxuXG4vKiBEYXJrIG1vZGUgYWRqdXN0bWVudHMgKi9cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAudGV4dGFyZWFJbnB1dCB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KSwgXG4gICAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtdGVydGlhcnkpXG4gICAgKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJvcmRlcik7XG59XG5cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAudGV4dGFyZWFJbnB1dDpob3Zlcjpub3QoOmZvY3VzKTpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItYm9yZGVyLWhvdmVyKTtcbn1cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC50ZXh0YXJlYUlucHV0OmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWxpZ2h0KTtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgxNjcsIDEzOSwgMjUwLCAwLjEpO1xufVxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLmNoYXJhY3RlckNvdW50IHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBcbiAgICAgICAgdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpLCBcbiAgICAgICAgdmFyKC0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSlcbiAgICApO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItYm9yZGVyKTtcbn1cblxuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC50ZXh0YXJlYUlucHV0Ojotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSk7XG59XG5cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAudGV4dGFyZWFJbnB1dDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJvcmRlcik7XG59XG5cbi8qIE1vYmlsZSBvcHRpbWl6YXRpb25zICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAudGV4dGFyZWFDb250YWluZXIge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiBjYWxjKHZhcigtLXNwYWNpbmctbGcpICsgMjBweCk7XG4gICAgfVxuICAgIFxuICAgIC50ZXh0YXJlYUxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYmFzZSk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmcteHMpO1xuICAgIH1cbiAgICBcbiAgICAudGV4dGFyZWFJbnB1dCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctbWQpO1xuICAgICAgICBmb250LXNpemU6IDE2cHg7IC8qIFByZXZlbnRzIGlPUyB6b29tICovXG4gICAgICAgIG1pbi1oZWlnaHQ6IDEwMHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICAgIH1cbiAgICBcbiAgICAudGV4dGFyZWFJbnB1dDpmb2N1cyB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDE1MHB4O1xuICAgIH1cbiAgICBcbiAgICAuY2hhcmFjdGVyQ291bnQge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgICAgIHBhZGRpbmc6IDZweCAxMHB4O1xuICAgIH1cbn1cblxuLyogSGlnaCBjb250cmFzdCBtb2RlIHN1cHBvcnQgKi9cbkBtZWRpYSAocHJlZmVycy1jb250cmFzdDogaGlnaCkge1xuICAgIC50ZXh0YXJlYUlucHV0IHtcbiAgICAgICAgYm9yZGVyLXdpZHRoOiAzcHg7XG4gICAgfVxuICAgIFxuICAgIC50ZXh0YXJlYUlucHV0OmZvY3VzIHtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICAgIH1cbn1cblxuLyogUmVkdWNlZCBtb3Rpb24gKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG4gICAgLnRleHRhcmVhSW5wdXQsXG4gICAgLmNoYXJhY3RlckNvdW50IHtcbiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICB9XG4gICAgXG4gICAgLmF0TGltaXQge1xuICAgICAgICBhbmltYXRpb246IG5vbmU7XG4gICAgfVxufSJdfQ== */";
|
|
693
|
+
var styles$c = {"textareaContainer":"TextArea-module_textareaContainer__AquFj","textareaLabel":"TextArea-module_textareaLabel__7Vmyx","requiredIndicator":"TextArea-module_requiredIndicator__3Fxyy","textareaInput":"TextArea-module_textareaInput__VCDZA","characterCount":"TextArea-module_characterCount__9FO5N","nearLimit":"TextArea-module_nearLimit__cUdnw","atLimit":"TextArea-module_atLimit__GoWCC","error":"TextArea-module_error__ciHgb","success":"TextArea-module_success__a0-xD","loading":"TextArea-module_loading__CSFBR","focusMode":"TextArea-module_focusMode__9A8U-"};
|
|
694
|
+
styleInject(css_248z$e);
|
|
695
|
+
|
|
696
|
+
/**
|
|
697
|
+
* TextArea component - Multi-line text input with character counting
|
|
698
|
+
*
|
|
699
|
+
* @component
|
|
700
|
+
* @description
|
|
701
|
+
* A resizable text area component designed for longer form content like descriptions,
|
|
702
|
+
* comments, or messages. Features automatic character counting when maxLength is set,
|
|
703
|
+
* and maintains consistent styling with other form inputs. The component is optimized
|
|
704
|
+
* for both desktop and mobile experiences with appropriate touch targets.
|
|
705
|
+
*
|
|
706
|
+
* @example
|
|
707
|
+
* // Basic usage
|
|
708
|
+
* <TextArea
|
|
709
|
+
* label="Description"
|
|
710
|
+
* value={description}
|
|
711
|
+
* onChange={setDescription}
|
|
712
|
+
* rows={4}
|
|
713
|
+
* placeholder="Enter a detailed description..."
|
|
714
|
+
* />
|
|
715
|
+
*
|
|
716
|
+
* @example
|
|
717
|
+
* // With character limit
|
|
718
|
+
* <TextArea
|
|
719
|
+
* label="Bio"
|
|
720
|
+
* value={bio}
|
|
721
|
+
* onChange={setBio}
|
|
722
|
+
* maxLength={500}
|
|
723
|
+
* required
|
|
724
|
+
* />
|
|
725
|
+
*/
|
|
726
|
+
function TextArea({ label, value, onChange, rows = 5, placeholder = "", required = false, maxLength, disabled = false, error = false, success = false, loading = false, focusMode = false }) {
|
|
727
|
+
const textareaId = `textarea-${Math.random().toString(36).substr(2, 9)}`;
|
|
728
|
+
const getContainerClassName = () => {
|
|
729
|
+
const classes = [styles$c.textareaContainer];
|
|
730
|
+
if (error)
|
|
731
|
+
classes.push(styles$c.error);
|
|
732
|
+
if (success)
|
|
733
|
+
classes.push(styles$c.success);
|
|
734
|
+
if (loading)
|
|
735
|
+
classes.push(styles$c.loading);
|
|
736
|
+
if (focusMode)
|
|
737
|
+
classes.push(styles$c.focusMode);
|
|
738
|
+
return classes.join(' ');
|
|
739
|
+
};
|
|
740
|
+
const getCharCountClassName = () => {
|
|
741
|
+
if (!maxLength)
|
|
742
|
+
return styles$c.characterCount;
|
|
743
|
+
const classes = [styles$c.characterCount];
|
|
744
|
+
const percentage = (value.length / maxLength) * 100;
|
|
745
|
+
if (percentage >= 100) {
|
|
746
|
+
classes.push(styles$c.atLimit);
|
|
747
|
+
}
|
|
748
|
+
else if (percentage >= 80) {
|
|
749
|
+
classes.push(styles$c.nearLimit);
|
|
750
|
+
}
|
|
751
|
+
return classes.join(' ');
|
|
752
|
+
};
|
|
753
|
+
return (jsxRuntime.jsxs("div", { className: getContainerClassName(), children: [jsxRuntime.jsxs("label", { htmlFor: textareaId, className: styles$c.textareaLabel, children: [label, required && jsxRuntime.jsx("span", { className: styles$c.requiredIndicator, children: "*" })] }), jsxRuntime.jsx("textarea", { id: textareaId, value: value, onChange: (e) => onChange(e.target.value), rows: rows, placeholder: placeholder, maxLength: maxLength, className: styles$c.textareaInput, "aria-required": required, disabled: disabled || loading, "aria-invalid": error }), maxLength && (jsxRuntime.jsxs("div", { className: getCharCountClassName(), children: [jsxRuntime.jsx("span", { children: value.length }), jsxRuntime.jsx("span", { style: { opacity: 0.7 }, children: " / " }), jsxRuntime.jsx("span", { children: maxLength })] }))] }));
|
|
754
|
+
}
|
|
755
|
+
|
|
756
|
+
var css_248z$d = ".Toggle-module_toggleContainer__QxqQb{background:var(--color-background-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);display:inline-flex;gap:0;padding:4px;transition:all var(--transition-base)}.Toggle-module_toggleButton__WUUf-{align-items:center;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--color-text-secondary);cursor:pointer;display:flex;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);gap:6px;padding:var(--spacing-xs) var(--spacing-sm);transition:all var(--transition-base);user-select:none}.Toggle-module_toggleButton__WUUf-:hover:not(.Toggle-module_active__fX6Io){background:var(--color-background-tertiary);color:var(--color-text)}.Toggle-module_toggleButton__WUUf-.Toggle-module_active__fX6Io{background:var(--color-background);box-shadow:var(--shadow-sm);color:var(--color-primary);font-weight:var(--font-weight-semibold)}.Toggle-module_toggleButton__WUUf-.Toggle-module_active__fX6Io:hover{background:var(--color-background);color:var(--color-primary-hover)}.Toggle-module_toggleButton__WUUf- svg{height:16px;width:16px}.Toggle-module_toggleButton__WUUf-:disabled{cursor:not-allowed;opacity:.5}.Toggle-module_toggleButton__WUUf-:disabled:hover{background:transparent;color:var(--color-text-secondary)}.Toggle-module_toggleButton__WUUf-:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}[data-theme*=dark] .Toggle-module_toggleContainer__QxqQb{background:var(--color-background-tertiary);border-color:var(--color-border)}[data-theme*=dark] .Toggle-module_toggleButton__WUUf-.Toggle-module_active__fX6Io{background:var(--color-background-secondary);box-shadow:var(--shadow-md)}@media (max-width:640px){.Toggle-module_toggleButton__WUUf-{font-size:var(--font-size-xs);padding:var(--spacing-xs) var(--spacing-xs)}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRvZ2dsZS5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNDQUVJLDRDQUE2QyxDQUk3QyxvQ0FBcUMsQ0FIckMsOEJBQStCLENBRi9CLG1CQUFvQixDQUlwQixLQUFNLENBRE4sV0FBWSxDQUdaLHFDQUNKLENBRUEsbUNBRUksa0JBQW1CLENBR25CLHNCQUF1QixDQUN2QixXQUFZLENBQ1osOEJBQStCLENBSS9CLGlDQUFrQyxDQUhsQyxjQUFlLENBUGYsWUFBYSxDQVFiLDZCQUE4QixDQUM5QixxQ0FBc0MsQ0FQdEMsT0FBUSxDQUNSLDJDQUE0QyxDQVE1QyxxQ0FBc0MsQ0FDdEMsZ0JBQ0osQ0FFQSwyRUFFSSwyQ0FBNEMsQ0FENUMsdUJBRUosQ0FFQSwrREFDSSxrQ0FBbUMsQ0FFbkMsMkJBQTRCLENBRDVCLDBCQUEyQixDQUUzQix1Q0FDSixDQUVBLHFFQUNJLGtDQUFtQyxDQUNuQyxnQ0FDSixDQUVBLHVDQUVJLFdBQVksQ0FEWixVQUVKLENBR0EsNENBRUksa0JBQW1CLENBRG5CLFVBRUosQ0FFQSxrREFDSSxzQkFBdUIsQ0FDdkIsaUNBQ0osQ0FHQSxpREFDSSxzQ0FBdUMsQ0FDdkMsa0JBQ0osQ0FHQSx5REFDSSwyQ0FBNEMsQ0FDNUMsZ0NBQ0osQ0FFQSxrRkFDSSw0Q0FBNkMsQ0FDN0MsMkJBQ0osQ0FHQSx5QkFDSSxtQ0FFSSw2QkFBOEIsQ0FEOUIsMkNBRUosQ0FDSiIsImZpbGUiOiJUb2dnbGUubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi50b2dnbGVDb250YWluZXIge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICAgIHBhZGRpbmc6IDRweDtcbiAgICBnYXA6IDA7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbn1cblxuLnRvZ2dsZUJ1dHRvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogNnB4O1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmcteHMpIHZhcigtLXNwYWNpbmctc20pO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cblxuLnRvZ2dsZUJ1dHRvbjpob3Zlcjpub3QoLmFjdGl2ZSkge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXRlcnRpYXJ5KTtcbn1cblxuLnRvZ2dsZUJ1dHRvbi5hY3RpdmUge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XG59XG5cbi50b2dnbGVCdXR0b24uYWN0aXZlOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1ob3Zlcik7XG59XG5cbi50b2dnbGVCdXR0b24gc3ZnIHtcbiAgICB3aWR0aDogMTZweDtcbiAgICBoZWlnaHQ6IDE2cHg7XG59XG5cbi8qIERpc2FibGVkIHN0YXRlICovXG4udG9nZ2xlQnV0dG9uOmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAwLjU7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLnRvZ2dsZUJ1dHRvbjpkaXNhYmxlZDpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcbn1cblxuLyogRm9jdXMgc3RhdGUgZm9yIGFjY2Vzc2liaWxpdHkgKi9cbi50b2dnbGVCdXR0b246Zm9jdXMtdmlzaWJsZSB7XG4gICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG59XG5cbi8qIERhcmsgbW9kZSBzcGVjaWZpYyBhZGp1c3RtZW50cyAqL1xuW2RhdGEtdGhlbWUqPVwiZGFya1wiXSAudG9nZ2xlQ29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXRlcnRpYXJ5KTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJvcmRlcik7XG59XG5cbltkYXRhLXRoZW1lKj1cImRhcmtcIl0gLnRvZ2dsZUJ1dHRvbi5hY3RpdmUge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbWQpO1xufVxuXG4vKiBSZXNwb25zaXZlIGFkanVzdG1lbnRzICovXG5AbWVkaWEgKG1heC13aWR0aDogNjQwcHgpIHtcbiAgICAudG9nZ2xlQnV0dG9uIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy14cykgdmFyKC0tc3BhY2luZy14cyk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhzKTtcbiAgICB9XG59Il19 */";
|
|
757
|
+
var styles$b = {"toggleContainer":"Toggle-module_toggleContainer__QxqQb","toggleButton":"Toggle-module_toggleButton__WUUf-","active":"Toggle-module_active__fX6Io"};
|
|
758
|
+
styleInject(css_248z$d);
|
|
759
|
+
|
|
760
|
+
function Toggle(props) {
|
|
761
|
+
const { isOn, onToggle, leftLabel, rightLabel, leftIcon, rightIcon } = props;
|
|
762
|
+
return (jsxRuntime.jsxs("div", { className: styles$b.toggleContainer, children: [jsxRuntime.jsxs("button", { className: `${styles$b.toggleButton} ${!isOn ? styles$b.active : ''}`, onClick: () => onToggle(false), children: [leftIcon, leftLabel] }), jsxRuntime.jsxs("button", { className: `${styles$b.toggleButton} ${isOn ? styles$b.active : ''}`, onClick: () => onToggle(true), children: [rightIcon, rightLabel] })] }));
|
|
763
|
+
}
|
|
764
|
+
|
|
765
|
+
var css_248z$c = "@import url(\"../../../styles/tokens.css\");.EditFAB-module_fab__nSrTJ{align-items:center;backdrop-filter:blur(10px);border:none;border-radius:50%;box-shadow:0 4px 14px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.08);cursor:pointer;display:flex;font-size:24px;font-weight:500;height:56px;justify-content:center;outline:none;overflow:hidden;position:relative;transition:box-shadow .2s ease;width:56px;z-index:1000}.EditFAB-module_fab__nSrTJ:before{background:hsla(0,0%,100%,.3);border-radius:50%;content:\"\";height:0;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);transition:width .3s ease,height .3s ease;width:0}.EditFAB-module_fab__nSrTJ:active:before{height:100%;width:100%}.EditFAB-module_fab__nSrTJ:hover:not(:disabled){box-shadow:0 8px 24px rgba(0,0,0,.15),0 4px 8px rgba(0,0,0,.1)}.EditFAB-module_fab__nSrTJ:active:not(:disabled){box-shadow:0 2px 8px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.1)}.EditFAB-module_fab__nSrTJ:disabled{cursor:not-allowed;opacity:.6}.EditFAB-module_primary__zbA9n{background:linear-gradient(135deg,#667eea,#764ba2);color:var(--color-white)}.EditFAB-module_primary__zbA9n:hover:not(:disabled){background:linear-gradient(135deg,#7c8fff,#8e5fc4);box-shadow:0 8px 24px rgba(102,126,234,.4),0 4px 8px rgba(118,75,162,.2)}.EditFAB-module_secondary__BnXs0{background:linear-gradient(135deg,#e0e0e0,#b0b0b0);color:var(--color-text-primary)}.EditFAB-module_secondary__BnXs0:hover:not(:disabled){background:linear-gradient(135deg,#f0f0f0,silver);box-shadow:0 8px 24px rgba(0,0,0,.12),0 4px 8px rgba(0,0,0,.08)}.EditFAB-module_success__kcLg3{background:linear-gradient(135deg,#84fab0,#8fd3f4);color:var(--color-white)}.EditFAB-module_success__kcLg3:hover:not(:disabled){background:linear-gradient(135deg,#96ffc1,#a3e0ff);box-shadow:0 8px 24px rgba(132,250,176,.4),0 4px 8px rgba(143,211,244,.2)}.EditFAB-module_loader__TaJOm{animation:EditFAB-module_spin__FRrDD .8s cubic-bezier(.68,-.55,.265,1.55) infinite;border-color:hsla(0,0%,100%,.9) hsla(0,0%,100%,.7) hsla(0,0%,100%,.4) hsla(0,0%,100%,.2);border-radius:50%;border-style:solid;border-width:3px;height:24px;width:24px}@keyframes EditFAB-module_spin__FRrDD{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.EditFAB-module_draggable__eE2vE{-webkit-touch-callout:none;cursor:move;touch-action:none;-webkit-user-select:none;user-select:none}.EditFAB-module_dragging__btRJe{box-shadow:0 12px 32px rgba(0,0,0,.25),0 6px 12px rgba(0,0,0,.15);cursor:grabbing!important;opacity:.8;z-index:10000}@media (max-width:768px){.EditFAB-module_fab__nSrTJ{font-size:20px;height:48px;width:48px}.EditFAB-module_loader__TaJOm{height:20px;width:20px}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkVkaXRGQUIubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5Q0FBeUMsQ0FHekMsMkJBT0ksa0JBQW1CLENBTW5CLDBCQUEyQixDQVQzQixXQUFZLENBRFosaUJBQWtCLENBTWxCLCtEQUF5RSxDQUp6RSxjQUFlLENBQ2YsWUFBYSxDQUtiLGNBQWUsQ0FDZixlQUFnQixDQVZoQixXQUFZLENBTVosc0JBQXVCLENBRXZCLFlBQWEsQ0FLYixlQUFnQixDQURoQixpQkFBa0IsQ0FHbEIsOEJBQWdDLENBaEJoQyxVQUFXLENBZVgsWUFFSixDQUVBLGtDQVFJLDZCQUFvQyxDQURwQyxpQkFBa0IsQ0FObEIsVUFBVyxDQUtYLFFBQVMsQ0FGVCxRQUFTLENBRlQsaUJBQWtCLENBQ2xCLE9BQVEsQ0FNUiw4QkFBZ0MsQ0FDaEMseUNBQTZDLENBTDdDLE9BTUosQ0FFQSx5Q0FFSSxXQUFZLENBRFosVUFFSixDQUVBLGdEQUNJLDhEQUNKLENBRUEsaURBQ0ksNkRBQ0osQ0FFQSxvQ0FFSSxrQkFBbUIsQ0FEbkIsVUFFSixDQUdBLCtCQUNJLGtEQUE2RCxDQUM3RCx3QkFDSixDQUVBLG9EQUNJLGtEQUE2RCxDQUM3RCx3RUFDSixDQUVBLGlDQUNJLGtEQUE2RCxDQUM3RCwrQkFDSixDQUVBLHNEQUNJLGlEQUE2RCxDQUM3RCwrREFDSixDQUVBLCtCQUNJLGtEQUE2RCxDQUM3RCx3QkFDSixDQUVBLG9EQUNJLGtEQUE2RCxDQUM3RCx5RUFDSixDQUdBLDhCQVFJLGtGQUFvRSxDQUZwRSx3RkFBNkMsQ0FDN0MsaUJBQWtCLENBRGxCLGtCQUE2QyxDQUE3QyxnQkFBNkMsQ0FKN0MsV0FBWSxDQURaLFVBUUosQ0FFQSxzQ0FDSSxHQUFPLHNCQUF5QixDQUNoQyxHQUFLLHVCQUEyQixDQUNwQyxDQUdBLGlDQUdJLDBCQUEyQixDQUYzQixXQUFZLENBQ1osaUJBQWtCLENBRWxCLHdCQUF5QixDQUN6QixnQkFDSixDQUVBLGdDQUdJLGlFQUEyRSxDQUYzRSx5QkFBMkIsQ0FDM0IsVUFBWSxDQUVaLGFBQ0osQ0FHQSx5QkFDSSwyQkFHSSxjQUFlLENBRGYsV0FBWSxDQURaLFVBR0osQ0FFQSw4QkFFSSxXQUFZLENBRFosVUFFSixDQUNKIiwiZmlsZSI6IkVkaXRGQUIubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgdXJsKCcuLi8uLi8uLi9zdHlsZXMvdG9rZW5zLmNzcycpO1xuXG4vKiBCYXNlIEZBQiBzdHlsZXMgKi9cbi5mYWIge1xuICAgIHdpZHRoOiA1NnB4O1xuICAgIGhlaWdodDogNTZweDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTRweCByZ2JhKDAsIDAsIDAsIDAuMTIpLCAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB6LWluZGV4OiAxMDAwO1xuICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4ycyBlYXNlO1xufVxuXG4uZmFiOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgd2lkdGg6IDA7XG4gICAgaGVpZ2h0OiAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgdHJhbnNpdGlvbjogd2lkdGggMC4zcyBlYXNlLCBoZWlnaHQgMC4zcyBlYXNlO1xufVxuXG4uZmFiOmFjdGl2ZTo6YmVmb3JlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5mYWI6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDI0cHggcmdiYSgwLCAwLCAwLCAwLjE1KSwgMCA0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cblxuLmZhYjphY3RpdmU6bm90KDpkaXNhYmxlZCkge1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTUpLCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4uZmFiOmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAwLjY7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLyogQ29sb3IgdmFyaWFudHMgKi9cbi5wcmltYXJ5IHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjNjY3ZWVhIDAlLCAjNzY0YmEyIDEwMCUpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci13aGl0ZSk7XG59XG5cbi5wcmltYXJ5OmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjN2M4ZmZmIDAlLCAjOGU1ZmM0IDEwMCUpO1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDI0cHggcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjQpLCAwIDRweCA4cHggcmdiYSgxMTgsIDc1LCAxNjIsIDAuMik7XG59XG5cbi5zZWNvbmRhcnkge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNlMGUwZTAgMCUsICNiMGIwYjAgMTAwJSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtcHJpbWFyeSk7XG59XG5cbi5zZWNvbmRhcnk6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNmMGYwZjAgMCUsICNjMGMwYzAgMTAwJSk7XG4gICAgYm94LXNoYWRvdzogMCA4cHggMjRweCByZ2JhKDAsIDAsIDAsIDAuMTIpLCAwIDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcbn1cblxuLnN1Y2Nlc3Mge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM4NGZhYjAgMCUsICM4ZmQzZjQgMTAwJSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXdoaXRlKTtcbn1cblxuLnN1Y2Nlc3M6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM5NmZmYzEgMCUsICNhM2UwZmYgMTAwJSk7XG4gICAgYm94LXNoYWRvdzogMCA4cHggMjRweCByZ2JhKDEzMiwgMjUwLCAxNzYsIDAuNCksIDAgNHB4IDhweCByZ2JhKDE0MywgMjExLCAyNDQsIDAuMik7XG59XG5cbi8qIExvYWRlciAqL1xuLmxvYWRlciB7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIGJvcmRlcjogM3B4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbiAgICBib3JkZXItdG9wLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7XG4gICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBhbmltYXRpb246IHNwaW4gMC44cyBjdWJpYy1iZXppZXIoMC42OCwgLTAuNTUsIDAuMjY1LCAxLjU1KSBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBzcGluIHtcbiAgICBmcm9tIHsgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH1cbiAgICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH1cbn1cblxuLyogRHJhZ2dhYmxlIHN0YXRlICovXG4uZHJhZ2dhYmxlIHtcbiAgICBjdXJzb3I6IG1vdmU7XG4gICAgdG91Y2gtYWN0aW9uOiBub25lO1xuICAgIC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTtcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG4uZHJhZ2dpbmcge1xuICAgIGN1cnNvcjogZ3JhYmJpbmcgIWltcG9ydGFudDtcbiAgICBvcGFjaXR5OiAwLjg7XG4gICAgYm94LXNoYWRvdzogMCAxMnB4IDMycHggcmdiYSgwLCAwLCAwLCAwLjI1KSwgMCA2cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuICAgIHotaW5kZXg6IDEwMDAwO1xufVxuXG4vKiBNb2JpbGUgYWRqdXN0bWVudHMgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgIC5mYWIge1xuICAgICAgICB3aWR0aDogNDhweDtcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgfVxuICAgIFxuICAgIC5sb2FkZXIge1xuICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgIH1cbn0iXX0= */";
|
|
766
|
+
var styles$a = {"fab":"EditFAB-module_fab__nSrTJ","primary":"EditFAB-module_primary__zbA9n","secondary":"EditFAB-module_secondary__BnXs0","success":"EditFAB-module_success__kcLg3","loader":"EditFAB-module_loader__TaJOm","draggable":"EditFAB-module_draggable__eE2vE","dragging":"EditFAB-module_dragging__btRJe"};
|
|
767
|
+
styleInject(css_248z$c);
|
|
768
|
+
|
|
769
|
+
const EditFAB = ({ canEdit, isEditMode, hasUnsavedChanges = false, isSaving = false, onEnterEditMode, onExitEditMode, position = { bottom: 32, right: 32 } }) => {
|
|
770
|
+
const [isMobile, setIsMobile] = React.useState(false);
|
|
771
|
+
const [currentPosition, setCurrentPosition] = React.useState(null);
|
|
772
|
+
const [isDragging, setIsDragging] = React.useState(false);
|
|
773
|
+
const fabRef = React.useRef(null);
|
|
774
|
+
const dragStartPos = React.useRef(null);
|
|
775
|
+
const elementStartPos = React.useRef(null);
|
|
776
|
+
React.useEffect(() => {
|
|
777
|
+
const checkMobile = () => {
|
|
778
|
+
setIsMobile(window.innerWidth <= 768);
|
|
779
|
+
};
|
|
780
|
+
checkMobile();
|
|
781
|
+
window.addEventListener('resize', checkMobile);
|
|
782
|
+
return () => {
|
|
783
|
+
window.removeEventListener('resize', checkMobile);
|
|
784
|
+
};
|
|
785
|
+
}, []);
|
|
786
|
+
// Touch handlers for mobile dragging
|
|
787
|
+
const handleTouchStart = (e) => {
|
|
788
|
+
if (!isMobile)
|
|
789
|
+
return;
|
|
790
|
+
const touch = e.touches[0];
|
|
791
|
+
const rect = fabRef.current?.getBoundingClientRect();
|
|
792
|
+
if (rect) {
|
|
793
|
+
dragStartPos.current = { x: touch.clientX, y: touch.clientY };
|
|
794
|
+
elementStartPos.current = {
|
|
795
|
+
x: rect.left + rect.width / 2,
|
|
796
|
+
y: rect.top + rect.height / 2
|
|
797
|
+
};
|
|
798
|
+
setIsDragging(true);
|
|
799
|
+
}
|
|
800
|
+
};
|
|
801
|
+
const handleTouchMove = (e) => {
|
|
802
|
+
if (!isDragging || !dragStartPos.current || !elementStartPos.current)
|
|
803
|
+
return;
|
|
804
|
+
e.preventDefault();
|
|
805
|
+
const touch = e.touches[0];
|
|
806
|
+
const deltaX = touch.clientX - dragStartPos.current.x;
|
|
807
|
+
const deltaY = touch.clientY - dragStartPos.current.y;
|
|
808
|
+
let newX = elementStartPos.current.x + deltaX;
|
|
809
|
+
let newY = elementStartPos.current.y + deltaY;
|
|
810
|
+
// Keep within viewport bounds
|
|
811
|
+
const padding = 30;
|
|
812
|
+
newX = Math.max(padding, Math.min(window.innerWidth - padding, newX));
|
|
813
|
+
newY = Math.max(padding, Math.min(window.innerHeight - padding, newY));
|
|
814
|
+
setCurrentPosition({ x: newX, y: newY });
|
|
815
|
+
};
|
|
816
|
+
const handleTouchEnd = () => {
|
|
817
|
+
setIsDragging(false);
|
|
818
|
+
dragStartPos.current = null;
|
|
819
|
+
elementStartPos.current = null;
|
|
820
|
+
};
|
|
821
|
+
const handleClick = (_e) => {
|
|
822
|
+
// Only trigger click if we haven't been dragging
|
|
823
|
+
if (!isDragging && !isSaving) {
|
|
824
|
+
if (isEditMode) {
|
|
825
|
+
onExitEditMode();
|
|
103
826
|
}
|
|
827
|
+
else {
|
|
828
|
+
onEnterEditMode();
|
|
829
|
+
}
|
|
830
|
+
}
|
|
831
|
+
};
|
|
832
|
+
if (!canEdit)
|
|
833
|
+
return null;
|
|
834
|
+
const getPositionStyles = () => {
|
|
835
|
+
if (currentPosition) {
|
|
836
|
+
return {
|
|
837
|
+
position: 'fixed',
|
|
838
|
+
left: `${currentPosition.x}px`,
|
|
839
|
+
top: `${currentPosition.y}px`,
|
|
840
|
+
transform: 'translate(-50%, -50%)',
|
|
841
|
+
touchAction: 'none'
|
|
842
|
+
};
|
|
843
|
+
}
|
|
844
|
+
return {
|
|
845
|
+
position: 'fixed',
|
|
846
|
+
...position,
|
|
847
|
+
touchAction: isMobile ? 'none' : 'auto'
|
|
104
848
|
};
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
849
|
+
};
|
|
850
|
+
const getVariantClass = () => {
|
|
851
|
+
if (isSaving)
|
|
852
|
+
return styles$a.primary;
|
|
853
|
+
if (isEditMode) {
|
|
854
|
+
return hasUnsavedChanges ? styles$a.success : styles$a.secondary;
|
|
855
|
+
}
|
|
856
|
+
return styles$a.primary;
|
|
857
|
+
};
|
|
858
|
+
const getIcon = () => {
|
|
859
|
+
if (isSaving) {
|
|
860
|
+
return jsxRuntime.jsx("div", { className: styles$a.loader });
|
|
861
|
+
}
|
|
862
|
+
if (isEditMode) {
|
|
863
|
+
return hasUnsavedChanges ? jsxRuntime.jsx(lucideReact.Check, { size: 24 }) : jsxRuntime.jsx(lucideReact.X, { size: 24 });
|
|
864
|
+
}
|
|
865
|
+
return jsxRuntime.jsx(lucideReact.Edit, { size: 24 });
|
|
866
|
+
};
|
|
867
|
+
const getAriaLabel = () => {
|
|
868
|
+
if (isSaving)
|
|
869
|
+
return "Saving changes";
|
|
870
|
+
if (isEditMode) {
|
|
871
|
+
return hasUnsavedChanges ? "Save and exit edit mode" : "Exit edit mode";
|
|
872
|
+
}
|
|
873
|
+
return "Enter edit mode";
|
|
874
|
+
};
|
|
875
|
+
return (jsxRuntime.jsx(framerMotion.motion.button, { ref: fabRef, className: `${styles$a.fab} ${getVariantClass()} ${isMobile ? styles$a.draggable : ''} ${isDragging ? styles$a.dragging : ''}`, style: getPositionStyles(), onClick: handleClick, onTouchStart: handleTouchStart, onTouchMove: handleTouchMove, onTouchEnd: handleTouchEnd, disabled: isSaving, "aria-label": getAriaLabel(), initial: { scale: 0, opacity: 0 }, animate: { scale: 1, opacity: 1 }, exit: { scale: 0, opacity: 0 }, whileHover: !isSaving && !isDragging ? { scale: 1.1 } : {}, whileTap: !isSaving && !isDragging ? { scale: 0.9 } : {}, transition: {
|
|
876
|
+
type: "spring",
|
|
877
|
+
stiffness: 260,
|
|
878
|
+
damping: 20
|
|
879
|
+
}, children: getIcon() }));
|
|
880
|
+
};
|
|
881
|
+
|
|
882
|
+
var css_248z$b = ".SearchBar-module_searchContainer__TdM1w{max-width:600px;position:relative;width:100%}.SearchBar-module_searchInputWrapper__kCZLU{align-items:center;background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-m);display:flex;overflow:hidden;position:relative;transition:border-color .2s ease}.SearchBar-module_searchInputWrapper__kCZLU:focus-within{border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(5,0,242,.1)}.SearchBar-module_searchIcon__IIxEu{color:var(--color-grey-600);left:var(--spacing-m);pointer-events:none;position:absolute;z-index:1}.SearchBar-module_searchInput__V4gkE{background:transparent;border:none;color:var(--color-text);flex:1;font-size:var(--font-base);min-width:250px;outline:none;padding:var(--spacing-s) var(--spacing-xl);padding-left:calc(var(--spacing-xl) + 20px);padding-right:calc(var(--spacing-xl) + 20px)}@media (max-width:768px){.SearchBar-module_searchInput__V4gkE{min-width:0;padding:var(--spacing-s) var(--spacing-m);padding-left:calc(var(--spacing-m) + 20px);padding-right:calc(var(--spacing-m) + 20px);width:100%}.SearchBar-module_searchContainer__TdM1w{max-width:100%}}.SearchBar-module_searchInput__V4gkE::placeholder{color:var(--color-grey-500)}.SearchBar-module_clearButton__7fNIY{align-items:center;background:none;border:none;border-radius:var(--radius-xs);color:var(--color-grey-600);cursor:pointer;display:flex;justify-content:center;padding:var(--spacing-xs);position:absolute;right:140px;transition:color .2s ease,background .2s ease}.SearchBar-module_clearButton__7fNIY:hover{background:var(--color-grey-100);color:var(--color-text)}.SearchBar-module_filterSelect__xIVE4{background:var(--color-grey-50);border:none;border-left:1px solid var(--color-border);color:var(--color-text);cursor:pointer;font-size:var(--font-small);min-width:100px;outline:none;padding:var(--spacing-s) var(--spacing-m)}.SearchBar-module_filterSelect__xIVE4:hover{background:var(--color-grey-100)}.SearchBar-module_resultsDropdown__yh6NF{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-m);box-shadow:var(--shadow-md);left:0;max-height:400px;overflow-y:auto;position:absolute;right:0;top:calc(100% + var(--spacing-s));z-index:1000}.SearchBar-module_emptyState__RbI4s,.SearchBar-module_loadingState__4gidK{align-items:center;color:var(--color-grey-600);display:flex;gap:var(--spacing-s);justify-content:center;padding:var(--spacing-l);text-align:center}.SearchBar-module_spinner__PMc6-{animation:SearchBar-module_spin__mrCIh .8s linear infinite;border:2px solid var(--color-grey-300);border-radius:50%;border-top-color:var(--color-primary);height:16px;width:16px}@keyframes SearchBar-module_spin__mrCIh{to{transform:rotate(1turn)}}.SearchBar-module_resultsGroups__U24DC{padding:var(--spacing-s) 0}.SearchBar-module_resultGroup__SoTQH{border-bottom:1px solid var(--color-grey-100)}.SearchBar-module_resultGroup__SoTQH:last-child{border-bottom:none}.SearchBar-module_groupHeader__bFRHA{align-items:center;background:var(--color-grey-50);color:var(--color-grey-700);display:flex;font-size:var(--font-small);font-weight:500;gap:var(--spacing-s);padding:var(--spacing-s) var(--spacing-m)}.SearchBar-module_groupIcon__9ENM-{height:16px;width:16px}.SearchBar-module_groupTitle__ZekZs{flex:1}.SearchBar-module_groupCount__PQIqw{background:var(--color-grey-200);border-radius:var(--radius-xs);font-size:12px;padding:2px 6px}.SearchBar-module_groupResults__xTF52{padding:var(--spacing-xs) 0}.SearchBar-module_resultItem__VaKKy{align-items:center;background:none;border:none;cursor:pointer;display:flex;justify-content:space-between;padding:var(--spacing-s) var(--spacing-m);text-align:left;transition:background .2s ease;width:100%}.SearchBar-module_resultItem__VaKKy:hover{background:var(--color-grey-100)}.SearchBar-module_resultItem__VaKKy.SearchBar-module_highlighted__Q-3sH{background:var(--color-primary);color:var(--color-white);transform:translateX(4px);transition:all .2s ease}.SearchBar-module_resultItem__VaKKy.SearchBar-module_highlighted__Q-3sH .SearchBar-module_resultTitle__i1uqL{color:var(--color-white)}.SearchBar-module_resultItem__VaKKy.SearchBar-module_highlighted__Q-3sH .SearchBar-module_resultSubtitle__LQOJ1{color:hsla(0,0%,100%,.8)}.SearchBar-module_resultItem__VaKKy.SearchBar-module_highlighted__Q-3sH .SearchBar-module_resultMeta__Kmkrn{color:hsla(0,0%,100%,.7)}.SearchBar-module_resultContent__TzVzL{flex:1;min-width:0}.SearchBar-module_resultTitle__i1uqL{color:var(--color-text);font-size:var(--font-base);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.SearchBar-module_resultSubtitle__LQOJ1{color:var(--color-grey-600);font-size:var(--font-small);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.SearchBar-module_resultMeta__Kmkrn{color:var(--color-grey-500);font-size:var(--font-small);white-space:nowrap}.SearchBar-module_highlight__Q3PSP{background:rgba(255,235,59,.4);border-radius:2px;color:inherit;font-weight:600;padding:0 2px}.SearchBar-module_resultItem__VaKKy.SearchBar-module_highlighted__Q-3sH .SearchBar-module_highlight__Q3PSP{background:hsla(0,0%,100%,.3);color:var(--color-white)}@media (max-width:768px){.SearchBar-module_searchContainer__TdM1w{max-width:100%}.SearchBar-module_filterSelect__xIVE4{font-size:12px;min-width:80px;padding:var(--spacing-s)}.SearchBar-module_resultsDropdown__yh6NF{max-height:300px}.SearchBar-module_clearButton__7fNIY{right:90px}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNlYXJjaEJhci5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUdJLGVBQWdCLENBRmhCLGlCQUFrQixDQUNsQixVQUVKLENBRUEsNENBR0ksa0JBQW1CLENBQ25CLDZCQUE4QixDQUM5QixvQ0FBcUMsQ0FDckMsNkJBQThCLENBSjlCLFlBQWEsQ0FLYixlQUFnQixDQU5oQixpQkFBa0IsQ0FPbEIsZ0NBQ0osQ0FFQSx5REFDSSxpQ0FBa0MsQ0FDbEMscUNBQ0osQ0FFQSxvQ0FHSSwyQkFBNEIsQ0FENUIscUJBQXNCLENBRXRCLG1CQUFvQixDQUhwQixpQkFBa0IsQ0FJbEIsU0FDSixDQUVBLHFDQVNJLHNCQUF1QixDQUp2QixXQUFZLENBR1osdUJBQXdCLENBUHhCLE1BQU8sQ0FNUCwwQkFBMkIsQ0FHM0IsZUFBZ0IsQ0FKaEIsWUFBYSxDQUpiLDBDQUEyQyxDQUMzQywyQ0FBNEMsQ0FDNUMsNENBT0osQ0FFQSx5QkFDSSxxQ0FJSSxXQUFZLENBSFoseUNBQTBDLENBQzFDLDBDQUEyQyxDQUMzQywyQ0FBNEMsQ0FFNUMsVUFDSixDQUVBLHlDQUNJLGNBQ0osQ0FDSixDQUVBLGtEQUNJLDJCQUNKLENBRUEscUNBU0ksa0JBQW1CLENBTG5CLGVBQWdCLENBQ2hCLFdBQVksQ0FNWiw4QkFBK0IsQ0FML0IsMkJBQTRCLENBQzVCLGNBQWUsQ0FDZixZQUFhLENBRWIsc0JBQXVCLENBUHZCLHlCQUEwQixDQUYxQixpQkFBa0IsQ0FDbEIsV0FBWSxDQVVaLDZDQUNKLENBRUEsMkNBRUksZ0NBQWlDLENBRGpDLHVCQUVKLENBRUEsc0NBSUksK0JBQWdDLENBRmhDLFdBQVksQ0FDWix5Q0FBMEMsQ0FFMUMsdUJBQXdCLENBRXhCLGNBQWUsQ0FEZiwyQkFBNEIsQ0FHNUIsZUFBZ0IsQ0FEaEIsWUFBYSxDQVBiLHlDQVNKLENBRUEsNENBQ0ksZ0NBQ0osQ0FFQSx5Q0FLSSw2QkFBOEIsQ0FDOUIsb0NBQXFDLENBQ3JDLDZCQUE4QixDQUM5QiwyQkFBNEIsQ0FMNUIsTUFBTyxDQU1QLGdCQUFpQixDQUNqQixlQUFnQixDQVRoQixpQkFBa0IsQ0FHbEIsT0FBUSxDQUZSLGlDQUFrQyxDQVNsQyxZQUNKLENBRUEsMEVBTUksa0JBQW1CLENBRm5CLDJCQUE0QixDQUM1QixZQUFhLENBR2Isb0JBQXFCLENBRHJCLHNCQUF1QixDQUx2Qix3QkFBeUIsQ0FDekIsaUJBTUosQ0FFQSxpQ0FNSSwwREFBb0MsQ0FGcEMsc0NBQXNDLENBQ3RDLGlCQUFrQixDQURsQixxQ0FBc0MsQ0FGdEMsV0FBWSxDQURaLFVBTUosQ0FFQSx3Q0FDSSxHQUNJLHVCQUNKLENBQ0osQ0FFQSx1Q0FDSSwwQkFDSixDQUVBLHFDQUNJLDZDQUNKLENBRUEsZ0RBQ0ksa0JBQ0osQ0FFQSxxQ0FFSSxrQkFBbUIsQ0FHbkIsK0JBQWdDLENBRWhDLDJCQUE0QixDQU41QixZQUFhLENBS2IsMkJBQTRCLENBRTVCLGVBQWdCLENBTGhCLG9CQUFxQixDQUNyQix5Q0FLSixDQUVBLG1DQUVJLFdBQVksQ0FEWixVQUVKLENBRUEsb0NBQ0ksTUFDSixDQUVBLG9DQUNJLGdDQUFpQyxDQUVqQyw4QkFBK0IsQ0FDL0IsY0FBZSxDQUZmLGVBR0osQ0FFQSxzQ0FDSSwyQkFDSixDQUVBLG9DQUVJLGtCQUFtQixDQUluQixlQUFnQixDQUNoQixXQUFZLENBQ1osY0FBZSxDQVBmLFlBQWEsQ0FFYiw2QkFBOEIsQ0FFOUIseUNBQTBDLENBSTFDLGVBQWdCLENBQ2hCLDhCQUFnQyxDQU5oQyxVQU9KLENBRUEsMENBQ0ksZ0NBQ0osQ0FFQSx3RUFDSSwrQkFBZ0MsQ0FDaEMsd0JBQXlCLENBQ3pCLHlCQUEwQixDQUMxQix1QkFDSixDQUVBLDZHQUNJLHdCQUNKLENBRUEsZ0hBQ0ksd0JBQ0osQ0FFQSw0R0FDSSx3QkFDSixDQUVBLHVDQUNJLE1BQU8sQ0FDUCxXQUNKLENBRUEscUNBRUksdUJBQXdCLENBRHhCLDBCQUEyQixDQUUzQixlQUFnQixDQUNoQixlQUFnQixDQUNoQixzQkFBdUIsQ0FDdkIsa0JBQ0osQ0FFQSx3Q0FFSSwyQkFBNEIsQ0FENUIsMkJBQTRCLENBRTVCLGNBQWUsQ0FDZixlQUFnQixDQUNoQixzQkFBdUIsQ0FDdkIsa0JBQ0osQ0FFQSxvQ0FFSSwyQkFBNEIsQ0FENUIsMkJBQTRCLENBRTVCLGtCQUNKLENBRUEsbUNBQ0ksOEJBQW1DLENBSW5DLGlCQUFrQixDQUhsQixhQUFjLENBQ2QsZUFBZ0IsQ0FDaEIsYUFFSixDQUVBLDJHQUNJLDZCQUFvQyxDQUNwQyx3QkFDSixDQUdBLHlCQUNJLHlDQUNJLGNBQ0osQ0FFQSxzQ0FFSSxjQUFlLENBRGYsY0FBZSxDQUVmLHdCQUNKLENBRUEseUNBQ0ksZ0JBQ0osQ0FFQSxxQ0FDSSxVQUNKLENBQ0oiLCJmaWxlIjoiU2VhcmNoQmFyLm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuc2VhcmNoQ29udGFpbmVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiA2MDBweDtcbn1cblxuLnNlYXJjaElucHV0V3JhcHBlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci13aGl0ZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbSk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4ycyBlYXNlO1xufVxuXG4uc2VhcmNoSW5wdXRXcmFwcGVyOmZvY3VzLXdpdGhpbiB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSg1LCAwLCAyNDIsIDAuMSk7XG59XG5cbi5zZWFyY2hJY29uIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogdmFyKC0tc3BhY2luZy1tKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JleS02MDApO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHotaW5kZXg6IDE7XG59XG5cbi5zZWFyY2hJbnB1dCB7XG4gICAgZmxleDogMTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXMpIHZhcigtLXNwYWNpbmcteGwpO1xuICAgIHBhZGRpbmctbGVmdDogY2FsYyh2YXIoLS1zcGFjaW5nLXhsKSArIDIwcHgpO1xuICAgIHBhZGRpbmctcmlnaHQ6IGNhbGModmFyKC0tc3BhY2luZy14bCkgKyAyMHB4KTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtYmFzZSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIG1pbi13aWR0aDogMjUwcHg7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgIC5zZWFyY2hJbnB1dCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctcykgdmFyKC0tc3BhY2luZy1tKTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiBjYWxjKHZhcigtLXNwYWNpbmctbSkgKyAyMHB4KTtcbiAgICAgICAgcGFkZGluZy1yaWdodDogY2FsYyh2YXIoLS1zcGFjaW5nLW0pICsgMjBweCk7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuICAgIFxuICAgIC5zZWFyY2hDb250YWluZXIge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgfVxufVxuXG4uc2VhcmNoSW5wdXQ6OnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JleS01MDApO1xufVxuXG4uY2xlYXJCdXR0b24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogMTQwcHg7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy14cyk7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyZXktNjAwKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy14cyk7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgMC4ycyBlYXNlLCBiYWNrZ3JvdW5kIDAuMnMgZWFzZTtcbn1cblxuLmNsZWFyQnV0dG9uOmhvdmVyIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JleS0xMDApO1xufVxuXG4uZmlsdGVyU2VsZWN0IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXMpIHZhcigtLXNwYWNpbmctbSk7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ncmV5LTUwKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNtYWxsKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBtaW4td2lkdGg6IDEwMHB4O1xufVxuXG4uZmlsdGVyU2VsZWN0OmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ncmV5LTEwMCk7XG59XG5cbi5yZXN1bHRzRHJvcGRvd24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IGNhbGMoMTAwJSArIHZhcigtLXNwYWNpbmctcykpO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3Itd2hpdGUpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW0pO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tZCk7XG4gICAgbWF4LWhlaWdodDogNDAwcHg7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICB6LWluZGV4OiAxMDAwO1xufVxuXG4ubG9hZGluZ1N0YXRlLFxuLmVtcHR5U3RhdGUge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctbCk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmV5LTYwMCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3BhY2luZy1zKTtcbn1cblxuLnNwaW5uZXIge1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1jb2xvci1ncmV5LTMwMCk7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGFuaW1hdGlvbjogc3BpbiAwLjhzIGxpbmVhciBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBzcGluIHtcbiAgICB0byB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gICAgfVxufVxuXG4ucmVzdWx0c0dyb3VwcyB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1zKSAwO1xufVxuXG4ucmVzdWx0R3JvdXAge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmV5LTEwMCk7XG59XG5cbi5yZXN1bHRHcm91cDpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItYm90dG9tOiBub25lO1xufVxuXG4uZ3JvdXBIZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXNwYWNpbmctcyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1zKSB2YXIoLS1zcGFjaW5nLW0pO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyZXktNTApO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zbWFsbCk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyZXktNzAwKTtcbiAgICBmb250LXdlaWdodDogNTAwO1xufVxuXG4uZ3JvdXBJY29uIHtcbiAgICB3aWR0aDogMTZweDtcbiAgICBoZWlnaHQ6IDE2cHg7XG59XG5cbi5ncm91cFRpdGxlIHtcbiAgICBmbGV4OiAxO1xufVxuXG4uZ3JvdXBDb3VudCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JleS0yMDApO1xuICAgIHBhZGRpbmc6IDJweCA2cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXhzKTtcbiAgICBmb250LXNpemU6IDEycHg7XG59XG5cbi5ncm91cFJlc3VsdHMge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmcteHMpIDA7XG59XG5cbi5yZXN1bHRJdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctcykgdmFyKC0tc3BhY2luZy1tKTtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMnMgZWFzZTtcbn1cblxuLnJlc3VsdEl0ZW06aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyZXktMTAwKTtcbn1cblxuLnJlc3VsdEl0ZW0uaGlnaGxpZ2h0ZWQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci13aGl0ZSk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDRweCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbn1cblxuLnJlc3VsdEl0ZW0uaGlnaGxpZ2h0ZWQgLnJlc3VsdFRpdGxlIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3Itd2hpdGUpO1xufVxuXG4ucmVzdWx0SXRlbS5oaWdobGlnaHRlZCAucmVzdWx0U3VidGl0bGUge1xuICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XG59XG5cbi5yZXN1bHRJdGVtLmhpZ2hsaWdodGVkIC5yZXN1bHRNZXRhIHtcbiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpO1xufVxuXG4ucmVzdWx0Q29udGVudCB7XG4gICAgZmxleDogMTtcbiAgICBtaW4td2lkdGg6IDA7XG59XG5cbi5yZXN1bHRUaXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LWJhc2UpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLnJlc3VsdFN1YnRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc21hbGwpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmV5LTYwMCk7XG4gICAgbWFyZ2luLXRvcDogMnB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLnJlc3VsdE1ldGEge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zbWFsbCk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyZXktNTAwKTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4uaGlnaGxpZ2h0IHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjM1LCA1OSwgMC40KTtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIHBhZGRpbmc6IDAgMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbn1cblxuLnJlc3VsdEl0ZW0uaGlnaGxpZ2h0ZWQgLmhpZ2hsaWdodCB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci13aGl0ZSk7XG59XG5cbi8qIE1vYmlsZSBzdHlsZXMgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgIC5zZWFyY2hDb250YWluZXIge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgLmZpbHRlclNlbGVjdCB7XG4gICAgICAgIG1pbi13aWR0aDogODBweDtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXMpO1xuICAgIH1cblxuICAgIC5yZXN1bHRzRHJvcGRvd24ge1xuICAgICAgICBtYXgtaGVpZ2h0OiAzMDBweDtcbiAgICB9XG5cbiAgICAuY2xlYXJCdXR0b24ge1xuICAgICAgICByaWdodDogOTBweDtcbiAgICB9XG59Il19 */";
|
|
883
|
+
var styles$9 = {"searchContainer":"SearchBar-module_searchContainer__TdM1w","searchInputWrapper":"SearchBar-module_searchInputWrapper__kCZLU","searchIcon":"SearchBar-module_searchIcon__IIxEu","searchInput":"SearchBar-module_searchInput__V4gkE","clearButton":"SearchBar-module_clearButton__7fNIY","filterSelect":"SearchBar-module_filterSelect__xIVE4","resultsDropdown":"SearchBar-module_resultsDropdown__yh6NF","loadingState":"SearchBar-module_loadingState__4gidK","emptyState":"SearchBar-module_emptyState__RbI4s","spinner":"SearchBar-module_spinner__PMc6-","resultsGroups":"SearchBar-module_resultsGroups__U24DC","resultGroup":"SearchBar-module_resultGroup__SoTQH","groupHeader":"SearchBar-module_groupHeader__bFRHA","groupIcon":"SearchBar-module_groupIcon__9ENM-","groupTitle":"SearchBar-module_groupTitle__ZekZs","groupCount":"SearchBar-module_groupCount__PQIqw","groupResults":"SearchBar-module_groupResults__xTF52","resultItem":"SearchBar-module_resultItem__VaKKy","highlighted":"SearchBar-module_highlighted__Q-3sH","resultTitle":"SearchBar-module_resultTitle__i1uqL","resultSubtitle":"SearchBar-module_resultSubtitle__LQOJ1","resultMeta":"SearchBar-module_resultMeta__Kmkrn","resultContent":"SearchBar-module_resultContent__TzVzL","highlight":"SearchBar-module_highlight__Q3PSP"};
|
|
884
|
+
styleInject(css_248z$b);
|
|
885
|
+
|
|
886
|
+
const filterOptions = [
|
|
887
|
+
{ value: 'all', label: 'All', icon: FiSearch },
|
|
888
|
+
{ value: 'projects', label: 'Projects', icon: FiFolder },
|
|
889
|
+
{ value: 'clients', label: 'Clients', icon: FiUsers },
|
|
890
|
+
{ value: 'contacts', label: 'Contacts', icon: FiBook },
|
|
891
|
+
{ value: 'interactions', label: 'Interactions', icon: FiMessageSquare },
|
|
892
|
+
{ value: 'team', label: 'Team', icon: FiUserPlus },
|
|
893
|
+
];
|
|
894
|
+
const entityIcons = {
|
|
895
|
+
projects: FiFolder,
|
|
896
|
+
clients: FiUsers,
|
|
897
|
+
contacts: FiBook,
|
|
898
|
+
interactions: FiMessageSquare,
|
|
899
|
+
team: FiUserPlus,
|
|
900
|
+
};
|
|
901
|
+
const SearchBar = ({ className, placeholder = "Search (Ctrl+Space)...", onSearch, onResultClick, onClear, debounceDelay = 300, minSearchLength = 2, showFilter = true, enableKeyboardShortcut = true }) => {
|
|
902
|
+
const [query, setQuery] = React.useState('');
|
|
903
|
+
const [filter, setFilter] = React.useState('all');
|
|
904
|
+
const [results, setResults] = React.useState([]);
|
|
905
|
+
const [isLoading, setIsLoading] = React.useState(false);
|
|
906
|
+
const [isDropdownOpen, setIsDropdownOpen] = React.useState(false);
|
|
907
|
+
const [highlightedIndex, setHighlightedIndex] = React.useState(-1);
|
|
908
|
+
const searchRef = React.useRef(null);
|
|
909
|
+
const inputRef = React.useRef(null);
|
|
910
|
+
const debounceTimerRef = React.useRef();
|
|
911
|
+
const resultsRef = React.useRef(null);
|
|
912
|
+
// Perform search with debounce
|
|
913
|
+
const performSearch = React.useCallback(async (searchQuery, searchFilter) => {
|
|
914
|
+
if (searchQuery.trim().length < minSearchLength) {
|
|
915
|
+
setResults([]);
|
|
916
|
+
setIsDropdownOpen(false);
|
|
917
|
+
return;
|
|
918
|
+
}
|
|
919
|
+
if (!onSearch) {
|
|
920
|
+
// If no search handler provided, just show empty results
|
|
921
|
+
setResults([]);
|
|
922
|
+
setIsDropdownOpen(false);
|
|
923
|
+
return;
|
|
924
|
+
}
|
|
925
|
+
setIsLoading(true);
|
|
926
|
+
try {
|
|
927
|
+
const searchResults = await onSearch(searchQuery, searchFilter);
|
|
928
|
+
setResults(searchResults);
|
|
929
|
+
setIsDropdownOpen(searchResults.length > 0);
|
|
930
|
+
setHighlightedIndex(-1);
|
|
931
|
+
}
|
|
932
|
+
catch (error) {
|
|
933
|
+
console.error('Search error:', error);
|
|
934
|
+
setResults([]);
|
|
935
|
+
setIsDropdownOpen(false);
|
|
936
|
+
}
|
|
937
|
+
finally {
|
|
938
|
+
setIsLoading(false);
|
|
939
|
+
}
|
|
940
|
+
}, [onSearch, minSearchLength]);
|
|
941
|
+
// Handle input change with debounce
|
|
942
|
+
React.useEffect(() => {
|
|
943
|
+
if (debounceTimerRef.current) {
|
|
944
|
+
clearTimeout(debounceTimerRef.current);
|
|
945
|
+
}
|
|
946
|
+
if (query.trim()) {
|
|
947
|
+
debounceTimerRef.current = setTimeout(() => {
|
|
948
|
+
performSearch(query, filter);
|
|
949
|
+
}, debounceDelay);
|
|
950
|
+
}
|
|
951
|
+
else {
|
|
952
|
+
setResults([]);
|
|
953
|
+
setIsDropdownOpen(false);
|
|
108
954
|
}
|
|
109
955
|
return () => {
|
|
110
|
-
|
|
111
|
-
|
|
956
|
+
if (debounceTimerRef.current) {
|
|
957
|
+
clearTimeout(debounceTimerRef.current);
|
|
958
|
+
}
|
|
959
|
+
};
|
|
960
|
+
}, [query, filter, performSearch, debounceDelay]);
|
|
961
|
+
// Close dropdown when clicking outside
|
|
962
|
+
React.useEffect(() => {
|
|
963
|
+
const handleClickOutside = (event) => {
|
|
964
|
+
if (searchRef.current && !searchRef.current.contains(event.target)) {
|
|
965
|
+
setIsDropdownOpen(false);
|
|
966
|
+
setHighlightedIndex(-1);
|
|
967
|
+
}
|
|
968
|
+
};
|
|
969
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
970
|
+
return () => document.removeEventListener('mousedown', handleClickOutside);
|
|
971
|
+
}, []);
|
|
972
|
+
// Global keyboard shortcut for search (Ctrl+Space)
|
|
973
|
+
React.useEffect(() => {
|
|
974
|
+
if (!enableKeyboardShortcut)
|
|
975
|
+
return;
|
|
976
|
+
const handleGlobalKeyDown = (e) => {
|
|
977
|
+
// Ctrl+Space or Cmd+Space to focus search
|
|
978
|
+
if ((e.ctrlKey || e.metaKey) && e.code === 'Space') {
|
|
979
|
+
e.preventDefault();
|
|
980
|
+
inputRef.current?.focus();
|
|
981
|
+
inputRef.current?.select();
|
|
982
|
+
}
|
|
983
|
+
};
|
|
984
|
+
document.addEventListener('keydown', handleGlobalKeyDown);
|
|
985
|
+
return () => document.removeEventListener('keydown', handleGlobalKeyDown);
|
|
986
|
+
}, [enableKeyboardShortcut]);
|
|
987
|
+
// Auto-scroll to highlighted item
|
|
988
|
+
React.useEffect(() => {
|
|
989
|
+
if (highlightedIndex >= 0 && resultsRef.current) {
|
|
990
|
+
const highlightedElement = resultsRef.current.querySelector(`[data-result-index="${highlightedIndex}"]`);
|
|
991
|
+
if (highlightedElement) {
|
|
992
|
+
highlightedElement.scrollIntoView({
|
|
993
|
+
behavior: 'smooth',
|
|
994
|
+
block: 'nearest'
|
|
995
|
+
});
|
|
996
|
+
}
|
|
997
|
+
}
|
|
998
|
+
}, [highlightedIndex]);
|
|
999
|
+
// Handle keyboard navigation
|
|
1000
|
+
const handleKeyDown = (e) => {
|
|
1001
|
+
switch (e.key) {
|
|
1002
|
+
case 'ArrowDown':
|
|
1003
|
+
e.preventDefault();
|
|
1004
|
+
if (!isDropdownOpen && results.length > 0) {
|
|
1005
|
+
setIsDropdownOpen(true);
|
|
1006
|
+
setHighlightedIndex(0);
|
|
1007
|
+
}
|
|
1008
|
+
else if (results.length > 0) {
|
|
1009
|
+
setHighlightedIndex(prev => prev < results.length - 1 ? prev + 1 : 0);
|
|
1010
|
+
}
|
|
1011
|
+
break;
|
|
1012
|
+
case 'ArrowUp':
|
|
1013
|
+
e.preventDefault();
|
|
1014
|
+
if (isDropdownOpen && results.length > 0) {
|
|
1015
|
+
setHighlightedIndex(prev => prev > 0 ? prev - 1 : results.length - 1);
|
|
1016
|
+
}
|
|
1017
|
+
break;
|
|
1018
|
+
case 'Enter':
|
|
1019
|
+
e.preventDefault();
|
|
1020
|
+
if (!isDropdownOpen && results.length > 0) {
|
|
1021
|
+
// If dropdown is closed, open it and select first result
|
|
1022
|
+
setIsDropdownOpen(true);
|
|
1023
|
+
setHighlightedIndex(0);
|
|
1024
|
+
}
|
|
1025
|
+
else if (results.length > 0) {
|
|
1026
|
+
// If no item is highlighted, select the first one
|
|
1027
|
+
const indexToUse = highlightedIndex >= 0 ? highlightedIndex : 0;
|
|
1028
|
+
if (indexToUse < results.length) {
|
|
1029
|
+
handleResultClick(results[indexToUse]);
|
|
1030
|
+
}
|
|
1031
|
+
}
|
|
1032
|
+
break;
|
|
1033
|
+
case 'Escape':
|
|
1034
|
+
setIsDropdownOpen(false);
|
|
1035
|
+
setHighlightedIndex(-1);
|
|
1036
|
+
inputRef.current?.blur();
|
|
1037
|
+
break;
|
|
1038
|
+
}
|
|
1039
|
+
};
|
|
1040
|
+
// Handle result click
|
|
1041
|
+
const handleResultClick = (result) => {
|
|
1042
|
+
if (onResultClick) {
|
|
1043
|
+
onResultClick(result);
|
|
1044
|
+
}
|
|
1045
|
+
setQuery('');
|
|
1046
|
+
setIsDropdownOpen(false);
|
|
1047
|
+
setHighlightedIndex(-1);
|
|
1048
|
+
};
|
|
1049
|
+
// Clear search
|
|
1050
|
+
const handleClear = () => {
|
|
1051
|
+
setQuery('');
|
|
1052
|
+
setResults([]);
|
|
1053
|
+
setIsDropdownOpen(false);
|
|
1054
|
+
setHighlightedIndex(-1);
|
|
1055
|
+
inputRef.current?.focus();
|
|
1056
|
+
if (onClear) {
|
|
1057
|
+
onClear();
|
|
1058
|
+
}
|
|
1059
|
+
};
|
|
1060
|
+
// Group results by type
|
|
1061
|
+
const groupedResults = results.reduce((acc, result) => {
|
|
1062
|
+
if (!acc[result.type]) {
|
|
1063
|
+
acc[result.type] = [];
|
|
1064
|
+
}
|
|
1065
|
+
acc[result.type].push(result);
|
|
1066
|
+
return acc;
|
|
1067
|
+
}, {});
|
|
1068
|
+
// Highlight matching text
|
|
1069
|
+
const highlightMatch = (text, highlight) => {
|
|
1070
|
+
if (!text || !highlight.trim())
|
|
1071
|
+
return text || '';
|
|
1072
|
+
const regex = new RegExp(`(${highlight.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')})`, 'gi');
|
|
1073
|
+
const parts = text.split(regex);
|
|
1074
|
+
return parts.map((part, index) => regex.test(part) ? (jsxRuntime.jsx("mark", { className: styles$9.highlight, children: part }, index)) : (part));
|
|
1075
|
+
};
|
|
1076
|
+
return (jsxRuntime.jsxs("div", { ref: searchRef, className: `${styles$9.searchContainer} ${className || ''}`, children: [jsxRuntime.jsxs("div", { className: styles$9.searchInputWrapper, children: [jsxRuntime.jsx(FiSearch, { className: styles$9.searchIcon }), jsxRuntime.jsx("input", { ref: inputRef, type: "text", value: query, onChange: (e) => setQuery(e.target.value), onKeyDown: handleKeyDown, onFocus: () => query.trim() && results.length > 0 && setIsDropdownOpen(true), placeholder: placeholder, className: styles$9.searchInput, "aria-label": "Search", "aria-expanded": isDropdownOpen, "aria-controls": "search-results", "aria-autocomplete": "list" }), query && (jsxRuntime.jsx(framerMotion.motion.button, { className: styles$9.clearButton, onClick: handleClear, whileHover: { scale: 1.1 }, whileTap: { scale: 0.9 }, initial: { opacity: 0, scale: 0.8 }, animate: { opacity: 1, scale: 1 }, exit: { opacity: 0, scale: 0.8 }, children: jsxRuntime.jsx(FiX, {}) })), showFilter && (jsxRuntime.jsx("select", { value: filter, onChange: (e) => setFilter(e.target.value), className: styles$9.filterSelect, "aria-label": "Filter search results", children: filterOptions.map(option => (jsxRuntime.jsx("option", { value: option.value, children: option.label }, option.value))) }))] }), jsxRuntime.jsx(framerMotion.AnimatePresence, { children: isDropdownOpen && (jsxRuntime.jsx(framerMotion.motion.div, { ref: resultsRef, id: "search-results", className: styles$9.resultsDropdown, initial: { opacity: 0, y: -10 }, animate: { opacity: 1, y: 0 }, exit: { opacity: 0, y: -10 }, transition: { duration: 0.2 }, children: isLoading ? (jsxRuntime.jsxs("div", { className: styles$9.loadingState, children: [jsxRuntime.jsx("div", { className: styles$9.spinner }), jsxRuntime.jsx("span", { children: "Searching..." })] })) : results.length === 0 ? (jsxRuntime.jsxs("div", { className: styles$9.emptyState, children: ["No results found for \"", query, "\""] })) : (jsxRuntime.jsx("div", { className: styles$9.resultsGroups, children: Object.entries(groupedResults).map(([type, groupResults]) => {
|
|
1077
|
+
const Icon = entityIcons[type];
|
|
1078
|
+
return (jsxRuntime.jsxs("div", { className: styles$9.resultGroup, children: [jsxRuntime.jsxs("div", { className: styles$9.groupHeader, children: [Icon && jsxRuntime.jsx(Icon, { className: styles$9.groupIcon }), jsxRuntime.jsx("span", { className: styles$9.groupTitle, children: type.charAt(0).toUpperCase() + type.slice(1) }), jsxRuntime.jsx("span", { className: styles$9.groupCount, children: groupResults.length })] }), jsxRuntime.jsx("div", { className: styles$9.groupResults, children: groupResults.map((result) => {
|
|
1079
|
+
const globalIndex = results.indexOf(result);
|
|
1080
|
+
return (jsxRuntime.jsxs(framerMotion.motion.button, { "data-result-index": globalIndex, className: `${styles$9.resultItem} ${highlightedIndex === globalIndex ? styles$9.highlighted : ''}`, onClick: () => handleResultClick(result), whileHover: { x: 4 }, onMouseEnter: () => setHighlightedIndex(globalIndex), children: [jsxRuntime.jsxs("div", { className: styles$9.resultContent, children: [jsxRuntime.jsx("div", { className: styles$9.resultTitle, children: highlightMatch(result.title || 'Untitled', query) }), result.subtitle && (jsxRuntime.jsx("div", { className: styles$9.resultSubtitle, children: highlightMatch(result.subtitle, query) }))] }), result.meta && (jsxRuntime.jsx("div", { className: styles$9.resultMeta, children: result.meta }))] }, `${result.type}-${result.id}`));
|
|
1081
|
+
}) })] }, type));
|
|
1082
|
+
}) })) })) })] }));
|
|
1083
|
+
};
|
|
1084
|
+
|
|
1085
|
+
var css_248z$a = ".TimePickerModal-module_modalOverlay__Cbq5-{align-items:center;animation:TimePickerModal-module_fadeIn__1ngxN .2s ease;backdrop-filter:blur(4px);background:rgba(0,0,0,.5);bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}@keyframes TimePickerModal-module_fadeIn__1ngxN{0%{opacity:0}to{opacity:1}}.TimePickerModal-module_modalContent__e6py2{animation:TimePickerModal-module_slideUp__ruCh5 .3s ease;background:var(--color-background);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);display:flex;flex-direction:column;max-height:80vh;max-width:400px;width:90%}@keyframes TimePickerModal-module_slideUp__ruCh5{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.TimePickerModal-module_modalHeader__XhTgK{align-items:center;border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;padding:var(--spacing-lg)}.TimePickerModal-module_modalHeader__XhTgK h3{color:var(--color-text);font-size:var(--font-size-lg);margin:0}.TimePickerModal-module_closeButton__qsRAG{align-items:center;background:none;border:none;border-radius:var(--radius-sm);color:var(--color-text-secondary);cursor:pointer;display:flex;justify-content:center;padding:var(--spacing-xs);transition:all var(--transition-base)}.TimePickerModal-module_closeButton__qsRAG:hover{background:var(--color-background-secondary);color:var(--color-text)}.TimePickerModal-module_timeDisplay__voGP4{color:var(--color-primary);font-family:SF Mono,Monaco,monospace;font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);letter-spacing:.1em;padding:var(--spacing-lg);text-align:center}.TimePickerModal-module_pickerContainer__4qn3r{align-items:center;display:flex;gap:var(--spacing-md);justify-content:center;padding:0 var(--spacing-lg)}.TimePickerModal-module_pickerColumn__0-kWf{flex:1;max-width:150px}.TimePickerModal-module_pickerLabel__e7zQ2{color:var(--color-text-secondary);font-size:var(--font-size-sm);letter-spacing:.05em;margin-bottom:var(--spacing-sm);text-align:center;text-transform:uppercase}.TimePickerModal-module_pickerScroll__5Dcvw{background:var(--color-background-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);height:200px;overflow-y:auto;padding:var(--spacing-xs)}.TimePickerModal-module_pickerScroll__5Dcvw::-webkit-scrollbar{width:6px}.TimePickerModal-module_pickerScroll__5Dcvw::-webkit-scrollbar-track{background:var(--color-background-tertiary);border-radius:3px}.TimePickerModal-module_pickerScroll__5Dcvw::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}.TimePickerModal-module_pickerScroll__5Dcvw::-webkit-scrollbar-thumb:hover{background:var(--color-border-hover)}.TimePickerModal-module_pickerItem__n8sC2{background:none;border:none;border-radius:var(--radius-sm);color:var(--color-text);cursor:pointer;display:block;font-size:var(--font-size-base);padding:var(--spacing-sm);transition:all var(--transition-base);width:100%}.TimePickerModal-module_pickerItem__n8sC2:hover{background:var(--color-background-tertiary)}.TimePickerModal-module_pickerItem__n8sC2.TimePickerModal-module_selected__oQA8Z{background:var(--color-primary);color:#fff;font-weight:var(--font-weight-semibold)}.TimePickerModal-module_pickerDivider__eg83F{color:var(--color-text-secondary);font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);padding:0 var(--spacing-sm)}.TimePickerModal-module_modalActions__eJRWU{border-top:1px solid var(--color-border);display:flex;gap:var(--spacing-md);padding:var(--spacing-lg)}.TimePickerModal-module_cancelButton__zri81,.TimePickerModal-module_confirmButton__q2p3Q{border:none;border-radius:var(--radius-md);cursor:pointer;flex:1;font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);padding:var(--spacing-sm) var(--spacing-lg);transition:all var(--transition-base)}.TimePickerModal-module_cancelButton__zri81{background:var(--color-background-secondary);color:var(--color-text)}.TimePickerModal-module_cancelButton__zri81:hover{background:var(--color-background-tertiary)}.TimePickerModal-module_confirmButton__q2p3Q{background:var(--color-primary);color:#fff}.TimePickerModal-module_confirmButton__q2p3Q:hover{background:var(--color-primary-hover)}[data-theme=dark] .TimePickerModal-module_modalContent__e6py2{background:var(--color-background-secondary)}@media (max-width:768px){.TimePickerModal-module_modalContent__e6py2{max-width:none;width:95%}.TimePickerModal-module_pickerScroll__5Dcvw{height:150px}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRpbWVQaWNrZXJNb2RhbC5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLDRDQVNJLGtCQUFtQixDQUduQix1REFBMkIsQ0FMM0IseUJBQTBCLENBRDFCLHlCQUE4QixDQUQ5QixRQUFTLENBR1QsWUFBYSxDQUViLHNCQUF1QixDQVB2QixNQUFPLENBRlAsY0FBZSxDQUdmLE9BQVEsQ0FGUixLQUFNLENBU04sWUFFSixDQUVBLGdEQUNJLEdBQU8sU0FBWSxDQUNuQixHQUFLLFNBQVksQ0FDckIsQ0FFQSw0Q0FTSSx3REFBNEIsQ0FSNUIsa0NBQW1DLENBQ25DLDhCQUErQixDQUMvQiwyQkFBNEIsQ0FJNUIsWUFBYSxDQUNiLHFCQUFzQixDQUZ0QixlQUFnQixDQURoQixlQUFnQixDQURoQixTQU1KLENBRUEsaURBQ0ksR0FDSSxTQUFVLENBQ1YsMEJBQ0osQ0FDQSxHQUNJLFNBQVUsQ0FDVix1QkFDSixDQUNKLENBRUEsMkNBR0ksa0JBQW1CLENBRW5CLDJDQUE0QyxDQUo1QyxZQUFhLENBQ2IsNkJBQThCLENBRTlCLHlCQUVKLENBRUEsOENBR0ksdUJBQXdCLENBRHhCLDZCQUE4QixDQUQ5QixRQUdKLENBRUEsMkNBT0ksa0JBQW1CLENBTm5CLGVBQWdCLENBQ2hCLFdBQVksQ0FPWiw4QkFBK0IsQ0FOL0IsaUNBQWtDLENBQ2xDLGNBQWUsQ0FFZixZQUFhLENBRWIsc0JBQXVCLENBSHZCLHlCQUEwQixDQUsxQixxQ0FDSixDQUVBLGlEQUNJLDRDQUE2QyxDQUM3Qyx1QkFDSixDQUVBLDJDQUtJLDBCQUEyQixDQUMzQixvQ0FBeUMsQ0FKekMsOEJBQStCLENBQy9CLG1DQUFvQyxDQUlwQyxtQkFBcUIsQ0FIckIseUJBQTBCLENBSDFCLGlCQU9KLENBRUEsK0NBS0ksa0JBQW1CLENBSm5CLFlBQWEsQ0FDYixxQkFBc0IsQ0FFdEIsc0JBQXVCLENBRHZCLDJCQUdKLENBRUEsNENBQ0ksTUFBTyxDQUNQLGVBQ0osQ0FFQSwyQ0FHSSxpQ0FBa0MsQ0FEbEMsNkJBQThCLENBSTlCLG9CQUFzQixDQUZ0QiwrQkFBZ0MsQ0FIaEMsaUJBQWtCLENBSWxCLHdCQUVKLENBRUEsNENBTUksNENBQTZDLENBSDdDLG9DQUFxQyxDQUNyQyw4QkFBK0IsQ0FIL0IsWUFBYSxDQUNiLGVBQWdCLENBR2hCLHlCQUVKLENBRUEsK0RBQ0ksU0FDSixDQUVBLHFFQUNJLDJDQUE0QyxDQUM1QyxpQkFDSixDQUVBLHFFQUNJLDhCQUErQixDQUMvQixpQkFDSixDQUVBLDJFQUNJLG9DQUNKLENBRUEsMENBSUksZUFBZ0IsQ0FDaEIsV0FBWSxDQUtaLDhCQUErQixDQUYvQix1QkFBd0IsQ0FGeEIsY0FBZSxDQUxmLGFBQWMsQ0FNZCwrQkFBZ0MsQ0FKaEMseUJBQTBCLENBTTFCLHFDQUFzQyxDQVB0QyxVQVNKLENBRUEsZ0RBQ0ksMkNBQ0osQ0FFQSxpRkFDSSwrQkFBZ0MsQ0FDaEMsVUFBWSxDQUNaLHVDQUNKLENBRUEsNkNBRUksaUNBQWtDLENBRGxDLDhCQUErQixDQUUvQixtQ0FBb0MsQ0FDcEMsMkJBQ0osQ0FFQSw0Q0FJSSx3Q0FBeUMsQ0FIekMsWUFBYSxDQUNiLHFCQUFzQixDQUN0Qix5QkFFSixDQUVBLHlGQVNJLFdBQVksQ0FMWiw4QkFBK0IsQ0FHL0IsY0FBZSxDQUxmLE1BQU8sQ0FHUCwrQkFBZ0MsQ0FDaEMsdUNBQXdDLENBSHhDLDJDQUE0QyxDQUs1QyxxQ0FFSixDQUVBLDRDQUNJLDRDQUE2QyxDQUM3Qyx1QkFDSixDQUVBLGtEQUNJLDJDQUNKLENBRUEsNkNBQ0ksK0JBQWdDLENBQ2hDLFVBQ0osQ0FFQSxtREFDSSxxQ0FDSixDQUdBLDhEQUNJLDRDQUNKLENBR0EseUJBQ0ksNENBRUksY0FBZSxDQURmLFNBRUosQ0FFQSw0Q0FDSSxZQUNKLENBQ0oiLCJmaWxlIjoiVGltZVBpY2tlck1vZGFsLm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBNb2RhbCBPdmVybGF5ICovXG4ubW9kYWxPdmVybGF5IHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNHB4KTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgei1pbmRleDogMTAwMDtcbiAgICBhbmltYXRpb246IGZhZGVJbiAwLjJzIGVhc2U7XG59XG5cbkBrZXlmcmFtZXMgZmFkZUluIHtcbiAgICBmcm9tIHsgb3BhY2l0eTogMDsgfVxuICAgIHRvIHsgb3BhY2l0eTogMTsgfVxufVxuXG4ubW9kYWxDb250ZW50IHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteGwpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy14bCk7XG4gICAgd2lkdGg6IDkwJTtcbiAgICBtYXgtd2lkdGg6IDQwMHB4O1xuICAgIG1heC1oZWlnaHQ6IDgwdmg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFuaW1hdGlvbjogc2xpZGVVcCAwLjNzIGVhc2U7XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVVcCB7XG4gICAgZnJvbSB7IFxuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7XG4gICAgfVxuICAgIHRvIHsgXG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB9XG59XG5cbi5tb2RhbEhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLWxnKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbn1cblxuLm1vZGFsSGVhZGVyIGgzIHtcbiAgICBtYXJnaW46IDA7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbn1cblxuLmNsb3NlQnV0dG9uIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXhzKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbn1cblxuLmNsb3NlQnV0dG9uOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xufVxuXG4udGltZURpc3BsYXkge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS0zeGwpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLWxnKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgZm9udC1mYW1pbHk6ICdTRiBNb25vJywgTW9uYWNvLCBtb25vc3BhY2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMWVtO1xufVxuXG4ucGlja2VyQ29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogdmFyKC0tc3BhY2luZy1tZCk7XG4gICAgcGFkZGluZzogMCB2YXIoLS1zcGFjaW5nLWxnKTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ucGlja2VyQ29sdW1uIHtcbiAgICBmbGV4OiAxO1xuICAgIG1heC13aWR0aDogMTUwcHg7XG59XG5cbi5waWNrZXJMYWJlbCB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctc20pO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbn1cblxuLnBpY2tlclNjcm9sbCB7XG4gICAgaGVpZ2h0OiAyMDBweDtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXhzKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSk7XG59XG5cbi5waWNrZXJTY3JvbGw6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICB3aWR0aDogNnB4O1xufVxuXG4ucGlja2VyU2Nyb2xsOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSk7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xufVxuXG4ucGlja2VyU2Nyb2xsOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG59XG5cbi5waWNrZXJTY3JvbGw6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ib3JkZXItaG92ZXIpO1xufVxuXG4ucGlja2VySXRlbSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1zbSk7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xufVxuXG4ucGlja2VySXRlbTpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSk7XG59XG5cbi5waWNrZXJJdGVtLnNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbn1cblxuLnBpY2tlckRpdmlkZXIge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLTJ4bCk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG4gICAgcGFkZGluZzogMCB2YXIoLS1zcGFjaW5nLXNtKTtcbn1cblxuLm1vZGFsQWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IHZhcigtLXNwYWNpbmctbWQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctbGcpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXIpO1xufVxuXG4uY2FuY2VsQnV0dG9uLFxuLmNvbmZpcm1CdXR0b24ge1xuICAgIGZsZXg6IDE7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1zbSkgdmFyKC0tc3BhY2luZy1sZyk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbiAgICBib3JkZXI6IG5vbmU7XG59XG5cbi5jYW5jZWxCdXR0b24ge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG59XG5cbi5jYW5jZWxCdXR0b246aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtdGVydGlhcnkpO1xufVxuXG4uY29uZmlybUJ1dHRvbiB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgY29sb3I6IHdoaXRlO1xufVxuXG4uY29uZmlybUJ1dHRvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeS1ob3Zlcik7XG59XG5cbi8qIERhcmsgbW9kZSBhZGp1c3RtZW50cyAqL1xuW2RhdGEtdGhlbWU9XCJkYXJrXCJdIC5tb2RhbENvbnRlbnQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KTtcbn1cblxuLyogTW9iaWxlIG9wdGltaXphdGlvbnMgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgIC5tb2RhbENvbnRlbnQge1xuICAgICAgICB3aWR0aDogOTUlO1xuICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgfVxuICAgIFxuICAgIC5waWNrZXJTY3JvbGwge1xuICAgICAgICBoZWlnaHQ6IDE1MHB4O1xuICAgIH1cbn0iXX0= */";
|
|
1086
|
+
var styles$8 = {"modalOverlay":"TimePickerModal-module_modalOverlay__Cbq5-","modalContent":"TimePickerModal-module_modalContent__e6py2","modalHeader":"TimePickerModal-module_modalHeader__XhTgK","closeButton":"TimePickerModal-module_closeButton__qsRAG","timeDisplay":"TimePickerModal-module_timeDisplay__voGP4","pickerContainer":"TimePickerModal-module_pickerContainer__4qn3r","pickerColumn":"TimePickerModal-module_pickerColumn__0-kWf","pickerLabel":"TimePickerModal-module_pickerLabel__e7zQ2","pickerScroll":"TimePickerModal-module_pickerScroll__5Dcvw","pickerItem":"TimePickerModal-module_pickerItem__n8sC2","selected":"TimePickerModal-module_selected__oQA8Z","pickerDivider":"TimePickerModal-module_pickerDivider__eg83F","modalActions":"TimePickerModal-module_modalActions__eJRWU","cancelButton":"TimePickerModal-module_cancelButton__zri81","confirmButton":"TimePickerModal-module_confirmButton__q2p3Q"};
|
|
1087
|
+
styleInject(css_248z$a);
|
|
1088
|
+
|
|
1089
|
+
function TimePickerModal({ isOpen, onClose, value, onChange }) {
|
|
1090
|
+
const [hours, minutes] = value ? value.split(':').map(Number) : [12, 0];
|
|
1091
|
+
const [selectedHour, setSelectedHour] = React.useState(hours);
|
|
1092
|
+
const [selectedMinute, setSelectedMinute] = React.useState(minutes);
|
|
1093
|
+
React.useEffect(() => {
|
|
1094
|
+
if (value) {
|
|
1095
|
+
const [h, m] = value.split(':').map(Number);
|
|
1096
|
+
setSelectedHour(h);
|
|
1097
|
+
setSelectedMinute(m);
|
|
1098
|
+
}
|
|
1099
|
+
}, [value]);
|
|
1100
|
+
const handleConfirm = () => {
|
|
1101
|
+
const formattedHour = selectedHour.toString().padStart(2, '0');
|
|
1102
|
+
const formattedMinute = selectedMinute.toString().padStart(2, '0');
|
|
1103
|
+
onChange(`${formattedHour}:${formattedMinute}`);
|
|
1104
|
+
onClose();
|
|
1105
|
+
};
|
|
1106
|
+
if (!isOpen)
|
|
1107
|
+
return null;
|
|
1108
|
+
return (jsxRuntime.jsx("div", { className: styles$8.modalOverlay, onClick: onClose, children: jsxRuntime.jsxs("div", { className: styles$8.modalContent, onClick: (e) => e.stopPropagation(), children: [jsxRuntime.jsxs("div", { className: styles$8.modalHeader, children: [jsxRuntime.jsx("h3", { children: "Select Time" }), jsxRuntime.jsx("button", { className: styles$8.closeButton, onClick: onClose, "aria-label": "Close", children: jsxRuntime.jsx(FiX, {}) })] }), jsxRuntime.jsxs("div", { className: styles$8.timeDisplay, children: [selectedHour.toString().padStart(2, '0'), ":", selectedMinute.toString().padStart(2, '0')] }), jsxRuntime.jsxs("div", { className: styles$8.pickerContainer, children: [jsxRuntime.jsxs("div", { className: styles$8.pickerColumn, children: [jsxRuntime.jsx("div", { className: styles$8.pickerLabel, children: "Hours" }), jsxRuntime.jsx("div", { className: styles$8.pickerScroll, children: Array.from({ length: 24 }, (_, i) => (jsxRuntime.jsx("button", { className: `${styles$8.pickerItem} ${selectedHour === i ? styles$8.selected : ''}`, onClick: () => setSelectedHour(i), children: i.toString().padStart(2, '0') }, i))) })] }), jsxRuntime.jsx("div", { className: styles$8.pickerDivider, children: ":" }), jsxRuntime.jsxs("div", { className: styles$8.pickerColumn, children: [jsxRuntime.jsx("div", { className: styles$8.pickerLabel, children: "Minutes" }), jsxRuntime.jsx("div", { className: styles$8.pickerScroll, children: Array.from({ length: 60 }, (_, i) => (jsxRuntime.jsx("button", { className: `${styles$8.pickerItem} ${selectedMinute === i ? styles$8.selected : ''}`, onClick: () => setSelectedMinute(i), children: i.toString().padStart(2, '0') }, i))) })] })] }), jsxRuntime.jsxs("div", { className: styles$8.modalActions, children: [jsxRuntime.jsx("button", { className: styles$8.cancelButton, onClick: onClose, children: "Cancel" }), jsxRuntime.jsx("button", { className: styles$8.confirmButton, onClick: handleConfirm, children: "Confirm" })] })] }) }));
|
|
1109
|
+
}
|
|
1110
|
+
|
|
1111
|
+
var css_248z$9 = ".TimeInput-module_timeInput__h1DpT{margin-bottom:var(--spacing-lg)}.TimeInput-module_label__d4rZw{color:var(--color-text);display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-wide);margin-bottom:var(--spacing-sm)}.TimeInput-module_required__rc1vq{color:var(--color-error);margin-left:4px}.TimeInput-module_inputWrapper__4RPAn{align-items:stretch;background:var(--color-background);border:2px solid var(--color-border);border-radius:var(--radius-lg);display:flex;min-height:44px;overflow:hidden;position:relative;transition:all var(--transition-base)}.TimeInput-module_inputWrapper__4RPAn:hover{border-color:var(--color-border-hover);box-shadow:var(--shadow-sm)}.TimeInput-module_inputWrapper__4RPAn:focus-within{border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(124,58,237,.1)}.TimeInput-module_textInput__M3eBZ{background:transparent;border:none;color:var(--color-text);flex:1;font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,monospace;font-size:var(--font-size-lg);min-height:44px;outline:none;padding:var(--spacing-sm) var(--spacing-md)}.TimeInput-module_textInput__M3eBZ::placeholder{color:var(--color-text-secondary);opacity:.6}.TimeInput-module_clockButton__3qoub{align-items:center;background:var(--color-primary);border:none;color:#fff;cursor:pointer;display:flex;flex-shrink:0;height:auto;justify-content:center;min-width:44px;padding:0;transition:background var(--transition-base);width:44px}.TimeInput-module_clockButton__3qoub:hover:not(:disabled){background:var(--color-primary-hover)}.TimeInput-module_clockButton__3qoub:active:not(:disabled){transform:scale(.95)}.TimeInput-module_clockButton__3qoub:disabled{cursor:not-allowed;opacity:.5}.TimeInput-module_error__gJnpk .TimeInput-module_inputWrapper__4RPAn{border-color:var(--color-error)}.TimeInput-module_error__gJnpk .TimeInput-module_label__d4rZw{color:var(--color-error)}.TimeInput-module_success__np-lF .TimeInput-module_inputWrapper__4RPAn{border-color:var(--color-success)}.TimeInput-module_loading__Wb1DC .TimeInput-module_inputWrapper__4RPAn{overflow:hidden;position:relative}.TimeInput-module_loading__Wb1DC .TimeInput-module_inputWrapper__4RPAn:after{animation:TimeInput-module_shimmer__qQ2yd 2s infinite;background:linear-gradient(90deg,transparent,rgba(124,58,237,.1),transparent);content:\"\";height:100%;left:-100%;pointer-events:none;position:absolute;top:0;width:100%}@keyframes TimeInput-module_shimmer__qQ2yd{to{left:100%}}.TimeInput-module_disabled__wxiZ- .TimeInput-module_inputWrapper__4RPAn{background:var(--color-background-tertiary);cursor:not-allowed}.TimeInput-module_disabled__wxiZ- .TimeInput-module_textInput__M3eBZ{color:var(--color-text-tertiary);cursor:not-allowed}[data-theme=dark] .TimeInput-module_inputWrapper__4RPAn{background:var(--color-background-secondary);border-color:var(--color-border)}[data-theme=dark] .TimeInput-module_inputWrapper__4RPAn:focus-within{border-color:var(--color-primary-light);box-shadow:0 0 0 3px rgba(167,139,250,.1)}@media (max-width:768px){.TimeInput-module_textInput__M3eBZ{font-size:var(--font-size-xl)}.TimeInput-module_clockButton__3qoub{height:48px;min-width:48px}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRpbWVJbnB1dC5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1DQUNJLCtCQUNKLENBRUEsK0JBSUksdUJBQXdCLENBSHhCLGFBQWMsQ0FDZCw2QkFBOEIsQ0FDOUIsdUNBQXdDLENBR3hDLHlDQUEwQyxDQUQxQywrQkFFSixDQUVBLGtDQUNJLHdCQUF5QixDQUN6QixlQUNKLENBRUEsc0NBR0ksbUJBQW9CLENBQ3BCLGtDQUFtQyxDQUNuQyxvQ0FBcUMsQ0FDckMsOEJBQStCLENBSi9CLFlBQWEsQ0FPYixlQUFnQixDQUZoQixlQUFnQixDQU5oQixpQkFBa0IsQ0FPbEIscUNBRUosQ0FFQSw0Q0FDSSxzQ0FBdUMsQ0FDdkMsMkJBQ0osQ0FFQSxtREFDSSxpQ0FBa0MsQ0FDbEMsd0NBQ0osQ0FFQSxtQ0FJSSxzQkFBdUIsQ0FEdkIsV0FBWSxDQUlaLHVCQUF3QixDQU54QixNQUFPLENBS1AsdUVBQW1GLENBRG5GLDZCQUE4QixDQUk5QixlQUFnQixDQURoQixZQUFhLENBTmIsMkNBUUosQ0FFQSxnREFDSSxpQ0FBa0MsQ0FDbEMsVUFDSixDQUVBLHFDQUVJLGtCQUFtQixDQUVuQiwrQkFBZ0MsQ0FDaEMsV0FBWSxDQUNaLFVBQVksQ0FDWixjQUFlLENBTmYsWUFBYSxDQVdiLGFBQWMsQ0FEZCxXQUFZLENBUlosc0JBQXVCLENBTXZCLGNBQWUsQ0FEZixTQUFVLENBS1YsNENBQTZDLENBSDdDLFVBSUosQ0FFQSwwREFDSSxxQ0FDSixDQUVBLDJEQUNJLG9CQUNKLENBRUEsOENBRUksa0JBQW1CLENBRG5CLFVBRUosQ0FHQSxxRUFDSSwrQkFDSixDQUVBLDhEQUNJLHdCQUNKLENBR0EsdUVBQ0ksaUNBQ0osQ0FHQSx1RUFFSSxlQUFnQixDQURoQixpQkFFSixDQUVBLDZFQWFJLHFEQUE4QixDQU45Qiw2RUFLQyxDQVhELFVBQVcsQ0FLWCxXQUFZLENBRlosVUFBVyxDQVVYLG1CQUFvQixDQVpwQixpQkFBa0IsQ0FDbEIsS0FBTSxDQUVOLFVBVUosQ0FFQSwyQ0FDSSxHQUNJLFNBQ0osQ0FDSixDQUdBLHdFQUNJLDJDQUE0QyxDQUM1QyxrQkFDSixDQUVBLHFFQUNJLGdDQUFpQyxDQUNqQyxrQkFDSixDQUdBLHdEQUNJLDRDQUE2QyxDQUM3QyxnQ0FDSixDQUVBLHFFQUNJLHVDQUF3QyxDQUN4Qyx5Q0FDSixDQUdBLHlCQUNJLG1DQUNJLDZCQUNKLENBRUEscUNBRUksV0FBWSxDQURaLGNBRUosQ0FDSiIsImZpbGUiOiJUaW1lSW5wdXQubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi50aW1lSW5wdXQge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctbGcpO1xufVxuXG4ubGFiZWwge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLXNtKTtcbiAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tbGV0dGVyLXNwYWNpbmctd2lkZSk7XG59XG5cbi5yZXF1aXJlZCB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWVycm9yKTtcbiAgICBtYXJnaW4tbGVmdDogNHB4O1xufVxuXG4uaW5wdXRXcmFwcGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbiAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbiAgICBtaW4taGVpZ2h0OiA0NHB4O1xufVxuXG4uaW5wdXRXcmFwcGVyOmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJvcmRlci1ob3Zlcik7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LXNtKTtcbn1cblxuLmlucHV0V3JhcHBlcjpmb2N1cy13aXRoaW4ge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMTI0LCA1OCwgMjM3LCAwLjEpO1xufVxuXG4udGV4dElucHV0IHtcbiAgICBmbGV4OiAxO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctc20pIHZhcigtLXNwYWNpbmctbWQpO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1sZyk7XG4gICAgZm9udC1mYW1pbHk6ICdTRiBNb25vJywgTW9uYWNvLCAnQ2FzY2FkaWEgQ29kZScsICdSb2JvdG8gTW9ubycsIENvbnNvbGFzLCBtb25vc3BhY2U7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgbWluLWhlaWdodDogNDRweDtcbn1cblxuLnRleHRJbnB1dDo6cGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG4gICAgb3BhY2l0eTogMC42O1xufVxuXG4uY2xvY2tCdXR0b24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1pbi13aWR0aDogNDRweDtcbiAgICB3aWR0aDogNDRweDtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4uY2xvY2tCdXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXByaW1hcnktaG92ZXIpO1xufVxuXG4uY2xvY2tCdXR0b246YWN0aXZlOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTUpO1xufVxuXG4uY2xvY2tCdXR0b246ZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4vKiBFcnJvciBzdGF0ZSAqL1xuLmVycm9yIC5pbnB1dFdyYXBwZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItZXJyb3IpO1xufVxuXG4uZXJyb3IgLmxhYmVsIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZXJyb3IpO1xufVxuXG4vKiBTdWNjZXNzIHN0YXRlICovXG4uc3VjY2VzcyAuaW5wdXRXcmFwcGVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLXN1Y2Nlc3MpO1xufVxuXG4vKiBMb2FkaW5nIHN0YXRlICovXG4ubG9hZGluZyAuaW5wdXRXcmFwcGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmxvYWRpbmcgLmlucHV0V3JhcHBlcjo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogLTEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcbiAgICAgICAgOTBkZWcsXG4gICAgICAgIHRyYW5zcGFyZW50LFxuICAgICAgICByZ2JhKDEyNCwgNTgsIDIzNywgMC4xKSxcbiAgICAgICAgdHJhbnNwYXJlbnRcbiAgICApO1xuICAgIGFuaW1hdGlvbjogc2hpbW1lciAycyBpbmZpbml0ZTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuQGtleWZyYW1lcyBzaGltbWVyIHtcbiAgICAxMDAlIHtcbiAgICAgICAgbGVmdDogMTAwJTtcbiAgICB9XG59XG5cbi8qIERpc2FibGVkIHN0YXRlICovXG4uZGlzYWJsZWQgLmlucHV0V3JhcHBlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSk7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLmRpc2FibGVkIC50ZXh0SW5wdXQge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXRlcnRpYXJ5KTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4vKiBEYXJrIG1vZGUgKi9cbltkYXRhLXRoZW1lPVwiZGFya1wiXSAuaW5wdXRXcmFwcGVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1ib3JkZXIpO1xufVxuXG5bZGF0YS10aGVtZT1cImRhcmtcIl0gLmlucHV0V3JhcHBlcjpmb2N1cy13aXRoaW4ge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1saWdodCk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMTY3LCAxMzksIDI1MCwgMC4xKTtcbn1cblxuLyogTW9iaWxlICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAudGV4dElucHV0IHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteGwpO1xuICAgIH1cbiAgICBcbiAgICAuY2xvY2tCdXR0b24ge1xuICAgICAgICBtaW4td2lkdGg6IDQ4cHg7XG4gICAgICAgIGhlaWdodDogNDhweDtcbiAgICB9XG59Il19 */";
|
|
1112
|
+
var styles$7 = {"timeInput":"TimeInput-module_timeInput__h1DpT","label":"TimeInput-module_label__d4rZw","required":"TimeInput-module_required__rc1vq","inputWrapper":"TimeInput-module_inputWrapper__4RPAn","textInput":"TimeInput-module_textInput__M3eBZ","clockButton":"TimeInput-module_clockButton__3qoub","error":"TimeInput-module_error__gJnpk","success":"TimeInput-module_success__np-lF","loading":"TimeInput-module_loading__Wb1DC","disabled":"TimeInput-module_disabled__wxiZ-"};
|
|
1113
|
+
styleInject(css_248z$9);
|
|
1114
|
+
|
|
1115
|
+
function TimeInput({ label, value, onChange, placeholder = "14:30", onFocus, onBlur, error = false, success = false, loading = false, disabled = false, required = false }) {
|
|
1116
|
+
const [showPicker, setShowPicker] = React.useState(false);
|
|
1117
|
+
const formatTime24 = (time) => {
|
|
1118
|
+
if (!time)
|
|
1119
|
+
return '';
|
|
1120
|
+
let cleanTime = time.replace(/[^\d:]/g, '');
|
|
1121
|
+
const colonCount = (cleanTime.match(/:/g) || []).length;
|
|
1122
|
+
if (colonCount > 1) {
|
|
1123
|
+
cleanTime = cleanTime.replace(/:/g, '');
|
|
1124
|
+
if (cleanTime.length >= 3) {
|
|
1125
|
+
cleanTime = cleanTime.substring(0, 2) + ':' + cleanTime.substring(2);
|
|
1126
|
+
}
|
|
1127
|
+
}
|
|
1128
|
+
if (cleanTime.length === 3 && !cleanTime.includes(':')) {
|
|
1129
|
+
cleanTime = cleanTime.substring(0, 2) + ':' + cleanTime.substring(2);
|
|
1130
|
+
}
|
|
1131
|
+
else if (cleanTime.length === 4 && !cleanTime.includes(':')) {
|
|
1132
|
+
cleanTime = cleanTime.substring(0, 2) + ':' + cleanTime.substring(2);
|
|
1133
|
+
}
|
|
1134
|
+
if (cleanTime.includes(':')) {
|
|
1135
|
+
const parts = cleanTime.split(':');
|
|
1136
|
+
let hours = parts[0];
|
|
1137
|
+
let minutes = parts[1] || '';
|
|
1138
|
+
hours = hours.substring(0, 2);
|
|
1139
|
+
if (hours.length === 2) {
|
|
1140
|
+
const hourNum = parseInt(hours);
|
|
1141
|
+
if (hourNum > 23) {
|
|
1142
|
+
hours = '23';
|
|
1143
|
+
}
|
|
1144
|
+
}
|
|
1145
|
+
minutes = minutes.substring(0, 2);
|
|
1146
|
+
if (minutes.length === 2) {
|
|
1147
|
+
const minNum = parseInt(minutes);
|
|
1148
|
+
if (minNum > 59) {
|
|
1149
|
+
minutes = '59';
|
|
1150
|
+
}
|
|
1151
|
+
}
|
|
1152
|
+
cleanTime = hours + (minutes.length > 0 ? ':' + minutes : ':');
|
|
1153
|
+
}
|
|
1154
|
+
return cleanTime.substring(0, 5);
|
|
1155
|
+
};
|
|
1156
|
+
const handleTextChange = (inputValue) => {
|
|
1157
|
+
const formattedTime = formatTime24(inputValue);
|
|
1158
|
+
onChange(formattedTime);
|
|
1159
|
+
};
|
|
1160
|
+
const handleClockClick = () => {
|
|
1161
|
+
if (!disabled && !loading) {
|
|
1162
|
+
setShowPicker(true);
|
|
1163
|
+
}
|
|
1164
|
+
};
|
|
1165
|
+
const getContainerClassName = () => {
|
|
1166
|
+
const classes = [styles$7.timeInput];
|
|
1167
|
+
if (error)
|
|
1168
|
+
classes.push(styles$7.error);
|
|
1169
|
+
if (success)
|
|
1170
|
+
classes.push(styles$7.success);
|
|
1171
|
+
if (loading)
|
|
1172
|
+
classes.push(styles$7.loading);
|
|
1173
|
+
if (disabled)
|
|
1174
|
+
classes.push(styles$7.disabled);
|
|
1175
|
+
return classes.join(' ');
|
|
1176
|
+
};
|
|
1177
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("div", { className: getContainerClassName(), children: [jsxRuntime.jsxs("label", { className: styles$7.label, children: [label, required && jsxRuntime.jsx("span", { className: styles$7.required, children: "*" })] }), jsxRuntime.jsxs("div", { className: styles$7.inputWrapper, children: [jsxRuntime.jsx("input", { type: "text", value: value, onChange: (e) => handleTextChange(e.target.value), onFocus: onFocus, onBlur: onBlur, placeholder: placeholder, className: styles$7.textInput, maxLength: 5, disabled: disabled || loading, "aria-invalid": error, "aria-required": required, inputMode: "numeric", pattern: "[0-9:]*" }), jsxRuntime.jsx("button", { type: "button", onClick: handleClockClick, className: styles$7.clockButton, title: "Open time picker", disabled: disabled || loading, "aria-label": "Open time picker", children: jsxRuntime.jsx(FiClock, { size: 20 }) })] })] }), jsxRuntime.jsx(TimePickerModal, { isOpen: showPicker, onClose: () => setShowPicker(false), value: value, onChange: onChange })] }));
|
|
1178
|
+
}
|
|
1179
|
+
|
|
1180
|
+
const ThemeContext = React.createContext(undefined);
|
|
1181
|
+
const useTheme = () => {
|
|
1182
|
+
const context = React.useContext(ThemeContext);
|
|
1183
|
+
if (!context) {
|
|
1184
|
+
throw new Error('useTheme must be used within a ThemeProvider');
|
|
1185
|
+
}
|
|
1186
|
+
return context;
|
|
1187
|
+
};
|
|
1188
|
+
|
|
1189
|
+
var css_248z$8 = ".ThemeSwitcher-module_button__VfRjU{align-items:center;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);cursor:pointer;display:flex;font-size:var(--font-size-base);gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);transition:all var(--transition-base)}.ThemeSwitcher-module_button__VfRjU:hover{background:var(--color-surface-hover);border-color:var(--color-border-hover)}.ThemeSwitcher-module_iconWrapper__FpHo8{align-items:center;display:flex;height:20px;justify-content:center;width:20px}.ThemeSwitcher-module_label__2Hfkp{font-weight:var(--font-weight-medium)}.ThemeSwitcher-module_toggle__ATXx4{align-items:center;background:none;border:none;cursor:pointer;display:flex;gap:var(--spacing-sm);padding:0}.ThemeSwitcher-module_toggleTrack__x28Rv{align-items:center;border-radius:var(--radius-full);display:flex;height:24px;padding:2px;transition:background-color var(--transition-base);width:48px}.ThemeSwitcher-module_toggleThumb__V8QeN{align-items:center;background:var(--color-surface);border-radius:var(--radius-full);box-shadow:var(--shadow-sm);display:flex;height:20px;justify-content:center;width:20px}.ThemeSwitcher-module_dropdown__3qLdt{position:relative}.ThemeSwitcher-module_dropdownTrigger__UzYV5{align-items:center;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);cursor:pointer;display:flex;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);transition:all var(--transition-base)}.ThemeSwitcher-module_dropdownTrigger__UzYV5:hover{background:var(--color-surface-hover);border-color:var(--color-border-hover)}.ThemeSwitcher-module_dropdown__3qLdt:focus-within .ThemeSwitcher-module_dropdownMenu__3L5hT,.ThemeSwitcher-module_dropdown__3qLdt:hover .ThemeSwitcher-module_dropdownMenu__3L5hT{display:block}.ThemeSwitcher-module_dropdownMenu__3L5hT{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);display:none;margin-top:var(--spacing-xs);min-width:200px;position:absolute;right:0;top:100%;z-index:var(--z-index-dropdown)}.ThemeSwitcher-module_dropdownItem__inw-K{align-items:center;background:none;border:none;color:var(--color-text);cursor:pointer;display:flex;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);text-align:left;transition:all var(--transition-fast);width:100%}.ThemeSwitcher-module_dropdownItem__inw-K:hover{background:var(--color-background-secondary)}.ThemeSwitcher-module_dropdownItem__inw-K.ThemeSwitcher-module_active__OHP19{background:var(--color-primary);color:var(--color-text-inverse)}.ThemeSwitcher-module_dropdownItem__inw-K:first-child{border-radius:var(--radius-md) var(--radius-md) 0 0}.ThemeSwitcher-module_dropdownItem__inw-K:last-child{border-radius:0 0 var(--radius-md) var(--radius-md)}.ThemeSwitcher-module_icon__iRZiJ{align-items:center;display:flex;justify-content:center;width:20px}.ThemeSwitcher-module_text__OCOoA{flex:1}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRoZW1lU3dpdGNoZXIubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQ0FFSSxrQkFBbUIsQ0FHbkIsK0JBQWdDLENBQ2hDLG9DQUFxQyxDQUNyQyw4QkFBK0IsQ0FDL0IsdUJBQXdCLENBQ3hCLGNBQWUsQ0FSZixZQUFhLENBVWIsK0JBQWdDLENBUmhDLHFCQUFzQixDQUN0QiwyQ0FBNEMsQ0FNNUMscUNBRUosQ0FFQSwwQ0FDSSxxQ0FBc0MsQ0FDdEMsc0NBQ0osQ0FFQSx5Q0FFSSxrQkFBbUIsQ0FEbkIsWUFBYSxDQUliLFdBQVksQ0FGWixzQkFBdUIsQ0FDdkIsVUFFSixDQUVBLG1DQUNJLHFDQUNKLENBR0Esb0NBRUksa0JBQW1CLENBRW5CLGVBQWdCLENBQ2hCLFdBQVksQ0FDWixjQUFlLENBTGYsWUFBYSxDQUViLHFCQUFzQixDQUl0QixTQUNKLENBRUEseUNBTUksa0JBQW1CLENBSG5CLGdDQUFpQyxDQUVqQyxZQUFhLENBSGIsV0FBWSxDQUVaLFdBQVksQ0FHWixrREFBbUQsQ0FObkQsVUFPSixDQUVBLHlDQU1JLGtCQUFtQixDQUhuQiwrQkFBZ0MsQ0FDaEMsZ0NBQWlDLENBSWpDLDJCQUE0QixDQUg1QixZQUFhLENBSGIsV0FBWSxDQUtaLHNCQUF1QixDQU52QixVQVFKLENBR0Esc0NBQ0ksaUJBQ0osQ0FFQSw2Q0FFSSxrQkFBbUIsQ0FHbkIsK0JBQWdDLENBQ2hDLG9DQUFxQyxDQUNyQyw4QkFBK0IsQ0FDL0IsdUJBQXdCLENBQ3hCLGNBQWUsQ0FSZixZQUFhLENBRWIscUJBQXNCLENBQ3RCLDJDQUE0QyxDQU01QyxxQ0FDSixDQUVBLG1EQUNJLHFDQUFzQyxDQUN0QyxzQ0FDSixDQUVBLG1MQUVJLGFBQ0osQ0FFQSwwQ0FNSSwrQkFBZ0MsQ0FDaEMsb0NBQXFDLENBQ3JDLDhCQUErQixDQUMvQiwyQkFBNEIsQ0FSNUIsWUFBYSxDQUliLDRCQUE2QixDQUs3QixlQUFnQixDQVJoQixpQkFBa0IsQ0FFbEIsT0FBUSxDQURSLFFBQVMsQ0FRVCwrQkFDSixDQUVBLDBDQUVJLGtCQUFtQixDQUluQixlQUFnQixDQUNoQixXQUFZLENBQ1osdUJBQXdCLENBQ3hCLGNBQWUsQ0FSZixZQUFhLENBRWIscUJBQXNCLENBRXRCLDJDQUE0QyxDQU01QyxlQUFnQixDQURoQixxQ0FBc0MsQ0FOdEMsVUFRSixDQUVBLGdEQUNJLDRDQUNKLENBRUEsNkVBQ0ksK0JBQWdDLENBQ2hDLCtCQUNKLENBRUEsc0RBQ0ksbURBQ0osQ0FFQSxxREFDSSxtREFDSixDQUVBLGtDQUdJLGtCQUFtQixDQURuQixZQUFhLENBRWIsc0JBQXVCLENBSHZCLFVBSUosQ0FFQSxrQ0FDSSxNQUNKIiwiZmlsZSI6IlRoZW1lU3dpdGNoZXIubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5idXR0b24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXNwYWNpbmctc20pO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctc20pIHZhcigtLXNwYWNpbmctbWQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xufVxuXG4uYnV0dG9uOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdXJmYWNlLWhvdmVyKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJvcmRlci1ob3Zlcik7XG59XG5cbi5pY29uV3JhcHBlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMjBweDtcbn1cblxuLmxhYmVsIHtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcbn1cblxuLyogVG9nZ2xlIHZhcmlhbnQgKi9cbi50b2dnbGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXNwYWNpbmctc20pO1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwYWRkaW5nOiAwO1xufVxuXG4udG9nZ2xlVHJhY2sge1xuICAgIHdpZHRoOiA0OHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtZnVsbCk7XG4gICAgcGFkZGluZzogMnB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi50b2dnbGVUaHVtYiB7XG4gICAgd2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXN1cmZhY2UpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1mdWxsKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LXNtKTtcbn1cblxuLyogRHJvcGRvd24gdmFyaWFudCAqL1xuLmRyb3Bkb3duIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5kcm9wZG93blRyaWdnZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXNwYWNpbmctc20pO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctc20pIHZhcigtLXNwYWNpbmctbWQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4uZHJvcGRvd25UcmlnZ2VyOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdXJmYWNlLWhvdmVyKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWJvcmRlci1ob3Zlcik7XG59XG5cbi5kcm9wZG93bjpob3ZlciAuZHJvcGRvd25NZW51LFxuLmRyb3Bkb3duOmZvY3VzLXdpdGhpbiAuZHJvcGRvd25NZW51IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmRyb3Bkb3duTWVudSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAxMDAlO1xuICAgIHJpZ2h0OiAwO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmcteHMpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGcpO1xuICAgIG1pbi13aWR0aDogMjAwcHg7XG4gICAgei1pbmRleDogdmFyKC0tei1pbmRleC1kcm9wZG93bik7XG59XG5cbi5kcm9wZG93bkl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXNwYWNpbmctc20pO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctc20pIHZhcigtLXNwYWNpbmctbWQpO1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRyYW5zaXRpb24tZmFzdCk7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbn1cblxuLmRyb3Bkb3duSXRlbTpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpO1xufVxuXG4uZHJvcGRvd25JdGVtLmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtaW52ZXJzZSk7XG59XG5cbi5kcm9wZG93bkl0ZW06Zmlyc3QtY2hpbGQge1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCkgdmFyKC0tcmFkaXVzLW1kKSAwIDA7XG59XG5cbi5kcm9wZG93bkl0ZW06bGFzdC1jaGlsZCB7XG4gICAgYm9yZGVyLXJhZGl1czogMCAwIHZhcigtLXJhZGl1cy1tZCkgdmFyKC0tcmFkaXVzLW1kKTtcbn1cblxuLmljb24ge1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLnRleHQge1xuICAgIGZsZXg6IDE7XG59Il19 */";
|
|
1190
|
+
var styles$6 = {"button":"ThemeSwitcher-module_button__VfRjU","iconWrapper":"ThemeSwitcher-module_iconWrapper__FpHo8","label":"ThemeSwitcher-module_label__2Hfkp","toggle":"ThemeSwitcher-module_toggle__ATXx4","toggleTrack":"ThemeSwitcher-module_toggleTrack__x28Rv","toggleThumb":"ThemeSwitcher-module_toggleThumb__V8QeN","dropdown":"ThemeSwitcher-module_dropdown__3qLdt","dropdownTrigger":"ThemeSwitcher-module_dropdownTrigger__UzYV5","dropdownMenu":"ThemeSwitcher-module_dropdownMenu__3L5hT","dropdownItem":"ThemeSwitcher-module_dropdownItem__inw-K","active":"ThemeSwitcher-module_active__OHP19","icon":"ThemeSwitcher-module_icon__iRZiJ","text":"ThemeSwitcher-module_text__OCOoA"};
|
|
1191
|
+
styleInject(css_248z$8);
|
|
1192
|
+
|
|
1193
|
+
const ThemeSwitcher = ({ variant = 'button', showLabel = false, className = '', }) => {
|
|
1194
|
+
const { theme, setTheme } = useTheme();
|
|
1195
|
+
const themes = [
|
|
1196
|
+
{ value: 'light', label: 'Light', icon: jsxRuntime.jsx(FiSun, {}) },
|
|
1197
|
+
{ value: 'dark', label: 'Dark', icon: jsxRuntime.jsx(FiMoon, {}) },
|
|
1198
|
+
{ value: 'lossito', label: 'Lossito Light', icon: '✨' },
|
|
1199
|
+
{ value: 'lossito-dark', label: 'Lossito Dark', icon: '🌑' },
|
|
1200
|
+
{ value: 'dmood', label: 'Dmood Light', icon: '💙' },
|
|
1201
|
+
{ value: 'dmood-dark', label: 'Dmood Dark', icon: '🌌' },
|
|
1202
|
+
];
|
|
1203
|
+
const currentThemeIndex = themes.findIndex(t => t.value === theme);
|
|
1204
|
+
const currentTheme = themes[currentThemeIndex];
|
|
1205
|
+
if (variant === 'toggle') {
|
|
1206
|
+
// Simple toggle between light and dark
|
|
1207
|
+
const isDark = theme.includes('dark');
|
|
1208
|
+
return (jsxRuntime.jsxs(framerMotion.motion.button, { className: `${styles$6.toggle} ${className}`, onClick: () => setTheme(isDark ? 'light' : 'dark'), whileTap: { scale: 0.95 }, "aria-label": "Toggle theme", children: [jsxRuntime.jsx(framerMotion.motion.div, { className: styles$6.toggleTrack, animate: { backgroundColor: isDark ? 'var(--color-primary)' : 'var(--color-border)' }, children: jsxRuntime.jsx(framerMotion.motion.div, { className: styles$6.toggleThumb, animate: { x: isDark ? 24 : 0 }, transition: { type: 'spring', stiffness: 500, damping: 30 }, children: isDark ? jsxRuntime.jsx(FiMoon, { size: 14 }) : jsxRuntime.jsx(FiSun, { size: 14 }) }) }), showLabel && jsxRuntime.jsx("span", { className: styles$6.label, children: isDark ? 'Dark' : 'Light' })] }));
|
|
1209
|
+
}
|
|
1210
|
+
if (variant === 'dropdown') {
|
|
1211
|
+
return (jsxRuntime.jsxs("div", { className: `${styles$6.dropdown} ${className}`, children: [jsxRuntime.jsxs(framerMotion.motion.button, { className: styles$6.dropdownTrigger, whileTap: { scale: 0.98 }, children: [currentTheme.icon, showLabel && jsxRuntime.jsx("span", { className: styles$6.label, children: currentTheme.label })] }), jsxRuntime.jsx(framerMotion.motion.div, { className: styles$6.dropdownMenu, initial: { opacity: 0, y: -10 }, animate: { opacity: 1, y: 0 }, children: themes.map((t) => (jsxRuntime.jsxs(framerMotion.motion.button, { className: `${styles$6.dropdownItem} ${theme === t.value ? styles$6.active : ''}`, onClick: () => setTheme(t.value), whileHover: { x: 4 }, whileTap: { scale: 0.98 }, children: [jsxRuntime.jsx("span", { className: styles$6.icon, children: t.icon }), jsxRuntime.jsx("span", { className: styles$6.text, children: t.label })] }, t.value))) })] }));
|
|
1212
|
+
}
|
|
1213
|
+
// Default button variant - cycles through themes
|
|
1214
|
+
return (jsxRuntime.jsxs(framerMotion.motion.button, { className: `${styles$6.button} ${className}`, onClick: () => {
|
|
1215
|
+
const nextIndex = (currentThemeIndex + 1) % themes.length;
|
|
1216
|
+
setTheme(themes[nextIndex].value);
|
|
1217
|
+
}, whileTap: { scale: 0.95 }, whileHover: { scale: 1.05 }, "aria-label": `Current theme: ${currentTheme.label}. Click to change.`, children: [jsxRuntime.jsx(framerMotion.motion.div, { initial: { rotate: -180, opacity: 0 }, animate: { rotate: 0, opacity: 1 }, exit: { rotate: 180, opacity: 0 }, transition: { duration: 0.3 }, className: styles$6.iconWrapper, children: currentTheme.icon }, theme), showLabel && jsxRuntime.jsx("span", { className: styles$6.label, children: currentTheme.label })] }));
|
|
1218
|
+
};
|
|
1219
|
+
|
|
1220
|
+
var css_248z$7 = ".Navbar-module_navbar__-SNiN{background:var(--color-surface);display:flex;flex-direction:column;padding:var(--spacing-md);position:fixed;transition:transform var(--transition-base);z-index:var(--z-index-sticky)}.Navbar-module_navbarSidebar__RVVL8{bottom:0;box-shadow:var(--shadow-lg);left:0;overflow-y:auto;top:0;width:280px}.Navbar-module_navbarTop__MLI-S{align-items:center;box-shadow:var(--shadow-md);flex-direction:row;height:auto;left:0;padding:var(--spacing-sm) var(--spacing-lg);right:0;top:0}.Navbar-module_navbarTop__MLI-S .Navbar-module_navList__764oY{flex-direction:row;gap:var(--spacing-md);margin:0}.Navbar-module_navbarTop__MLI-S .Navbar-module_navItem__cbeLP{margin:0}.Navbar-module_navbarMinimal__7gs0n{background:transparent;box-shadow:none;padding:0;position:relative}.Navbar-module_navbarMinimal__7gs0n .Navbar-module_navList__764oY{flex-direction:row;gap:var(--spacing-sm)}.Navbar-module_navLogo__y0AxI{margin-bottom:var(--spacing-xl)}.Navbar-module_navbarTop__MLI-S .Navbar-module_navLogo__y0AxI{margin-bottom:0;margin-right:auto}.Navbar-module_logoContainer__zJG3x{align-items:center;display:flex;gap:var(--spacing-md)}.Navbar-module_logoImage__1Ptmz{border-radius:var(--radius-md);height:48px;object-fit:contain;width:48px}.Navbar-module_logoPlaceholder__aIREi{align-items:center;background:var(--color-primary);border-radius:var(--radius-md);color:var(--color-text-inverse);display:flex;font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);height:48px;justify-content:center;width:48px}.Navbar-module_logoContent__CjPyL{display:flex;flex-direction:column}.Navbar-module_logoText__bTwI0{color:var(--color-text);font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);line-height:var(--line-height-tight)}.Navbar-module_logoSubtitle__UA95I{color:var(--color-text-secondary);font-size:var(--font-size-xs);line-height:var(--line-height-tight)}.Navbar-module_navList__764oY{display:flex;flex:1;flex-direction:column;list-style:none;margin:0;padding:0}.Navbar-module_navItem__cbeLP{margin-bottom:var(--spacing-xs)}.Navbar-module_subNavItem__WN9is{margin-left:var(--spacing-lg)}.Navbar-module_navLink__I-45k{align-items:center;background:none;border:none;border-radius:var(--radius-md);color:var(--color-text);cursor:pointer;display:flex;font-size:var(--font-size-base);font-weight:var(--font-weight-medium);padding:var(--spacing-sm) var(--spacing-md);position:relative;text-align:left;text-decoration:none;transition:all var(--transition-fast);width:100%}.Navbar-module_navLink__I-45k:hover{background:var(--color-background-secondary)}.Navbar-module_navLink__I-45k.Navbar-module_active__tLLqx{color:var(--color-text-inverse)}.Navbar-module_activeBackground__ikyOn{background:var(--color-primary);border-radius:var(--radius-md);bottom:0;left:0;position:absolute;right:0;top:0;z-index:0}.Navbar-module_navIcon__uU4yD{font-size:1.25rem;margin-right:var(--spacing-sm);position:relative;transition:color var(--transition-fast);z-index:1}.Navbar-module_activeIcon__omRDk{color:var(--color-text-inverse)}.Navbar-module_navText__4e0cK{flex:1;position:relative;transition:color var(--transition-fast);z-index:1}.Navbar-module_activeText__zSzJC{color:var(--color-text-inverse)}.Navbar-module_navBadge__mLur9{background:var(--color-accent);border-radius:var(--radius-full);color:var(--color-text-inverse);font-weight:var(--font-weight-semibold);padding:2px 6px}.Navbar-module_chevron__nmRNk,.Navbar-module_navBadge__mLur9{font-size:var(--font-size-xs);margin-left:auto;position:relative;z-index:1}.Navbar-module_chevron__nmRNk{color:var(--color-text-secondary)}.Navbar-module_subNavList__YsOQP{list-style:none;margin:var(--spacing-xs) 0 0 0;overflow:hidden;padding:0}.Navbar-module_subNavList__YsOQP .Navbar-module_navLink__I-45k{font-size:var(--font-size-sm);padding:var(--spacing-xs) var(--spacing-sm)}.Navbar-module_navFooter__p1wMO{border-top:1px solid var(--color-border);margin-top:auto;padding-top:var(--spacing-md)}.Navbar-module_mobileMenuButton__BrALw{align-items:center;background:var(--color-primary);border:none;border-radius:var(--radius-md);box-shadow:var(--shadow-lg);color:var(--color-text-inverse);cursor:pointer;display:none;height:48px;justify-content:center;left:var(--spacing-md);position:fixed;top:var(--spacing-md);width:48px;z-index:calc(var(--z-index-sticky) + 1)}.Navbar-module_mobileMenuButton__BrALw:hover{background:var(--color-primary-hover)}.Navbar-module_mobileMenuButton__BrALw svg{font-size:1.5rem}.Navbar-module_mobileBackdrop__bgxCV{background:rgba(0,0,0,.5);bottom:0;left:0;position:fixed;right:0;top:0;z-index:calc(var(--z-index-sticky) - 1)}@media (max-width:768px){.Navbar-module_mobileMenuButton__BrALw{display:flex}.Navbar-module_navbarSidebar__RVVL8{transform:translateX(-100%)}.Navbar-module_navbarSidebar__RVVL8.Navbar-module_mobileMenuOpen__oICVa{transform:translateX(0)}.Navbar-module_navbarTop__MLI-S{padding:var(--spacing-sm) var(--spacing-md)}.Navbar-module_navbarTop__MLI-S .Navbar-module_navList__764oY{background:var(--color-surface);box-shadow:var(--shadow-lg);flex-direction:column;left:0;padding:var(--spacing-md);position:fixed;right:0;top:60px;transform:translateY(-100%);transition:transform var(--transition-base)}.Navbar-module_navbarTop__MLI-S.Navbar-module_mobileMenuOpen__oICVa .Navbar-module_navList__764oY{transform:translateY(0)}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk5hdmJhci5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZCQUVJLCtCQUFnQyxDQUdoQyxZQUFhLENBQ2IscUJBQXNCLENBSHRCLHlCQUEwQixDQUYxQixjQUFlLENBTWYsMkNBQTRDLENBSDVDLDZCQUlKLENBR0Esb0NBR0ksUUFBUyxDQUVULDJCQUE0QixDQUg1QixNQUFPLENBSVAsZUFBZ0IsQ0FMaEIsS0FBTSxDQUdOLFdBR0osQ0FHQSxnQ0FNSSxrQkFBbUIsQ0FFbkIsMkJBQTRCLENBSDVCLGtCQUFtQixDQURuQixXQUFZLENBRlosTUFBTyxDQUtQLDJDQUE0QyxDQUo1QyxPQUFRLENBRlIsS0FRSixDQUVBLDhEQUNJLGtCQUFtQixDQUNuQixxQkFBc0IsQ0FDdEIsUUFDSixDQUVBLDhEQUNJLFFBQ0osQ0FHQSxvQ0FDSSxzQkFBdUIsQ0FDdkIsZUFBZ0IsQ0FFaEIsU0FBVSxDQURWLGlCQUVKLENBRUEsa0VBQ0ksa0JBQW1CLENBQ25CLHFCQUNKLENBR0EsOEJBQ0ksK0JBQ0osQ0FFQSw4REFDSSxlQUFnQixDQUNoQixpQkFDSixDQUVBLG9DQUVJLGtCQUFtQixDQURuQixZQUFhLENBRWIscUJBQ0osQ0FFQSxnQ0FJSSw4QkFBK0IsQ0FGL0IsV0FBWSxDQUNaLGtCQUFtQixDQUZuQixVQUlKLENBRUEsc0NBT0ksa0JBQW1CLENBSm5CLCtCQUFnQyxDQUVoQyw4QkFBK0IsQ0FEL0IsK0JBQWdDLENBRWhDLFlBQWEsQ0FJYiw2QkFBOEIsQ0FEOUIsbUNBQW9DLENBUHBDLFdBQVksQ0FNWixzQkFBdUIsQ0FQdkIsVUFVSixDQUVBLGtDQUNJLFlBQWEsQ0FDYixxQkFDSixDQUVBLCtCQUdJLHVCQUF3QixDQUZ4Qiw2QkFBOEIsQ0FDOUIsbUNBQW9DLENBRXBDLG9DQUNKLENBRUEsbUNBRUksaUNBQWtDLENBRGxDLDZCQUE4QixDQUU5QixvQ0FDSixDQUdBLDhCQUtJLFlBQWEsQ0FEYixNQUFPLENBRVAscUJBQXNCLENBTHRCLGVBQWdCLENBRWhCLFFBQVMsQ0FEVCxTQUtKLENBRUEsOEJBQ0ksK0JBQ0osQ0FFQSxpQ0FDSSw2QkFDSixDQUVBLDhCQUVJLGtCQUFtQixDQUluQixlQUFnQixDQURoQixXQUFZLENBT1osOEJBQStCLENBTC9CLHVCQUF3QixDQU94QixjQUFlLENBYmYsWUFBYSxDQU9iLCtCQUFnQyxDQUNoQyxxQ0FBc0MsQ0FMdEMsMkNBQTRDLENBUzVDLGlCQUFrQixDQUhsQixlQUFnQixDQUNoQixvQkFBcUIsQ0FJckIscUNBQXNDLENBWnRDLFVBYUosQ0FFQSxvQ0FDSSw0Q0FDSixDQUVBLDBEQUNJLCtCQUNKLENBRUEsdUNBTUksK0JBQWdDLENBQ2hDLDhCQUErQixDQUYvQixRQUFTLENBRlQsTUFBTyxDQUZQLGlCQUFrQixDQUdsQixPQUFRLENBRlIsS0FBTSxDQU1OLFNBQ0osQ0FFQSw4QkFDSSxpQkFBa0IsQ0FDbEIsOEJBQStCLENBQy9CLGlCQUFrQixDQUVsQix1Q0FBd0MsQ0FEeEMsU0FFSixDQUVBLGlDQUNJLCtCQUNKLENBRUEsOEJBR0ksTUFBTyxDQUZQLGlCQUFrQixDQUdsQix1Q0FBd0MsQ0FGeEMsU0FHSixDQUVBLGlDQUNJLCtCQUNKLENBRUEsK0JBSUksOEJBQStCLENBRS9CLGdDQUFpQyxDQURqQywrQkFBZ0MsQ0FHaEMsdUNBQXdDLENBTHhDLGVBT0osQ0FFQSw2REFMSSw2QkFBOEIsQ0FFOUIsZ0JBQWlCLENBUmpCLGlCQUFrQixDQUNsQixTQWdCSixDQU5BLDhCQUtJLGlDQUNKLENBR0EsaUNBQ0ksZUFBZ0IsQ0FFaEIsOEJBQStCLENBQy9CLGVBQWdCLENBRmhCLFNBR0osQ0FFQSwrREFFSSw2QkFBOEIsQ0FEOUIsMkNBRUosQ0FHQSxnQ0FHSSx3Q0FBeUMsQ0FGekMsZUFBZ0IsQ0FDaEIsNkJBRUosQ0FHQSx1Q0FZSSxrQkFBbUIsQ0FObkIsK0JBQWdDLENBRWhDLFdBQVksQ0FDWiw4QkFBK0IsQ0FLL0IsMkJBQTRCLENBUDVCLCtCQUFnQyxDQVFoQyxjQUFlLENBZGYsWUFBYSxDQVViLFdBQVksQ0FFWixzQkFBdUIsQ0FUdkIsc0JBQXVCLENBRnZCLGNBQWUsQ0FDZixxQkFBc0IsQ0FPdEIsVUFBVyxDQUxYLHVDQVdKLENBRUEsNkNBQ0kscUNBQ0osQ0FFQSwyQ0FDSSxnQkFDSixDQUdBLHFDQU1JLHlCQUE4QixDQUQ5QixRQUFTLENBRlQsTUFBTyxDQUZQLGNBQWUsQ0FHZixPQUFRLENBRlIsS0FBTSxDQUtOLHVDQUNKLENBR0EseUJBQ0ksdUNBQ0ksWUFDSixDQUVBLG9DQUNJLDJCQUNKLENBRUEsd0VBQ0ksdUJBQ0osQ0FFQSxnQ0FDSSwyQ0FDSixDQUVBLDhEQUtJLCtCQUFnQyxDQUdoQywyQkFBNEIsQ0FGNUIscUJBQXNCLENBSHRCLE1BQU8sQ0FJUCx5QkFBMEIsQ0FOMUIsY0FBZSxDQUdmLE9BQVEsQ0FGUixRQUFTLENBT1QsMkJBQTRCLENBQzVCLDJDQUNKLENBRUEsa0dBQ0ksdUJBQ0osQ0FDSiIsImZpbGUiOiJOYXZiYXIubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5uYXZiYXIge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdXJmYWNlKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgICB6LWluZGV4OiB2YXIoLS16LWluZGV4LXN0aWNreSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4vKiBTaWRlYmFyIHZhcmlhbnQgKi9cbi5uYXZiYXJTaWRlYmFyIHtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICBib3R0b206IDA7XG4gICAgd2lkdGg6IDI4MHB4O1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZyk7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbn1cblxuLyogVG9wIHZhcmlhbnQgKi9cbi5uYXZiYXJUb3Age1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGhlaWdodDogYXV0bztcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1zbSkgdmFyKC0tc3BhY2luZy1sZyk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LW1kKTtcbn1cblxuLm5hdmJhclRvcCAubmF2TGlzdCB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBnYXA6IHZhcigtLXNwYWNpbmctbWQpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLm5hdmJhclRvcCAubmF2SXRlbSB7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4vKiBNaW5pbWFsIHZhcmlhbnQgKi9cbi5uYXZiYXJNaW5pbWFsIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiAwO1xufVxuXG4ubmF2YmFyTWluaW1hbCAubmF2TGlzdCB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBnYXA6IHZhcigtLXNwYWNpbmctc20pO1xufVxuXG4vKiBMb2dvIHNlY3Rpb24gKi9cbi5uYXZMb2dvIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLXhsKTtcbn1cblxuLm5hdmJhclRvcCAubmF2TG9nbyB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG59XG5cbi5sb2dvQ29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zcGFjaW5nLW1kKTtcbn1cblxuLmxvZ29JbWFnZSB7XG4gICAgd2lkdGg6IDQ4cHg7XG4gICAgaGVpZ2h0OiA0OHB4O1xuICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbn1cblxuLmxvZ29QbGFjZWhvbGRlciB7XG4gICAgd2lkdGg6IDQ4cHg7XG4gICAgaGVpZ2h0OiA0OHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LWludmVyc2UpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1sZyk7XG59XG5cbi5sb2dvQ29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4ubG9nb1RleHQge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhsKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC10aWdodCk7XG59XG5cbi5sb2dvU3VidGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhzKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC10aWdodCk7XG59XG5cbi8qIE5hdmlnYXRpb24gbGlzdCAqL1xuLm5hdkxpc3Qge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgZmxleDogMTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi5uYXZJdGVtIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLXhzKTtcbn1cblxuLnN1Yk5hdkl0ZW0ge1xuICAgIG1hcmdpbi1sZWZ0OiB2YXIoLS1zcGFjaW5nLWxnKTtcbn1cblxuLm5hdkxpbmsge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXNtKSB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4ubmF2TGluazpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpO1xufVxuXG4ubmF2TGluay5hY3RpdmUge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LWludmVyc2UpO1xufVxuXG4uYWN0aXZlQmFja2dyb3VuZCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICAgIHotaW5kZXg6IDA7XG59XG5cbi5uYXZJY29uIHtcbiAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zcGFjaW5nLXNtKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4uYWN0aXZlSWNvbiB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtaW52ZXJzZSk7XG59XG5cbi5uYXZUZXh0IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMTtcbiAgICBmbGV4OiAxO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXRyYW5zaXRpb24tZmFzdCk7XG59XG5cbi5hY3RpdmVUZXh0IHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1pbnZlcnNlKTtcbn1cblxuLm5hdkJhZGdlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMTtcbiAgICBwYWRkaW5nOiAycHggNnB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWFjY2VudCk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtaW52ZXJzZSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWZ1bGwpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhzKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xufVxuXG4uY2hldnJvbiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDE7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteHMpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi8qIFN1YiBuYXZpZ2F0aW9uICovXG4uc3ViTmF2TGlzdCB7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogdmFyKC0tc3BhY2luZy14cykgMCAwIDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnN1Yk5hdkxpc3QgLm5hdkxpbmsge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmcteHMpIHZhcigtLXNwYWNpbmctc20pO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbn1cblxuLyogRm9vdGVyIHNlY3Rpb24gKi9cbi5uYXZGb290ZXIge1xuICAgIG1hcmdpbi10b3A6IGF1dG87XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXNwYWNpbmctbWQpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXIpO1xufVxuXG4vKiBNb2JpbGUgbWVudSBidXR0b24gKi9cbi5tb2JpbGVNZW51QnV0dG9uIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IHZhcigtLXNwYWNpbmctbWQpO1xuICAgIGxlZnQ6IHZhcigtLXNwYWNpbmctbWQpO1xuICAgIHotaW5kZXg6IGNhbGModmFyKC0tei1pbmRleC1zdGlja3kpICsgMSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtaW52ZXJzZSk7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gICAgd2lkdGg6IDQ4cHg7XG4gICAgaGVpZ2h0OiA0OHB4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWxnKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5tb2JpbGVNZW51QnV0dG9uOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5LWhvdmVyKTtcbn1cblxuLm1vYmlsZU1lbnVCdXR0b24gc3ZnIHtcbiAgICBmb250LXNpemU6IDEuNXJlbTtcbn1cblxuLyogTW9iaWxlIGJhY2tkcm9wICovXG4ubW9iaWxlQmFja2Ryb3Age1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjUpO1xuICAgIHotaW5kZXg6IGNhbGModmFyKC0tei1pbmRleC1zdGlja3kpIC0gMSk7XG59XG5cbi8qIE1vYmlsZSByZXNwb25zaXZlICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAubW9iaWxlTWVudUJ1dHRvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgfVxuICAgIFxuICAgIC5uYXZiYXJTaWRlYmFyIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcbiAgICB9XG4gICAgXG4gICAgLm5hdmJhclNpZGViYXIubW9iaWxlTWVudU9wZW4ge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgfVxuICAgIFxuICAgIC5uYXZiYXJUb3Age1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXNtKSB2YXIoLS1zcGFjaW5nLW1kKTtcbiAgICB9XG4gICAgXG4gICAgLm5hdmJhclRvcCAubmF2TGlzdCB7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgdG9wOiA2MHB4O1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3Itc3VyZmFjZSk7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctbWQpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGcpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpO1xuICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbiAgICB9XG4gICAgXG4gICAgLm5hdmJhclRvcC5tb2JpbGVNZW51T3BlbiAubmF2TGlzdCB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB9XG59Il19 */";
|
|
1221
|
+
var desktopStyles = {"navbar":"Navbar-module_navbar__-SNiN","navbarSidebar":"Navbar-module_navbarSidebar__RVVL8","navbarTop":"Navbar-module_navbarTop__MLI-S","navList":"Navbar-module_navList__764oY","navItem":"Navbar-module_navItem__cbeLP","navbarMinimal":"Navbar-module_navbarMinimal__7gs0n","navLogo":"Navbar-module_navLogo__y0AxI","logoContainer":"Navbar-module_logoContainer__zJG3x","logoImage":"Navbar-module_logoImage__1Ptmz","logoPlaceholder":"Navbar-module_logoPlaceholder__aIREi","logoContent":"Navbar-module_logoContent__CjPyL","logoText":"Navbar-module_logoText__bTwI0","logoSubtitle":"Navbar-module_logoSubtitle__UA95I","subNavItem":"Navbar-module_subNavItem__WN9is","navLink":"Navbar-module_navLink__I-45k","active":"Navbar-module_active__tLLqx","activeBackground":"Navbar-module_activeBackground__ikyOn","navIcon":"Navbar-module_navIcon__uU4yD","activeIcon":"Navbar-module_activeIcon__omRDk","navText":"Navbar-module_navText__4e0cK","activeText":"Navbar-module_activeText__zSzJC","navBadge":"Navbar-module_navBadge__mLur9","chevron":"Navbar-module_chevron__nmRNk","subNavList":"Navbar-module_subNavList__YsOQP","navFooter":"Navbar-module_navFooter__p1wMO","mobileMenuButton":"Navbar-module_mobileMenuButton__BrALw","mobileBackdrop":"Navbar-module_mobileBackdrop__bgxCV","mobileMenuOpen":"Navbar-module_mobileMenuOpen__oICVa"};
|
|
1222
|
+
styleInject(css_248z$7);
|
|
1223
|
+
|
|
1224
|
+
var css_248z$6 = ".Navbar-mobile-module_navbar__-shkE{background:var(--color-surface);bottom:0;box-shadow:0 -2px 10px rgba(0,0,0,.1);left:0;padding:var(--spacing-xs) var(--spacing-sm);position:fixed;right:0;z-index:var(--z-index-sticky)}.Navbar-mobile-module_navLogo__7Gnna{display:none}.Navbar-mobile-module_navList__FBo8I{align-items:center;display:flex;flex-direction:row;justify-content:space-around;list-style:none;margin:0;padding:0}.Navbar-mobile-module_navItem__-9E9-{flex:1;margin:0}.Navbar-mobile-module_navLink__A8n8F{align-items:center;background:none;border:none;border-radius:var(--radius-sm);color:var(--color-text-secondary);cursor:pointer;display:flex;flex-direction:column;font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);justify-content:center;padding:var(--spacing-xs);position:relative;text-decoration:none;transition:all var(--transition-fast);width:100%}.Navbar-mobile-module_navLink__A8n8F:active{transform:scale(.95)}.Navbar-mobile-module_navLink__A8n8F.Navbar-mobile-module_active__h3ajz{color:var(--color-primary)}.Navbar-mobile-module_activeBackground__btXAN{display:none}.Navbar-mobile-module_navIcon__4L17v{font-size:1.5rem;margin-bottom:2px;margin-right:0;transition:color var(--transition-fast)}.Navbar-mobile-module_activeIcon__A8GF-{color:var(--color-primary)}.Navbar-mobile-module_navText__ewf-i{font-size:var(--font-size-xs);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Navbar-mobile-module_activeText__fNqcU{color:var(--color-primary)}.Navbar-mobile-module_navBadge__YccGx{background:var(--color-accent);border-radius:var(--radius-full);color:var(--color-text-inverse);font-size:10px;font-weight:var(--font-weight-bold);min-width:16px;padding:1px 4px;position:absolute;right:calc(50% - 12px);text-align:center;top:2px}.Navbar-mobile-module_chevron__nBPqn,.Navbar-mobile-module_mobileBackdrop__biYng,.Navbar-mobile-module_mobileMenuButton__Dx3t8,.Navbar-mobile-module_navFooter__yijWu,.Navbar-mobile-module_subNavList__8tINc{display:none}.Navbar-mobile-module_navbarTop__oyfPE{bottom:auto;flex-direction:row;padding:var(--spacing-sm) var(--spacing-md);top:0}.Navbar-mobile-module_navbarTop__oyfPE .Navbar-mobile-module_navLogo__7Gnna{display:block;margin-bottom:0;margin-right:auto}.Navbar-mobile-module_navbarTop__oyfPE .Navbar-mobile-module_navList__FBo8I{flex-direction:row;gap:var(--spacing-sm)}.Navbar-mobile-module_navbarTop__oyfPE .Navbar-mobile-module_navLink__A8n8F{flex-direction:row;padding:var(--spacing-xs) var(--spacing-sm)}.Navbar-mobile-module_navbarTop__oyfPE .Navbar-mobile-module_navIcon__4L17v{margin-bottom:0;margin-right:var(--spacing-xs)}.Navbar-mobile-module_navbarTop__oyfPE .Navbar-mobile-module_navText__ewf-i{font-size:var(--font-size-sm)}.Navbar-mobile-module_navbarMinimal__cudny{background:transparent;box-shadow:none;padding:var(--spacing-sm);position:relative}.Navbar-mobile-module_navbarMinimal__cudny .Navbar-mobile-module_navList__FBo8I{gap:var(--spacing-xs);justify-content:flex-start}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk5hdmJhci5tb2JpbGUubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxvQ0FLSSwrQkFBZ0MsQ0FIaEMsUUFBUyxDQUtULHFDQUEwQyxDQUoxQyxNQUFPLENBR1AsMkNBQTRDLENBTDVDLGNBQWUsQ0FHZixPQUFRLENBSVIsNkJBQ0osQ0FHQSxxQ0FDSSxZQUNKLENBRUEscUNBT0ksa0JBQW1CLENBSG5CLFlBQWEsQ0FDYixrQkFBbUIsQ0FDbkIsNEJBQTZCLENBTDdCLGVBQWdCLENBRWhCLFFBQVMsQ0FEVCxTQU1KLENBRUEscUNBQ0ksTUFBTyxDQUNQLFFBQ0osQ0FFQSxxQ0FHSSxrQkFBbUIsQ0FJbkIsZUFBZ0IsQ0FEaEIsV0FBWSxDQU1aLDhCQUErQixDQUovQixpQ0FBa0MsQ0FNbEMsY0FBZSxDQWJmLFlBQWEsQ0FDYixxQkFBc0IsQ0FPdEIsNkJBQThCLENBQzlCLHFDQUFzQyxDQU50QyxzQkFBdUIsQ0FDdkIseUJBQTBCLENBUTFCLGlCQUFrQixDQUZsQixvQkFBcUIsQ0FJckIscUNBQXNDLENBQ3RDLFVBQ0osQ0FFQSw0Q0FDSSxvQkFDSixDQUVBLHdFQUNJLDBCQUNKLENBRUEsOENBQ0ksWUFDSixDQUVBLHFDQUNJLGdCQUFpQixDQUVqQixpQkFBa0IsQ0FEbEIsY0FBZSxDQUVmLHVDQUNKLENBRUEsd0NBQ0ksMEJBQ0osQ0FFQSxxQ0FDSSw2QkFBOEIsQ0FJOUIsY0FBZSxDQUZmLGVBQWdCLENBQ2hCLHNCQUF1QixDQUZ2QixrQkFJSixDQUVBLHdDQUNJLDBCQUNKLENBRUEsc0NBS0ksOEJBQStCLENBRS9CLGdDQUFpQyxDQURqQywrQkFBZ0MsQ0FFaEMsY0FBZSxDQUNmLG1DQUFvQyxDQUNwQyxjQUFlLENBTmYsZUFBZ0IsQ0FIaEIsaUJBQWtCLENBRWxCLHNCQUF1QixDQVF2QixpQkFBa0IsQ0FUbEIsT0FVSixDQWtCQSw4TUFDSSxZQUNKLENBR0EsdUNBRUksV0FBWSxDQUNaLGtCQUFtQixDQUNuQiwyQ0FBNEMsQ0FINUMsS0FJSixDQUVBLDRFQUNJLGFBQWMsQ0FFZCxlQUFnQixDQURoQixpQkFFSixDQUVBLDRFQUNJLGtCQUFtQixDQUNuQixxQkFDSixDQUVBLDRFQUNJLGtCQUFtQixDQUNuQiwyQ0FDSixDQUVBLDRFQUVJLGVBQWdCLENBRGhCLDhCQUVKLENBRUEsNEVBQ0ksNkJBQ0osQ0FHQSwyQ0FFSSxzQkFBdUIsQ0FDdkIsZUFBZ0IsQ0FDaEIseUJBQTBCLENBSDFCLGlCQUlKLENBRUEsZ0ZBRUkscUJBQXNCLENBRHRCLDBCQUVKIiwiZmlsZSI6Ik5hdmJhci5tb2JpbGUubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIE1vYmlsZS1zcGVjaWZpYyBzdHlsZXMgZm9yIE5hdmJhciAqL1xuLm5hdmJhciB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXN1cmZhY2UpO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmcteHMpIHZhcigtLXNwYWNpbmctc20pO1xuICAgIGJveC1zaGFkb3c6IDAgLTJweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICB6LWluZGV4OiB2YXIoLS16LWluZGV4LXN0aWNreSk7XG59XG5cbi8qIEhpZGUgbG9nbyBvbiBtb2JpbGUgYm90dG9tIG5hdiAqL1xuLm5hdkxvZ28ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5uYXZMaXN0IHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ubmF2SXRlbSB7XG4gICAgZmxleDogMTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5uYXZMaW5rIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXhzKTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhzKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10cmFuc2l0aW9uLWZhc3QpO1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4ubmF2TGluazphY3RpdmUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45NSk7XG59XG5cbi5uYXZMaW5rLmFjdGl2ZSB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xufVxuXG4uYWN0aXZlQmFja2dyb3VuZCB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLm5hdkljb24ge1xuICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAycHg7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KTtcbn1cblxuLmFjdGl2ZUljb24ge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbn1cblxuLm5hdlRleHQge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhzKTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xufVxuXG4uYWN0aXZlVGV4dCB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xufVxuXG4ubmF2QmFkZ2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDJweDtcbiAgICByaWdodDogY2FsYyg1MCUgLSAxMnB4KTtcbiAgICBwYWRkaW5nOiAxcHggNHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWFjY2VudCk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtaW52ZXJzZSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWZ1bGwpO1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG4gICAgbWluLXdpZHRoOiAxNnB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLyogSGlkZSBjaGV2cm9uIGFuZCBzdWItbmF2aWdhdGlvbiBvbiBtb2JpbGUgKi9cbi5jaGV2cm9uLFxuLnN1Yk5hdkxpc3Qge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qIEZvb3RlciBzZWN0aW9uICovXG4ubmF2Rm9vdGVyIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4vKiBNb2JpbGUgbWVudSBidXR0b24gbm90IG5lZWRlZCBmb3IgYm90dG9tIG5hdiAqL1xuLm1vYmlsZU1lbnVCdXR0b24ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5tb2JpbGVCYWNrZHJvcCB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLyogVG9wIG5hdmJhciB2YXJpYW50IG9uIG1vYmlsZSAqL1xuLm5hdmJhclRvcCB7XG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogYXV0bztcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctc20pIHZhcigtLXNwYWNpbmctbWQpO1xufVxuXG4ubmF2YmFyVG9wIC5uYXZMb2dvIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLm5hdmJhclRvcCAubmF2TGlzdCB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBnYXA6IHZhcigtLXNwYWNpbmctc20pO1xufVxuXG4ubmF2YmFyVG9wIC5uYXZMaW5rIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmcteHMpIHZhcigtLXNwYWNpbmctc20pO1xufVxuXG4ubmF2YmFyVG9wIC5uYXZJY29uIHtcbiAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLXNwYWNpbmcteHMpO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi5uYXZiYXJUb3AgLm5hdlRleHQge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbn1cblxuLyogTWluaW1hbCB2YXJpYW50IG9uIG1vYmlsZSAqL1xuLm5hdmJhck1pbmltYWwge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctc20pO1xufVxuXG4ubmF2YmFyTWluaW1hbCAubmF2TGlzdCB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogdmFyKC0tc3BhY2luZy14cyk7XG59Il19 */";
|
|
1225
|
+
var mobileStyles = {"navbar":"Navbar-mobile-module_navbar__-shkE","navLogo":"Navbar-mobile-module_navLogo__7Gnna","navList":"Navbar-mobile-module_navList__FBo8I","navItem":"Navbar-mobile-module_navItem__-9E9-","navLink":"Navbar-mobile-module_navLink__A8n8F","active":"Navbar-mobile-module_active__h3ajz","activeBackground":"Navbar-mobile-module_activeBackground__btXAN","navIcon":"Navbar-mobile-module_navIcon__4L17v","activeIcon":"Navbar-mobile-module_activeIcon__A8GF-","navText":"Navbar-mobile-module_navText__ewf-i","activeText":"Navbar-mobile-module_activeText__fNqcU","navBadge":"Navbar-mobile-module_navBadge__YccGx","chevron":"Navbar-mobile-module_chevron__nBPqn","subNavList":"Navbar-mobile-module_subNavList__8tINc","navFooter":"Navbar-mobile-module_navFooter__yijWu","mobileMenuButton":"Navbar-mobile-module_mobileMenuButton__Dx3t8","mobileBackdrop":"Navbar-mobile-module_mobileBackdrop__biYng","navbarTop":"Navbar-mobile-module_navbarTop__oyfPE","navbarMinimal":"Navbar-mobile-module_navbarMinimal__cudny"};
|
|
1226
|
+
styleInject(css_248z$6);
|
|
1227
|
+
|
|
1228
|
+
const Navbar = ({ items, logo, onItemClick, variant = 'sidebar', isMobile = false, footer, className = '' }) => {
|
|
1229
|
+
const styles = React.useMemo(() => isMobile ? mobileStyles : desktopStyles, [isMobile]);
|
|
1230
|
+
const [isMobileMenuOpen, setIsMobileMenuOpen] = React.useState(false);
|
|
1231
|
+
const [expandedItems, setExpandedItems] = React.useState(new Set());
|
|
1232
|
+
// Close mobile menu when screen size changes
|
|
1233
|
+
React.useEffect(() => {
|
|
1234
|
+
const handleResize = () => {
|
|
1235
|
+
if (window.innerWidth > 768) {
|
|
1236
|
+
setIsMobileMenuOpen(false);
|
|
1237
|
+
}
|
|
112
1238
|
};
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
1239
|
+
window.addEventListener('resize', handleResize);
|
|
1240
|
+
return () => window.removeEventListener('resize', handleResize);
|
|
1241
|
+
}, []);
|
|
1242
|
+
const toggleMobileMenu = () => {
|
|
1243
|
+
setIsMobileMenuOpen(!isMobileMenuOpen);
|
|
1244
|
+
};
|
|
1245
|
+
const toggleExpanded = (itemId) => {
|
|
1246
|
+
setExpandedItems(prev => {
|
|
1247
|
+
const newSet = new Set(prev);
|
|
1248
|
+
if (newSet.has(itemId)) {
|
|
1249
|
+
newSet.delete(itemId);
|
|
1250
|
+
}
|
|
1251
|
+
else {
|
|
1252
|
+
newSet.add(itemId);
|
|
1253
|
+
}
|
|
1254
|
+
return newSet;
|
|
1255
|
+
});
|
|
1256
|
+
};
|
|
1257
|
+
const handleItemClick = (item) => {
|
|
1258
|
+
if (item.children && item.children.length > 0) {
|
|
1259
|
+
toggleExpanded(item.id);
|
|
1260
|
+
}
|
|
1261
|
+
else {
|
|
1262
|
+
if (item.onClick) {
|
|
1263
|
+
item.onClick();
|
|
1264
|
+
}
|
|
1265
|
+
if (onItemClick) {
|
|
1266
|
+
onItemClick(item);
|
|
1267
|
+
}
|
|
1268
|
+
if (isMobile || isMobileMenuOpen) {
|
|
1269
|
+
setIsMobileMenuOpen(false);
|
|
1270
|
+
}
|
|
117
1271
|
}
|
|
118
1272
|
};
|
|
119
|
-
const
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
className
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
const
|
|
130
|
-
if (
|
|
131
|
-
return
|
|
1273
|
+
const renderNavItem = (item, index, depth = 0) => {
|
|
1274
|
+
const Icon = item.icon;
|
|
1275
|
+
const isExpanded = expandedItems.has(item.id);
|
|
1276
|
+
const hasChildren = item.children && item.children.length > 0;
|
|
1277
|
+
return (jsxRuntime.jsxs(framerMotion.motion.li, { className: `${styles.navItem} ${depth > 0 ? styles.subNavItem : ''}`, initial: { opacity: 0, x: -20 }, animate: { opacity: 1, x: 0 }, transition: { delay: index * 0.05 }, children: [jsxRuntime.jsxs(framerMotion.motion.button, { className: `${styles.navLink} ${item.isActive ? styles.active : ''}`, onClick: () => handleItemClick(item), whileHover: { x: 5 }, whileTap: { scale: 0.98 }, children: [item.isActive && (jsxRuntime.jsx(framerMotion.motion.div, { className: styles.activeBackground, layoutId: "activeNavBackground", initial: false, transition: {
|
|
1278
|
+
type: "spring",
|
|
1279
|
+
stiffness: 500,
|
|
1280
|
+
damping: 35
|
|
1281
|
+
} })), Icon && (jsxRuntime.jsx(Icon, { className: `${styles.navIcon} ${item.isActive ? styles.activeIcon : ''}` })), jsxRuntime.jsx("span", { className: `${styles.navText} ${item.isActive ? styles.activeText : ''}`, children: item.label }), item.badge && (jsxRuntime.jsx("span", { className: styles.navBadge, children: item.badge })), hasChildren && (jsxRuntime.jsx(framerMotion.motion.span, { className: styles.chevron, animate: { rotate: isExpanded ? 180 : 0 }, transition: { duration: 0.2 }, children: "\u25BC" }))] }), hasChildren && (jsxRuntime.jsx(framerMotion.AnimatePresence, { children: isExpanded && (jsxRuntime.jsx(framerMotion.motion.ul, { className: styles.subNavList, initial: { height: 0, opacity: 0 }, animate: { height: 'auto', opacity: 1 }, exit: { height: 0, opacity: 0 }, transition: { duration: 0.2 }, children: item.children.map((child, childIndex) => renderNavItem(child, childIndex, depth + 1)) })) }))] }, item.id));
|
|
1282
|
+
};
|
|
1283
|
+
const navContent = (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [logo && (jsxRuntime.jsx(framerMotion.motion.div, { className: styles.navLogo, initial: { opacity: 0, y: -20 }, animate: { opacity: 1, y: 0 }, transition: { delay: 0.1 }, children: jsxRuntime.jsxs("div", { className: styles.logoContainer, children: [logo.src ? (jsxRuntime.jsx(framerMotion.motion.img, { src: logo.src, alt: logo.alt || 'Logo', className: styles.logoImage, whileHover: { scale: 1.05 }, transition: { type: "spring", stiffness: 400 } })) : (jsxRuntime.jsx("div", { className: styles.logoPlaceholder, children: logo.text?.charAt(0) || 'L' })), (logo.text || logo.subtitle) && (jsxRuntime.jsxs("div", { className: styles.logoContent, children: [logo.text && (jsxRuntime.jsx("span", { className: styles.logoText, children: logo.text })), logo.subtitle && (jsxRuntime.jsx("span", { className: styles.logoSubtitle, children: logo.subtitle }))] }))] }) })), jsxRuntime.jsx("ul", { className: styles.navList, children: items.map((item, index) => renderNavItem(item, index)) }), footer && (jsxRuntime.jsx(framerMotion.motion.div, { className: styles.navFooter, initial: { opacity: 0, y: 20 }, animate: { opacity: 1, y: 0 }, transition: { delay: 0.3 }, children: footer }))] }));
|
|
1284
|
+
if (variant === 'top') {
|
|
1285
|
+
return (jsxRuntime.jsx(framerMotion.motion.nav, { className: `${styles.navbar} ${styles.navbarTop} ${className}`, initial: { y: -100 }, animate: { y: 0 }, transition: { type: "spring", stiffness: 300, damping: 30 }, children: navContent }));
|
|
132
1286
|
}
|
|
133
|
-
return
|
|
1287
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [(isMobile || window.innerWidth <= 768) && (jsxRuntime.jsx(framerMotion.motion.button, { className: styles.mobileMenuButton, onClick: toggleMobileMenu, "aria-label": "Toggle navigation menu", whileTap: { scale: 0.9 }, children: jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: isMobileMenuOpen ? (jsxRuntime.jsx(framerMotion.motion.div, { initial: { rotate: -90, opacity: 0 }, animate: { rotate: 0, opacity: 1 }, exit: { rotate: 90, opacity: 0 }, children: jsxRuntime.jsx(FiX, {}) }, "close")) : (jsxRuntime.jsx(framerMotion.motion.div, { initial: { rotate: 90, opacity: 0 }, animate: { rotate: 0, opacity: 1 }, exit: { rotate: -90, opacity: 0 }, children: jsxRuntime.jsx(FiMenu, {}) }, "menu")) }) })), jsxRuntime.jsx(framerMotion.AnimatePresence, { children: isMobileMenuOpen && (jsxRuntime.jsx(framerMotion.motion.div, { className: styles.mobileBackdrop, initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, onClick: () => setIsMobileMenuOpen(false) })) }), jsxRuntime.jsx(framerMotion.motion.nav, { className: `${styles.navbar} ${styles[`navbar${variant.charAt(0).toUpperCase() + variant.slice(1)}`]} ${isMobileMenuOpen ? styles.mobileMenuOpen : ''} ${className}`, initial: variant === 'sidebar' ? { x: -300 } : { opacity: 0 }, animate: variant === 'sidebar' ? { x: isMobileMenuOpen || !isMobile ? 0 : -300 } : { opacity: 1 }, transition: { type: "spring", stiffness: 300, damping: 30 }, children: navContent })] }));
|
|
1288
|
+
};
|
|
1289
|
+
|
|
1290
|
+
var css_248z$5 = ".MoodChart-module_container__MB1Vr{align-items:center;background:var(--color-background-secondary);border-radius:var(--radius-lg);display:flex;flex-direction:column;padding:var(--spacing-xl);position:relative}.MoodChart-module_chart__4-spu{display:block;margin:0 auto}.MoodChart-module_gridLine__YJpZ8{stroke:var(--color-border);stroke-opacity:.15;stroke-dasharray:4,4}.MoodChart-module_line__LfeUX{fill:none;stroke:var(--color-primary);stroke-width:2.5;stroke-opacity:.8;filter:drop-shadow(0 2px 4px rgba(0,0,0,.1))}.MoodChart-module_xAxis__SeIWG,.MoodChart-module_yAxis__sRjjE{color:var(--color-text-secondary);font-size:11px;font-weight:500}.MoodChart-module_xAxis__SeIWG line,.MoodChart-module_xAxis__SeIWG path,.MoodChart-module_yAxis__sRjjE line,.MoodChart-module_yAxis__sRjjE path{stroke:var(--color-border);stroke-opacity:.3}.MoodChart-module_xAxis__SeIWG text,.MoodChart-module_yAxis__sRjjE text{fill:var(--color-text-secondary)}.MoodChart-module_dataPoint__112P1{stroke:var(--color-text-inverse);stroke-width:2;cursor:pointer;filter:drop-shadow(0 2px 4px rgba(0,0,0,.2));transition:all .3s ease}.MoodChart-module_dataPoint__112P1:hover{filter:drop-shadow(0 4px 8px rgba(0,0,0,.3));transform:scale(1.2)}.MoodChart-module_tooltip__vW59y{animation:MoodChart-module_fadeIn__aPxdl .2s ease;background:var(--color-background-secondary);border:2px solid var(--color-primary);border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.15);max-width:400px;min-width:280px;padding:16px;pointer-events:none;position:absolute;z-index:10}@keyframes MoodChart-module_fadeIn__aPxdl{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.MoodChart-module_tooltipHeader__U7yvN{align-items:center;border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;margin-bottom:12px;padding-bottom:8px}.MoodChart-module_tooltipDate__6Jjeu{color:var(--color-text);font-size:14px;font-weight:600}.MoodChart-module_tooltipRating__5A2Yx{align-items:baseline;background:linear-gradient(135deg,var(--color-primary),var(--color-primary-hover));border-radius:20px;color:var(--color-text-inverse);display:flex;gap:2px;padding:4px 10px}.MoodChart-module_ratingValue__7Gpfx{font-size:18px;font-weight:700}.MoodChart-module_ratingMax__10WcJ{font-size:12px;opacity:.9}.MoodChart-module_tooltipTags__FUQrU{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.MoodChart-module_tag__QhCh5{animation:MoodChart-module_tagBounce__IaPrl .3s ease;background:var(--color-primary-lighter);border:1px solid var(--color-primary-light);border-radius:12px;color:var(--color-primary-active);display:inline-block;font-size:12px;font-weight:500;padding:4px 10px}@keyframes MoodChart-module_tagBounce__IaPrl{0%{transform:scale(.8)}60%{transform:scale(1.05)}to{transform:scale(1)}}.MoodChart-module_tooltipComment__6driJ{background:var(--color-background-tertiary);border:1px solid var(--color-border);border-radius:8px;color:var(--color-text-secondary);font-size:13px;line-height:1.5;max-height:200px;overflow-y:auto;padding:12px}.MoodChart-module_tooltipComment__6driJ::-webkit-scrollbar{width:4px}.MoodChart-module_tooltipComment__6driJ::-webkit-scrollbar-track{background:var(--color-background-tertiary)}.MoodChart-module_tooltipComment__6driJ::-webkit-scrollbar-thumb{background:var(--color-primary);border-radius:2px}.MoodChart-module_moodIndicator__pn31K{border-radius:50%;display:inline-block;height:12px;margin-right:8px;width:12px}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1vb2RDaGFydC5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1DQU9JLGtCQUFtQixDQUxuQiw0Q0FBNkMsQ0FDN0MsOEJBQStCLENBRS9CLFlBQWEsQ0FDYixxQkFBc0IsQ0FGdEIseUJBQTBCLENBSDFCLGlCQU9KLENBRUEsK0JBQ0ksYUFBYyxDQUNkLGFBQ0osQ0FFQSxrQ0FDSSwwQkFBMkIsQ0FDM0Isa0JBQW9CLENBQ3BCLG9CQUNKLENBRUEsOEJBQ0ksU0FBVSxDQUNWLDJCQUE0QixDQUM1QixnQkFBaUIsQ0FDakIsaUJBQW1CLENBQ25CLDRDQUNKLENBRUEsOERBRUksaUNBQWtDLENBQ2xDLGNBQWUsQ0FDZixlQUNKLENBRUEsZ0pBSUksMEJBQTJCLENBQzNCLGlCQUNKLENBRUEsd0VBRUksZ0NBQ0osQ0FFQSxtQ0FFSSxnQ0FBaUMsQ0FDakMsY0FBZSxDQUZmLGNBQWUsQ0FJZiw0Q0FBaUQsQ0FEakQsdUJBRUosQ0FFQSx5Q0FDSSw0Q0FBaUQsQ0FDakQsb0JBQ0osQ0FFQSxpQ0FXSSxpREFBMkIsQ0FUM0IsNENBQTZDLENBQzdDLHFDQUFzQyxDQUN0QyxrQkFBbUIsQ0FFbkIscUNBQTBDLENBSTFDLGVBQWdCLENBRGhCLGVBQWdCLENBSmhCLFlBQWEsQ0FFYixtQkFBb0IsQ0FOcEIsaUJBQWtCLENBT2xCLFVBSUosQ0FFQSwwQ0FDSSxHQUNJLFNBQVUsQ0FDViwyQkFDSixDQUNBLEdBQ0ksU0FBVSxDQUNWLHVCQUNKLENBQ0osQ0FFQSx1Q0FHSSxrQkFBbUIsQ0FHbkIsMkNBQTRDLENBTDVDLFlBQWEsQ0FDYiw2QkFBOEIsQ0FFOUIsa0JBQW1CLENBQ25CLGtCQUVKLENBRUEscUNBRUksdUJBQXdCLENBQ3hCLGNBQWUsQ0FGZixlQUdKLENBRUEsdUNBRUksb0JBQXFCLENBRXJCLGtGQUFxRixDQUVyRixrQkFBbUIsQ0FDbkIsK0JBQWdDLENBTmhDLFlBQWEsQ0FFYixPQUFRLENBRVIsZ0JBR0osQ0FFQSxxQ0FDSSxjQUFlLENBQ2YsZUFDSixDQUVBLG1DQUNJLGNBQWUsQ0FDZixVQUNKLENBRUEscUNBQ0ksWUFBYSxDQUNiLGNBQWUsQ0FDZixPQUFRLENBQ1Isa0JBQ0osQ0FFQSw2QkFTSSxvREFBOEIsQ0FOOUIsdUNBQXdDLENBS3hDLDJDQUE0QyxDQUg1QyxrQkFBbUIsQ0FEbkIsaUNBQWtDLENBSGxDLG9CQUFxQixDQUtyQixjQUFlLENBQ2YsZUFBZ0IsQ0FMaEIsZ0JBUUosQ0FFQSw2Q0FDSSxHQUFLLG1CQUF1QixDQUM1QixJQUFNLHFCQUF3QixDQUM5QixHQUFPLGtCQUFxQixDQUNoQyxDQUVBLHdDQU9JLDJDQUE0QyxDQUU1QyxvQ0FBcUMsQ0FEckMsaUJBQWtCLENBUGxCLGlDQUFrQyxDQUNsQyxjQUFlLENBQ2YsZUFBZ0IsQ0FDaEIsZ0JBQWlCLENBQ2pCLGVBQWdCLENBQ2hCLFlBSUosQ0FFQSwyREFDSSxTQUNKLENBRUEsaUVBQ0ksMkNBQ0osQ0FFQSxpRUFDSSwrQkFBZ0MsQ0FDaEMsaUJBQ0osQ0FHQSx1Q0FJSSxpQkFBa0IsQ0FIbEIsb0JBQXFCLENBRXJCLFdBQVksQ0FFWixnQkFBaUIsQ0FIakIsVUFJSiIsImZpbGUiOiJNb29kQ2hhcnQubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jb250YWluZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXhsKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLmNoYXJ0IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW46IDAgYXV0bztcbn1cblxuLmdyaWRMaW5lIHtcbiAgICBzdHJva2U6IHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgc3Ryb2tlLW9wYWNpdHk6IDAuMTU7XG4gICAgc3Ryb2tlLWRhc2hhcnJheTogNCwgNDtcbn1cblxuLmxpbmUge1xuICAgIGZpbGw6IG5vbmU7XG4gICAgc3Ryb2tlOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgICBzdHJva2Utd2lkdGg6IDIuNTtcbiAgICBzdHJva2Utb3BhY2l0eTogMC44O1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xKSk7XG59XG5cbi54QXhpcyxcbi55QXhpcyB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuLnhBeGlzIGxpbmUsXG4ueEF4aXMgcGF0aCxcbi55QXhpcyBsaW5lLFxuLnlBeGlzIHBhdGgge1xuICAgIHN0cm9rZTogdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBzdHJva2Utb3BhY2l0eTogMC4zO1xufVxuXG4ueEF4aXMgdGV4dCxcbi55QXhpcyB0ZXh0IHtcbiAgICBmaWxsOiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi5kYXRhUG9pbnQge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBzdHJva2U6IHZhcigtLWNvbG9yLXRleHQtaW52ZXJzZSk7XG4gICAgc3Ryb2tlLXdpZHRoOiAyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjIpKTtcbn1cblxuLmRhdGFQb2ludDpob3ZlciB7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjMpKTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMik7XG59XG5cbi50b29sdGlwIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpO1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgcGFkZGluZzogMTZweDtcbiAgICBib3gtc2hhZG93OiAwIDhweCAyNHB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgei1pbmRleDogMTA7XG4gICAgbWluLXdpZHRoOiAyODBweDtcbiAgICBtYXgtd2lkdGg6IDQwMHB4O1xuICAgIGFuaW1hdGlvbjogZmFkZUluIDAuMnMgZWFzZTtcbn1cblxuQGtleWZyYW1lcyBmYWRlSW4ge1xuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpO1xuICAgIH1cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB9XG59XG5cbi50b29sdGlwSGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IDEycHg7XG4gICAgcGFkZGluZy1ib3R0b206IDhweDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbn1cblxuLnRvb2x0aXBEYXRlIHtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgICBmb250LXNpemU6IDE0cHg7XG59XG5cbi50b29sdGlwUmF0aW5nIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgICBnYXA6IDJweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1jb2xvci1wcmltYXJ5KSwgdmFyKC0tY29sb3ItcHJpbWFyeS1ob3ZlcikpO1xuICAgIHBhZGRpbmc6IDRweCAxMHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtaW52ZXJzZSk7XG59XG5cbi5yYXRpbmdWYWx1ZSB7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG59XG5cbi5yYXRpbmdNYXgge1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBvcGFjaXR5OiAwLjk7XG59XG5cbi50b29sdGlwVGFncyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZ2FwOiA2cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTJweDtcbn1cblxuLnRhZyB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHBhZGRpbmc6IDRweCAxMHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXByaW1hcnktbGlnaHRlcik7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktYWN0aXZlKTtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnktbGlnaHQpO1xuICAgIGFuaW1hdGlvbjogdGFnQm91bmNlIDAuM3MgZWFzZTtcbn1cblxuQGtleWZyYW1lcyB0YWdCb3VuY2Uge1xuICAgIDAlIHsgdHJhbnNmb3JtOiBzY2FsZSgwLjgpOyB9XG4gICAgNjAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTsgfVxuICAgIDEwMCUgeyB0cmFuc2Zvcm06IHNjYWxlKDEpOyB9XG59XG5cbi50b29sdGlwQ29tbWVudCB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICBtYXgtaGVpZ2h0OiAyMDBweDtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIHBhZGRpbmc6IDEycHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSk7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG59XG5cbi50b29sdGlwQ29tbWVudDo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIHdpZHRoOiA0cHg7XG59XG5cbi50b29sdGlwQ29tbWVudDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtdGVydGlhcnkpO1xufVxuXG4udG9vbHRpcENvbW1lbnQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XG59XG5cbi8qIE1vb2QgY29sb3IgaW5kaWNhdG9ycyAqL1xuLm1vb2RJbmRpY2F0b3Ige1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogMTJweDtcbiAgICBoZWlnaHQ6IDEycHg7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIG1hcmdpbi1yaWdodDogOHB4O1xufSJdfQ== */";
|
|
1291
|
+
var styles$5 = {"container":"MoodChart-module_container__MB1Vr","chart":"MoodChart-module_chart__4-spu","gridLine":"MoodChart-module_gridLine__YJpZ8","line":"MoodChart-module_line__LfeUX","xAxis":"MoodChart-module_xAxis__SeIWG","yAxis":"MoodChart-module_yAxis__sRjjE","dataPoint":"MoodChart-module_dataPoint__112P1","tooltip":"MoodChart-module_tooltip__vW59y","tooltipHeader":"MoodChart-module_tooltipHeader__U7yvN","tooltipDate":"MoodChart-module_tooltipDate__6Jjeu","tooltipRating":"MoodChart-module_tooltipRating__5A2Yx","ratingValue":"MoodChart-module_ratingValue__7Gpfx","ratingMax":"MoodChart-module_ratingMax__10WcJ","tooltipTags":"MoodChart-module_tooltipTags__FUQrU","tag":"MoodChart-module_tag__QhCh5","tooltipComment":"MoodChart-module_tooltipComment__6driJ"};
|
|
1292
|
+
styleInject(css_248z$5);
|
|
1293
|
+
|
|
1294
|
+
const MoodChart = ({ moodData, width = 800, height = 400 }) => {
|
|
1295
|
+
const svgRef = React.useRef(null);
|
|
1296
|
+
const containerRef = React.useRef(null);
|
|
1297
|
+
const [selectedMood, setSelectedMood] = React.useState(null);
|
|
1298
|
+
const [tooltipPosition, setTooltipPosition] = React.useState({ x: 0, y: 0 });
|
|
1299
|
+
const margin = { top: 20, right: 20, bottom: 50, left: 40 };
|
|
1300
|
+
const chartWidth = width - margin.left - margin.right;
|
|
1301
|
+
const chartHeight = height - margin.top - margin.bottom;
|
|
1302
|
+
const processedData = React.useMemo(() => {
|
|
1303
|
+
return moodData
|
|
1304
|
+
.map(mood => {
|
|
1305
|
+
// Parse comma-separated tags
|
|
1306
|
+
const tags = mood.tag
|
|
1307
|
+
? mood.tag.split(',').map(t => t.trim()).filter(t => t)
|
|
1308
|
+
: [];
|
|
1309
|
+
return {
|
|
1310
|
+
date: new Date(mood.date),
|
|
1311
|
+
rating: mood.rating,
|
|
1312
|
+
tags,
|
|
1313
|
+
comment: mood.comment
|
|
1314
|
+
};
|
|
1315
|
+
})
|
|
1316
|
+
.filter(mood => !isNaN(mood.date.getTime()) &&
|
|
1317
|
+
isFinite(mood.rating));
|
|
1318
|
+
}, [moodData]);
|
|
1319
|
+
const colorScale = React.useMemo(() => {
|
|
1320
|
+
return d3__namespace.scaleLinear()
|
|
1321
|
+
.domain([1, 5, 10])
|
|
1322
|
+
.range(['#FF6B6B', '#FFD93D', '#6BCB77'])
|
|
1323
|
+
.clamp(true);
|
|
1324
|
+
}, []);
|
|
1325
|
+
React.useEffect(() => {
|
|
1326
|
+
if (!svgRef.current || processedData.length === 0)
|
|
1327
|
+
return;
|
|
1328
|
+
const svg = d3__namespace.select(svgRef.current);
|
|
1329
|
+
svg.selectAll('*').remove();
|
|
1330
|
+
const g = svg.append('g')
|
|
1331
|
+
.attr('transform', `translate(${margin.left},${margin.top})`);
|
|
1332
|
+
const extentDates = d3__namespace.extent(processedData, d => d.date);
|
|
1333
|
+
if (!extentDates[0] || !extentDates[1])
|
|
1334
|
+
return;
|
|
1335
|
+
const xScale = d3__namespace.scaleTime()
|
|
1336
|
+
.domain(extentDates)
|
|
1337
|
+
.range([0, chartWidth]);
|
|
1338
|
+
const yScale = d3__namespace.scaleLinear()
|
|
1339
|
+
.domain([1, 10])
|
|
1340
|
+
.range([chartHeight, 0]);
|
|
1341
|
+
const line = d3__namespace.line()
|
|
1342
|
+
.x(d => xScale(d.date))
|
|
1343
|
+
.y(d => yScale(d.rating))
|
|
1344
|
+
.curve(d3__namespace.curveMonotoneX);
|
|
1345
|
+
g.selectAll('.grid-line-y')
|
|
1346
|
+
.data(yScale.ticks(5))
|
|
1347
|
+
.enter().append('line')
|
|
1348
|
+
.attr('class', styles$5.gridLine)
|
|
1349
|
+
.attr('x1', 0)
|
|
1350
|
+
.attr('y1', d => yScale(d))
|
|
1351
|
+
.attr('x2', chartWidth)
|
|
1352
|
+
.attr('y2', d => yScale(d));
|
|
1353
|
+
g.append('path')
|
|
1354
|
+
.datum(processedData)
|
|
1355
|
+
.attr('class', styles$5.line)
|
|
1356
|
+
.attr('d', line);
|
|
1357
|
+
g.append('g')
|
|
1358
|
+
.attr('class', styles$5.xAxis)
|
|
1359
|
+
.attr('transform', `translate(0,${chartHeight})`)
|
|
1360
|
+
.call(d3__namespace.axisBottom(xScale)
|
|
1361
|
+
.tickFormat(d => d3__namespace.timeFormat('%m/%d')(d)));
|
|
1362
|
+
g.append('g')
|
|
1363
|
+
.attr('class', styles$5.yAxis)
|
|
1364
|
+
.call(d3__namespace.axisLeft(yScale));
|
|
1365
|
+
g.selectAll('.mood-circle')
|
|
1366
|
+
.data(processedData)
|
|
1367
|
+
.enter().append('circle')
|
|
1368
|
+
.attr('class', styles$5.dataPoint)
|
|
1369
|
+
.attr('cx', d => xScale(d.date))
|
|
1370
|
+
.attr('cy', d => yScale(d.rating))
|
|
1371
|
+
.attr('r', 5)
|
|
1372
|
+
.attr('fill', d => colorScale(d.rating))
|
|
1373
|
+
.style('cursor', 'pointer')
|
|
1374
|
+
.on('mouseenter', (event, d) => {
|
|
1375
|
+
const rect = svgRef.current?.getBoundingClientRect();
|
|
1376
|
+
if (rect) {
|
|
1377
|
+
setTooltipPosition({
|
|
1378
|
+
x: event.clientX - rect.left + 20,
|
|
1379
|
+
y: event.clientY - rect.top - 10
|
|
1380
|
+
});
|
|
1381
|
+
}
|
|
1382
|
+
setSelectedMood(d);
|
|
1383
|
+
d3__namespace.select(event.currentTarget)
|
|
1384
|
+
.transition()
|
|
1385
|
+
.duration(200)
|
|
1386
|
+
.attr('r', 8);
|
|
1387
|
+
})
|
|
1388
|
+
.on('mouseleave', (event) => {
|
|
1389
|
+
// Use a timeout to ensure the event fires
|
|
1390
|
+
setTimeout(() => {
|
|
1391
|
+
setSelectedMood(null);
|
|
1392
|
+
}, 0);
|
|
1393
|
+
d3__namespace.select(event.currentTarget)
|
|
1394
|
+
.transition()
|
|
1395
|
+
.duration(200)
|
|
1396
|
+
.attr('r', 5);
|
|
1397
|
+
});
|
|
1398
|
+
}, [processedData, chartWidth, chartHeight, colorScale, margin]);
|
|
1399
|
+
// Clean up tooltip on unmount
|
|
1400
|
+
React.useEffect(() => {
|
|
1401
|
+
return () => {
|
|
1402
|
+
setSelectedMood(null);
|
|
1403
|
+
};
|
|
1404
|
+
}, []);
|
|
1405
|
+
return (jsxRuntime.jsxs("div", { className: styles$5.container, ref: containerRef, onMouseLeave: () => setSelectedMood(null), children: [jsxRuntime.jsx("svg", { ref: svgRef, width: width, height: height, className: styles$5.chart }), selectedMood && (jsxRuntime.jsxs("div", { className: styles$5.tooltip, style: {
|
|
1406
|
+
position: 'absolute',
|
|
1407
|
+
pointerEvents: 'none',
|
|
1408
|
+
left: tooltipPosition.x,
|
|
1409
|
+
top: tooltipPosition.y,
|
|
1410
|
+
zIndex: 1000
|
|
1411
|
+
}, children: [jsxRuntime.jsxs("div", { className: styles$5.tooltipHeader, children: [jsxRuntime.jsx("div", { className: styles$5.tooltipDate, children: selectedMood.date.toLocaleDateString() }), jsxRuntime.jsxs("div", { className: styles$5.tooltipRating, children: [jsxRuntime.jsx("span", { className: styles$5.ratingValue, children: selectedMood.rating }), jsxRuntime.jsx("span", { className: styles$5.ratingMax, children: "/10" })] })] }), selectedMood.tags.length > 0 && (jsxRuntime.jsx("div", { className: styles$5.tooltipTags, children: selectedMood.tags.map((tag, index) => (jsxRuntime.jsx("span", { className: styles$5.tag, children: tag }, index))) })), selectedMood.comment && (jsxRuntime.jsx("div", { className: styles$5.tooltipComment, children: selectedMood.comment }))] }))] }));
|
|
1412
|
+
};
|
|
1413
|
+
|
|
1414
|
+
var css_248z$4 = ".QuantifiableHabitsChart-module_container__X5SBp{align-items:center;background:var(--color-background-secondary);border-radius:var(--radius-lg);display:flex;flex-direction:column;padding:var(--spacing-xl)}.QuantifiableHabitsChart-module_controls__O-ObQ{align-items:center;display:flex;justify-content:center;margin-bottom:var(--spacing-xl)}.QuantifiableHabitsChart-module_viewToggle__24hKA{background:var(--color-background-tertiary);border:1px solid var(--color-border);border-radius:12px;display:flex;gap:4px;padding:4px}.QuantifiableHabitsChart-module_viewButton__WFU6j{align-items:center;background:transparent;border:none;border-radius:8px;color:var(--color-text-secondary);cursor:pointer;display:flex;font-size:13px;font-weight:500;gap:6px;padding:8px 12px;position:relative;transition:all .2s ease}.QuantifiableHabitsChart-module_viewButton__WFU6j:hover{background:var(--color-surface-hover);transform:translateY(-1px)}.QuantifiableHabitsChart-module_viewButton__WFU6j.QuantifiableHabitsChart-module_active__Pjqy9{background:var(--color-primary);box-shadow:0 4px 12px rgba(212,175,55,.3);color:var(--color-text-inverse)}.QuantifiableHabitsChart-module_viewIcon__b2mfk{display:inline-block;font-size:16px}.QuantifiableHabitsChart-module_viewLabel__9MjCU{display:inline-block}@media (max-width:640px){.QuantifiableHabitsChart-module_viewLabel__9MjCU{display:none}}.QuantifiableHabitsChart-module_legend__3Ki7c{background:var(--color-background-tertiary);border:1px solid var(--color-border);border-radius:12px;display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-bottom:var(--spacing-xl);padding:12px}.QuantifiableHabitsChart-module_legendItem__Zl7fz{align-items:center;background:var(--color-background-secondary);border:2px solid var(--border-primary);border-radius:20px;box-shadow:0 2px 8px rgba(0,0,0,.08);cursor:pointer;display:flex;gap:8px;overflow:hidden;padding:6px 12px;position:relative;transition:all .2s ease}.QuantifiableHabitsChart-module_legendItem__Zl7fz:before{background:linear-gradient(135deg,transparent,var(--color-primary-lighter));bottom:0;content:\"\";left:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .2s ease}.QuantifiableHabitsChart-module_legendItem__Zl7fz:hover{border-color:var(--color-primary);box-shadow:0 4px 12px rgba(0,0,0,.15);transform:translateY(-2px)}.QuantifiableHabitsChart-module_legendItem__Zl7fz:hover:before{opacity:1}.QuantifiableHabitsChart-module_legendItem__Zl7fz.QuantifiableHabitsChart-module_inactive__TzZC-{background:var(--color-background-tertiary);opacity:.4}.QuantifiableHabitsChart-module_legendItem__Zl7fz.QuantifiableHabitsChart-module_inactive__TzZC-:hover{opacity:.6}.QuantifiableHabitsChart-module_legendItem__Zl7fz.QuantifiableHabitsChart-module_inactive__TzZC- .QuantifiableHabitsChart-module_legendColor__zbPoV{background:var(--color-text-tertiary)!important}.QuantifiableHabitsChart-module_legendEmoji__HG9CZ{animation:QuantifiableHabitsChart-module_bounce__r-Afq 2s infinite;animation-delay:var(--animation-delay,0s);display:inline-block;font-size:18px}@keyframes QuantifiableHabitsChart-module_bounce__r-Afq{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}.QuantifiableHabitsChart-module_legendColor__zbPoV{border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2);height:12px;position:relative;transition:all .2s ease;width:12px}.QuantifiableHabitsChart-module_legendItem__Zl7fz:hover .QuantifiableHabitsChart-module_legendColor__zbPoV{transform:scale(1.2)}.QuantifiableHabitsChart-module_legendLabel__H3oFL{color:var(--color-text);font-size:13px;font-weight:500;position:relative;z-index:1}.QuantifiableHabitsChart-module_chart__FMeA-{display:block;margin:0 auto}.QuantifiableHabitsChart-module_gridLine__CTNIq{stroke:var(--color-border);stroke-opacity:.15;stroke-dasharray:4,4}.QuantifiableHabitsChart-module_line__CpYip{fill:none;stroke-width:2.5;filter:drop-shadow(0 2px 4px rgba(0,0,0,.1));transition:opacity .3s ease}.QuantifiableHabitsChart-module_xAxis__lbgBG,.QuantifiableHabitsChart-module_yAxis__Y6WeV{color:var(--color-text-secondary);font-size:11px;font-weight:500}.QuantifiableHabitsChart-module_xAxis__lbgBG line,.QuantifiableHabitsChart-module_xAxis__lbgBG path,.QuantifiableHabitsChart-module_yAxis__Y6WeV line,.QuantifiableHabitsChart-module_yAxis__Y6WeV path{stroke:var(--color-border);stroke-opacity:.3}.QuantifiableHabitsChart-module_xAxis__lbgBG text,.QuantifiableHabitsChart-module_yAxis__Y6WeV text{fill:var(--color-text-secondary)}.QuantifiableHabitsChart-module_dataPoint__s8UMX{filter:drop-shadow(0 2px 4px rgba(0,0,0,.2));transition:all .3s ease}.QuantifiableHabitsChart-module_dataPoint__s8UMX:hover{r:6;filter:drop-shadow(0 4px 8px rgba(0,0,0,.3))}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlF1YW50aWZpYWJsZUhhYml0c0NoYXJ0Lm1vZHVsZS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaURBTUksa0JBQW1CLENBTG5CLDRDQUE2QyxDQUM3Qyw4QkFBK0IsQ0FFL0IsWUFBYSxDQUNiLHFCQUFzQixDQUZ0Qix5QkFJSixDQUVBLGdEQUdJLGtCQUFtQixDQUZuQixZQUFhLENBQ2Isc0JBQXVCLENBRXZCLCtCQUNKLENBRUEsa0RBR0ksMkNBQTRDLENBRzVDLG9DQUFxQyxDQURyQyxrQkFBbUIsQ0FKbkIsWUFBYSxDQUNiLE9BQVEsQ0FFUixXQUdKLENBRUEsa0RBRUksa0JBQW1CLENBR25CLHNCQUF1QixDQUN2QixXQUFZLENBQ1osaUJBQWtCLENBQ2xCLGlDQUFrQyxDQUdsQyxjQUFlLENBVmYsWUFBYSxDQVFiLGNBQWUsQ0FDZixlQUFnQixDQVBoQixPQUFRLENBQ1IsZ0JBQWlCLENBU2pCLGlCQUFrQixDQURsQix1QkFFSixDQUVBLHdEQUNJLHFDQUFzQyxDQUN0QywwQkFDSixDQUVBLCtGQUNJLCtCQUFnQyxDQUVoQyx5Q0FBOEMsQ0FEOUMsK0JBRUosQ0FFQSxnREFFSSxvQkFBcUIsQ0FEckIsY0FFSixDQUVBLGlEQUNJLG9CQUNKLENBRUEseUJBQ0ksaURBQ0ksWUFDSixDQUNKLENBRUEsOENBTUksMkNBQTRDLENBRTVDLG9DQUFxQyxDQURyQyxrQkFBbUIsQ0FObkIsWUFBYSxDQUNiLGNBQWUsQ0FDZixPQUFRLENBTVIsc0JBQXVCLENBTHZCLCtCQUFnQyxDQUNoQyxZQUtKLENBRUEsa0RBRUksa0JBQW1CLENBR25CLDRDQUE2QyxDQUM3QyxzQ0FBdUMsQ0FDdkMsa0JBQW1CLENBR25CLG9DQUF5QyxDQUZ6QyxjQUFlLENBUGYsWUFBYSxDQUViLE9BQVEsQ0FTUixlQUFnQixDQVJoQixnQkFBaUIsQ0FPakIsaUJBQWtCLENBRmxCLHVCQUlKLENBRUEseURBT0ksMkVBQThFLENBRDlFLFFBQVMsQ0FMVCxVQUFXLENBR1gsTUFBTyxDQUlQLFNBQVUsQ0FOVixpQkFBa0IsQ0FHbEIsT0FBUSxDQUZSLEtBQU0sQ0FNTiwyQkFDSixDQUVBLHdEQUdJLGlDQUFrQyxDQURsQyxxQ0FBMEMsQ0FEMUMsMEJBR0osQ0FFQSwrREFDSSxTQUNKLENBRUEsaUdBRUksMkNBQTRDLENBRDVDLFVBRUosQ0FFQSx1R0FDSSxVQUNKLENBRUEsb0pBQ0ksK0NBQ0osQ0FFQSxtREFHSSxrRUFBNkIsQ0FDN0IseUNBQTJDLENBRjNDLG9CQUFxQixDQURyQixjQUlKLENBRUEsd0RBQ0ksTUFBVyx1QkFBMEIsQ0FDckMsSUFBTSwwQkFBNkIsQ0FDdkMsQ0FFQSxtREFHSSxpQkFBa0IsQ0FFbEIsbUNBQXdDLENBSHhDLFdBQVksQ0FJWixpQkFBa0IsQ0FGbEIsdUJBQXlCLENBSHpCLFVBTUosQ0FFQSwyR0FDSSxvQkFDSixDQUVBLG1EQUdJLHVCQUF3QixDQUZ4QixjQUFlLENBQ2YsZUFBZ0IsQ0FFaEIsaUJBQWtCLENBQ2xCLFNBQ0osQ0FFQSw2Q0FDSSxhQUFjLENBQ2QsYUFDSixDQUVBLGdEQUNJLDBCQUEyQixDQUMzQixrQkFBb0IsQ0FDcEIsb0JBQ0osQ0FFQSw0Q0FDSSxTQUFVLENBQ1YsZ0JBQWlCLENBRWpCLDRDQUFpRCxDQURqRCwyQkFFSixDQUVBLDBGQUVJLGlDQUFrQyxDQUNsQyxjQUFlLENBQ2YsZUFDSixDQUVBLHdNQUlJLDBCQUEyQixDQUMzQixpQkFDSixDQUVBLG9HQUVJLGdDQUNKLENBRUEsaURBRUksNENBQWlELENBRGpELHVCQUVKLENBRUEsdURBQ0ksR0FBSSxDQUNKLDRDQUNKIiwiZmlsZSI6IlF1YW50aWZpYWJsZUhhYml0c0NoYXJ0Lm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXhsKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLmNvbnRyb2xzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy14bCk7XG59XG5cbi52aWV3VG9nZ2xlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogNHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtdGVydGlhcnkpO1xuICAgIHBhZGRpbmc6IDRweDtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG59XG5cbi52aWV3QnV0dG9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA2cHg7XG4gICAgcGFkZGluZzogOHB4IDEycHg7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnZpZXdCdXR0b246aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXN1cmZhY2UtaG92ZXIpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbn1cblxuLnZpZXdCdXR0b24uYWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1pbnZlcnNlKTtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjMpO1xufVxuXG4udmlld0ljb24ge1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi52aWV3TGFiZWwge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDY0MHB4KSB7XG4gICAgLnZpZXdMYWJlbCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4ubGVnZW5kIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBnYXA6IDhweDtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLXhsKTtcbiAgICBwYWRkaW5nOiAxMnB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtdGVydGlhcnkpO1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLmxlZ2VuZEl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDhweDtcbiAgICBwYWRkaW5nOiA2cHggMTJweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSk7XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tYm9yZGVyLXByaW1hcnkpO1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5sZWdlbmRJdGVtOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdHJhbnNwYXJlbnQsIHZhcigtLWNvbG9yLXByaW1hcnktbGlnaHRlcikpO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2U7XG59XG5cbi5sZWdlbmRJdGVtOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG59XG5cbi5sZWdlbmRJdGVtOmhvdmVyOjpiZWZvcmUge1xuICAgIG9wYWNpdHk6IDE7XG59XG5cbi5sZWdlbmRJdGVtLmluYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAwLjQ7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSk7XG59XG5cbi5sZWdlbmRJdGVtLmluYWN0aXZlOmhvdmVyIHtcbiAgICBvcGFjaXR5OiAwLjY7XG59XG5cbi5sZWdlbmRJdGVtLmluYWN0aXZlIC5sZWdlbmRDb2xvciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItdGV4dC10ZXJ0aWFyeSkgIWltcG9ydGFudDtcbn1cblxuLmxlZ2VuZEVtb2ppIHtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGFuaW1hdGlvbjogYm91bmNlIDJzIGluZmluaXRlO1xuICAgIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tYW5pbWF0aW9uLWRlbGF5LCAwcyk7XG59XG5cbkBrZXlmcmFtZXMgYm91bmNlIHtcbiAgICAwJSwgMTAwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfVxuICAgIDUwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTsgfVxufVxuXG4ubGVnZW5kQ29sb3Ige1xuICAgIHdpZHRoOiAxMnB4O1xuICAgIGhlaWdodDogMTJweDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjIpO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmxlZ2VuZEl0ZW06aG92ZXIgLmxlZ2VuZENvbG9yIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMik7XG59XG5cbi5sZWdlbmRMYWJlbCB7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAxO1xufVxuXG4uY2hhcnQge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbjogMCBhdXRvO1xufVxuXG4uZ3JpZExpbmUge1xuICAgIHN0cm9rZTogdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBzdHJva2Utb3BhY2l0eTogMC4xNTtcbiAgICBzdHJva2UtZGFzaGFycmF5OiA0LCA0O1xufVxuXG4ubGluZSB7XG4gICAgZmlsbDogbm9uZTtcbiAgICBzdHJva2Utd2lkdGg6IDIuNTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTtcbiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMSkpO1xufVxuXG4ueEF4aXMsXG4ueUF4aXMge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG4gICAgZm9udC1zaXplOiAxMXB4O1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi54QXhpcyBsaW5lLFxuLnhBeGlzIHBhdGgsXG4ueUF4aXMgbGluZSxcbi55QXhpcyBwYXRoIHtcbiAgICBzdHJva2U6IHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgc3Ryb2tlLW9wYWNpdHk6IDAuMztcbn1cblxuLnhBeGlzIHRleHQsXG4ueUF4aXMgdGV4dCB7XG4gICAgZmlsbDogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xufVxuXG4uZGF0YVBvaW50IHtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSk7XG59XG5cbi5kYXRhUG9pbnQ6aG92ZXIge1xuICAgIHI6IDY7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjMpKTtcbn0iXX0= */";
|
|
1415
|
+
var styles$4 = {"container":"QuantifiableHabitsChart-module_container__X5SBp","controls":"QuantifiableHabitsChart-module_controls__O-ObQ","viewToggle":"QuantifiableHabitsChart-module_viewToggle__24hKA","viewButton":"QuantifiableHabitsChart-module_viewButton__WFU6j","active":"QuantifiableHabitsChart-module_active__Pjqy9","viewIcon":"QuantifiableHabitsChart-module_viewIcon__b2mfk","viewLabel":"QuantifiableHabitsChart-module_viewLabel__9MjCU","legend":"QuantifiableHabitsChart-module_legend__3Ki7c","legendItem":"QuantifiableHabitsChart-module_legendItem__Zl7fz","inactive":"QuantifiableHabitsChart-module_inactive__TzZC-","legendColor":"QuantifiableHabitsChart-module_legendColor__zbPoV","legendEmoji":"QuantifiableHabitsChart-module_legendEmoji__HG9CZ","legendLabel":"QuantifiableHabitsChart-module_legendLabel__H3oFL","chart":"QuantifiableHabitsChart-module_chart__FMeA-","gridLine":"QuantifiableHabitsChart-module_gridLine__CTNIq","line":"QuantifiableHabitsChart-module_line__CpYip","xAxis":"QuantifiableHabitsChart-module_xAxis__lbgBG","yAxis":"QuantifiableHabitsChart-module_yAxis__Y6WeV","dataPoint":"QuantifiableHabitsChart-module_dataPoint__s8UMX"};
|
|
1416
|
+
styleInject(css_248z$4);
|
|
1417
|
+
|
|
1418
|
+
// Default colors as fallback
|
|
1419
|
+
const DEFAULT_HABIT_COLORS = {
|
|
1420
|
+
'Exercise': '#6BCB77',
|
|
1421
|
+
'Meditation': '#4D96FF',
|
|
1422
|
+
'Reading': '#FFB319',
|
|
1423
|
+
'Water': '#00D9FF',
|
|
1424
|
+
'Steps': '#FF6B6B',
|
|
1425
|
+
'Sleep': '#9B59B6',
|
|
1426
|
+
'Calories': '#FF9F1C',
|
|
1427
|
+
'Study': '#C774E8'
|
|
1428
|
+
};
|
|
1429
|
+
const QuantifiableHabitsChart = ({ data, width = 800, height = 400, defaultViewType = 'daily', periodType = 'month', habitColors: customHabitColors = {}, habitEmojis: customHabitEmojis = {} }) => {
|
|
1430
|
+
const svgRef = React.useRef(null);
|
|
1431
|
+
const [viewType, setViewType] = React.useState(defaultViewType);
|
|
1432
|
+
const [activeHabits, setActiveHabits] = React.useState([]);
|
|
1433
|
+
const [hoveredHabit, setHoveredHabit] = React.useState(null);
|
|
1434
|
+
const margin = { top: 20, right: 20, bottom: 50, left: 50 };
|
|
1435
|
+
const chartWidth = width - margin.left - margin.right;
|
|
1436
|
+
const chartHeight = height - margin.top - margin.bottom;
|
|
1437
|
+
const habits = React.useMemo(() => Object.keys(data).filter(key => key !== 'dates'), [data]);
|
|
1438
|
+
React.useEffect(() => {
|
|
1439
|
+
setActiveHabits(habits);
|
|
1440
|
+
}, [habits]);
|
|
1441
|
+
const availableViewTypes = React.useMemo(() => {
|
|
1442
|
+
switch (periodType) {
|
|
1443
|
+
case 'week':
|
|
1444
|
+
return ['daily'];
|
|
1445
|
+
case 'month':
|
|
1446
|
+
return ['daily', 'weekly'];
|
|
1447
|
+
case 'quarter':
|
|
1448
|
+
return ['weekly', 'monthly'];
|
|
1449
|
+
case 'year':
|
|
1450
|
+
return ['daily', 'weekly', 'monthly', 'quarterly'];
|
|
1451
|
+
case 'allTime':
|
|
1452
|
+
return ['monthly', 'quarterly'];
|
|
1453
|
+
default:
|
|
1454
|
+
return ['daily'];
|
|
1455
|
+
}
|
|
1456
|
+
}, [periodType]);
|
|
1457
|
+
const getColor = (habit) => {
|
|
1458
|
+
// First check custom colors, then defaults, then generate deterministic color
|
|
1459
|
+
return customHabitColors[habit] || DEFAULT_HABIT_COLORS[habit] || `hsl(${Math.abs(habit.split('').reduce((a, b) => a + b.charCodeAt(0), 0)) % 360}, 70%, 50%)`;
|
|
1460
|
+
};
|
|
1461
|
+
// Aggregate data based on view type
|
|
1462
|
+
const aggregateData = React.useMemo(() => {
|
|
1463
|
+
if (viewType === 'daily' || !data.dates.length) {
|
|
1464
|
+
return data;
|
|
1465
|
+
}
|
|
1466
|
+
const aggregated = { dates: [] };
|
|
1467
|
+
const dateGroups = new Map();
|
|
1468
|
+
// Group dates by period
|
|
1469
|
+
data.dates.forEach((dateStr, index) => {
|
|
1470
|
+
const date = new Date(dateStr);
|
|
1471
|
+
let groupKey;
|
|
1472
|
+
switch (viewType) {
|
|
1473
|
+
case 'weekly': {
|
|
1474
|
+
// Get ISO week start (Monday)
|
|
1475
|
+
const weekStart = new Date(date);
|
|
1476
|
+
const day = weekStart.getDay();
|
|
1477
|
+
const diff = weekStart.getDate() - day + (day === 0 ? -6 : 1);
|
|
1478
|
+
weekStart.setDate(diff);
|
|
1479
|
+
// Use the Monday date as the group key to ensure proper sorting
|
|
1480
|
+
groupKey = weekStart.toISOString().split('T')[0];
|
|
1481
|
+
break;
|
|
1482
|
+
}
|
|
1483
|
+
case 'monthly':
|
|
1484
|
+
// Use first day of month for consistent sorting
|
|
1485
|
+
groupKey = `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-01`;
|
|
1486
|
+
break;
|
|
1487
|
+
case 'quarterly': {
|
|
1488
|
+
const quarter = Math.floor(date.getMonth() / 3) + 1;
|
|
1489
|
+
const quarterStartMonth = (quarter - 1) * 3;
|
|
1490
|
+
// Use first day of quarter for consistent sorting and grouping
|
|
1491
|
+
const quarterStart = new Date(date.getFullYear(), quarterStartMonth, 1);
|
|
1492
|
+
groupKey = quarterStart.toISOString().split('T')[0];
|
|
1493
|
+
break;
|
|
1494
|
+
}
|
|
1495
|
+
default:
|
|
1496
|
+
groupKey = dateStr;
|
|
1497
|
+
}
|
|
1498
|
+
if (!dateGroups.has(groupKey)) {
|
|
1499
|
+
dateGroups.set(groupKey, []);
|
|
1500
|
+
}
|
|
1501
|
+
dateGroups.get(groupKey).push(index);
|
|
1502
|
+
});
|
|
1503
|
+
// Calculate aggregated values - sort dates for proper chronological order
|
|
1504
|
+
aggregated.dates = Array.from(dateGroups.keys()).sort();
|
|
1505
|
+
habits.forEach(habit => {
|
|
1506
|
+
aggregated[habit] = aggregated.dates.map(groupKey => {
|
|
1507
|
+
const indices = dateGroups.get(groupKey);
|
|
1508
|
+
const values = indices
|
|
1509
|
+
.map(i => data[habit][i])
|
|
1510
|
+
.filter(v => typeof v === 'number' && !isNaN(v));
|
|
1511
|
+
if (values.length === 0)
|
|
1512
|
+
return 0;
|
|
1513
|
+
// Calculate average for aggregated periods
|
|
1514
|
+
return Math.round(values.reduce((sum, v) => sum + v, 0) / values.length);
|
|
1515
|
+
});
|
|
1516
|
+
});
|
|
1517
|
+
return aggregated;
|
|
1518
|
+
}, [data, viewType, habits]);
|
|
1519
|
+
const toggleHabit = (habit) => {
|
|
1520
|
+
setActiveHabits(prev => prev.includes(habit)
|
|
1521
|
+
? prev.filter(h => h !== habit)
|
|
1522
|
+
: [...prev, habit]);
|
|
1523
|
+
};
|
|
1524
|
+
React.useEffect(() => {
|
|
1525
|
+
if (!svgRef.current || aggregateData.dates.length === 0)
|
|
1526
|
+
return;
|
|
1527
|
+
const svg = d3__namespace.select(svgRef.current);
|
|
1528
|
+
svg.selectAll('*').remove();
|
|
1529
|
+
const g = svg.append('g')
|
|
1530
|
+
.attr('transform', `translate(${margin.left},${margin.top})`);
|
|
1531
|
+
const dates = aggregateData.dates.map(d => new Date(d));
|
|
1532
|
+
const xScale = d3__namespace.scaleTime()
|
|
1533
|
+
.domain(d3__namespace.extent(dates))
|
|
1534
|
+
.range([0, chartWidth]);
|
|
1535
|
+
const maxValue = Math.max(...activeHabits.flatMap(habit => aggregateData[habit].filter(v => typeof v === 'number')));
|
|
1536
|
+
const yScale = d3__namespace.scaleLinear()
|
|
1537
|
+
.domain([0, maxValue * 1.1])
|
|
1538
|
+
.range([chartHeight, 0]);
|
|
1539
|
+
g.selectAll('.grid-line-y')
|
|
1540
|
+
.data(yScale.ticks(5))
|
|
1541
|
+
.enter().append('line')
|
|
1542
|
+
.attr('class', styles$4.gridLine)
|
|
1543
|
+
.attr('x1', 0)
|
|
1544
|
+
.attr('y1', d => yScale(d))
|
|
1545
|
+
.attr('x2', chartWidth)
|
|
1546
|
+
.attr('y2', d => yScale(d));
|
|
1547
|
+
const line = d3__namespace.line()
|
|
1548
|
+
.x(d => xScale(d[0]))
|
|
1549
|
+
.y(d => yScale(d[1]))
|
|
1550
|
+
.curve(d3__namespace.curveMonotoneX);
|
|
1551
|
+
activeHabits.forEach(habit => {
|
|
1552
|
+
const habitData = dates.map((date, i) => [date, aggregateData[habit][i]]).filter(d => typeof d[1] === 'number');
|
|
1553
|
+
g.append('path')
|
|
1554
|
+
.datum(habitData)
|
|
1555
|
+
.attr('class', styles$4.line)
|
|
1556
|
+
.attr('d', line)
|
|
1557
|
+
.attr('stroke', getColor(habit))
|
|
1558
|
+
.attr('opacity', hoveredHabit && hoveredHabit !== habit ? 0.3 : 1);
|
|
1559
|
+
g.selectAll(`.circle-${habit}`)
|
|
1560
|
+
.data(habitData)
|
|
1561
|
+
.enter().append('circle')
|
|
1562
|
+
.attr('class', styles$4.dataPoint)
|
|
1563
|
+
.attr('cx', d => xScale(d[0]))
|
|
1564
|
+
.attr('cy', d => yScale(d[1]))
|
|
1565
|
+
.attr('r', 4)
|
|
1566
|
+
.attr('fill', getColor(habit))
|
|
1567
|
+
.attr('opacity', hoveredHabit && hoveredHabit !== habit ? 0.3 : 1);
|
|
1568
|
+
});
|
|
1569
|
+
// Helper function to get ISO week number
|
|
1570
|
+
const getISOWeek = (date) => {
|
|
1571
|
+
const d = new Date(date);
|
|
1572
|
+
d.setHours(0, 0, 0, 0);
|
|
1573
|
+
d.setDate(d.getDate() + 3 - (d.getDay() + 6) % 7);
|
|
1574
|
+
const week1 = new Date(d.getFullYear(), 0, 4);
|
|
1575
|
+
return 1 + Math.round(((d.getTime() - week1.getTime()) / 86400000 - 3 + (week1.getDay() + 6) % 7) / 7);
|
|
1576
|
+
};
|
|
1577
|
+
// Format x-axis based on view type
|
|
1578
|
+
const xAxisFormat = (() => {
|
|
1579
|
+
switch (viewType) {
|
|
1580
|
+
case 'daily':
|
|
1581
|
+
return d3__namespace.timeFormat('%Y-%m-%d');
|
|
1582
|
+
case 'weekly':
|
|
1583
|
+
return (d) => {
|
|
1584
|
+
const weekNum = getISOWeek(d);
|
|
1585
|
+
return `${d.getFullYear()}-W${weekNum.toString().padStart(2, '0')}`;
|
|
1586
|
+
};
|
|
1587
|
+
case 'monthly':
|
|
1588
|
+
return d3__namespace.timeFormat('%Y-%m');
|
|
1589
|
+
case 'quarterly':
|
|
1590
|
+
return (d) => {
|
|
1591
|
+
const quarter = Math.floor(d.getMonth() / 3) + 1;
|
|
1592
|
+
return `${d.getFullYear()}-Q${quarter}`;
|
|
1593
|
+
};
|
|
1594
|
+
default:
|
|
1595
|
+
return d3__namespace.timeFormat('%Y-%m-%d');
|
|
1596
|
+
}
|
|
1597
|
+
})();
|
|
1598
|
+
// Determine number of ticks based on view type and data
|
|
1599
|
+
const tickCount = (() => {
|
|
1600
|
+
switch (viewType) {
|
|
1601
|
+
case 'daily':
|
|
1602
|
+
return Math.min(10, aggregateData.dates.length);
|
|
1603
|
+
case 'weekly':
|
|
1604
|
+
return Math.min(12, aggregateData.dates.length);
|
|
1605
|
+
case 'monthly':
|
|
1606
|
+
return Math.min(12, aggregateData.dates.length);
|
|
1607
|
+
case 'quarterly':
|
|
1608
|
+
return aggregateData.dates.length; // Show all quarters
|
|
1609
|
+
default:
|
|
1610
|
+
return undefined;
|
|
1611
|
+
}
|
|
1612
|
+
})();
|
|
1613
|
+
const xAxisGenerator = d3__namespace.axisBottom(xScale)
|
|
1614
|
+
.tickFormat(d => xAxisFormat(d));
|
|
1615
|
+
// Set tick values for quarterly to avoid duplicates
|
|
1616
|
+
if (viewType === 'quarterly') {
|
|
1617
|
+
xAxisGenerator.tickValues(dates);
|
|
1618
|
+
}
|
|
1619
|
+
else if (tickCount) {
|
|
1620
|
+
xAxisGenerator.ticks(tickCount);
|
|
1621
|
+
}
|
|
1622
|
+
const xAxis = g.append('g')
|
|
1623
|
+
.attr('class', styles$4.xAxis)
|
|
1624
|
+
.attr('transform', `translate(0,${chartHeight})`)
|
|
1625
|
+
.call(xAxisGenerator);
|
|
1626
|
+
// Rotate labels for better readability if needed
|
|
1627
|
+
if (viewType === 'daily' || viewType === 'weekly') {
|
|
1628
|
+
xAxis.selectAll('text')
|
|
1629
|
+
.style('text-anchor', 'end')
|
|
1630
|
+
.attr('dx', '-.8em')
|
|
1631
|
+
.attr('dy', '.15em')
|
|
1632
|
+
.attr('transform', 'rotate(-45)');
|
|
1633
|
+
}
|
|
1634
|
+
g.append('g')
|
|
1635
|
+
.attr('class', styles$4.yAxis)
|
|
1636
|
+
.call(d3__namespace.axisLeft(yScale));
|
|
1637
|
+
}, [aggregateData, activeHabits, chartWidth, chartHeight, margin, hoveredHabit, customHabitColors]);
|
|
1638
|
+
// View type icons and labels
|
|
1639
|
+
const viewTypeConfig = {
|
|
1640
|
+
daily: { icon: '📅', label: 'Daily' },
|
|
1641
|
+
weekly: { icon: '📆', label: 'Weekly' },
|
|
1642
|
+
monthly: { icon: '🗓️', label: 'Monthly' },
|
|
1643
|
+
quarterly: { icon: '📊', label: 'Quarterly' }
|
|
1644
|
+
};
|
|
1645
|
+
return (jsxRuntime.jsxs("div", { className: styles$4.container, children: [jsxRuntime.jsx("div", { className: styles$4.controls, children: jsxRuntime.jsx("div", { className: styles$4.viewToggle, children: availableViewTypes.map(type => (jsxRuntime.jsxs("button", { className: `${styles$4.viewButton} ${viewType === type ? styles$4.active : ''}`, onClick: () => setViewType(type), title: viewTypeConfig[type].label, children: [jsxRuntime.jsx("span", { className: styles$4.viewIcon, children: viewTypeConfig[type].icon }), jsxRuntime.jsx("span", { className: styles$4.viewLabel, children: viewTypeConfig[type].label })] }, type))) }) }), jsxRuntime.jsx("div", { className: styles$4.legend, children: habits.map(habit => (jsxRuntime.jsxs("button", { className: `${styles$4.legendItem} ${!activeHabits.includes(habit) ? styles$4.inactive : ''}`, onClick: () => toggleHabit(habit), onMouseEnter: () => setHoveredHabit(habit), onMouseLeave: () => setHoveredHabit(null), children: [jsxRuntime.jsx("span", { className: styles$4.legendEmoji, children: customHabitEmojis[habit] || '📊' }), jsxRuntime.jsx("span", { className: styles$4.legendColor, style: { backgroundColor: getColor(habit) } }), jsxRuntime.jsx("span", { className: styles$4.legendLabel, children: habit })] }, habit))) }), jsxRuntime.jsx("svg", { ref: svgRef, width: width, height: height, className: styles$4.chart })] }));
|
|
1646
|
+
};
|
|
1647
|
+
|
|
1648
|
+
var css_248z$3 = ".SleepChart-module_container__RjHVU{background:var(--color-background-secondary);border-radius:var(--radius-lg);padding:var(--spacing-xl)}.SleepChart-module_header__bcoWe{align-items:center;display:flex;justify-content:space-between;margin-bottom:var(--spacing-xl)}.SleepChart-module_title__6-QII{color:var(--color-text);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}.SleepChart-module_legend__VsqQj{display:flex;gap:var(--spacing-xl)}.SleepChart-module_legendItem__2c1nd{align-items:center;color:var(--color-text-secondary);display:flex;font-size:var(--font-size-sm);gap:var(--spacing-sm)}.SleepChart-module_sleepDot__qCY6O{background:#9b59b6;border-radius:var(--radius-full);height:12px;width:12px}.SleepChart-module_wakeDot__-RcrT{background:#3498db;border-radius:var(--radius-full);height:12px;width:12px}.SleepChart-module_chart__jC1nL{display:block}.SleepChart-module_gridLine__hi715{stroke:var(--color-border);stroke-opacity:.1;stroke-dasharray:2,2}.SleepChart-module_sleepBar__Hk76f{transition:var(--transition-base)}.SleepChart-module_sleepBar__Hk76f:hover{filter:brightness(1.1)}.SleepChart-module_xAxis__xzXyM,.SleepChart-module_yAxis__7N-LA{color:var(--color-text-secondary);font-size:var(--font-size-xs)}.SleepChart-module_xAxis__xzXyM line,.SleepChart-module_xAxis__xzXyM path,.SleepChart-module_yAxis__7N-LA line,.SleepChart-module_yAxis__7N-LA path{stroke:var(--color-border)}.SleepChart-module_xAxis__xzXyM text,.SleepChart-module_yAxis__7N-LA text{fill:var(--color-text-secondary)}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNsZWVwQ2hhcnQubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQ0FDSSw0Q0FBNkMsQ0FDN0MsOEJBQStCLENBQy9CLHlCQUNKLENBRUEsaUNBR0ksa0JBQW1CLENBRm5CLFlBQWEsQ0FDYiw2QkFBOEIsQ0FFOUIsK0JBQ0osQ0FFQSxnQ0FHSSx1QkFBd0IsQ0FGeEIsNkJBQThCLENBQzlCLHVDQUVKLENBRUEsaUNBQ0ksWUFBYSxDQUNiLHFCQUNKLENBRUEscUNBRUksa0JBQW1CLENBR25CLGlDQUFrQyxDQUpsQyxZQUFhLENBR2IsNkJBQThCLENBRDlCLHFCQUdKLENBRUEsbUNBSUksa0JBQW1CLENBRG5CLGdDQUFpQyxDQURqQyxXQUFZLENBRFosVUFJSixDQUVBLGtDQUlJLGtCQUFtQixDQURuQixnQ0FBaUMsQ0FEakMsV0FBWSxDQURaLFVBSUosQ0FFQSxnQ0FDSSxhQUNKLENBRUEsbUNBQ0ksMEJBQTJCLENBQzNCLGlCQUFtQixDQUNuQixvQkFDSixDQUVBLG1DQUNJLGlDQUNKLENBRUEseUNBQ0ksc0JBQ0osQ0FFQSxnRUFFSSxpQ0FBa0MsQ0FDbEMsNkJBQ0osQ0FFQSxvSkFJSSwwQkFDSixDQUVBLDBFQUVJLGdDQUNKIiwiZmlsZSI6IlNsZWVwQ2hhcnQubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jb250YWluZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmcteGwpO1xufVxuXG4uaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmcteGwpO1xufVxuXG4udGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWxnKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbn1cblxuLmxlZ2VuZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IHZhcigtLXNwYWNpbmcteGwpO1xufVxuXG4ubGVnZW5kSXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3BhY2luZy1zbSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi5zbGVlcERvdCB7XG4gICAgd2lkdGg6IDEycHg7XG4gICAgaGVpZ2h0OiAxMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1mdWxsKTtcbiAgICBiYWNrZ3JvdW5kOiAjOUI1OUI2O1xufVxuXG4ud2FrZURvdCB7XG4gICAgd2lkdGg6IDEycHg7XG4gICAgaGVpZ2h0OiAxMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1mdWxsKTtcbiAgICBiYWNrZ3JvdW5kOiAjMzQ5OERCO1xufVxuXG4uY2hhcnQge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uZ3JpZExpbmUge1xuICAgIHN0cm9rZTogdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBzdHJva2Utb3BhY2l0eTogMC4xO1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDIsIDI7XG59XG5cbi5zbGVlcEJhciB7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbn1cblxuLnNsZWVwQmFyOmhvdmVyIHtcbiAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMS4xKTtcbn1cblxuLnhBeGlzLFxuLnlBeGlzIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhzKTtcbn1cblxuLnhBeGlzIGxpbmUsXG4ueEF4aXMgcGF0aCxcbi55QXhpcyBsaW5lLFxuLnlBeGlzIHBhdGgge1xuICAgIHN0cm9rZTogdmFyKC0tY29sb3ItYm9yZGVyKTtcbn1cblxuLnhBeGlzIHRleHQsXG4ueUF4aXMgdGV4dCB7XG4gICAgZmlsbDogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xufSJdfQ== */";
|
|
1649
|
+
var styles$3 = {"container":"SleepChart-module_container__RjHVU","header":"SleepChart-module_header__bcoWe","title":"SleepChart-module_title__6-QII","legend":"SleepChart-module_legend__VsqQj","legendItem":"SleepChart-module_legendItem__2c1nd","sleepDot":"SleepChart-module_sleepDot__qCY6O","wakeDot":"SleepChart-module_wakeDot__-RcrT","chart":"SleepChart-module_chart__jC1nL","gridLine":"SleepChart-module_gridLine__hi715","sleepBar":"SleepChart-module_sleepBar__Hk76f","xAxis":"SleepChart-module_xAxis__xzXyM","yAxis":"SleepChart-module_yAxis__7N-LA"};
|
|
1650
|
+
styleInject(css_248z$3);
|
|
1651
|
+
|
|
1652
|
+
const parseTimeToDecimal = (time) => {
|
|
1653
|
+
const [hours, minutes] = time.split(':').map(Number);
|
|
1654
|
+
return hours + minutes / 60;
|
|
1655
|
+
};
|
|
1656
|
+
const SleepChart = ({ sleepData, width = 800, height = 300, onDateClick }) => {
|
|
1657
|
+
const svgRef = React.useRef(null);
|
|
1658
|
+
const margin = { top: 20, right: 20, bottom: 40, left: 60 };
|
|
1659
|
+
const chartWidth = width - margin.left - margin.right;
|
|
1660
|
+
const chartHeight = height - margin.top - margin.bottom;
|
|
1661
|
+
React.useEffect(() => {
|
|
1662
|
+
if (!svgRef.current || sleepData.length === 0)
|
|
1663
|
+
return;
|
|
1664
|
+
const svg = d3__namespace.select(svgRef.current);
|
|
1665
|
+
svg.selectAll('*').remove();
|
|
1666
|
+
const g = svg.append('g')
|
|
1667
|
+
.attr('transform', `translate(${margin.left},${margin.top})`);
|
|
1668
|
+
const xScale = d3__namespace.scaleLinear()
|
|
1669
|
+
.domain([18, 42])
|
|
1670
|
+
.range([0, chartWidth]);
|
|
1671
|
+
const yDomain = sleepData.map(d => d.date);
|
|
1672
|
+
const yScale = d3__namespace.scaleBand()
|
|
1673
|
+
.domain(yDomain)
|
|
1674
|
+
.range([0, chartHeight])
|
|
1675
|
+
.paddingInner(0.1)
|
|
1676
|
+
.paddingOuter(0.05);
|
|
1677
|
+
g.selectAll('.grid-line-x')
|
|
1678
|
+
.data(d3__namespace.range(18, 43, 3))
|
|
1679
|
+
.enter().append('line')
|
|
1680
|
+
.attr('class', styles$3.gridLine)
|
|
1681
|
+
.attr('x1', d => xScale(d))
|
|
1682
|
+
.attr('y1', 0)
|
|
1683
|
+
.attr('x2', d => xScale(d))
|
|
1684
|
+
.attr('y2', chartHeight);
|
|
1685
|
+
sleepData.forEach((dayData) => {
|
|
1686
|
+
const yValue = yScale(dayData.date);
|
|
1687
|
+
if (yValue === undefined)
|
|
1688
|
+
return;
|
|
1689
|
+
const barHeight = yScale.bandwidth();
|
|
1690
|
+
const sleepGroup = g.append('g')
|
|
1691
|
+
.attr('class', styles$3.sleepBar)
|
|
1692
|
+
.style('cursor', 'pointer')
|
|
1693
|
+
.on('click', () => onDateClick?.(dayData.date));
|
|
1694
|
+
// Handle sleep time and wake hour separately
|
|
1695
|
+
let sleepHour = null;
|
|
1696
|
+
let wakeHour = null;
|
|
1697
|
+
if (dayData.sleep_time) {
|
|
1698
|
+
sleepHour = parseTimeToDecimal(dayData.sleep_time);
|
|
1699
|
+
if (sleepHour < 18)
|
|
1700
|
+
sleepHour += 24;
|
|
1701
|
+
}
|
|
1702
|
+
if (dayData.wake_hour) {
|
|
1703
|
+
wakeHour = parseTimeToDecimal(dayData.wake_hour);
|
|
1704
|
+
if (sleepHour !== null && wakeHour < sleepHour - 18) {
|
|
1705
|
+
wakeHour += 24;
|
|
1706
|
+
}
|
|
1707
|
+
else if (sleepHour === null && wakeHour < 12) {
|
|
1708
|
+
// If no sleep time but wake is in morning, assume it's next day
|
|
1709
|
+
wakeHour += 24;
|
|
1710
|
+
}
|
|
1711
|
+
}
|
|
1712
|
+
// Draw the bar only if both values exist
|
|
1713
|
+
if (sleepHour !== null && wakeHour !== null) {
|
|
1714
|
+
sleepGroup.append('rect')
|
|
1715
|
+
.attr('x', xScale(sleepHour))
|
|
1716
|
+
.attr('y', yValue)
|
|
1717
|
+
.attr('width', xScale(wakeHour) - xScale(sleepHour))
|
|
1718
|
+
.attr('height', barHeight)
|
|
1719
|
+
.attr('rx', 4)
|
|
1720
|
+
.attr('fill', 'url(#sleepGradient)')
|
|
1721
|
+
.attr('opacity', 0.8);
|
|
1722
|
+
}
|
|
1723
|
+
// Draw sleep dot if sleep time exists
|
|
1724
|
+
if (sleepHour !== null) {
|
|
1725
|
+
sleepGroup.append('circle')
|
|
1726
|
+
.attr('cx', xScale(sleepHour))
|
|
1727
|
+
.attr('cy', yValue + barHeight / 2)
|
|
1728
|
+
.attr('r', 4)
|
|
1729
|
+
.attr('fill', '#9B59B6');
|
|
1730
|
+
}
|
|
1731
|
+
// Draw wake dot if wake hour exists
|
|
1732
|
+
if (wakeHour !== null) {
|
|
1733
|
+
sleepGroup.append('circle')
|
|
1734
|
+
.attr('cx', xScale(wakeHour))
|
|
1735
|
+
.attr('cy', yValue + barHeight / 2)
|
|
1736
|
+
.attr('r', 4)
|
|
1737
|
+
.attr('fill', '#3498DB');
|
|
1738
|
+
}
|
|
1739
|
+
sleepGroup.on('mouseenter', function () {
|
|
1740
|
+
d3__namespace.select(this).select('rect')
|
|
1741
|
+
.transition()
|
|
1742
|
+
.duration(200)
|
|
1743
|
+
.attr('opacity', 1);
|
|
1744
|
+
}).on('mouseleave', function () {
|
|
1745
|
+
d3__namespace.select(this).select('rect')
|
|
1746
|
+
.transition()
|
|
1747
|
+
.duration(200)
|
|
1748
|
+
.attr('opacity', 0.8);
|
|
1749
|
+
});
|
|
1750
|
+
});
|
|
1751
|
+
const defs = svg.append('defs');
|
|
1752
|
+
const gradient = defs.append('linearGradient')
|
|
1753
|
+
.attr('id', 'sleepGradient')
|
|
1754
|
+
.attr('x1', '0%')
|
|
1755
|
+
.attr('x2', '100%');
|
|
1756
|
+
gradient.append('stop')
|
|
1757
|
+
.attr('offset', '0%')
|
|
1758
|
+
.attr('stop-color', '#9B59B6')
|
|
1759
|
+
.attr('stop-opacity', 0.8);
|
|
1760
|
+
gradient.append('stop')
|
|
1761
|
+
.attr('offset', '100%')
|
|
1762
|
+
.attr('stop-color', '#3498DB')
|
|
1763
|
+
.attr('stop-opacity', 0.8);
|
|
1764
|
+
const xAxisTicks = d3__namespace.range(18, 43, 3).map(hour => ({
|
|
1765
|
+
value: hour,
|
|
1766
|
+
label: (hour % 24).toString().padStart(2, '0') + ':00'
|
|
1767
|
+
}));
|
|
1768
|
+
g.append('g')
|
|
1769
|
+
.attr('class', styles$3.xAxis)
|
|
1770
|
+
.attr('transform', `translate(0,${chartHeight})`)
|
|
1771
|
+
.call(d3__namespace.axisBottom(xScale)
|
|
1772
|
+
.tickValues(xAxisTicks.map(t => t.value))
|
|
1773
|
+
.tickFormat((d) => {
|
|
1774
|
+
const tick = xAxisTicks.find(t => t.value === d);
|
|
1775
|
+
return tick ? tick.label : '';
|
|
1776
|
+
}));
|
|
1777
|
+
const yAxisTicks = yDomain.filter((_, i) => i % Math.ceil(yDomain.length / 10) === 0);
|
|
1778
|
+
g.append('g')
|
|
1779
|
+
.attr('class', styles$3.yAxis)
|
|
1780
|
+
.call(d3__namespace.axisLeft(yScale)
|
|
1781
|
+
.tickValues(yAxisTicks)
|
|
1782
|
+
.tickFormat(d => {
|
|
1783
|
+
const date = new Date(d);
|
|
1784
|
+
return `${(date.getMonth() + 1).toString().padStart(2, '0')}/${date.getDate().toString().padStart(2, '0')}`;
|
|
1785
|
+
}));
|
|
1786
|
+
}, [sleepData, chartWidth, chartHeight, margin, onDateClick]);
|
|
1787
|
+
return (jsxRuntime.jsxs("div", { className: styles$3.container, children: [jsxRuntime.jsxs("div", { className: styles$3.header, children: [jsxRuntime.jsx("h3", { className: styles$3.title, children: "Sleep Pattern" }), jsxRuntime.jsxs("div", { className: styles$3.legend, children: [jsxRuntime.jsxs("div", { className: styles$3.legendItem, children: [jsxRuntime.jsx("span", { className: styles$3.sleepDot }), jsxRuntime.jsx("span", { children: "Sleep Time" })] }), jsxRuntime.jsxs("div", { className: styles$3.legendItem, children: [jsxRuntime.jsx("span", { className: styles$3.wakeDot }), jsxRuntime.jsx("span", { children: "Wake Time" })] })] })] }), jsxRuntime.jsx("svg", { ref: svgRef, width: width, height: height, className: styles$3.chart })] }));
|
|
1788
|
+
};
|
|
1789
|
+
|
|
1790
|
+
var css_248z$2 = ".BooleansHeatmap-module_container__IOyeU{background:var(--color-background-secondary);border-radius:var(--radius-lg);margin-bottom:var(--spacing-xl);padding:var(--spacing-xl)}.BooleansHeatmap-module_title__8DRRQ{align-items:center;color:var(--color-text);display:flex;font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);gap:8px;margin-bottom:var(--spacing-lg)}.BooleansHeatmap-module_habitEmoji__Mawv-{display:inline-block;font-size:20px}.BooleansHeatmap-module_chart__-q0Pc{display:block;margin:var(--spacing-lg) 0}.BooleansHeatmap-module_monthLabel__MXbIg{font-weight:var(--font-weight-medium)}.BooleansHeatmap-module_dayLabel__2RRtm,.BooleansHeatmap-module_monthLabel__MXbIg{fill:var(--color-text-secondary);font-size:var(--font-size-xs)}.BooleansHeatmap-module_cell__WADVB{stroke:var(--color-background-secondary);stroke-width:1;cursor:pointer;transition:var(--transition-base)}.BooleansHeatmap-module_cell__WADVB:hover{stroke:var(--color-primary);stroke-width:2}.BooleansHeatmap-module_legend__WqGF8{display:flex;gap:var(--spacing-xl);justify-content:center;margin-top:var(--spacing-lg)}.BooleansHeatmap-module_legendItem__rDE2g{align-items:center;color:var(--color-text-secondary);display:flex;font-size:var(--font-size-sm);gap:var(--spacing-sm)}.BooleansHeatmap-module_legendColor__Z34-d{border:1px solid var(--color-border);border-radius:var(--radius-sm);height:16px;width:16px}.BooleansHeatmap-module_tooltip__-fHl7{background:var(--color-background);border:2px solid var(--color-primary);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);color:var(--color-text);font-size:var(--font-size-sm);padding:var(--spacing-sm);pointer-events:none;z-index:1000}.BooleansHeatmap-module_tooltip__-fHl7 div{margin:var(--spacing-xs) 0}.BooleansHeatmap-module_tooltip__-fHl7 strong{color:var(--color-primary)}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkJvb2xlYW5zSGVhdG1hcC5tb2R1bGUuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUNJLDRDQUE2QyxDQUM3Qyw4QkFBK0IsQ0FFL0IsK0JBQWdDLENBRGhDLHlCQUVKLENBRUEscUNBTUksa0JBQW1CLENBSG5CLHVCQUF3QixDQUV4QixZQUFhLENBSmIsNkJBQThCLENBQzlCLHVDQUF3QyxDQUt4QyxPQUFRLENBSFIsK0JBSUosQ0FFQSwwQ0FFSSxvQkFBcUIsQ0FEckIsY0FFSixDQUVBLHFDQUNJLGFBQWMsQ0FDZCwwQkFDSixDQUVBLDBDQUdJLHFDQUNKLENBRUEsa0ZBTEksZ0NBQWlDLENBQ2pDLDZCQU9KLENBRUEsb0NBQ0ksd0NBQXlDLENBQ3pDLGNBQWUsQ0FDZixjQUFlLENBQ2YsaUNBQ0osQ0FFQSwwQ0FDSSwyQkFBNEIsQ0FDNUIsY0FDSixDQUVBLHNDQUNJLFlBQWEsQ0FDYixxQkFBc0IsQ0FDdEIsc0JBQXVCLENBQ3ZCLDRCQUNKLENBRUEsMENBRUksa0JBQW1CLENBR25CLGlDQUFrQyxDQUpsQyxZQUFhLENBR2IsNkJBQThCLENBRDlCLHFCQUdKLENBRUEsMkNBSUksb0NBQXFDLENBRHJDLDhCQUErQixDQUQvQixXQUFZLENBRFosVUFJSixDQUVBLHVDQUNJLGtDQUFtQyxDQUNuQyxxQ0FBc0MsQ0FDdEMsOEJBQStCLENBSS9CLDJCQUE0QixDQUQ1Qix1QkFBd0IsQ0FEeEIsNkJBQThCLENBRDlCLHlCQUEwQixDQUkxQixtQkFBb0IsQ0FDcEIsWUFDSixDQUVBLDJDQUNJLDBCQUNKLENBRUEsOENBQ0ksMEJBQ0oiLCJmaWxlIjoiQm9vbGVhbnNIZWF0bWFwLm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXhsKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjaW5nLXhsKTtcbn1cblxuLnRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1sZyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy1sZyk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogOHB4O1xufVxuXG4uaGFiaXRFbW9qaSB7XG4gICAgZm9udC1zaXplOiAyMHB4O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLmNoYXJ0IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW46IHZhcigtLXNwYWNpbmctbGcpIDA7XG59XG5cbi5tb250aExhYmVsIHtcbiAgICBmaWxsOiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteHMpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO1xufVxuXG4uZGF5TGFiZWwge1xuICAgIGZpbGw6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14cyk7XG59XG5cbi5jZWxsIHtcbiAgICBzdHJva2U6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5KTtcbiAgICBzdHJva2Utd2lkdGg6IDE7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi5jZWxsOmhvdmVyIHtcbiAgICBzdHJva2U6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIHN0cm9rZS13aWR0aDogMjtcbn1cblxuLmxlZ2VuZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IHZhcigtLXNwYWNpbmcteGwpO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXNwYWNpbmctbGcpO1xufVxuXG4ubGVnZW5kSXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3BhY2luZy1zbSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi5sZWdlbmRDb2xvciB7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbn1cblxuLnRvb2x0aXAge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQpO1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1zbSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGcpO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHotaW5kZXg6IDEwMDA7XG59XG5cbi50b29sdGlwIGRpdiB7XG4gICAgbWFyZ2luOiB2YXIoLS1zcGFjaW5nLXhzKSAwO1xufVxuXG4udG9vbHRpcCBzdHJvbmcge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbn0iXX0= */";
|
|
1791
|
+
var styles$2 = {"container":"BooleansHeatmap-module_container__IOyeU","title":"BooleansHeatmap-module_title__8DRRQ","habitEmoji":"BooleansHeatmap-module_habitEmoji__Mawv-","chart":"BooleansHeatmap-module_chart__-q0Pc","monthLabel":"BooleansHeatmap-module_monthLabel__MXbIg","dayLabel":"BooleansHeatmap-module_dayLabel__2RRtm","cell":"BooleansHeatmap-module_cell__WADVB","legend":"BooleansHeatmap-module_legend__WqGF8","legendItem":"BooleansHeatmap-module_legendItem__rDE2g","legendColor":"BooleansHeatmap-module_legendColor__Z34-d","tooltip":"BooleansHeatmap-module_tooltip__-fHl7"};
|
|
1792
|
+
styleInject(css_248z$2);
|
|
1793
|
+
|
|
1794
|
+
const DAYS_OF_WEEK = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];
|
|
1795
|
+
const MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
|
|
1796
|
+
const BooleansHeatmap = ({ data, habitName, width = 800, height = 200, habitColor = '#6BCB77', habitEmoji = '✓' }) => {
|
|
1797
|
+
const svgRef = React.useRef(null);
|
|
1798
|
+
const { startDate, endDate, weeksToShow } = React.useMemo(() => {
|
|
1799
|
+
const dates = Object.keys(data).sort();
|
|
1800
|
+
if (dates.length === 0) {
|
|
1801
|
+
const now = new Date();
|
|
1802
|
+
return {
|
|
1803
|
+
startDate: now,
|
|
1804
|
+
endDate: now,
|
|
1805
|
+
weeksToShow: 1
|
|
1806
|
+
};
|
|
1807
|
+
}
|
|
1808
|
+
const start = new Date(dates[0]);
|
|
1809
|
+
const end = new Date(dates[dates.length - 1]);
|
|
1810
|
+
const daysDiff = Math.ceil((end.getTime() - start.getTime()) / (1000 * 60 * 60 * 24)) + 1;
|
|
1811
|
+
const weeksDiff = Math.ceil(daysDiff / 7);
|
|
1812
|
+
return {
|
|
1813
|
+
startDate: start,
|
|
1814
|
+
endDate: end,
|
|
1815
|
+
weeksToShow: weeksDiff
|
|
1816
|
+
};
|
|
1817
|
+
}, [data]);
|
|
1818
|
+
React.useEffect(() => {
|
|
1819
|
+
if (!svgRef.current)
|
|
1820
|
+
return;
|
|
1821
|
+
const svg = d3__namespace.select(svgRef.current);
|
|
1822
|
+
svg.selectAll('*').remove();
|
|
1823
|
+
const margin = { top: 40, right: 20, bottom: 20, left: 40 };
|
|
1824
|
+
const chartWidth = width - margin.left - margin.right;
|
|
1825
|
+
const chartHeight = height - margin.top - margin.bottom;
|
|
1826
|
+
const cellSize = Math.min(Math.floor(chartHeight / 7) - 1, Math.floor(chartWidth / weeksToShow) - 1, 20);
|
|
1827
|
+
const cellGap = 2;
|
|
1828
|
+
const g = svg.append('g')
|
|
1829
|
+
.attr('transform', `translate(${margin.left},${margin.top})`);
|
|
1830
|
+
const startDayOffset = (startDate.getDay() + 6) % 7;
|
|
1831
|
+
const monthPositions = new Map();
|
|
1832
|
+
let currentMonth = startDate.getMonth();
|
|
1833
|
+
monthPositions.set(currentMonth, 0);
|
|
1834
|
+
for (let weekIndex = 0; weekIndex < weeksToShow; weekIndex++) {
|
|
1835
|
+
const weekStart = new Date(startDate);
|
|
1836
|
+
weekStart.setDate(weekStart.getDate() + weekIndex * 7 - startDayOffset);
|
|
1837
|
+
if (weekStart.getMonth() !== currentMonth) {
|
|
1838
|
+
currentMonth = weekStart.getMonth();
|
|
1839
|
+
monthPositions.set(currentMonth, weekIndex);
|
|
1840
|
+
}
|
|
1841
|
+
}
|
|
1842
|
+
monthPositions.forEach((weekIndex, month) => {
|
|
1843
|
+
g.append('text')
|
|
1844
|
+
.attr('x', weekIndex * (cellSize + cellGap))
|
|
1845
|
+
.attr('y', -10)
|
|
1846
|
+
.attr('class', styles$2.monthLabel)
|
|
1847
|
+
.text(MONTHS[month]);
|
|
1848
|
+
});
|
|
1849
|
+
DAYS_OF_WEEK.forEach((day, index) => {
|
|
1850
|
+
g.append('text')
|
|
1851
|
+
.attr('x', -10)
|
|
1852
|
+
.attr('y', index * (cellSize + cellGap) + cellSize / 2)
|
|
1853
|
+
.attr('class', styles$2.dayLabel)
|
|
1854
|
+
.attr('text-anchor', 'end')
|
|
1855
|
+
.attr('alignment-baseline', 'middle')
|
|
1856
|
+
.text(day);
|
|
1857
|
+
});
|
|
1858
|
+
const tooltip = d3__namespace.select('body').append('div')
|
|
1859
|
+
.attr('class', styles$2.tooltip)
|
|
1860
|
+
.style('opacity', 0)
|
|
1861
|
+
.style('position', 'absolute');
|
|
1862
|
+
const daysToShow = weeksToShow * 7;
|
|
1863
|
+
for (let i = 0; i < daysToShow; i++) {
|
|
1864
|
+
const date = new Date(startDate);
|
|
1865
|
+
date.setDate(date.getDate() + i - startDayOffset);
|
|
1866
|
+
if (date < startDate || date > endDate)
|
|
1867
|
+
continue;
|
|
1868
|
+
const dateString = date.toISOString().split('T')[0];
|
|
1869
|
+
const dayOfWeek = (date.getDay() + 6) % 7;
|
|
1870
|
+
const weekIndex = Math.floor((i + startDayOffset) / 7);
|
|
1871
|
+
const isTrue = dateString in data && data[dateString];
|
|
1872
|
+
const rect = g.append('rect')
|
|
1873
|
+
.attr('x', weekIndex * (cellSize + cellGap))
|
|
1874
|
+
.attr('y', dayOfWeek * (cellSize + cellGap))
|
|
1875
|
+
.attr('width', cellSize)
|
|
1876
|
+
.attr('height', cellSize)
|
|
1877
|
+
.attr('rx', 3)
|
|
1878
|
+
.attr('class', styles$2.cell)
|
|
1879
|
+
.attr('data-date', dateString)
|
|
1880
|
+
.attr('data-value', isTrue ? 'true' : 'false')
|
|
1881
|
+
.style('fill', isTrue ? habitColor : '#4D4D4DFF');
|
|
1882
|
+
rect.on('mouseover', function (event) {
|
|
1883
|
+
tooltip.transition()
|
|
1884
|
+
.duration(200)
|
|
1885
|
+
.style('opacity', 1);
|
|
1886
|
+
const formatDate = d3__namespace.timeFormat('%b %d, %Y');
|
|
1887
|
+
const status = isTrue ? `${habitEmoji} Done` : '✗ Not done';
|
|
1888
|
+
tooltip.html(`
|
|
1889
|
+
<div><strong>${habitName}</strong></div>
|
|
1890
|
+
<div>${formatDate(date)}</div>
|
|
1891
|
+
<div>${status}</div>
|
|
1892
|
+
`)
|
|
1893
|
+
.style('left', (event.pageX + 10) + 'px')
|
|
1894
|
+
.style('top', (event.pageY - 28) + 'px');
|
|
1895
|
+
})
|
|
1896
|
+
.on('mouseout', function () {
|
|
1897
|
+
tooltip.transition()
|
|
1898
|
+
.duration(500)
|
|
1899
|
+
.style('opacity', 0);
|
|
1900
|
+
});
|
|
1901
|
+
}
|
|
1902
|
+
return () => {
|
|
1903
|
+
tooltip.remove();
|
|
1904
|
+
};
|
|
1905
|
+
}, [data, habitName, width, height, startDate, endDate, weeksToShow, habitColor, habitEmoji]);
|
|
1906
|
+
return (jsxRuntime.jsxs("div", { className: styles$2.container, children: [jsxRuntime.jsxs("h3", { className: styles$2.title, children: [jsxRuntime.jsx("span", { className: styles$2.habitEmoji, children: habitEmoji }), habitName] }), jsxRuntime.jsx("svg", { ref: svgRef, width: width, height: height, className: styles$2.chart }), jsxRuntime.jsxs("div", { className: styles$2.legend, children: [jsxRuntime.jsxs("span", { className: styles$2.legendItem, children: [jsxRuntime.jsx("span", { className: styles$2.legendColor, style: { backgroundColor: habitColor } }), "Done"] }), jsxRuntime.jsxs("span", { className: styles$2.legendItem, children: [jsxRuntime.jsx("span", { className: styles$2.legendColor, style: { backgroundColor: '#4D4D4DFF' } }), "Not done"] })] })] }));
|
|
134
1907
|
};
|
|
135
1908
|
|
|
136
|
-
var css_248z = ".
|
|
137
|
-
var styles = {"container":"
|
|
1909
|
+
var css_248z$1 = ".SunburstChart-module_container__w1ZYc{align-items:center;background:var(--color-background-secondary);border-radius:var(--radius-lg);display:flex;flex-direction:column;padding:var(--spacing-xl)}.SunburstChart-module_title__T6Ak7{color:var(--color-text);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);margin-bottom:var(--spacing-lg);text-align:center}.SunburstChart-module_chart__BFM6E{display:block}.SunburstChart-module_tooltip__TuTAN{background:var(--color-background);border:2px solid var(--color-primary);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);color:var(--color-text);font-size:var(--font-size-sm);padding:var(--spacing-sm);pointer-events:none;z-index:1000}.SunburstChart-module_tooltip__TuTAN div{margin:var(--spacing-xs) 0}.SunburstChart-module_tooltip__TuTAN strong{color:var(--color-primary)}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlN1bmJ1cnN0Q2hhcnQubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1Q0FNSSxrQkFBbUIsQ0FMbkIsNENBQTZDLENBQzdDLDhCQUErQixDQUUvQixZQUFhLENBQ2IscUJBQXNCLENBRnRCLHlCQUlKLENBRUEsbUNBR0ksdUJBQXdCLENBRnhCLDZCQUE4QixDQUM5Qix1Q0FBd0MsQ0FFeEMsK0JBQWdDLENBQ2hDLGlCQUNKLENBRUEsbUNBQ0ksYUFDSixDQUVBLHFDQUNJLGtDQUFtQyxDQUNuQyxxQ0FBc0MsQ0FDdEMsOEJBQStCLENBSS9CLDJCQUE0QixDQUQ1Qix1QkFBd0IsQ0FEeEIsNkJBQThCLENBRDlCLHlCQUEwQixDQUkxQixtQkFBb0IsQ0FDcEIsWUFDSixDQUVBLHlDQUNJLDBCQUNKLENBRUEsNENBQ0ksMEJBQ0oiLCJmaWxlIjoiU3VuYnVyc3RDaGFydC5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmNvbnRhaW5lciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnkpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy14bCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi50aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNpbmctbGcpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmNoYXJ0IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cblxuLnRvb2x0aXAge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQpO1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2luZy1zbSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGcpO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHotaW5kZXg6IDEwMDA7XG59XG5cbi50b29sdGlwIGRpdiB7XG4gICAgbWFyZ2luOiB2YXIoLS1zcGFjaW5nLXhzKSAwO1xufVxuXG4udG9vbHRpcCBzdHJvbmcge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbn0iXX0= */";
|
|
1910
|
+
var styles$1 = {"container":"SunburstChart-module_container__w1ZYc","title":"SunburstChart-module_title__T6Ak7","chart":"SunburstChart-module_chart__BFM6E","tooltip":"SunburstChart-module_tooltip__TuTAN"};
|
|
1911
|
+
styleInject(css_248z$1);
|
|
1912
|
+
|
|
1913
|
+
const COLOR_PALETTE = [
|
|
1914
|
+
'#d4af37', '#FFD700', '#FFA500', '#FF8C00',
|
|
1915
|
+
'#FF6347', '#DC143C', '#8B4513', '#A0522D',
|
|
1916
|
+
'#DEB887', '#F4A460', '#D2691E', '#CD853F'
|
|
1917
|
+
];
|
|
1918
|
+
const SunburstChart = ({ data, width = 500, height = 500, title = 'Sunburst Chart', tagColors = {} }) => {
|
|
1919
|
+
const svgRef = React.useRef(null);
|
|
1920
|
+
const colorMap = React.useRef(new Map()).current;
|
|
1921
|
+
const colorIndex = React.useRef(0);
|
|
1922
|
+
const radius = Math.min(width, height) / 2;
|
|
1923
|
+
const getColor = (name, depth) => {
|
|
1924
|
+
// First check if we have a tag color for this name
|
|
1925
|
+
if (tagColors[name]) {
|
|
1926
|
+
const color = d3__namespace.color(tagColors[name]);
|
|
1927
|
+
if (color) {
|
|
1928
|
+
// Darken for deeper levels
|
|
1929
|
+
return depth > 1 ? color.darker((depth - 1) * 0.3).toString() : color.toString();
|
|
1930
|
+
}
|
|
1931
|
+
}
|
|
1932
|
+
// Fallback to color palette
|
|
1933
|
+
if (!colorMap.has(name)) {
|
|
1934
|
+
colorMap.set(name, COLOR_PALETTE[colorIndex.current % COLOR_PALETTE.length]);
|
|
1935
|
+
colorIndex.current++;
|
|
1936
|
+
}
|
|
1937
|
+
const baseColor = colorMap.get(name) || '#d4af37';
|
|
1938
|
+
const color = d3__namespace.color(baseColor);
|
|
1939
|
+
if (color) {
|
|
1940
|
+
return color.darker(depth * 0.3).toString();
|
|
1941
|
+
}
|
|
1942
|
+
return baseColor;
|
|
1943
|
+
};
|
|
1944
|
+
React.useEffect(() => {
|
|
1945
|
+
if (!svgRef.current || !data)
|
|
1946
|
+
return;
|
|
1947
|
+
const svg = d3__namespace.select(svgRef.current);
|
|
1948
|
+
svg.selectAll('*').remove();
|
|
1949
|
+
const g = svg.append('g')
|
|
1950
|
+
.attr('transform', `translate(${width / 2},${height / 2})`);
|
|
1951
|
+
const root = d3__namespace.hierarchy(data)
|
|
1952
|
+
.sum(d => d.size ?? 0)
|
|
1953
|
+
.sort((a, b) => (b.value ?? 0) - (a.value ?? 0));
|
|
1954
|
+
const partition = d3__namespace.partition()
|
|
1955
|
+
.size([2 * Math.PI, radius * radius]);
|
|
1956
|
+
const nodes = partition(root).descendants();
|
|
1957
|
+
const arc = d3__namespace.arc()
|
|
1958
|
+
.startAngle(d => d.x0)
|
|
1959
|
+
.endAngle(d => d.x1)
|
|
1960
|
+
.innerRadius(d => Math.sqrt(d.y0))
|
|
1961
|
+
.outerRadius(d => Math.sqrt(d.y1));
|
|
1962
|
+
const tooltip = d3__namespace.select('body').append('div')
|
|
1963
|
+
.attr('class', styles$1.tooltip)
|
|
1964
|
+
.style('opacity', 0)
|
|
1965
|
+
.style('position', 'absolute');
|
|
1966
|
+
g.selectAll('path')
|
|
1967
|
+
.data(nodes.filter(d => d.depth > 0 && d.value && d.value > 0))
|
|
1968
|
+
.enter().append('path')
|
|
1969
|
+
.attr('d', arc)
|
|
1970
|
+
.attr('fill', d => {
|
|
1971
|
+
let ancestor = d;
|
|
1972
|
+
while (ancestor.depth > 1 && ancestor.parent) {
|
|
1973
|
+
ancestor = ancestor.parent;
|
|
1974
|
+
}
|
|
1975
|
+
return getColor(ancestor.data.name, d.depth);
|
|
1976
|
+
})
|
|
1977
|
+
.attr('stroke', 'var(--bg-primary)')
|
|
1978
|
+
.attr('stroke-width', 2)
|
|
1979
|
+
.style('cursor', 'pointer')
|
|
1980
|
+
.on('mouseover', function (event, d) {
|
|
1981
|
+
d3__namespace.select(this)
|
|
1982
|
+
.transition()
|
|
1983
|
+
.duration(200)
|
|
1984
|
+
.style('opacity', 0.8);
|
|
1985
|
+
tooltip.transition()
|
|
1986
|
+
.duration(200)
|
|
1987
|
+
.style('opacity', 1);
|
|
1988
|
+
const value = d.value || 0;
|
|
1989
|
+
const percentage = ((value / (root.value || 1)) * 100).toFixed(1);
|
|
1990
|
+
tooltip.html(`
|
|
1991
|
+
<div><strong>${d.data.name}</strong></div>
|
|
1992
|
+
<div>Value: ${value}</div>
|
|
1993
|
+
<div>${percentage}% of total</div>
|
|
1994
|
+
`)
|
|
1995
|
+
.style('left', (event.pageX + 10) + 'px')
|
|
1996
|
+
.style('top', (event.pageY - 28) + 'px');
|
|
1997
|
+
})
|
|
1998
|
+
.on('mouseout', function () {
|
|
1999
|
+
d3__namespace.select(this)
|
|
2000
|
+
.transition()
|
|
2001
|
+
.duration(200)
|
|
2002
|
+
.style('opacity', 1);
|
|
2003
|
+
tooltip.transition()
|
|
2004
|
+
.duration(500)
|
|
2005
|
+
.style('opacity', 0);
|
|
2006
|
+
});
|
|
2007
|
+
const shouldDisplayLabel = (d) => {
|
|
2008
|
+
const angle = d.x1 - d.x0;
|
|
2009
|
+
return angle > 0.15 && d.depth <= 2;
|
|
2010
|
+
};
|
|
2011
|
+
g.selectAll('text')
|
|
2012
|
+
.data(nodes.filter(d => d.depth > 0 && d.value && d.value > 0 && shouldDisplayLabel(d)))
|
|
2013
|
+
.enter().append('text')
|
|
2014
|
+
.attr('transform', d => {
|
|
2015
|
+
const angle = (d.x0 + d.x1) / 2;
|
|
2016
|
+
const radius = (Math.sqrt(d.y0) + Math.sqrt(d.y1)) / 2;
|
|
2017
|
+
const x = Math.cos(angle - Math.PI / 2) * radius;
|
|
2018
|
+
const y = Math.sin(angle - Math.PI / 2) * radius;
|
|
2019
|
+
return `translate(${x},${y})`;
|
|
2020
|
+
})
|
|
2021
|
+
.attr('text-anchor', 'middle')
|
|
2022
|
+
.attr('alignment-baseline', 'middle')
|
|
2023
|
+
.attr('font-size', '12px')
|
|
2024
|
+
.attr('fill', 'var(--text-inverse)')
|
|
2025
|
+
.attr('font-weight', 'var(--font-medium)')
|
|
2026
|
+
.style('pointer-events', 'none')
|
|
2027
|
+
.text(d => d.data.name.substring(0, 10));
|
|
2028
|
+
return () => {
|
|
2029
|
+
tooltip.remove();
|
|
2030
|
+
};
|
|
2031
|
+
}, [data, width, height, colorMap, radius]);
|
|
2032
|
+
return (jsxRuntime.jsxs("div", { className: styles$1.container, children: [jsxRuntime.jsx("h3", { className: styles$1.title, children: title }), jsxRuntime.jsx("svg", { ref: svgRef, width: width, height: height, className: styles$1.chart })] }));
|
|
2033
|
+
};
|
|
2034
|
+
|
|
2035
|
+
var css_248z = ".PieChart-module_container__tXjbe{background:var(--color-background-secondary);border-radius:var(--radius-lg);padding:var(--spacing-xl)}.PieChart-module_title__61o0R{color:var(--color-text);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);margin-bottom:var(--spacing-lg);text-align:center}.PieChart-module_chartContainer__uLmOz{align-items:flex-start;display:flex;gap:var(--spacing-4xl)}.PieChart-module_chart__3nqON{display:block;flex-shrink:0}.PieChart-module_legend__rAWgh{flex:1;min-width:200px}.PieChart-module_legendItem__Nb031{align-items:center;border-radius:var(--radius-md);display:flex;gap:var(--spacing-lg);margin-bottom:var(--spacing-sm);padding:var(--spacing-sm);transition:var(--transition-base)}.PieChart-module_legendItem__Nb031:hover{background:var(--color-surface-hover)}.PieChart-module_legendColor__fLuv9{border-radius:var(--radius-full);flex-shrink:0;height:16px;width:16px}.PieChart-module_legendLabel__xbjBr{color:var(--color-text);flex:1;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium)}.PieChart-module_legendValue__h2WS2{color:var(--color-text-secondary);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold)}.PieChart-module_tooltip__140RU{background:var(--color-background);border:2px solid var(--color-primary);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);color:var(--color-text);font-size:var(--font-size-sm);padding:var(--spacing-sm);pointer-events:none;z-index:1000}.PieChart-module_tooltip__140RU div{margin:var(--spacing-xs) 0}.PieChart-module_tooltip__140RU strong{color:var(--color-primary)}@media (max-width:768px){.PieChart-module_chartContainer__uLmOz{flex-direction:column;gap:var(--space-4)}.PieChart-module_legend__rAWgh{min-width:auto}}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlBpZUNoYXJ0Lm1vZHVsZS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0NBQ0ksNENBQTZDLENBQzdDLDhCQUErQixDQUMvQix5QkFDSixDQUVBLDhCQUdJLHVCQUF3QixDQUZ4Qiw2QkFBOEIsQ0FDOUIsdUNBQXdDLENBRXhDLCtCQUFnQyxDQUNoQyxpQkFDSixDQUVBLHVDQUdJLHNCQUF1QixDQUZ2QixZQUFhLENBQ2Isc0JBRUosQ0FFQSw4QkFDSSxhQUFjLENBQ2QsYUFDSixDQUVBLCtCQUNJLE1BQU8sQ0FDUCxlQUNKLENBRUEsbUNBRUksa0JBQW1CLENBR25CLDhCQUErQixDQUovQixZQUFhLENBRWIscUJBQXNCLENBR3RCLCtCQUFnQyxDQUZoQyx5QkFBMEIsQ0FHMUIsaUNBQ0osQ0FFQSx5Q0FDSSxxQ0FDSixDQUVBLG9DQUdJLGdDQUFpQyxDQUNqQyxhQUFjLENBRmQsV0FBWSxDQURaLFVBSUosQ0FFQSxvQ0FHSSx1QkFBd0IsQ0FGeEIsTUFBTyxDQUNQLDZCQUE4QixDQUU5QixxQ0FDSixDQUVBLG9DQUVJLGlDQUFrQyxDQURsQyw2QkFBOEIsQ0FFOUIsdUNBQ0osQ0FFQSxnQ0FDSSxrQ0FBbUMsQ0FDbkMscUNBQXNDLENBQ3RDLDhCQUErQixDQUkvQiwyQkFBNEIsQ0FENUIsdUJBQXdCLENBRHhCLDZCQUE4QixDQUQ5Qix5QkFBMEIsQ0FJMUIsbUJBQW9CLENBQ3BCLFlBQ0osQ0FFQSxvQ0FDSSwwQkFDSixDQUVBLHVDQUNJLDBCQUNKLENBRUEseUJBQ0ksdUNBQ0kscUJBQXNCLENBQ3RCLGtCQUNKLENBRUEsK0JBQ0ksY0FDSixDQUNKIiwiZmlsZSI6IlBpZUNoYXJ0Lm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjaW5nLXhsKTtcbn1cblxuLnRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1sZyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy1sZyk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uY2hhcnRDb250YWluZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiB2YXIoLS1zcGFjaW5nLTR4bCk7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG59XG5cbi5jaGFydCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5sZWdlbmQge1xuICAgIGZsZXg6IDE7XG4gICAgbWluLXdpZHRoOiAyMDBweDtcbn1cblxuLmxlZ2VuZEl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXNwYWNpbmctbGcpO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctc20pO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2luZy1zbSk7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbn1cblxuLmxlZ2VuZEl0ZW06aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXN1cmZhY2UtaG92ZXIpO1xufVxuXG4ubGVnZW5kQ29sb3Ige1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtZnVsbCk7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5sZWdlbmRMYWJlbCB7XG4gICAgZmxleDogMTtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO1xufVxuXG4ubGVnZW5kVmFsdWUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnkpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XG59XG5cbi50b29sdGlwIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kKTtcbiAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNpbmctc20pO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWxnKTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB6LWluZGV4OiAxMDAwO1xufVxuXG4udG9vbHRpcCBkaXYge1xuICAgIG1hcmdpbjogdmFyKC0tc3BhY2luZy14cykgMDtcbn1cblxuLnRvb2x0aXAgc3Ryb25nIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgIC5jaGFydENvbnRhaW5lciB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogdmFyKC0tc3BhY2UtNCk7XG4gICAgfVxuICAgIFxuICAgIC5sZWdlbmQge1xuICAgICAgICBtaW4td2lkdGg6IGF1dG87XG4gICAgfVxufSJdfQ== */";
|
|
2036
|
+
var styles = {"container":"PieChart-module_container__tXjbe","title":"PieChart-module_title__61o0R","chartContainer":"PieChart-module_chartContainer__uLmOz","chart":"PieChart-module_chart__3nqON","legend":"PieChart-module_legend__rAWgh","legendItem":"PieChart-module_legendItem__Nb031","legendColor":"PieChart-module_legendColor__fLuv9","legendLabel":"PieChart-module_legendLabel__xbjBr","legendValue":"PieChart-module_legendValue__h2WS2","tooltip":"PieChart-module_tooltip__140RU"};
|
|
138
2037
|
styleInject(css_248z);
|
|
139
2038
|
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
2039
|
+
const DEFAULT_COLORS = [
|
|
2040
|
+
'#d4af37', '#FFD700', '#FFA500', '#FF8C00',
|
|
2041
|
+
'#FF6347', '#DC143C', '#8B4513', '#A0522D',
|
|
2042
|
+
'#DEB887', '#F4A460', '#D2691E', '#CD853F',
|
|
2043
|
+
'#B8860B', '#DAA520', '#F0E68C', '#BDB76B'
|
|
2044
|
+
];
|
|
2045
|
+
const PieChart = ({ data, width = 400, height = 400, title = 'Distribution', showLegend = true }) => {
|
|
2046
|
+
const svgRef = React.useRef(null);
|
|
2047
|
+
const radius = Math.min(width, height) / 2 - 20;
|
|
2048
|
+
React.useEffect(() => {
|
|
2049
|
+
if (!svgRef.current || !data.length)
|
|
2050
|
+
return;
|
|
2051
|
+
const svg = d3__namespace.select(svgRef.current);
|
|
2052
|
+
svg.selectAll('*').remove();
|
|
2053
|
+
const g = svg.append('g')
|
|
2054
|
+
.attr('transform', `translate(${width / 2},${height / 2})`);
|
|
2055
|
+
const pie = d3__namespace.pie()
|
|
2056
|
+
.value(d => d.value)
|
|
2057
|
+
.sort(null);
|
|
2058
|
+
const arc = d3__namespace.arc()
|
|
2059
|
+
.innerRadius(0)
|
|
2060
|
+
.outerRadius(radius);
|
|
2061
|
+
const labelArc = d3__namespace.arc()
|
|
2062
|
+
.innerRadius(radius * 0.7)
|
|
2063
|
+
.outerRadius(radius * 0.7);
|
|
2064
|
+
const tooltip = d3__namespace.select('body').append('div')
|
|
2065
|
+
.attr('class', styles.tooltip)
|
|
2066
|
+
.style('opacity', 0)
|
|
2067
|
+
.style('position', 'absolute');
|
|
2068
|
+
const pieData = pie(data);
|
|
2069
|
+
const total = d3__namespace.sum(data, d => d.value);
|
|
2070
|
+
const arcs = g.selectAll('.arc')
|
|
2071
|
+
.data(pieData)
|
|
2072
|
+
.enter().append('g')
|
|
2073
|
+
.attr('class', 'arc');
|
|
2074
|
+
arcs.append('path')
|
|
2075
|
+
.attr('d', d => arc(d))
|
|
2076
|
+
.attr('fill', (d, i) => d.data.color || DEFAULT_COLORS[i % DEFAULT_COLORS.length])
|
|
2077
|
+
.attr('stroke', 'var(--bg-primary)')
|
|
2078
|
+
.attr('stroke-width', 2)
|
|
2079
|
+
.style('cursor', 'pointer')
|
|
2080
|
+
.on('mouseover', function (event, d) {
|
|
2081
|
+
d3__namespace.select(this)
|
|
2082
|
+
.transition()
|
|
2083
|
+
.duration(200)
|
|
2084
|
+
.style('opacity', 0.8);
|
|
2085
|
+
tooltip.transition()
|
|
2086
|
+
.duration(200)
|
|
2087
|
+
.style('opacity', 1);
|
|
2088
|
+
const percentage = ((d.data.value / total) * 100).toFixed(1);
|
|
2089
|
+
tooltip.html(`
|
|
2090
|
+
<div><strong>${d.data.name}</strong></div>
|
|
2091
|
+
<div>Value: ${d.data.value.toLocaleString()}</div>
|
|
2092
|
+
<div>${percentage}% of total</div>
|
|
2093
|
+
`)
|
|
2094
|
+
.style('left', (event.pageX + 10) + 'px')
|
|
2095
|
+
.style('top', (event.pageY - 28) + 'px');
|
|
2096
|
+
})
|
|
2097
|
+
.on('mouseout', function () {
|
|
2098
|
+
d3__namespace.select(this)
|
|
2099
|
+
.transition()
|
|
2100
|
+
.duration(200)
|
|
2101
|
+
.style('opacity', 1);
|
|
2102
|
+
tooltip.transition()
|
|
2103
|
+
.duration(500)
|
|
2104
|
+
.style('opacity', 0);
|
|
2105
|
+
});
|
|
2106
|
+
arcs.filter(d => (d.endAngle - d.startAngle) > 0.3)
|
|
2107
|
+
.append('text')
|
|
2108
|
+
.attr('transform', d => `translate(${labelArc.centroid(d)})`)
|
|
2109
|
+
.attr('text-anchor', 'middle')
|
|
2110
|
+
.attr('alignment-baseline', 'middle')
|
|
2111
|
+
.attr('font-size', '12px')
|
|
2112
|
+
.attr('fill', 'var(--text-inverse)')
|
|
2113
|
+
.attr('font-weight', 'var(--font-semibold)')
|
|
2114
|
+
.style('pointer-events', 'none')
|
|
2115
|
+
.text(d => {
|
|
2116
|
+
const percentage = ((d.data.value / total) * 100);
|
|
2117
|
+
return percentage > 5 ? `${percentage.toFixed(1)}%` : '';
|
|
2118
|
+
});
|
|
2119
|
+
return () => {
|
|
2120
|
+
tooltip.remove();
|
|
2121
|
+
};
|
|
2122
|
+
}, [data, width, height, radius]);
|
|
2123
|
+
return (jsxRuntime.jsxs("div", { className: styles.container, children: [jsxRuntime.jsx("h3", { className: styles.title, children: title }), jsxRuntime.jsxs("div", { className: styles.chartContainer, children: [jsxRuntime.jsx("svg", { ref: svgRef, width: width, height: height, className: styles.chart }), showLegend && (jsxRuntime.jsx("div", { className: styles.legend, children: data.map((item, index) => (jsxRuntime.jsxs("div", { className: styles.legendItem, children: [jsxRuntime.jsx("span", { className: styles.legendColor, style: {
|
|
2124
|
+
backgroundColor: item.color || DEFAULT_COLORS[index % DEFAULT_COLORS.length]
|
|
2125
|
+
} }), jsxRuntime.jsx("span", { className: styles.legendLabel, children: item.name }), jsxRuntime.jsx("span", { className: styles.legendValue, children: item.value.toLocaleString() })] }, item.name))) }))] })] }));
|
|
2126
|
+
};
|
|
160
2127
|
|
|
2128
|
+
exports.ArrayInput = ArrayInput;
|
|
2129
|
+
exports.BooleansHeatmap = BooleansHeatmap;
|
|
161
2130
|
exports.Button = Button;
|
|
162
2131
|
exports.Card = Card;
|
|
163
|
-
exports.
|
|
164
|
-
exports.
|
|
2132
|
+
exports.Checkbox = Checkbox;
|
|
2133
|
+
exports.DateInput = DateInput;
|
|
2134
|
+
exports.EditFAB = EditFAB;
|
|
2135
|
+
exports.MoodChart = MoodChart;
|
|
2136
|
+
exports.Navbar = Navbar;
|
|
2137
|
+
exports.PieChart = PieChart;
|
|
2138
|
+
exports.QuantifiableHabitsChart = QuantifiableHabitsChart;
|
|
2139
|
+
exports.SearchBar = SearchBar;
|
|
2140
|
+
exports.SearchableDropdown = SearchableDropdown;
|
|
2141
|
+
exports.SelectInput = SelectInput;
|
|
2142
|
+
exports.SleepChart = SleepChart;
|
|
2143
|
+
exports.SunburstChart = SunburstChart;
|
|
2144
|
+
exports.TextArea = TextArea;
|
|
2145
|
+
exports.TextInput = TextInput;
|
|
165
2146
|
exports.ThemeProvider = ThemeProvider;
|
|
166
|
-
exports.
|
|
2147
|
+
exports.ThemeSwitcher = ThemeSwitcher;
|
|
2148
|
+
exports.TimeInput = TimeInput;
|
|
2149
|
+
exports.Toggle = Toggle;
|
|
2150
|
+
exports.useTheme = useTheme$1;
|
|
167
2151
|
//# sourceMappingURL=index.js.map
|