kku-ui 0.2.55 → 0.9.91

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/README.md +8 -8
  2. package/lib/es/common/hooks/index.d.ts +0 -4
  3. package/lib/es/components/index.d.ts +6 -5
  4. package/lib/es/components/ui/actions/button/KButton.d.ts +12 -0
  5. package/lib/es/components/ui/actions/button-group/KButtonGroup.d.ts +12 -0
  6. package/lib/es/components/ui/actions/index.d.ts +3 -0
  7. package/lib/es/components/ui/actions/switch/KSwitch.d.ts +6 -0
  8. package/lib/es/components/ui/data-display/accordion/KAccordion.d.ts +17 -0
  9. package/lib/es/components/ui/data-display/bottom-sheet/KBottomSheet.d.ts +39 -0
  10. package/lib/es/components/ui/data-display/dropdown-menu/KDropdownMenu.d.ts +55 -0
  11. package/lib/es/components/ui/data-display/index.d.ts +3 -0
  12. package/lib/es/components/ui/feedback/dialog/KDialog.d.ts +39 -0
  13. package/lib/es/components/ui/feedback/index.d.ts +5 -0
  14. package/lib/es/components/ui/feedback/popover/KPopover.d.ts +15 -0
  15. package/lib/es/components/ui/feedback/skeleton/KSkeleton.d.ts +9 -0
  16. package/lib/es/components/ui/feedback/spinner/KSpinner.d.ts +6 -0
  17. package/lib/es/components/ui/feedback/toast/KToast.d.ts +10 -0
  18. package/lib/es/components/ui/foundation/icon/KIcon.d.ts +19 -0
  19. package/lib/es/components/ui/foundation/icon/index.d.ts +1 -0
  20. package/lib/es/components/ui/input/index.d.ts +2 -0
  21. package/lib/es/components/ui/input/select/KSelect.d.ts +38 -0
  22. package/lib/es/components/ui/input/textfield/KTextField.d.ts +19 -0
  23. package/lib/es/components/ui/layout/aspect-ratio/KAspectRatio.d.ts +6 -0
  24. package/lib/es/components/ui/layout/index.d.ts +1 -0
  25. package/lib/es/hooks.js +33 -16
  26. package/lib/es/index.d.ts +0 -1
  27. package/lib/es/index.js +10803 -6273
  28. package/lib/es/index.js.br +0 -0
  29. package/lib/es/index.js.gz +0 -0
  30. package/lib/es/lib/utils.d.ts +2 -0
  31. package/lib/kku-ui.css +1 -0
  32. package/package.json +24 -8
  33. package/lib/es/common/hooks/useDropdownPosition.d.ts +0 -16
  34. package/lib/es/common/hooks/useEscapeKey.d.ts +0 -2
  35. package/lib/es/common/hooks/useRipple/useRipple.d.ts +0 -5
  36. package/lib/es/common/hooks/useSafePortalContainer.d.ts +0 -1
  37. package/lib/es/common/util/keyboard.d.ts +0 -2
  38. package/lib/es/common/util/lodashUtil.d.ts +0 -4
  39. package/lib/es/common/util/style.d.ts +0 -5
  40. package/lib/es/components/actions/button/KButton.d.ts +0 -3
  41. package/lib/es/components/actions/button/KButton.interface.d.ts +0 -18
  42. package/lib/es/components/actions/button/index.d.ts +0 -2
  43. package/lib/es/components/actions/button-group/KButtonGroup.d.ts +0 -6
  44. package/lib/es/components/actions/button-group/KButtonGroup.interface.d.ts +0 -8
  45. package/lib/es/components/actions/button-group/index.d.ts +0 -2
  46. package/lib/es/components/actions/index.d.ts +0 -5
  47. package/lib/es/components/actions/switch/KSwitch.d.ts +0 -3
  48. package/lib/es/components/actions/switch/KSwitch.interface.d.ts +0 -8
  49. package/lib/es/components/actions/switch/index.d.ts +0 -2
  50. package/lib/es/components/actions/toggle-button/KToggleButton.d.ts +0 -4
  51. package/lib/es/components/actions/toggle-button/KToggleButton.interface.d.ts +0 -4
  52. package/lib/es/components/actions/toggle-button/index.d.ts +0 -2
  53. package/lib/es/components/actions/toggle-button-group/KToggleButtonGroup.d.ts +0 -6
  54. package/lib/es/components/actions/toggle-button-group/KToggleButtonGroup.interface.d.ts +0 -9
  55. package/lib/es/components/actions/toggle-button-group/index.d.ts +0 -2
  56. package/lib/es/components/data-display/accordion/KAccordion.d.ts +0 -6
  57. package/lib/es/components/data-display/accordion/KAccordion.interface.d.ts +0 -9
  58. package/lib/es/components/data-display/accordion/index.d.ts +0 -2
  59. package/lib/es/components/data-display/dropdown/KDropdown.context.d.ts +0 -3
  60. package/lib/es/components/data-display/dropdown/KDropdown.d.ts +0 -10
  61. package/lib/es/components/data-display/dropdown/KDropdown.interface.d.ts +0 -45
  62. package/lib/es/components/data-display/dropdown/KDropdownContent.d.ts +0 -3
  63. package/lib/es/components/data-display/dropdown/KDropdownTrigger.d.ts +0 -3
  64. package/lib/es/components/data-display/dropdown/index.d.ts +0 -2
  65. package/lib/es/components/data-display/index.d.ts +0 -4
  66. package/lib/es/components/data-display/menu/KMenu.d.ts +0 -12
  67. package/lib/es/components/data-display/menu/KMenu.interface.d.ts +0 -19
  68. package/lib/es/components/data-display/menu/KMenuItem.d.ts +0 -3
  69. package/lib/es/components/data-display/menu/KMenuItemDivider.d.ts +0 -3
  70. package/lib/es/components/data-display/menu/KMenuItemSelectable.d.ts +0 -3
  71. package/lib/es/components/data-display/menu/index.d.ts +0 -2
  72. package/lib/es/components/data-display/skeleton/KSkeleton.d.ts +0 -6
  73. package/lib/es/components/data-display/skeleton/KSkeleton.interface.d.ts +0 -8
  74. package/lib/es/components/data-display/skeleton/index.d.ts +0 -2
  75. package/lib/es/components/feedback/backdrop/KBackdrop.d.ts +0 -6
  76. package/lib/es/components/feedback/backdrop/KBackdrop.motion.d.ts +0 -3
  77. package/lib/es/components/feedback/backdrop/index.d.ts +0 -2
  78. package/lib/es/components/feedback/index.d.ts +0 -3
  79. package/lib/es/components/feedback/modal/KModal.context.d.ts +0 -3
  80. package/lib/es/components/feedback/modal/KModal.d.ts +0 -12
  81. package/lib/es/components/feedback/modal/KModal.interface.d.ts +0 -35
  82. package/lib/es/components/feedback/modal/KModal.motion.d.ts +0 -2
  83. package/lib/es/components/feedback/modal/KModalContent.d.ts +0 -3
  84. package/lib/es/components/feedback/modal/KModalFooter.d.ts +0 -3
  85. package/lib/es/components/feedback/modal/KModalHeader.d.ts +0 -3
  86. package/lib/es/components/feedback/modal/index.d.ts +0 -2
  87. package/lib/es/components/feedback/spinner/KSpinner.d.ts +0 -3
  88. package/lib/es/components/feedback/spinner/index.d.ts +0 -2
  89. package/lib/es/components/foundations/icon/KIcon.d.ts +0 -3
  90. package/lib/es/components/foundations/icon/KIcon.interface.d.ts +0 -14
  91. package/lib/es/components/foundations/icon/index.d.ts +0 -2
  92. package/lib/es/components/foundations/index.d.ts +0 -1
  93. package/lib/es/components/input/index.d.ts +0 -2
  94. package/lib/es/components/input/select/KSelect.d.ts +0 -3
  95. package/lib/es/components/input/select/KSelect.interface.d.ts +0 -37
  96. package/lib/es/components/input/select/index.d.ts +0 -2
  97. package/lib/es/components/input/textfield/KTextField.d.ts +0 -3
  98. package/lib/es/components/input/textfield/KTextField.interface.d.ts +0 -26
  99. package/lib/es/components/input/textfield/index.d.ts +0 -2
  100. package/lib/es/core/accordion/Accordion.context.d.ts +0 -3
  101. package/lib/es/core/accordion/Accordion.d.ts +0 -10
  102. package/lib/es/core/accordion/Accordion.interface.d.ts +0 -21
  103. package/lib/es/core/accordion/AccordionContent.d.ts +0 -6
  104. package/lib/es/core/accordion/AccordionSummary.d.ts +0 -6
  105. package/lib/es/core/accordion/index.d.ts +0 -2
  106. package/lib/es/core/button/Button.d.ts +0 -3
  107. package/lib/es/core/button/Button.interface.d.ts +0 -4
  108. package/lib/es/core/button/index.d.ts +0 -2
  109. package/lib/es/core/index.d.ts +0 -7
  110. package/lib/es/core/menu/Menu.d.ts +0 -3
  111. package/lib/es/core/menu/Menu.interface.d.ts +0 -11
  112. package/lib/es/core/menu/index.d.ts +0 -2
  113. package/lib/es/core/menu-item/MenuItem.d.ts +0 -3
  114. package/lib/es/core/menu-item/MenuItem.interface.d.ts +0 -12
  115. package/lib/es/core/menu-item/index.d.ts +0 -2
  116. package/lib/es/core/switch/Switch.d.ts +0 -3
  117. package/lib/es/core/switch/Switch.interface.d.ts +0 -6
  118. package/lib/es/core/switch/index.d.ts +0 -2
  119. package/lib/es/core/text-field/TextField.d.ts +0 -3
  120. package/lib/es/core/text-field/TextField.interface.d.ts +0 -4
  121. package/lib/es/core/text-field/index.d.ts +0 -2
  122. package/lib/es/core/transition/Transition.d.ts +0 -6
  123. package/lib/es/core/transition/Transition.interface.d.ts +0 -9
  124. package/lib/es/core/transition/index.d.ts +0 -2
  125. package/lib/index.css +0 -1
  126. package/lib/useEscapeKey-BH1YNl0p.js +0 -158
  127. package/lib/useEscapeKey-BH1YNl0p.js.br +0 -0
  128. package/lib/useEscapeKey-BH1YNl0p.js.gz +0 -0
