thailife-react 0.0.23 → 0.0.25
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/cjs/index.js +508 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/esm/components/Autocomplete/Autocomplete.d.ts +18 -0
- package/dist/esm/components/Autocomplete/Autocomplete.d.ts.map +1 -0
- package/dist/esm/components/Autocomplete/index.d.ts +2 -0
- package/dist/esm/components/Autocomplete/index.d.ts.map +1 -0
- package/dist/esm/components/Button/Button.d.ts +14 -0
- package/dist/esm/components/Button/Button.d.ts.map +1 -0
- package/dist/esm/components/Button/index.d.ts +3 -0
- package/dist/esm/components/Button/index.d.ts.map +1 -0
- package/dist/esm/components/Checkbox/Checkbox.d.ts +12 -0
- package/dist/esm/components/Checkbox/Checkbox.d.ts.map +1 -0
- package/dist/esm/components/Checkbox/index.d.ts +3 -0
- package/dist/esm/components/Checkbox/index.d.ts.map +1 -0
- package/dist/esm/components/Datepicker/Datepicker.d.ts +23 -0
- package/dist/esm/components/Datepicker/Datepicker.d.ts.map +1 -0
- package/dist/esm/components/Datepicker/index.d.ts +3 -0
- package/dist/esm/components/Datepicker/index.d.ts.map +1 -0
- package/dist/esm/components/Input/Input.d.ts +27 -0
- package/dist/esm/components/Input/Input.d.ts.map +1 -0
- package/dist/esm/components/Input/index.d.ts +3 -0
- package/dist/esm/components/Input/index.d.ts.map +1 -0
- package/dist/esm/components/Radio/Radio.d.ts +12 -0
- package/dist/esm/components/Radio/Radio.d.ts.map +1 -0
- package/dist/esm/components/Radio/index.d.ts +3 -0
- package/dist/esm/components/Radio/index.d.ts.map +1 -0
- package/dist/esm/components/Select/Select.d.ts +16 -0
- package/dist/esm/components/Select/Select.d.ts.map +1 -0
- package/dist/esm/components/Select/index.d.ts +3 -0
- package/dist/esm/components/Select/index.d.ts.map +1 -0
- package/dist/esm/components/index.d.ts +8 -0
- package/dist/esm/components/index.d.ts.map +1 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +500 -0
- package/dist/esm/index.js.map +1 -0
- package/package.json +40 -74
- package/LICENSE +0 -21
- package/README.md +0 -118
- package/dist/components/Autocomplete/Autocomplete.d.ts +0 -17
- package/dist/components/Autocomplete/Autocomplete.d.ts.map +0 -1
- package/dist/components/Autocomplete/Autocomplete.stories.d.ts +0 -9
- package/dist/components/Autocomplete/Autocomplete.stories.d.ts.map +0 -1
- package/dist/components/Box/Box.d.ts +0 -86
- package/dist/components/Box/Box.d.ts.map +0 -1
- package/dist/components/Box/Box.stories.d.ts +0 -15
- package/dist/components/Box/Box.stories.d.ts.map +0 -1
- package/dist/components/Button/Button.d.ts +0 -12
- package/dist/components/Button/Button.d.ts.map +0 -1
- package/dist/components/Button/Button.stories.d.ts +0 -7
- package/dist/components/Button/Button.stories.d.ts.map +0 -1
- package/dist/components/Checkbox/Checkbox.d.ts +0 -13
- package/dist/components/Checkbox/Checkbox.d.ts.map +0 -1
- package/dist/components/Checkbox/Checkbox.stories.d.ts +0 -7
- package/dist/components/Checkbox/Checkbox.stories.d.ts.map +0 -1
- package/dist/components/Container/Container.d.ts +0 -9
- package/dist/components/Container/Container.d.ts.map +0 -1
- package/dist/components/Container/Container.stories.d.ts +0 -12
- package/dist/components/Container/Container.stories.d.ts.map +0 -1
- package/dist/components/DataTable/DataTable.d.ts +0 -30
- package/dist/components/DataTable/DataTable.d.ts.map +0 -1
- package/dist/components/DataTable/DataTable.stories.d.ts +0 -7
- package/dist/components/DataTable/DataTable.stories.d.ts.map +0 -1
- package/dist/components/DatePicker/DatePicker.d.ts +0 -31
- package/dist/components/DatePicker/DatePicker.d.ts.map +0 -1
- package/dist/components/DatePicker/DatePicker.stories.d.ts +0 -7
- package/dist/components/DatePicker/DatePicker.stories.d.ts.map +0 -1
- package/dist/components/DatePicker/examples.d.ts +0 -4
- package/dist/components/DatePicker/examples.d.ts.map +0 -1
- package/dist/components/DatePicker/index.d.ts +0 -4
- package/dist/components/DatePicker/index.d.ts.map +0 -1
- package/dist/components/Grid/Grid.d.ts +0 -30
- package/dist/components/Grid/Grid.d.ts.map +0 -1
- package/dist/components/Grid/Grid.stories.d.ts +0 -13
- package/dist/components/Grid/Grid.stories.d.ts.map +0 -1
- package/dist/components/Input/Input.d.ts +0 -13
- package/dist/components/Input/Input.d.ts.map +0 -1
- package/dist/components/Input/Input.stories.d.ts +0 -7
- package/dist/components/Input/Input.stories.d.ts.map +0 -1
- package/dist/components/InputFile/InputFile.d.ts +0 -14
- package/dist/components/InputFile/InputFile.d.ts.map +0 -1
- package/dist/components/InputFile/InputFile.stories.d.ts +0 -7
- package/dist/components/InputFile/InputFile.stories.d.ts.map +0 -1
- package/dist/components/Radio/Radio.d.ts +0 -12
- package/dist/components/Radio/Radio.d.ts.map +0 -1
- package/dist/components/Radio/Radio.stories.d.ts +0 -7
- package/dist/components/Radio/Radio.stories.d.ts.map +0 -1
- package/dist/components/Select/Select.d.ts +0 -19
- package/dist/components/Select/Select.d.ts.map +0 -1
- package/dist/components/Select/Select.stories.d.ts +0 -7
- package/dist/components/Select/Select.stories.d.ts.map +0 -1
- package/dist/components/Textarea/Textarea.d.ts +0 -13
- package/dist/components/Textarea/Textarea.d.ts.map +0 -1
- package/dist/components/Textarea/Textarea.stories.d.ts +0 -7
- package/dist/components/Textarea/Textarea.stories.d.ts.map +0 -1
- package/dist/index.d.ts +0 -31
- package/dist/index.d.ts.map +0 -1
- package/dist/index.esm.js +0 -2914
- package/dist/index.esm.js.map +0 -1
- package/dist/index.js +0 -2949
- package/dist/index.js.map +0 -1
- package/dist/styles/index.css +0 -1
- package/dist/styles/index.d.ts +0 -1
- package/dist/styles/index.d.ts.map +0 -1
- package/dist/styles/theme.d.ts +0 -87
- package/dist/styles/theme.d.ts.map +0 -1
|
@@ -0,0 +1,508 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
|
|
5
|
+
function styleInject(css, ref) {
|
|
6
|
+
if ( ref === void 0 ) ref = {};
|
|
7
|
+
var insertAt = ref.insertAt;
|
|
8
|
+
|
|
9
|
+
if (typeof document === 'undefined') { return; }
|
|
10
|
+
|
|
11
|
+
var head = document.head || document.getElementsByTagName('head')[0];
|
|
12
|
+
var style = document.createElement('style');
|
|
13
|
+
style.type = 'text/css';
|
|
14
|
+
|
|
15
|
+
if (insertAt === 'top') {
|
|
16
|
+
if (head.firstChild) {
|
|
17
|
+
head.insertBefore(style, head.firstChild);
|
|
18
|
+
} else {
|
|
19
|
+
head.appendChild(style);
|
|
20
|
+
}
|
|
21
|
+
} else {
|
|
22
|
+
head.appendChild(style);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if (style.styleSheet) {
|
|
26
|
+
style.styleSheet.cssText = css;
|
|
27
|
+
} else {
|
|
28
|
+
style.appendChild(document.createTextNode(css));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
var css_248z = "/*! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:\"\"}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.absolute{position:absolute}.relative{position:relative}.left-0{left:0}.left-3{left:.75rem}.right-3{right:.75rem}.top-1\\/2{top:50%}.top-full{top:100%}.z-10{z-index:10}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.ml-1{margin-left:.25rem}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-3{height:.75rem}.h-3\\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-8{height:2rem}.h-\\[24px\\]{height:24px}.h-\\[40px\\]{height:40px}.h-\\[44px\\]{height:44px}.h-\\[56px\\]{height:56px}.max-h-60{max-height:15rem}.min-h-\\[44px\\]{min-height:44px}.w-3{width:.75rem}.w-3\\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-8{width:2rem}.w-80{width:20rem}.w-\\[24px\\]{width:24px}.w-full{width:100%}.max-w-md{max-width:28rem}.-translate-y-1\\/2{--tw-translate-y:-50%}.-translate-y-1\\/2,.rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\\.5{gap:.625rem}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.overflow-auto{overflow:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-2{border-width:2px}.border-none{border-style:none}.border-\\[\\#CBD4D9\\]{--tw-border-opacity:1;border-color:rgb(203 212 217/var(--tw-border-opacity))}.border-danger{--tw-border-opacity:1;border-color:rgb(255 17 0/var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.border-gray-400{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.border-primary{--tw-border-opacity:1;border-color:rgb(0 122 194/var(--tw-border-opacity))}.bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity))}.bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.bg-danger{--tw-bg-opacity:1;background-color:rgb(255 17 0/var(--tw-bg-opacity))}.bg-primary{--tw-bg-opacity:1;background-color:rgb(0 122 194/var(--tw-bg-opacity))}.bg-primary\\/10{background-color:rgba(0,122,194,.1)}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.pl-10{padding-left:2.5rem}.pl-12{padding-left:3rem}.pl-14{padding-left:3.5rem}.pr-10{padding-right:2.5rem}.pr-12{padding-right:3rem}.pr-14{padding-right:3.5rem}.pt-2{padding-top:.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\\[18px\\]{font-size:18px}.text-\\[22px\\]{font-size:22px}.text-sm{font-size:.875rem;line-height:1.25rem}.font-bold{font-weight:700}.text-\\[\\#393C3E\\]{--tw-text-opacity:1;color:rgb(57 60 62/var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity))}.text-danger{--tw-text-opacity:1;color:rgb(255 17 0/var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-primary{--tw-text-opacity:1;color:rgb(0 122 194/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-75{opacity:.75}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-lg,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}@font-face{font-display:swap;font-family:DB_OZONE_X;font-style:normal;font-weight:400;src:url(../fonts/db_ozone_x/DB_Ozone_X.woff) format(\"woff\"),url(../fonts/db_ozone_x/DB_Ozone_X.ttf) format(\"truetype\")}@font-face{font-display:swap;font-family:DB_OZONE_X;font-style:normal;font-weight:500;src:url(../fonts/db_ozone_x/DB_Ozone_X_Med.woff) format(\"woff\"),url(../fonts/db_ozone_x/DB_Ozone_X_Med.ttf) format(\"truetype\")}@font-face{font-display:swap;font-family:DB_OZONE_X;font-style:normal;font-weight:700;src:url(../fonts/db_ozone_x/DB_Ozone_X_Bd.woff) format(\"woff\"),url(../fonts/db_ozone_x/DB_Ozone_X_Bd.ttf) format(\"truetype\")}body{color:#393c3e;font-family:DB_OZONE_X,sans-serif!important;font-size:22px;font-weight:400}.focus-within\\:border-2:focus-within{border-width:2px}.focus-within\\:border-primary:focus-within{--tw-border-opacity:1;border-color:rgb(0 122 194/var(--tw-border-opacity))}.hover\\:border-primary:hover{--tw-border-opacity:1;border-color:rgb(0 122 194/var(--tw-border-opacity))}.hover\\:bg-blue-600:hover{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.hover\\:bg-danger:hover{--tw-bg-opacity:1;background-color:rgb(255 17 0/var(--tw-bg-opacity))}.hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.hover\\:bg-primary:hover{--tw-bg-opacity:1;background-color:rgb(0 122 194/var(--tw-bg-opacity))}.hover\\:bg-primary\\/10:hover{background-color:rgba(0,122,194,.1)}.hover\\:text-blue-800:hover{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity))}.hover\\:text-primary:hover{--tw-text-opacity:1;color:rgb(0 122 194/var(--tw-text-opacity))}.hover\\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.focus\\:border-2:focus{border-width:2px}.focus\\:border-danger:focus{--tw-border-opacity:1;border-color:rgb(255 17 0/var(--tw-border-opacity))}.focus\\:border-primary:focus{--tw-border-opacity:1;border-color:rgb(0 122 194/var(--tw-border-opacity))}.focus\\:bg-gray-100:focus{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px}.active\\:bg-danger:active{--tw-bg-opacity:1;background-color:rgb(255 17 0/var(--tw-bg-opacity))}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\\:border-primary{--tw-border-opacity:1;border-color:rgb(0 122 194/var(--tw-border-opacity))}.peer:focus-visible~.peer-focus-visible\\:ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.peer:focus-visible~.peer-focus-visible\\:ring-primary\\/60{--tw-ring-color:rgba(0,122,194,.6)}.peer:focus-visible~.peer-focus-visible\\:ring-offset-2{--tw-ring-offset-width:2px}";
|
|
33
|
+
styleInject(css_248z);
|
|
34
|
+
|
|
35
|
+
const Button = React.forwardRef(({ variant = 'primary', size = 'md', fullWidth = false, loading = false, disabled, className = '', children, type = 'button', onClick, }, ref) => {
|
|
36
|
+
const baseStyles = 'inline-flex items-center justify-center text-[22px] rounded-lg transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed';
|
|
37
|
+
const variants = {
|
|
38
|
+
primary: 'bg-primary text-white hover:bg-primary-600 active:bg-primary-700',
|
|
39
|
+
secondary: 'bg-secondary-500 text-white hover:bg-secondary-600 focus:ring-secondary-500 active:bg-secondary-700',
|
|
40
|
+
outline: 'border border-primary text-primary bg-primary/10 hover:bg-primary/10 focus:ring-primary-500 active:bg-primary-100',
|
|
41
|
+
ghost: 'text-primar hover:bg-primary-50 focus:ring-primary-500 active:bg-primary-100',
|
|
42
|
+
danger: 'bg-danger text-white hover:bg-danger active:bg-danger',
|
|
43
|
+
};
|
|
44
|
+
const sizes = {
|
|
45
|
+
sm: 'px-3 h-[40px] text-sm gap-1.5',
|
|
46
|
+
md: 'px-4 h-[44px] gap-2',
|
|
47
|
+
lg: 'px-6 h-[56px] gap-2.5',
|
|
48
|
+
};
|
|
49
|
+
const widthClass = fullWidth ? 'w-full' : '';
|
|
50
|
+
return (React.createElement("button", { ref: ref, type: type, disabled: disabled || loading, onClick: onClick, className: `${baseStyles} ${variants[variant]} ${sizes[size]} ${widthClass} ${className}` },
|
|
51
|
+
loading && (React.createElement("svg", { className: "animate-spin h-4 w-4", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24" },
|
|
52
|
+
React.createElement("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }),
|
|
53
|
+
React.createElement("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" }))),
|
|
54
|
+
children));
|
|
55
|
+
});
|
|
56
|
+
Button.displayName = 'Button';
|
|
57
|
+
|
|
58
|
+
/******************************************************************************
|
|
59
|
+
Copyright (c) Microsoft Corporation.
|
|
60
|
+
|
|
61
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
62
|
+
purpose with or without fee is hereby granted.
|
|
63
|
+
|
|
64
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
65
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
66
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
67
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
68
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
69
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
70
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
71
|
+
***************************************************************************** */
|
|
72
|
+
/* global Reflect, Promise, SuppressedError, Symbol, Iterator */
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
function __rest(s, e) {
|
|
76
|
+
var t = {};
|
|
77
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
78
|
+
t[p] = s[p];
|
|
79
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
80
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
81
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
82
|
+
t[p[i]] = s[p[i]];
|
|
83
|
+
}
|
|
84
|
+
return t;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
88
|
+
var e = new Error(message);
|
|
89
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
const Checkbox = React.forwardRef(function CheckboxItem(_a, ref) {
|
|
93
|
+
var { name, value, label, checked = false, disabled = false, onChange, className } = _a, props = __rest(_a, ["name", "value", "label", "checked", "disabled", "onChange", "className"]);
|
|
94
|
+
console.log("Checkbox rendering", { name, value, checked });
|
|
95
|
+
console.log("Input classes applied:", "hidden");
|
|
96
|
+
console.log("Span classes applied:", [
|
|
97
|
+
"w-5 h-5 flex items-center justify-center rounded border transition-all ",
|
|
98
|
+
"peer-focus-visible:ring-2 peer-focus-visible:ring-offset-2 peer-focus-visible:ring-primary/60",
|
|
99
|
+
checked
|
|
100
|
+
? "border-primary bg-primary"
|
|
101
|
+
: "border-gray-400 bg-white group-hover:border-primary",
|
|
102
|
+
disabled ? "" : "shadow-sm",
|
|
103
|
+
].join(" "));
|
|
104
|
+
return (React.createElement("label", { className: `group inline-flex items-center gap-2 select-none ${disabled ? "cursor-not-allowed opacity-60" : "cursor-pointer"}` },
|
|
105
|
+
React.createElement("input", Object.assign({ ref: ref, type: "checkbox", name: name, value: value, checked: checked, disabled: disabled, onChange: (e) => onChange(value, e.target.checked), className: "hidden", "aria-checked": checked }, props, { style: { display: 'none' } })),
|
|
106
|
+
React.createElement("span", { className: [
|
|
107
|
+
"w-5 h-5 flex items-center justify-center rounded border transition-all ",
|
|
108
|
+
"peer-focus-visible:ring-2 peer-focus-visible:ring-offset-2 peer-focus-visible:ring-primary/60",
|
|
109
|
+
checked
|
|
110
|
+
? "border-primary bg-primary"
|
|
111
|
+
: "border-gray-400 bg-white group-hover:border-primary",
|
|
112
|
+
disabled ? "" : "shadow-sm",
|
|
113
|
+
].join(" "), role: "presentation" }, checked && (React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "w-3.5 h-3.5 text-white", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", focusable: "false" },
|
|
114
|
+
React.createElement("polyline", { points: "20 6 9 17 4 12" })))),
|
|
115
|
+
label && (React.createElement("span", { className: `text-sm transition-colors ${checked ? "text-primary" : "text-gray-700"} ${className !== null && className !== void 0 ? className : ""}` }, label))));
|
|
116
|
+
});
|
|
117
|
+
Checkbox.displayName = "Checkbox";
|
|
118
|
+
|
|
119
|
+
function getDefaultExportFromCjs (x) {
|
|
120
|
+
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
var dayjs_min$1 = {exports: {}};
|
|
124
|
+
|
|
125
|
+
var dayjs_min = dayjs_min$1.exports;
|
|
126
|
+
|
|
127
|
+
var hasRequiredDayjs_min;
|
|
128
|
+
|
|
129
|
+
function requireDayjs_min () {
|
|
130
|
+
if (hasRequiredDayjs_min) return dayjs_min$1.exports;
|
|
131
|
+
hasRequiredDayjs_min = 1;
|
|
132
|
+
(function (module, exports) {
|
|
133
|
+
!function(t,e){module.exports=e();}(dayjs_min,(function(){var t=1e3,e=6e4,n=36e5,r="millisecond",i="second",s="minute",u="hour",a="day",o="week",c="month",f="quarter",h="year",d="date",l="Invalid Date",$=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var e=["th","st","nd","rd"],n=t%100;return "["+t+(e[(n-20)%10]||e[n]||e[0])+"]"}},m=function(t,e,n){var r=String(t);return !r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return (e<=0?"+":"-")+m(r,2,"0")+":"+m(i,2,"0")},m:function t(e,n){if(e.date()<n.date())return -t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return +(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return {M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},g="en",D={};D[g]=M;var p="$isDayjsObject",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if("string"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split("-");if(!i&&u.length>1)return t(u[0])}else {var a=e.name;D[a]=e,i=a;}return !r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,true),this.parse(t),this.$x=this.$x||t.x||{},this[p]=true;}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init();},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds();},m.$utils=function(){return b},m.isValid=function(){return !(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate("s"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v="set"+(this.$u?"UTC":"");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+"Hours",0);case u:return $(v+"Minutes",1);case s:return $(v+"Seconds",2);case i:return $(v+"Milliseconds",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,false)},m.$set=function(t,e){var n,o=b.p(t),f="set"+(this.$u?"UTC":""),l=(n={},n[a]=f+"Date",n[d]=f+"Date",n[c]=f+"Month",n[h]=f+"FullYear",n[u]=f+"Hours",n[s]=f+"Minutes",n[i]=f+"Seconds",n[r]=f+"Milliseconds",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d;}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||"YYYY-MM-DDTHH:mm:ssZ",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,"0")},$=f||function(t,e,n){var r=t<12?"AM":"PM";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case "YY":return String(e.$y).slice(-2);case "YYYY":return b.s(e.$y,4,"0");case "M":return a+1;case "MM":return b.s(a+1,2,"0");case "MMM":return h(n.monthsShort,a,c,3);case "MMMM":return h(c,a);case "D":return e.$D;case "DD":return b.s(e.$D,2,"0");case "d":return String(e.$W);case "dd":return h(n.weekdaysMin,e.$W,o,2);case "ddd":return h(n.weekdaysShort,e.$W,o,3);case "dddd":return o[e.$W];case "H":return String(s);case "HH":return b.s(s,2,"0");case "h":return d(1);case "hh":return d(2);case "a":return $(s,u,true);case "A":return $(s,u,false);case "m":return String(u);case "mm":return b.s(u,2,"0");case "s":return String(e.$s);case "ss":return b.s(e.$s,2,"0");case "SSS":return b.s(e.$ms,3,"0");case "Z":return i}return null}(t)||i.replace(":","")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g;}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,true);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[["$ms",r],["$s",i],["$m",s],["$H",u],["$W",a],["$M",c],["$y",h],["$D",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])};})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=true),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));
|
|
134
|
+
} (dayjs_min$1));
|
|
135
|
+
return dayjs_min$1.exports;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
var dayjs_minExports = requireDayjs_min();
|
|
139
|
+
var dayjs = /*@__PURE__*/getDefaultExportFromCjs(dayjs_minExports);
|
|
140
|
+
|
|
141
|
+
var localeData$2 = {exports: {}};
|
|
142
|
+
|
|
143
|
+
var localeData$1 = localeData$2.exports;
|
|
144
|
+
|
|
145
|
+
var hasRequiredLocaleData;
|
|
146
|
+
|
|
147
|
+
function requireLocaleData () {
|
|
148
|
+
if (hasRequiredLocaleData) return localeData$2.exports;
|
|
149
|
+
hasRequiredLocaleData = 1;
|
|
150
|
+
(function (module, exports) {
|
|
151
|
+
!function(n,e){module.exports=e();}(localeData$1,(function(){return function(n,e,t){var r=e.prototype,o=function(n){return n&&(n.indexOf?n:n.s)},u=function(n,e,t,r,u){var i=n.name?n:n.$locale(),a=o(i[e]),s=o(i[t]),f=a||s.map((function(n){return n.slice(0,r)}));if(!u)return f;var d=i.weekStart;return f.map((function(n,e){return f[(e+(d||0))%7]}))},i=function(){return t.Ls[t.locale()]},a=function(n,e){return n.formats[e]||function(n){return n.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(n,e,t){return e||t.slice(1)}))}(n.formats[e.toUpperCase()])},s=function(){var n=this;return {months:function(e){return e?e.format("MMMM"):u(n,"months")},monthsShort:function(e){return e?e.format("MMM"):u(n,"monthsShort","months",3)},firstDayOfWeek:function(){return n.$locale().weekStart||0},weekdays:function(e){return e?e.format("dddd"):u(n,"weekdays")},weekdaysMin:function(e){return e?e.format("dd"):u(n,"weekdaysMin","weekdays",2)},weekdaysShort:function(e){return e?e.format("ddd"):u(n,"weekdaysShort","weekdays",3)},longDateFormat:function(e){return a(n.$locale(),e)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};r.localeData=function(){return s.bind(this)()},t.localeData=function(){var n=i();return {firstDayOfWeek:function(){return n.weekStart||0},weekdays:function(){return t.weekdays()},weekdaysShort:function(){return t.weekdaysShort()},weekdaysMin:function(){return t.weekdaysMin()},months:function(){return t.months()},monthsShort:function(){return t.monthsShort()},longDateFormat:function(e){return a(n,e)},meridiem:n.meridiem,ordinal:n.ordinal}},t.months=function(){return u(i(),"months")},t.monthsShort=function(){return u(i(),"monthsShort","months",3)},t.weekdays=function(n){return u(i(),"weekdays",null,null,n)},t.weekdaysShort=function(n){return u(i(),"weekdaysShort","weekdays",3,n)},t.weekdaysMin=function(n){return u(i(),"weekdaysMin","weekdays",2,n)};}}));
|
|
152
|
+
} (localeData$2));
|
|
153
|
+
return localeData$2.exports;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
var localeDataExports = requireLocaleData();
|
|
157
|
+
var localeData = /*@__PURE__*/getDefaultExportFromCjs(localeDataExports);
|
|
158
|
+
|
|
159
|
+
var buddhistEra$2 = {exports: {}};
|
|
160
|
+
|
|
161
|
+
var buddhistEra$1 = buddhistEra$2.exports;
|
|
162
|
+
|
|
163
|
+
var hasRequiredBuddhistEra;
|
|
164
|
+
|
|
165
|
+
function requireBuddhistEra () {
|
|
166
|
+
if (hasRequiredBuddhistEra) return buddhistEra$2.exports;
|
|
167
|
+
hasRequiredBuddhistEra = 1;
|
|
168
|
+
(function (module, exports) {
|
|
169
|
+
!function(t,e){module.exports=e();}(buddhistEra$1,(function(){return function(t,e){var n=e.prototype,i=n.format;n.format=function(t){var e=this,n=(t||"YYYY-MM-DDTHH:mm:ssZ").replace(/(\[[^\]]+])|BBBB|BB/g,(function(t,n){var i,o=String(e.$y+543),f="BB"===t?[o.slice(-2),2]:[o,4];return n||(i=e.$utils()).s.apply(i,f.concat(["0"]))}));return i.bind(this)(n)};}}));
|
|
170
|
+
} (buddhistEra$2));
|
|
171
|
+
return buddhistEra$2.exports;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
var buddhistEraExports = requireBuddhistEra();
|
|
175
|
+
var buddhistEra = /*@__PURE__*/getDefaultExportFromCjs(buddhistEraExports);
|
|
176
|
+
|
|
177
|
+
var th$1 = {exports: {}};
|
|
178
|
+
|
|
179
|
+
var th = th$1.exports;
|
|
180
|
+
|
|
181
|
+
var hasRequiredTh;
|
|
182
|
+
|
|
183
|
+
function requireTh () {
|
|
184
|
+
if (hasRequiredTh) return th$1.exports;
|
|
185
|
+
hasRequiredTh = 1;
|
|
186
|
+
(function (module, exports) {
|
|
187
|
+
!function(_,e){module.exports=e(requireDayjs_min());}(th,(function(_){function e(_){return _&&"object"==typeof _&&"default"in _?_:{default:_}}var t=e(_),d={name:"th",weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"},ordinal:function(_){return _+"."}};return t.default.locale(d,null,true),d}));
|
|
188
|
+
} (th$1));
|
|
189
|
+
return th$1.exports;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
requireTh();
|
|
193
|
+
|
|
194
|
+
var en$1 = {exports: {}};
|
|
195
|
+
|
|
196
|
+
var en = en$1.exports;
|
|
197
|
+
|
|
198
|
+
var hasRequiredEn;
|
|
199
|
+
|
|
200
|
+
function requireEn () {
|
|
201
|
+
if (hasRequiredEn) return en$1.exports;
|
|
202
|
+
hasRequiredEn = 1;
|
|
203
|
+
(function (module, exports) {
|
|
204
|
+
!function(e,n){module.exports=n();}(en,(function(){return {name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var n=["th","st","nd","rd"],t=e%100;return "["+e+(n[(t-20)%10]||n[t]||n[0])+"]"}}}));
|
|
205
|
+
} (en$1));
|
|
206
|
+
return en$1.exports;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
requireEn();
|
|
210
|
+
|
|
211
|
+
dayjs.extend(localeData);
|
|
212
|
+
dayjs.extend(buddhistEra);
|
|
213
|
+
const Datepicker = React.forwardRef(({ value, defaultValue, onChange, format = 'DD/MM/YYYY', locale = 'th', yearType = 'BE', placeholder, disabled = false, className = '', size = 'md', fullWidth = false, error, helperText, label, required = false, }, ref) => {
|
|
214
|
+
const [selectedDate, setSelectedDate] = React.useState(value || defaultValue || null);
|
|
215
|
+
const [isOpen, setIsOpen] = React.useState(false);
|
|
216
|
+
const [currentMonth, setCurrentMonth] = React.useState(dayjs().locale(locale));
|
|
217
|
+
React.useEffect(() => {
|
|
218
|
+
if (value !== undefined) {
|
|
219
|
+
setSelectedDate(value);
|
|
220
|
+
}
|
|
221
|
+
}, [value]);
|
|
222
|
+
React.useEffect(() => {
|
|
223
|
+
dayjs.locale(locale);
|
|
224
|
+
setCurrentMonth(prev => prev.locale(locale));
|
|
225
|
+
}, [locale]);
|
|
226
|
+
const handleDateSelect = (date) => {
|
|
227
|
+
setSelectedDate(date);
|
|
228
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(date);
|
|
229
|
+
setIsOpen(false);
|
|
230
|
+
};
|
|
231
|
+
const formatDisplayValue = React.useMemo(() => {
|
|
232
|
+
return (date) => {
|
|
233
|
+
if (!date)
|
|
234
|
+
return '';
|
|
235
|
+
if (yearType === 'BE') {
|
|
236
|
+
return date.add(543, 'year').format(format);
|
|
237
|
+
}
|
|
238
|
+
return date.format(format);
|
|
239
|
+
};
|
|
240
|
+
}, [format, yearType]);
|
|
241
|
+
const parseInputValue = React.useMemo(() => {
|
|
242
|
+
return (input) => {
|
|
243
|
+
if (!input)
|
|
244
|
+
return null;
|
|
245
|
+
try {
|
|
246
|
+
let parsed = dayjs(input, format, locale);
|
|
247
|
+
if (yearType === 'BE' && parsed.isValid()) {
|
|
248
|
+
parsed = parsed.subtract(543, 'year');
|
|
249
|
+
}
|
|
250
|
+
return parsed.isValid() ? parsed : null;
|
|
251
|
+
}
|
|
252
|
+
catch (_a) {
|
|
253
|
+
return null;
|
|
254
|
+
}
|
|
255
|
+
};
|
|
256
|
+
}, [format, locale, yearType]);
|
|
257
|
+
const handleInputChange = (e) => {
|
|
258
|
+
const inputValue = e.target.value;
|
|
259
|
+
const parsedDate = parseInputValue(inputValue);
|
|
260
|
+
setSelectedDate(parsedDate);
|
|
261
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(parsedDate);
|
|
262
|
+
};
|
|
263
|
+
const handleInputFocus = () => {
|
|
264
|
+
setIsOpen(true);
|
|
265
|
+
};
|
|
266
|
+
const renderCalendar = () => {
|
|
267
|
+
const daysInMonth = currentMonth.daysInMonth();
|
|
268
|
+
const firstDayOfMonth = currentMonth.startOf('month').day();
|
|
269
|
+
const monthKey = currentMonth.format('YYYY-MM');
|
|
270
|
+
const days = [];
|
|
271
|
+
// Previous month days
|
|
272
|
+
for (let i = 0; i < firstDayOfMonth; i++) {
|
|
273
|
+
const prevMonth = currentMonth.subtract(1, 'month');
|
|
274
|
+
const day = prevMonth.daysInMonth() - firstDayOfMonth + i + 1;
|
|
275
|
+
const date = prevMonth.date(day);
|
|
276
|
+
days.push(React.createElement("div", { key: `prev-${monthKey}-${i}`, className: "text-gray-400 px-2 text-center cursor-pointer hover:bg-gray-100 rounded-lg", onClick: () => handleDateSelect(date) }, day));
|
|
277
|
+
}
|
|
278
|
+
// Current month days
|
|
279
|
+
for (let day = 1; day <= daysInMonth; day++) {
|
|
280
|
+
const date = currentMonth.date(day);
|
|
281
|
+
const isSelected = selectedDate === null || selectedDate === void 0 ? void 0 : selectedDate.isSame(date, 'day');
|
|
282
|
+
const isToday = date.isSame(dayjs(), 'day');
|
|
283
|
+
days.push(React.createElement("div", { key: `current-${monthKey}-${day}`, className: `w-[24px] h-[24px] flex items-center justify-center text-[18px] text-center cursor-pointer hover:bg-primary hover:text-white rounded-lg ${isSelected ? 'bg-primary text-white ' : ''} ${isToday ? 'text-primary font-bold' : ''}`, onClick: () => handleDateSelect(date) }, day));
|
|
284
|
+
}
|
|
285
|
+
// Next month days
|
|
286
|
+
const remainingCells = 42 - days.length; // 6 rows * 7 days
|
|
287
|
+
for (let i = 1; i <= remainingCells; i++) {
|
|
288
|
+
const nextMonth = currentMonth.add(1, 'month');
|
|
289
|
+
const date = nextMonth.date(i);
|
|
290
|
+
days.push(React.createElement("div", { key: `next-${monthKey}-${i}`, className: "text-gray-400 px-2 text-center cursor-pointer hover:bg-gray-100 rounded-lg", onClick: () => handleDateSelect(date) }, i));
|
|
291
|
+
}
|
|
292
|
+
return days;
|
|
293
|
+
};
|
|
294
|
+
const baseStyles = 'border h-[44px] text-[22px] rounded-lg focus:border-2 focus:outline-none disabled:opacity-50 disabled:cursor-not-allowed cursor-pointer';
|
|
295
|
+
const sizes = {
|
|
296
|
+
sm: 'px-3 h-[40px] text-[22px]',
|
|
297
|
+
md: 'px-4 h-[44px] text-[22px]',
|
|
298
|
+
lg: 'px-5 h-[56px] text-[22px]',
|
|
299
|
+
};
|
|
300
|
+
const stateStyles = error
|
|
301
|
+
? 'border-danger focus:border-danger'
|
|
302
|
+
: 'border-[#CBD4D9] focus:border-primary hover:border-primary';
|
|
303
|
+
const widthClass = fullWidth ? 'w-full' : '';
|
|
304
|
+
return (React.createElement("div", { className: fullWidth ? 'w-full' : '' },
|
|
305
|
+
label && (React.createElement("label", { className: "block text-2xl font-base text-[#393C3E]" },
|
|
306
|
+
label,
|
|
307
|
+
required && React.createElement("span", { className: "text-danger ml-1" }, "*"))),
|
|
308
|
+
React.createElement("div", { className: "relative" },
|
|
309
|
+
React.createElement("input", { ref: ref, type: "text", value: formatDisplayValue(selectedDate), onChange: handleInputChange, onFocus: handleInputFocus, placeholder: placeholder, disabled: disabled, className: `${className} ${baseStyles} ${sizes[size]} ${stateStyles} ${widthClass}` }),
|
|
310
|
+
React.createElement("div", { style: { right: '16px' }, className: 'absolute top-1/2 transform -translate-y-1/2 w-8 h-8 flex items-center justify-center cursor-pointer text-gray-500 hover:text-primary', onClick: () => setIsOpen(true) },
|
|
311
|
+
React.createElement("svg", { stroke: "currentColor", fill: "currentColor", "stroke-width": "0", viewBox: "0 0 256 256", height: "20px", width: "20px", xmlns: "http://www.w3.org/2000/svg" },
|
|
312
|
+
React.createElement("path", { d: "M208,34H182V24a6,6,0,0,0-12,0V34H86V24a6,6,0,0,0-12,0V34H48A14,14,0,0,0,34,48V208a14,14,0,0,0,14,14H208a14,14,0,0,0,14-14V48A14,14,0,0,0,208,34ZM48,46H74V56a6,6,0,0,0,12,0V46h84V56a6,6,0,0,0,12,0V46h26a2,2,0,0,1,2,2V82H46V48A2,2,0,0,1,48,46ZM208,210H48a2,2,0,0,1-2-2V94H210V208A2,2,0,0,1,208,210Z" }))),
|
|
313
|
+
isOpen && (React.createElement("div", { className: "absolute top-full left-0 mt-1 bg-white border border-[#CBD4D9] rounded-lg z-10 w-80" },
|
|
314
|
+
React.createElement("div", { className: "p-4" },
|
|
315
|
+
React.createElement("div", { className: "flex justify-between items-center mb-1" },
|
|
316
|
+
React.createElement("button", { type: "button", onClick: () => setCurrentMonth(prev => prev.subtract(1, 'month')), className: "p-1 hover:bg-gray-100 rounded" },
|
|
317
|
+
React.createElement("svg", { stroke: "currentColor", fill: "none", "stroke-width": "1.5", viewBox: "0 0 24 24", "aria-hidden": "true", height: "1em", width: "1em", xmlns: "http://www.w3.org/2000/svg" },
|
|
318
|
+
React.createElement("path", { "stroke-linecap": "round", "stroke-linejoin": "round", d: "M15.75 19.5 8.25 12l7.5-7.5" }))),
|
|
319
|
+
React.createElement("div", { className: "font-base text-primary" }, yearType === "BE" ? currentMonth.add(543, 'year').format('MMMM YYYY') : currentMonth.format('MMMM YYYY')),
|
|
320
|
+
React.createElement("button", { type: "button", onClick: () => setCurrentMonth(prev => prev.add(1, 'month')), className: "p-1 hover:bg-gray-100 rounded" },
|
|
321
|
+
React.createElement("svg", { stroke: "currentColor", fill: "none", "stroke-width": "1.5", viewBox: "0 0 24 24", "aria-hidden": "true", height: "1em", width: "1em", xmlns: "http://www.w3.org/2000/svg" },
|
|
322
|
+
React.createElement("path", { "stroke-linecap": "round", "stroke-linejoin": "round", d: "m8.25 4.5 7.5 7.5-7.5 7.5" })))),
|
|
323
|
+
React.createElement("div", { className: "grid grid-cols-7 gap-1 mb-2" }, dayjs.localeData().weekdaysMin().map((day, index) => (React.createElement("div", { key: `${locale}-${day}-${index}`, className: `px-2 text-center ${index === 0 ? 'text-danger' : 'text-gray-600'}` }, day)))),
|
|
324
|
+
React.createElement("div", { className: "grid grid-cols-7 gap-1" }, renderCalendar()))))),
|
|
325
|
+
(error || helperText) && (React.createElement("p", { className: `mt-1 text-sm ${error ? 'text-danger' : 'text-gray-500'}` }, error || helperText))));
|
|
326
|
+
});
|
|
327
|
+
Datepicker.displayName = 'Datepicker';
|
|
328
|
+
|
|
329
|
+
const Input = React.forwardRef(({ label, error, helperText, size = 'md', fullWidth = false, disabled, className = '', leftIcon, rightIcon, type = 'text', placeholder, value, defaultValue, onChange, onBlur, onFocus, name, id, required, readOnly, autoComplete, autoFocus, }, ref) => {
|
|
330
|
+
const baseStyles = 'border h-[44px] text-[22px] rounded-lg focus:border-2 focus:outline-none disabled:opacity-50 disabled:cursor-not-allowed';
|
|
331
|
+
const sizes = {
|
|
332
|
+
sm: 'px-3 h-[40px] text-[22px]',
|
|
333
|
+
md: 'px-4 h-[44px] text-[22px]',
|
|
334
|
+
lg: 'px-5 h-[56px] text-[22px]',
|
|
335
|
+
};
|
|
336
|
+
const iconPadding = {
|
|
337
|
+
sm: leftIcon ? 'pl-10' : rightIcon ? 'pr-10' : '',
|
|
338
|
+
md: leftIcon ? 'pl-12' : rightIcon ? 'pr-12' : '',
|
|
339
|
+
lg: leftIcon ? 'pl-14' : rightIcon ? 'pr-14' : '',
|
|
340
|
+
};
|
|
341
|
+
const stateStyles = error
|
|
342
|
+
? 'border-danger focus:border-danger'
|
|
343
|
+
: 'border-[#CBD4D9] focus:border-primary hover:border-primary';
|
|
344
|
+
const widthClass = fullWidth ? 'w-full' : '';
|
|
345
|
+
return (React.createElement("div", { className: fullWidth ? 'w-full' : '' },
|
|
346
|
+
label && (React.createElement("label", { htmlFor: id, className: "block text-2xl font-base text-[#393C3E]" },
|
|
347
|
+
label,
|
|
348
|
+
required && React.createElement("span", { className: "text-danger ml-1" }, "*"))),
|
|
349
|
+
React.createElement("div", { className: "relative" },
|
|
350
|
+
leftIcon && (React.createElement("div", { className: "absolute left-3 top-1/2 -translate-y-1/2 text-gray-400" }, leftIcon)),
|
|
351
|
+
React.createElement("input", { ref: ref, type: type, id: id, name: name, disabled: disabled, readOnly: readOnly, required: required, autoComplete: autoComplete, autoFocus: autoFocus, placeholder: placeholder, value: value, defaultValue: defaultValue, onChange: onChange, onBlur: onBlur, onFocus: onFocus, className: `${className} ${baseStyles} ${sizes[size]} ${iconPadding[size]} ${stateStyles} ${widthClass} ` }),
|
|
352
|
+
rightIcon && (React.createElement("div", { className: "absolute right-3 top-1/2 -translate-y-1/2 text-gray-400" }, rightIcon))),
|
|
353
|
+
(error || helperText) && (React.createElement("p", { className: `mt-1 ${error ? 'text-danger' : 'text-gray-500'}` }, error || helperText))));
|
|
354
|
+
});
|
|
355
|
+
Input.displayName = 'Input';
|
|
356
|
+
|
|
357
|
+
const Radio = React.forwardRef(function RadioItem(_a, ref) {
|
|
358
|
+
var { name, value, label, checked = false, disabled = false, onChange, className } = _a, props = __rest(_a, ["name", "value", "label", "checked", "disabled", "onChange", "className"]);
|
|
359
|
+
return (React.createElement("label", { className: `group inline-flex items-center gap-2 select-none ${disabled ? "cursor-not-allowed opacity-60" : "cursor-pointer"}` },
|
|
360
|
+
React.createElement("input", Object.assign({ ref: ref, type: "radio", name: name, value: value, checked: checked, disabled: disabled, onChange: (e) => onChange(value, e.target.checked), className: "hidden", "aria-checked": checked }, props, { style: { display: 'none' } })),
|
|
361
|
+
React.createElement("span", { className: [
|
|
362
|
+
"w-5 h-5 flex items-center justify-center rounded-full border transition-all ",
|
|
363
|
+
"peer-focus-visible:ring-2 peer-focus-visible:ring-offset-2 peer-focus-visible:ring-primary/60",
|
|
364
|
+
checked
|
|
365
|
+
? "border-primary border-2"
|
|
366
|
+
: "border-gray-400 bg-white group-hover:border-primary",
|
|
367
|
+
disabled ? "" : "shadow-sm",
|
|
368
|
+
].join(" "), role: "presentation" }, checked && (React.createElement("span", { className: "w-3 h-3 bg-primary rounded-full", "aria-hidden": "true" }))),
|
|
369
|
+
label && (React.createElement("span", { className: `transition-colors ${checked ? "text-primary" : "text-gray-700"} ${className !== null && className !== void 0 ? className : ""}` }, label))));
|
|
370
|
+
});
|
|
371
|
+
Radio.displayName = "Radio";
|
|
372
|
+
|
|
373
|
+
const Select = React.forwardRef(({ options, value, placeholder = 'Select an option', disabled = false, className = '', onChange, }, ref) => {
|
|
374
|
+
const [isOpen, setIsOpen] = React.useState(false);
|
|
375
|
+
const [selectedValue, setSelectedValue] = React.useState(value || '');
|
|
376
|
+
const selectRef = React.useRef(null);
|
|
377
|
+
React.useEffect(() => {
|
|
378
|
+
setSelectedValue(value || '');
|
|
379
|
+
}, [value]);
|
|
380
|
+
const selectedOption = options.find(option => option.value === selectedValue);
|
|
381
|
+
const handleSelect = (option) => {
|
|
382
|
+
setSelectedValue(option.value);
|
|
383
|
+
setIsOpen(false);
|
|
384
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(option.value);
|
|
385
|
+
};
|
|
386
|
+
const handleClickOutside = (event) => {
|
|
387
|
+
if (selectRef.current && !selectRef.current.contains(event.target)) {
|
|
388
|
+
setIsOpen(false);
|
|
389
|
+
}
|
|
390
|
+
};
|
|
391
|
+
React.useEffect(() => {
|
|
392
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
393
|
+
return () => {
|
|
394
|
+
document.removeEventListener('mousedown', handleClickOutside);
|
|
395
|
+
};
|
|
396
|
+
}, []);
|
|
397
|
+
return (React.createElement("div", { ref: ref, className: `relative ${className}` },
|
|
398
|
+
React.createElement("button", { type: "button", onClick: () => !disabled && setIsOpen(!isOpen), disabled: disabled, className: `w-full px-4 h-[44px] text-left bg-white border border-gray-300 rounded-md focus:outline-none focus:border-2 focus:border-primary ${disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'} flex items-center justify-between` },
|
|
399
|
+
React.createElement("div", { className: "flex items-center" },
|
|
400
|
+
(selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.icon) && (React.createElement("span", { className: "mr-2" }, selectedOption.icon)),
|
|
401
|
+
React.createElement("span", { className: selectedOption ? 'text-gray-900' : 'text-gray-500' }, selectedOption ? selectedOption.label : placeholder)),
|
|
402
|
+
React.createElement("svg", { className: `w-5 h-5 text-gray-400 transition-transform ${isOpen ? 'transform rotate-180' : ''}`, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg" },
|
|
403
|
+
React.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }))),
|
|
404
|
+
isOpen && (React.createElement("div", { className: "absolute z-10 w-full mt-1 bg-white border border-gray-300 rounded-md shadow-lg max-h-60 overflow-auto" }, options.map((option) => (React.createElement("button", { key: option.value, type: "button", onClick: () => handleSelect(option), className: `w-full px-4 py-2 text-left hover:bg-gray-100 focus:outline-none focus:bg-gray-100 flex items-center ${option.value === selectedValue ? 'bg-blue-50 text-primary' : ''}` },
|
|
405
|
+
option.icon && React.createElement("span", { className: "mr-2" }, option.icon),
|
|
406
|
+
option.label)))))));
|
|
407
|
+
});
|
|
408
|
+
Select.displayName = 'Select';
|
|
409
|
+
|
|
410
|
+
const Autocomplete = React.forwardRef(({ options, value, placeholder = 'Search...', disabled = false, className = '', mode = 'single', onChange, filterOptions, }, ref) => {
|
|
411
|
+
const [isOpen, setIsOpen] = React.useState(false);
|
|
412
|
+
const [inputValue, setInputValue] = React.useState('');
|
|
413
|
+
const [selectedValues, setSelectedValues] = React.useState(Array.isArray(value) ? value : value ? [value] : []);
|
|
414
|
+
const [filteredOptions, setFilteredOptions] = React.useState(options);
|
|
415
|
+
const [isUserTyping, setIsUserTyping] = React.useState(false);
|
|
416
|
+
const inputRef = React.useRef(null);
|
|
417
|
+
const containerRef = React.useRef(null);
|
|
418
|
+
const defaultFilterOptions = React.useCallback((options, inputValue) => {
|
|
419
|
+
return options.filter(option => option.label.toLowerCase().includes(inputValue.toLowerCase()));
|
|
420
|
+
}, []);
|
|
421
|
+
const currentFilterOptions = filterOptions || defaultFilterOptions;
|
|
422
|
+
// Sync selected values and input value with prop changes
|
|
423
|
+
React.useEffect(() => {
|
|
424
|
+
if (value !== undefined) {
|
|
425
|
+
const newSelectedValues = Array.isArray(value) ? value : value ? [value] : [];
|
|
426
|
+
setSelectedValues(newSelectedValues);
|
|
427
|
+
// Only update input value if user is not actively typing
|
|
428
|
+
if (mode === 'single' && !isUserTyping) {
|
|
429
|
+
if (newSelectedValues.length > 0) {
|
|
430
|
+
const selectedOption = options.find(option => option.value === newSelectedValues[0] || option.label === newSelectedValues[0]);
|
|
431
|
+
setInputValue(selectedOption ? selectedOption.label : newSelectedValues[0]);
|
|
432
|
+
}
|
|
433
|
+
else {
|
|
434
|
+
setInputValue('');
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
}, [value, options, mode, isUserTyping]);
|
|
439
|
+
React.useEffect(() => {
|
|
440
|
+
setFilteredOptions(currentFilterOptions(options, inputValue));
|
|
441
|
+
}, [options, inputValue, currentFilterOptions]);
|
|
442
|
+
const handleInputChange = (e) => {
|
|
443
|
+
const newValue = e.target.value;
|
|
444
|
+
setInputValue(newValue);
|
|
445
|
+
setIsOpen(true);
|
|
446
|
+
setIsUserTyping(true);
|
|
447
|
+
};
|
|
448
|
+
const handleSelect = (option) => {
|
|
449
|
+
setIsUserTyping(false);
|
|
450
|
+
console.log('option', option);
|
|
451
|
+
if (mode === 'single') {
|
|
452
|
+
const newValue = option.value;
|
|
453
|
+
setSelectedValues([newValue]);
|
|
454
|
+
setInputValue(option.label);
|
|
455
|
+
setIsOpen(false);
|
|
456
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(newValue);
|
|
457
|
+
}
|
|
458
|
+
else {
|
|
459
|
+
const newSelectedValues = selectedValues.includes(option.value)
|
|
460
|
+
? selectedValues.filter(v => v !== option.value)
|
|
461
|
+
: [...selectedValues, option.value];
|
|
462
|
+
setSelectedValues(newSelectedValues);
|
|
463
|
+
setInputValue('');
|
|
464
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(newSelectedValues);
|
|
465
|
+
}
|
|
466
|
+
};
|
|
467
|
+
const handleRemoveTag = (valueToRemove) => {
|
|
468
|
+
const newSelectedValues = selectedValues.filter(v => v !== valueToRemove);
|
|
469
|
+
setSelectedValues(newSelectedValues);
|
|
470
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(newSelectedValues);
|
|
471
|
+
};
|
|
472
|
+
const handleClickOutside = (event) => {
|
|
473
|
+
if (containerRef.current && !containerRef.current.contains(event.target)) {
|
|
474
|
+
setIsOpen(false);
|
|
475
|
+
setIsUserTyping(false);
|
|
476
|
+
}
|
|
477
|
+
};
|
|
478
|
+
React.useEffect(() => {
|
|
479
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
480
|
+
return () => {
|
|
481
|
+
document.removeEventListener('mousedown', handleClickOutside);
|
|
482
|
+
};
|
|
483
|
+
}, []);
|
|
484
|
+
const selectedOptions = options.filter(option => selectedValues.includes(option.value));
|
|
485
|
+
return (React.createElement("div", { ref: ref, className: `relative ${className}` },
|
|
486
|
+
React.createElement("div", { ref: containerRef, className: `w-full min-h-[44px] bg-white border border-gray-300 rounded-lg focus-within:border-2 focus-within:border-primary ${disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-text'}` },
|
|
487
|
+
mode === 'multiple' && selectedOptions.length > 0 && (React.createElement("div", { className: "flex flex-wrap gap-1 p-2" }, selectedOptions.map(option => (React.createElement("span", { key: option.value, className: "inline-flex items-center px-2 text-sm bg-blue-100 text-blue-800 rounded-full" },
|
|
488
|
+
option.icon && React.createElement("span", { className: "mr-1" }, option.icon),
|
|
489
|
+
option.label,
|
|
490
|
+
React.createElement("button", { type: "button", onClick: () => handleRemoveTag(option.value), className: "ml-1 text-blue-600 hover:text-blue-800" }, "\u00D7")))))),
|
|
491
|
+
React.createElement("input", { ref: inputRef, type: "text", value: inputValue, onChange: handleInputChange, onFocus: () => setIsOpen(true), placeholder: mode === 'multiple' && selectedOptions.length > 0 ? '' : placeholder, disabled: disabled, className: `w-full px-4 text-left bg-transparent border-none outline-none focus:outline-none ${mode === 'multiple' && selectedOptions.length > 0 ? 'h-[44px] pt-2' : 'h-[44px]'}` })),
|
|
492
|
+
isOpen && filteredOptions.length > 0 && (React.createElement("div", { className: "absolute z-10 w-full mt-1 bg-white border border-gray-300 rounded-md shadow-lg max-h-60 overflow-auto" }, filteredOptions.map((option) => (React.createElement("button", { key: option.value, type: "button", onMouseDown: (e) => {
|
|
493
|
+
e.preventDefault();
|
|
494
|
+
handleSelect(option);
|
|
495
|
+
}, className: `w-full px-4 py-2 text-left hover:bg-gray-100 focus:outline-none focus:bg-gray-100 flex items-center ${selectedValues.includes(option.value) ? 'bg-blue-50 text-primary' : ''}` },
|
|
496
|
+
option.icon && React.createElement("span", { className: "mr-2" }, option.icon),
|
|
497
|
+
option.label)))))));
|
|
498
|
+
});
|
|
499
|
+
Autocomplete.displayName = 'Autocomplete';
|
|
500
|
+
|
|
501
|
+
exports.Autocomplete = Autocomplete;
|
|
502
|
+
exports.Button = Button;
|
|
503
|
+
exports.Checkbox = Checkbox;
|
|
504
|
+
exports.Datepicker = Datepicker;
|
|
505
|
+
exports.Input = Input;
|
|
506
|
+
exports.Radio = Radio;
|
|
507
|
+
exports.Select = Select;
|
|
508
|
+
//# sourceMappingURL=index.js.map
|