Binary file
Binary file
@@ -0,0 +1,2 @@
1
+ import { ClassValue } from 'clsx';
2
+ export declare function cn(...inputs: ClassValue[]): string;
package/lib/kku-ui.css ADDED
@@ -0,0 +1 @@
1
+ @font-face{font-family:Pretendard;src:local("Pretendard Medium"),url("fonts/pretendard/Pretendard-Medium.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Pretendard;src:local("Pretendard Regular"),url("fonts/pretendard/Pretendard-Regular.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Pretendard;src:local("Pretendard Bold"),url("fonts/pretendard/Pretendard-Bold.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}*,:before,:after{--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: rgb(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: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::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: rgb(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: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--font-sans);font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}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,samp,pre{font-family:var(--font-mono);font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-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,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}@font-face{font-family:Pretendard}.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.inset-x-0{left:0;right:0}.bottom-0{bottom:0}.left-2{left:.5rem}.left-\[50\%\]{left:50%}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.top-4{top:1rem}.top-\[50\%\]{top:50%}.z-50{z-index:50}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.ml-0\.5{margin-left:.125rem}.ml-auto{margin-left:auto}.mr-2{margin-right:.5rem}.mt-2{margin-top:.5rem}.mt-24{margin-top:6rem}.mt-4{margin-top:1rem}.mt-auto{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.size-2{width:.5rem;height:.5rem}.size-4{width:1rem;height:1rem}.size-5{width:1.25rem;height:1.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-40{height:10rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[125px\]{height:125px}.h-\[200px\]{height:200px}.h-\[300px\]{height:300px}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-\[var\(--radix-dropdown-menu-content-available-height\)\]{max-height:var(--radix-dropdown-menu-content-available-height)}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-20{width:5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/4{width:75%}.w-4{width:1rem}.w-4\/6{width:66.666667%}.w-48{width:12rem}.w-5{width:1.25rem}.w-5\/6{width:83.333333%}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-\[160px\]{width:160px}.w-\[200px\]{width:200px}.w-\[240px\]{width:240px}.w-\[250px\]{width:250px}.w-\[300px\]{width:300px}.w-\[360px\]{width:360px}.w-\[450px\]{width:450px}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.min-w-9{min-width:2.25rem}.min-w-\[8rem\]{min-width:8rem}.max-w-\[120px\]{max-width:120px}.max-w-\[160px\]{max-width:160px}.max-w-\[200px\]{max-width:200px}.max-w-\[240px\]{max-width:240px}.max-w-\[400px\]{max-width:400px}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.origin-\[--radix-dropdown-menu-content-transform-origin\]{transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}0%{transform:rotate(0)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-t-\[10px\]{border-top-left-radius:10px;border-top-right-radius:10px}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-input{border-color:hsl(var(--input))}.border-transparent{border-color:transparent}.bg-background{background-color:hsl(var(--background))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-card{background-color:hsl(var(--card))}.bg-danger{background-color:hsl(var(--danger))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-200\/80{background-color:#e5e7ebcc}.bg-muted{background-color:hsl(var(--muted))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-secondary{background-color:hsl(var(--secondary))}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.fill-current{fill:currentColor}.object-cover{-o-object-fit:cover;object-fit:cover}.p-1{padding:.25rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-60{padding:15rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pb-2{padding-bottom:.5rem}.pb-4{padding-bottom:1rem}.pl-1\.5{padding-left:.375rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-8{padding-left:2rem}.pr-7{padding-right:1.75rem}.pr-8{padding-right:2rem}.pr-9{padding-right:2.25rem}.pt-0{padding-top:0}.text-left{text-align:left}.text-center{text-align:center}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[14px\]{font-size:14px}.text-\[16px\]{font-size:16px}.text-\[20px\]{font-size:20px}.text-\[24px\]{font-size:24px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.leading-none{line-height:1}.tracking-tight{letter-spacing:-.025em}.tracking-widest{letter-spacing:.1em}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-danger{color:hsl(var(--danger))}.text-danger-foreground{color:hsl(var(--danger-foreground))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);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 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--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(0px + 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)}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.blur{--tw-blur: blur(8px);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)}.grayscale{--tw-grayscale: grayscale(100%);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-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x, 0),var(--tw-enter-translate-y, 0),0) scale3d(var(--tw-enter-scale, 1),var(--tw-enter-scale, 1),var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x, 0),var(--tw-exit-translate-y, 0),0) scale3d(var(--tw-exit-scale, 1),var(--tw-exit-scale, 1),var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))}}.duration-200{animation-duration:.2s}.focus-ring:focus-visible{outline:2px solid transparent;outline-offset:2px;--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);--tw-ring-color: hsl(var(--ring));--tw-ring-offset-width: 2px}:root{--background: 0 0% 100%;--foreground: 240 1.9608% 10%;--card: 0 0% 100%;--card-foreground: 240 1.9608% 10%;--popover: 0 0% 100%;--popover-foreground: 240 1.9608% 10%;--primary: 221.2987 97.4684% 53.5294%;--primary-foreground: 0 0% 98.0392%;--secondary: 0 0% 96.0784%;--secondary-foreground: 240 1.9608% 10%;--muted: 0 0% 96.0784%;--muted-foreground: 0 0% 45.098%;--accent: 0 0% 96.0784%;--accent-foreground: 240 1.9608% 10%;--danger: 356.946 95.8988% 57.7229%;--danger-foreground: 223.8136 .0004% 98.0256%;--border: 0 0% 83.1373%;--input: 0 0% 83.1373%;--ring: 221.2987 97.4684% 53.5294%;--chart-1: 211.9266 100% 78.6275%;--chart-2: 217.3404 91.2621% 59.6078%;--chart-3: 221.5842 86.3248% 54.1176%;--chart-4: 223.75 78.6885% 47.8431%;--chart-5: 226.4789 69.6078% 40%;--sidebar: 0 0% 98.0392%;--sidebar-foreground: 240 1.9608% 10%;--sidebar-primary: 240 1.9608% 10%;--sidebar-primary-foreground: 0 0% 98.0392%;--sidebar-accent: 0 0% 96.0784%;--sidebar-accent-foreground: 240 1.9608% 10%;--sidebar-border: 0 0% 89.8039%;--sidebar-ring: 0 0% 63.1373%;--font-sans: Pretendard, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-serif: Pretendard, ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;--font-mono: Pretendard, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--radius: .3rem;--shadow-x: 0px;--shadow-y: 0px;--shadow-blur: 1px;--shadow-spread: 0px;--shadow-opacity: .12;--shadow-color: oklch(0 0 0);--shadow-2xs: 0px 0px 1px 0px hsl(0 0% 0% / .06);--shadow-xs: 0px 0px 1px 0px hsl(0 0% 0% / .06);--shadow-sm: 0px 0px 1px 0px hsl(0 0% 0% / .12), 0px 1px 2px -1px hsl(0 0% 0% / .12);--shadow: 0px 0px 1px 0px hsl(0 0% 0% / .12), 0px 1px 2px -1px hsl(0 0% 0% / .12);--shadow-md: 0px 0px 1px 0px hsl(0 0% 0% / .12), 0px 2px 4px -1px hsl(0 0% 0% / .12);--shadow-lg: 0px 0px 1px 0px hsl(0 0% 0% / .12), 0px 4px 6px -1px hsl(0 0% 0% / .12);--shadow-xl: 0px 0px 1px 0px hsl(0 0% 0% / .12), 0px 8px 10px -1px hsl(0 0% 0% / .12);--shadow-2xl: 0px 0px 1px 0px hsl(0 0% 0% / .3);--tracking-normal: 0em;--spacing: .25rem}.dark{--background: 240 1.9608% 10%;--foreground: 0 0% 98.0392%;--card: 240 1.9608% 10%;--card-foreground: 0 0% 98.0392%;--popover: 0 0% 14.902%;--popover-foreground: 0 0% 98.0392%;--primary: 221.3366 97.0631% 53.4981%;--primary-foreground: 223.8136 .0004% 98.0256%;--secondary: 0 0% 14.902%;--secondary-foreground: 0 0% 98.0392%;--muted: 0 0% 14.902%;--muted-foreground: 0 0% 63.1373%;--accent: 0 0% 25.098%;--accent-foreground: 0 0% 98.0392%;--danger: 356.946 95.8988% 57.7229%;--danger-foreground: 223.8136 .0004% 98.0256%;--border: 0 0% 15.6863%;--input: 0 0% 20.3922%;--ring: 0 0% 45.098%;--chart-1: 211.9266 100% 78.6275%;--chart-2: 217.3404 91.2621% 59.6078%;--chart-3: 221.5842 86.3248% 54.1176%;--chart-4: 223.75 78.6885% 47.8431%;--chart-5: 226.4789 69.6078% 40%;--sidebar: 240 1.9608% 10%;--sidebar-foreground: 0 0% 98.0392%;--sidebar-primary: 225.4286 84% 49.0196%;--sidebar-primary-foreground: 0 0% 98.0392%;--sidebar-accent: 0 0% 14.902%;--sidebar-accent-foreground: 0 0% 98.0392%;--sidebar-border: 0 0% 15.6863%;--sidebar-ring: 0 0% 32.1569%;--font-sans: Pretendard, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-serif: Pretendard, ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;--font-mono: Pretendard, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--radius: .3rem;--shadow-x: 0px;--shadow-y: 0px;--shadow-blur: 1px;--shadow-spread: 0px;--shadow-opacity: .12;--shadow-color: oklch(0 0 0);--shadow-2xs: 0px 0px 1px 0px hsl(0 0% 0% / .06);--shadow-xs: 0px 0px 1px 0px hsl(0 0% 0% / .06);--shadow-sm: 0px 0px 1px 0px hsl(0 0% 0% / .12), 0px 1px 2px -1px hsl(0 0% 0% / .12);--shadow: 0px 0px 1px 0px hsl(0 0% 0% / .12), 0px 1px 2px -1px hsl(0 0% 0% / .12);--shadow-md: 0px 0px 1px 0px hsl(0 0% 0% / .12), 0px 2px 4px -1px hsl(0 0% 0% / .12);--shadow-lg: 0px 0px 1px 0px hsl(0 0% 0% / .12), 0px 4px 6px -1px hsl(0 0% 0% / .12);--shadow-xl: 0px 0px 1px 0px hsl(0 0% 0% / .12), 0px 8px 10px -1px hsl(0 0% 0% / .12);--shadow-2xl: 0px 0px 1px 0px hsl(0 0% 0% / .3)}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:font-medium::file-selector-button{font-weight:500}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.focus-within\:z-10:focus-within{z-index:10}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-danger\/90:hover{background-color:hsl(var(--danger) / .9)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-slate-50:hover{--tw-bg-opacity: 1;background-color:rgb(248 250 252 / var(--tw-bg-opacity, 1))}.hover\:bg-slate-800:hover{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:brightness-90:hover{--tw-brightness: brightness(.9);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)}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.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-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--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-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color: hsl(var(--background))}.active\:scale-\[0\.97\]:active{--tw-scale-x: .97;--tw-scale-y: .97;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group.toaster .group-\[\.toaster\]\:gap-2{gap:.5rem}.group.toaster .group-\[\.toaster\]\:gap-3{gap:.75rem}.group.toaster .group-\[\.toaster\]\:gap-4{gap:1rem}.group.toaster .group-\[\.toaster\]\:rounded-md{border-radius:calc(var(--radius) - 2px)}.group.toaster .group-\[\.toaster\]\:rounded-none{border-radius:0}.group.toaster .group-\[\.toaster\]\:border-border{border-color:hsl(var(--border))}.group.toast .group-\[\.toast\]\:bg-muted{background-color:hsl(var(--muted))}.group.toast .group-\[\.toast\]\:bg-primary{background-color:hsl(var(--primary))}.group.toaster .group-\[\.toaster\]\:bg-background{background-color:hsl(var(--background))}.group.toaster .group-\[\.toaster\]\:p-2{padding:.5rem}.group.toaster .group-\[\.toaster\]\:p-3{padding:.75rem}.group.toaster .group-\[\.toaster\]\:p-3\.5{padding:.875rem}.group.toaster .group-\[\.toaster\]\:p-4{padding:1rem}.group.toast .group-\[\.toast\]\:text-muted-foreground{color:hsl(var(--muted-foreground))}.group.toast .group-\[\.toast\]\:text-primary-foreground{color:hsl(var(--primary-foreground))}.group.toaster .group-\[\.toaster\]\:text-foreground{color:hsl(var(--foreground))}.group.toaster .group-\[\.toaster\]\:shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[state\=checked\]\:translate-x-5[data-state=checked]{--tw-translate-x: 1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes accordion-up{0%{height:var(--radix-accordion-content-height)}to{height:0}}.data-\[state\=closed\]\:animate-accordion-up[data-state=closed]{animation:accordion-up .2s ease-out}@keyframes accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height)}}.data-\[state\=open\]\:animate-accordion-down[data-state=open]{animation:accordion-down .2s ease-out}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=open\]\:animate-in[data-state=open]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity: initial;--tw-exit-scale: initial;--tw-exit-rotate: initial;--tw-exit-translate-x: initial;--tw-exit-translate-y: initial}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity: 0}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity: 0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale: .95}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale: .95}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y: -.5rem}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x: .5rem}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x: -.5rem}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y: .5rem}.data-\[state\=closed\]\:slide-out-to-left-1\/2[data-state=closed]{--tw-exit-translate-x: -50%}.data-\[state\=closed\]\:slide-out-to-top-\[48\%\][data-state=closed]{--tw-exit-translate-y: -48%}.data-\[state\=open\]\:slide-in-from-left-1\/2[data-state=open]{--tw-enter-translate-x: -50%}.data-\[state\=open\]\:slide-in-from-top-\[48\%\][data-state=open]{--tw-enter-translate-y: -48%}@media(min-width:640px){.sm\:max-w-\[425px\]{max-width:425px}.sm\:flex-row{flex-direction:row}.sm\:text-left{text-align:left}}.\[\&\>button\:first-child\]\:rounded-l-md>button:first-child{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\>button\:first-child\]\:rounded-t-md>button:first-child{border-top-left-radius:calc(var(--radius) - 2px);border-top-right-radius:calc(var(--radius) - 2px)}.\[\&\>button\:last-child\]\:rounded-b-md>button:last-child{border-bottom-right-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\>button\:last-child\]\:rounded-r-md>button:last-child{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\>button\:not\(\:first-child\)\]\:-ml-px>button:not(:first-child){margin-left:-1px}.\[\&\>button\:not\(\:first-child\)\]\:-mt-px>button:not(:first-child){margin-top:-1px}.\[\&\>button\]\:relative>button{position:relative}.\[\&\>button\]\:rounded-none>button{border-radius:0}.\[\&\>img\]\:h-full>img{height:100%}.\[\&\>img\]\:w-full>img{width:100%}.\[\&\>img\]\:object-cover>img{-o-object-fit:cover;object-fit:cover}.\[\&\>span\]\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&\>span\]\:flex-1>span{flex:1 1 0%}.\[\&\>span\]\:text-left>span{text-align:left}.\[\&\>svg\]\:size-4>svg{width:1rem;height:1rem}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>video\]\:h-full>video{height:100%}.\[\&\>video\]\:w-full>video{width:100%}.\[\&\>video\]\:object-cover>video{-o-object-fit:cover;object-fit:cover}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "kku-ui",
3
- "version": "0.2.55",
3
+ "version": "0.9.91",
4
+ "packageManager": "pnpm@10.5.2",
4
5
  "type": "module",
5
6
  "exports": {
6
7
  ".": {
@@ -36,10 +37,22 @@
36
37
  }
37
38
  },
38
39
  "dependencies": {
39
- "lodash-es": "^4.17.21",
40
- "motion": "^12.9.2",
41
- "react": "^19.1.0",
42
- "react-dom": "^19.1.0"
40
+ "@radix-ui/react-accordion": "^1.2.12",
41
+ "@radix-ui/react-dialog": "^1.1.15",
42
+ "@radix-ui/react-dropdown-menu": "^2.1.16",
43
+ "@radix-ui/react-popover": "^1.1.15",
44
+ "@radix-ui/react-select": "^2.2.6",
45
+ "@radix-ui/react-slot": "^1.2.4",
46
+ "@radix-ui/react-switch": "^1.2.6",
47
+ "class-variance-authority": "^0.7.1",
48
+ "clsx": "^2.1.1",
49
+ "lucide-react": "^0.562.0",
50
+ "react": "^19.2.3",
51
+ "react-dom": "^19.2.3",
52
+ "sonner": "^2.0.7",
53
+ "tailwind-merge": "^3.4.0",
54
+ "tailwindcss-animate": "^1.0.7",
55
+ "vaul": "^1.1.2"
43
56
  },
44
57
  "devDependencies": {
45
58
  "@chromatic-com/storybook": "^4.0.1",
@@ -56,14 +69,14 @@
56
69
  "@testing-library/jest-dom": "^6.6.3",
57
70
  "@testing-library/react": "^16.3.0",
58
71
  "@testing-library/user-event": "^14.6.1",
59
- "@types/lodash-es": "^4.17.12",
60
- "@types/react": "^19.1.8",
61
- "@types/react-dom": "^19.1.6",
72
+ "@types/react": "^19.2.7",
73
+ "@types/react-dom": "^19.2.3",
62
74
  "@typescript-eslint/eslint-plugin": "^7.0.0",
63
75
  "@typescript-eslint/parser": "^7.0.0",
64
76
  "@vitejs/plugin-react-swc": "^3.9.0",
65
77
  "@vitest/ui": "^3.1.2",
66
78
  "add": "^2.0.6",
79
+ "autoprefixer": "^10.4.23",
67
80
  "chromatic": "^10.7.1",
68
81
  "eslint": "^8.56.0",
69
82
  "eslint-config-airbnb": "^19.0.4",
@@ -75,16 +88,19 @@
75
88
  "eslint-plugin-react-refresh": "^0.4.19",
76
89
  "eslint-plugin-storybook": "^9.0.15",
77
90
  "jsdom": "^26.1.0",
91
+ "postcss": "^8.5.6",
78
92
  "react-docgen-typescript": "^2.4.0",
79
93
  "sass": "^1.86.3",
80
94
  "storybook": "^9.0.15",
81
95
  "storybook-dark-mode": "^4.0.2",
96
+ "tailwindcss": "^3.4.1",
82
97
  "ts-node": "^10.9.1",
83
98
  "typescript": "5.3.3",
84
99
  "vite": "^6.3.5",
85
100
  "vite-plugin-compression2": "^2.2.0",
86
101
  "vite-plugin-dts": "^4.5.4",
87
102
  "vite-plugin-eslint": "^1.8.1",
103
+ "vite-tsconfig-paths": "^6.0.3",
88
104
  "vitest": "^3.2.4"
89
105
  },
90
106
  "license": "MIT"
@@ -1,16 +0,0 @@
1
- import { RefObject } from 'react';
2
- import { KDropdownOffsetType, KDropdownPositionType } from '../../components/data-display/dropdown/KDropdown.interface';
3
- interface Position {
4
- top: number;
5
- left: number;
6
- }
7
- interface UseDropdownPositionParams {
8
- triggerRef: RefObject<HTMLElement | null>;
9
- contentRef: RefObject<HTMLElement | null>;
10
- position: KDropdownPositionType;
11
- open: boolean;
12
- offset?: KDropdownOffsetType;
13
- gap?: number;
14
- }
15
- export default function useDropdownPosition({ triggerRef, contentRef, position, open, offset, gap, }: UseDropdownPositionParams): Position;
16
- export {};
@@ -1,2 +0,0 @@
1
- declare const useEscapeKey: (callback: () => void) => void;
2
- export default useEscapeKey;
@@ -1,5 +0,0 @@
1
- import { KeyboardEvent, MouseEvent, RefObject } from 'react';
2
- export default function useRipple(elementRef: RefObject<HTMLElement | null>): {
3
- register: (event: MouseEvent | KeyboardEvent<HTMLElement>) => void;
4
- remove: () => void;
5
- };
@@ -1 +0,0 @@
1
- export default function useSafePortalContainer(Element?: HTMLElement): HTMLElement | null;
@@ -1,2 +0,0 @@
1
- import { KeyboardEvent } from 'react';
2
- export declare const handleEnterOrSpacePress: (e: KeyboardEvent<HTMLElement> | KeyboardEvent, callback: () => void) => void;
@@ -1,4 +0,0 @@
1
- declare const _default: {
2
- uniqueId: (prefix?: string | undefined) => string;
3
- };
4
- export default _default;
@@ -1,5 +0,0 @@
1
- import { CSSProperties } from 'react';
2
- declare const _default: {
3
- setStyleElement: (element: HTMLElement, style: CSSProperties) => void;
4
- };
5
- export default _default;
@@ -1,3 +0,0 @@
1
- import { KButtonProps, KButtonRefs } from '../..';
2
- declare const KButton: import('react').NamedExoticComponent<KButtonProps & import('react').RefAttributes<KButtonRefs>>;
3
- export default KButton;
@@ -1,18 +0,0 @@
1
- import { ReactNode } from 'react';
2
- import { SizeType } from '../../../common/base/base.interface';
3
- import { ButtonProps } from '../../../core';
4
- export declare const BUTTON_VARIANTS: readonly ["outlined", "solid", "primary", "subtle", "plain"];
5
- export type KButtonVariantType = (typeof BUTTON_VARIANTS)[number];
6
- export interface KButtonProps extends ButtonProps {
7
- children?: ReactNode;
8
- size?: SizeType;
9
- variant?: KButtonVariantType;
10
- isDanger?: boolean;
11
- width?: number | string;
12
- height?: number | string;
13
- }
14
- export interface KButtonRefs {
15
- focus: () => void;
16
- blur: () => void;
17
- click: () => void;
18
- }
@@ -1,2 +0,0 @@
1
- export { default as KButton } from './KButton';
2
- export * from './KButton.interface';
@@ -1,6 +0,0 @@
1
- import { KButtonGroupProps } from '../..';
2
- declare const KButtonGroup: import('react').MemoExoticComponent<{
3
- (props: KButtonGroupProps): import("react/jsx-runtime").JSX.Element;
4
- displayName: string;
5
- }>;
6
- export default KButtonGroup;
@@ -1,8 +0,0 @@
1
- import { HTMLAttributes, ReactNode } from 'react';
2
- import { KButtonVariantType } from '../..';
3
- import { SizeType } from '../../../common/base/base.interface';
4
- export interface KButtonGroupProps extends HTMLAttributes<HTMLDivElement> {
5
- variant?: KButtonVariantType;
6
- size?: SizeType;
7
- children: ReactNode;
8
- }
@@ -1,2 +0,0 @@
1
- export { default as KButtonGroup } from './KButtonGroup';
2
- export * from './KButtonGroup.interface';
@@ -1,5 +0,0 @@
1
- export * from './button';
2
- export * from './button-group';
3
- export * from './toggle-button';
4
- export * from './toggle-button-group';
5
- export * from './switch';
@@ -1,3 +0,0 @@
1
- import { KSwitchProps, KSwitchRefs } from './KSwitch.interface';
2
- declare const KSwitch: import('react').NamedExoticComponent<KSwitchProps & import('react').RefAttributes<KSwitchRefs>>;
3
- export default KSwitch;
@@ -1,8 +0,0 @@
1
- import { SwitchProps } from '../../../core/switch/Switch.interface';
2
- import { SizeType } from '../../../common/base/base.interface';
3
- export interface KSwitchProps extends SwitchProps {
4
- size?: SizeType;
5
- }
6
- export interface KSwitchRefs {
7
- toggle: () => void;
8
- }
@@ -1,2 +0,0 @@
1
- export { default as KSwitch } from './KSwitch';
2
- export * from './KSwitch.interface';
@@ -1,4 +0,0 @@
1
- import { KButtonRefs } from '../..';
2
- import { KToggleButtonProps } from './KToggleButton.interface';
3
- declare const KToggleButton: import('react').NamedExoticComponent<KToggleButtonProps & import('react').RefAttributes<KButtonRefs>>;
4
- export default KToggleButton;
@@ -1,4 +0,0 @@
1
- import { KButtonProps } from '../..';
2
- export interface KToggleButtonProps extends KButtonProps {
3
- value: string;
4
- }
@@ -1,2 +0,0 @@
1
- export { default as KToggleButton } from './KToggleButton';
2
- export * from './KToggleButton.interface';
@@ -1,6 +0,0 @@
1
- import { KToggleButtonGroupProps } from './KToggleButtonGroup.interface';
2
- declare const KToggleButtonGroup: import('react').MemoExoticComponent<{
3
- ({ multiple, className, variant, size, children, ...restProps }: KToggleButtonGroupProps): import("react/jsx-runtime").JSX.Element;
4
- displayName: string;
5
- }>;
6
- export default KToggleButtonGroup;
@@ -1,9 +0,0 @@
1
- import { HTMLAttributes, ReactNode } from 'react';
2
- import { KButtonVariantType } from '../..';
3
- import { SizeType } from '../../../common/base/base.interface';
4
- export interface KToggleButtonGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
5
- children: ReactNode;
6
- variant?: KButtonVariantType;
7
- size?: SizeType;
8
- multiple?: boolean;
9
- }
@@ -1,2 +0,0 @@
1
- export { default as KToggleButtonGroup } from './KToggleButtonGroup';
2
- export * from './KToggleButtonGroup.interface';
@@ -1,6 +0,0 @@
1
- import { KAccordionProps } from './KAccordion.interface';
2
- declare const KAccordion: import('react').MemoExoticComponent<{
3
- (props: KAccordionProps): import("react/jsx-runtime").JSX.Element;
4
- displayName: string;
5
- }>;
6
- export default KAccordion;
@@ -1,9 +0,0 @@
1
- import { ReactNode } from 'react';
2
- import { SizeType } from '../../../common/base/base.interface';
3
- import { AccordionProps } from '../../../core/accordion';
4
- export interface KAccordionProps extends AccordionProps {
5
- summary: string | ReactNode;
6
- children: ReactNode;
7
- size?: SizeType;
8
- width?: number;
9
- }
@@ -1,2 +0,0 @@
1
- export { default as KAccordion } from './KAccordion';
2
- export * from './KAccordion.interface';
@@ -1,3 +0,0 @@
1
- import { KDropdownContextProps } from './KDropdown.interface';
2
- export declare const KDropdownContext: import('react').Context<KDropdownContextProps | null>;
3
- export declare function useKDropdownContext(): KDropdownContextProps;
@@ -1,10 +0,0 @@
1
- import { ForwardRefExoticComponent, RefAttributes } from 'react';
2
- import { default as DropdownTrigger } from './KDropdownTrigger';
3
- import { default as DropdownContent } from './KDropdownContent';
4
- import { KDropdownProps, KDropdownRefs } from './KDropdown.interface';
5
- interface DropdownNamespace extends ForwardRefExoticComponent<KDropdownProps & RefAttributes<KDropdownRefs>> {
6
- Trigger: typeof DropdownTrigger;
7
- Content: typeof DropdownContent;
8
- }
9
- declare const KDropdown: DropdownNamespace;
10
- export default KDropdown;
@@ -1,45 +0,0 @@
1
- import { HTMLAttributes, KeyboardEvent, ReactNode, RefObject } from 'react';
2
- export declare const K_DROPDOWN_POSITIONS: readonly ["top-start", "top", "top-end", "right-start", "right", "right-end", "bottom-start", "bottom", "bottom-end", "left-start", "left", "left-end"];
3
- export type KDropdownPositionType = typeof K_DROPDOWN_POSITIONS[number];
4
- export type KDropdownTriggerType = 'hover' | 'click';
5
- export interface KDropdownOffsetType {
6
- x: number;
7
- y: number;
8
- }
9
- export interface KDropdownContextProps {
10
- open: boolean;
11
- onOpen: () => void;
12
- onClose: () => void;
13
- onFocusContent: () => void;
14
- onBlurContent: (e: KeyboardEvent<HTMLElement>) => void;
15
- id: string;
16
- triggerRef: RefObject<HTMLDivElement | null>;
17
- contentRef: RefObject<HTMLDivElement | null>;
18
- trigger: KDropdownTriggerType;
19
- position: KDropdownPositionType;
20
- }
21
- export interface KDropdownRefs {
22
- onOpen: () => void;
23
- onClose: () => void;
24
- }
25
- export type DropdownElementType = 'div' | 'ul' | 'li' | 'p' | 'span';
26
- export interface KDropdownProps extends HTMLAttributes<HTMLElement> {
27
- as?: DropdownElementType;
28
- children?: ReactNode;
29
- trigger?: KDropdownTriggerType;
30
- position?: KDropdownPositionType;
31
- onDropdownOpen?: () => void;
32
- onDropdownClose?: () => void;
33
- }
34
- export interface KDropdownTriggerProps extends HTMLAttributes<HTMLDivElement> {
35
- children: ReactNode;
36
- disabled?: boolean;
37
- }
38
- export interface KDropdownContentProps extends HTMLAttributes<HTMLDivElement> {
39
- children: ReactNode;
40
- autoClose?: boolean;
41
- gap?: number;
42
- offset?: KDropdownOffsetType;
43
- container?: HTMLElement;
44
- zIndex?: number;
45
- }
@@ -1,3 +0,0 @@
1
- import { KDropdownContentProps } from './KDropdown.interface';
2
- declare const KDropdownContent: import('react').NamedExoticComponent<KDropdownContentProps & import('react').RefAttributes<HTMLDivElement | null>>;
3
- export default KDropdownContent;
@@ -1,3 +0,0 @@
1
- import { KDropdownTriggerProps } from './KDropdown.interface';
2
- declare const KDropdownTrigger: import('react').NamedExoticComponent<KDropdownTriggerProps & import('react').RefAttributes<HTMLDivElement>>;
3
- export default KDropdownTrigger;
@@ -1,2 +0,0 @@
1
- export { default as KDropdown } from './KDropdown';
2
- export * from './KDropdown.interface';
@@ -1,4 +0,0 @@
1
- export * from './accordion';
2
- export * from './menu';
3
- export * from './dropdown';
4
- export * from './skeleton';
@@ -1,12 +0,0 @@
1
- import { ForwardRefExoticComponent, RefAttributes } from 'react';
2
- import { KMenuProps } from './KMenu.interface';
3
- import { default as KMenuItem } from './KMenuItem';
4
- import { default as KMenuItemSelectable } from './KMenuItemSelectable';
5
- import { default as KMenuItemDivider } from './KMenuItemDivider';
6
- interface KMenuNamespace extends ForwardRefExoticComponent<KMenuProps & RefAttributes<HTMLUListElement>> {
7
- Item: typeof KMenuItem;
8
- ItemSelectable: typeof KMenuItemSelectable;
9
- ItemDivider: typeof KMenuItemDivider;
10
- }
11
- declare const KMenu: KMenuNamespace;
12
- export default KMenu;
@@ -1,19 +0,0 @@
1
- import { HTMLAttributes, ReactNode } from 'react';
2
- import { MenuItemProps, MenuProps } from '../../../core';
3
- import { SizeType } from '../../../common/base/base.interface';
4
- export interface KMenuProps extends Omit<MenuProps, 'as'> {
5
- size?: SizeType;
6
- width?: number | string;
7
- }
8
- export interface KMenuItemProps extends Omit<MenuItemProps, 'as'> {
9
- leftContent?: ReactNode;
10
- rightContent?: ReactNode;
11
- shortcut?: string;
12
- label?: string;
13
- size?: SizeType;
14
- }
15
- export interface KMenuItemSelectableProps extends Omit<KMenuItemProps, 'leftContent'> {
16
- selected?: boolean;
17
- }
18
- export interface KMenuItemDividerProps extends HTMLAttributes<HTMLLIElement> {
19
- }
@@ -1,3 +0,0 @@
1
- import { KMenuItemProps } from './KMenu.interface';
2
- declare const KMenuItem: import('react').NamedExoticComponent<Omit<KMenuItemProps, "ref"> & import('react').RefAttributes<HTMLLIElement>>;
3
- export default KMenuItem;
@@ -1,3 +0,0 @@
1
- import { KMenuItemDividerProps } from './KMenu.interface';
2
- declare const KMenuItemDivider: import('react').NamedExoticComponent<KMenuItemDividerProps & import('react').RefAttributes<HTMLLIElement>>;
3
- export default KMenuItemDivider;
@@ -1,3 +0,0 @@
1
- import { KMenuItemSelectableProps } from './KMenu.interface';
2
- declare const KMenuItemSelectable: import('react').NamedExoticComponent<Omit<KMenuItemSelectableProps, "ref"> & import('react').RefAttributes<HTMLLIElement>>;
3
- export default KMenuItemSelectable;
@@ -1,2 +0,0 @@
1
- export { default as KMenu } from './KMenu';
2
- export * from './KMenu.interface';
@@ -1,6 +0,0 @@
1
- import { KSkeletonProps } from '../..';
2
- declare const KSkeleton: import('react').MemoExoticComponent<{
3
- ({ ...restProps }: KSkeletonProps): import("react/jsx-runtime").JSX.Element;
4
- displayName: string;
5
- }>;
6
- export default KSkeleton;
@@ -1,8 +0,0 @@
1
- import { KBaseProp } from '../../../common/base/base.interface';
2
- export interface KSkeletonProps extends KBaseProp {
3
- width?: string | number;
4
- height?: string | number;
5
- borderRadius: string | number;
6
- animation?: 'pulse' | 'wave';
7
- onClick?: () => void;
8
- }
@@ -1,2 +0,0 @@
1
- export { default as KSkeleton } from './KSkeleton';
2
- export * from './KSkeleton.interface';
@@ -1,6 +0,0 @@
1
- import { KBackdropProps } from './KBackdrop.interface';
2
- declare const KBackdrop: import('react').MemoExoticComponent<{
3
- (props: KBackdropProps): import('react').ReactPortal | null;
4
- displayName: string;
5
- }>;
6
- export default KBackdrop;
@@ -1,3 +0,0 @@
1
- import { MotionType } from '../../../common/base/base.interface';
2
- declare const KBackdropMotion: MotionType;
3
- export default KBackdropMotion;
@@ -1,2 +0,0 @@
1
- export { default as KBackdrop } from './KBackdrop';
2
- export type { KBackdropProps } from './KBackdrop.interface';
@@ -1,3 +0,0 @@
1
- export * from './modal';
2
- export * from './backdrop';
3
- export * from './spinner';
@@ -1,3 +0,0 @@
1
- import { KModalContextProps } from './KModal.interface';
2
- export declare const ModalContext: import('react').Context<KModalContextProps | null>;
3
- export declare const useModal: () => KModalContextProps;
@@ -1,12 +0,0 @@
1
- import { ForwardRefExoticComponent } from 'react';
2
- import { KModalProps } from './KModal.interface';
3
- import { default as KModalHeader } from './KModalHeader';
4
- import { default as KModalContent } from './KModalContent';
5
- import { default as KModalFooter } from './KModalFooter';
6
- interface KModalNamespace extends ForwardRefExoticComponent<KModalProps> {
7
- Header: typeof KModalHeader;
8
- Content: typeof KModalContent;
9
- Footer: typeof KModalFooter;
10
- }
11
- declare const KModal: KModalNamespace;
12
- export default KModal;
@@ -1,35 +0,0 @@
1
- import { Dispatch, HTMLAttributes, ReactNode, SetStateAction } from 'react';
2
- export declare const KMODAL_SIZES: readonly ["medium", "small", "large"];
3
- export type KModalSizeType = (typeof KMODAL_SIZES)[number];
4
- export interface KModalContextProps {
5
- isOpen: boolean;
6
- title: string | null;
7
- setTitle: Dispatch<SetStateAction<string | null>>;
8
- onCloseAction: () => void;
9
- }
10
- export interface KModalProps extends HTMLAttributes<HTMLElement> {
11
- isOpen: boolean;
12
- setIsOpen?: Dispatch<SetStateAction<boolean>>;
13
- onClose?: () => void;
14
- container?: HTMLElement;
15
- children: ReactNode;
16
- size?: KModalSizeType;
17
- animation?: 'slide' | 'fade' | 'scale';
18
- width?: number | string;
19
- height?: number | string;
20
- isOverlay?: boolean;
21
- overlayOpacity?: number;
22
- overlayClosable?: boolean;
23
- escClosable?: boolean;
24
- }
25
- export interface KModalHeaderProps extends HTMLAttributes<HTMLDivElement> {
26
- title?: string;
27
- children?: ReactNode;
28
- }
29
- export interface KModalContentProps extends HTMLAttributes<HTMLDivElement> {
30
- children?: ReactNode;
31
- }
32
- export interface KModalFooterProps extends HTMLAttributes<HTMLDivElement> {
33
- children?: ReactNode;
34
- align?: 'left' | 'center' | 'right';
35
- }
@@ -1,2 +0,0 @@
1
- import { MotionType } from '../../../common/base/base.interface';
2
- export declare const KModalMotion: Record<string, MotionType>;
@@ -1,3 +0,0 @@
1
- import { KModalContentProps } from './KModal.interface';
2
- declare const KModalContent: import('react').NamedExoticComponent<KModalContentProps & import('react').RefAttributes<HTMLDivElement>>;
3
- export default KModalContent;
@@ -1,3 +0,0 @@
1
- import { KModalFooterProps } from './KModal.interface';
2
- declare const KModalFooter: import('react').NamedExoticComponent<KModalFooterProps & import('react').RefAttributes<HTMLDivElement>>;
3
- export default KModalFooter;
@@ -1,3 +0,0 @@
1
- import { KModalHeaderProps } from './KModal.interface';
2
- declare const KModalHeader: import('react').NamedExoticComponent<KModalHeaderProps & import('react').RefAttributes<HTMLDivElement>>;
3
- export default KModalHeader;
@@ -1,2 +0,0 @@
1
- export { default as KModal } from './KModal';
2
- export * from './KModal.interface';