@oneplatformdev/ui 0.1.99-beta.8 → 0.1.99-beta.81

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 (174) hide show
  1. package/Accordion/Accordion.d.ts +1 -1
  2. package/Accordion/Accordion.d.ts.map +1 -1
  3. package/Accordion/Accordion.js +48 -26
  4. package/Accordion/Accordion.js.map +1 -1
  5. package/AlertDialog/AlertDialog.stories.js +3 -2
  6. package/AlertDialog/AlertDialog.stories.js.map +1 -1
  7. package/AlertDialog/AlertDialogRoot.d.ts.map +1 -1
  8. package/AlertDialog/AlertDialogRoot.js +26 -24
  9. package/AlertDialog/AlertDialogRoot.js.map +1 -1
  10. package/Badge/badgeVariants.d.ts +1 -1
  11. package/Button/Button.d.ts +6 -0
  12. package/Button/Button.d.ts.map +1 -1
  13. package/Button/Button.js +49 -51
  14. package/Button/Button.js.map +1 -1
  15. package/Button/Button.types.d.ts +12 -0
  16. package/Button/Button.types.d.ts.map +1 -1
  17. package/Button/Button.utils.d.ts +3 -0
  18. package/Button/Button.utils.d.ts.map +1 -0
  19. package/Button/Button.utils.js +14 -0
  20. package/Button/Button.utils.js.map +1 -0
  21. package/Button/ButtonCounterBadge.d.ts +7 -0
  22. package/Button/ButtonCounterBadge.d.ts.map +1 -0
  23. package/Button/ButtonCounterBadge.js +20 -0
  24. package/Button/ButtonCounterBadge.js.map +1 -0
  25. package/Button/buttonVariants.d.ts +11 -20
  26. package/Button/buttonVariants.d.ts.map +1 -1
  27. package/Button/buttonVariants.js +76 -12
  28. package/Button/buttonVariants.js.map +1 -1
  29. package/Button/index.d.ts +1 -0
  30. package/Button/index.d.ts.map +1 -1
  31. package/Button/index.js +6 -3
  32. package/Button/index.js.map +1 -1
  33. package/ButtonIcon/ButtonIcon.d.ts +5 -0
  34. package/ButtonIcon/ButtonIcon.d.ts.map +1 -1
  35. package/ButtonIcon/ButtonIcon.js +69 -51
  36. package/ButtonIcon/ButtonIcon.js.map +1 -1
  37. package/ButtonIcon/ButtonIcon.stories.js +94 -65
  38. package/ButtonIcon/ButtonIcon.stories.js.map +1 -1
  39. package/ButtonIcon/buttonIconVariants.d.ts +1 -1
  40. package/ButtonIcon/buttonIconVariants.d.ts.map +1 -1
  41. package/ButtonIcon/buttonIconVariants.js +7 -6
  42. package/ButtonIcon/buttonIconVariants.js.map +1 -1
  43. package/CHANGELOG.md +849 -0
  44. package/Calendar/Calendar.js +5 -4
  45. package/Calendar/Calendar.js.map +1 -1
  46. package/Combobox/Combobox.d.ts +1 -1
  47. package/Combobox/Combobox.d.ts.map +1 -1
  48. package/Combobox/Combobox.js +206 -191
  49. package/Combobox/Combobox.js.map +1 -1
  50. package/Combobox/Combobox.stories.js +212 -0
  51. package/Combobox/Combobox.stories.js.map +1 -0
  52. package/Combobox/Combobox.types.d.ts +34 -19
  53. package/Combobox/Combobox.types.d.ts.map +1 -1
  54. package/Combobox/ComboboxOptionItem.d.ts +4 -3
  55. package/Combobox/ComboboxOptionItem.d.ts.map +1 -1
  56. package/Combobox/ComboboxOptionItem.js +49 -22
  57. package/Combobox/ComboboxOptionItem.js.map +1 -1
  58. package/Combobox/ComboboxOptions.d.ts +2 -2
  59. package/Combobox/ComboboxOptions.d.ts.map +1 -1
  60. package/Combobox/ComboboxOptions.js +48 -48
  61. package/Combobox/ComboboxOptions.js.map +1 -1
  62. package/Command/Command.d.ts +6 -1
  63. package/Command/Command.d.ts.map +1 -1
  64. package/Command/Command.js +50 -35
  65. package/Command/Command.js.map +1 -1
  66. package/DataTable/DataTable.js +16 -15
  67. package/DataTable/DataTable.js.map +1 -1
  68. package/Dialog/Dialog.d.ts +1 -1
  69. package/Dialog/Dialog.d.ts.map +1 -1
  70. package/Dialog/Dialog.js +71 -39
  71. package/Dialog/Dialog.js.map +1 -1
  72. package/Dialog/Dialog.stories.js +102 -0
  73. package/Dialog/Dialog.stories.js.map +1 -0
  74. package/Dialog/Dialog.types.d.ts +4 -0
  75. package/Dialog/Dialog.types.d.ts.map +1 -0
  76. package/Dialog/Dialog.types.js +2 -0
  77. package/Dialog/Dialog.types.js.map +1 -0
  78. package/Dialog/index.d.ts +1 -0
  79. package/Dialog/index.d.ts.map +1 -1
  80. package/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  81. package/DropdownMenu/DropdownMenu.js +33 -20
  82. package/DropdownMenu/DropdownMenu.js.map +1 -1
  83. package/Form/Form.d.ts.map +1 -1
  84. package/Form/Form.js.map +1 -1
  85. package/Form/FormRenderControl.d.ts +1 -1
  86. package/Form/FormRenderControl.d.ts.map +1 -1
  87. package/Form/FormRenderControl.js +54 -14
  88. package/Form/FormRenderControl.js.map +1 -1
  89. package/Form/FormRenderControl.types.d.ts +4 -1
  90. package/Form/FormRenderControl.types.d.ts.map +1 -1
  91. package/FormCombobox/FormCombobox.d.ts.map +1 -1
  92. package/FormCombobox/FormCombobox.js +15 -13
  93. package/FormCombobox/FormCombobox.js.map +1 -1
  94. package/FormDatePicker/FormDatePicker.d.ts.map +1 -1
  95. package/FormDatePicker/FormDatePicker.js +18 -16
  96. package/FormDatePicker/FormDatePicker.js.map +1 -1
  97. package/FormDropzone/FormDropzone.d.ts.map +1 -1
  98. package/FormDropzone/FormDropzone.js +11 -9
  99. package/FormDropzone/FormDropzone.js.map +1 -1
  100. package/FormInput/FormInput.d.ts.map +1 -1
  101. package/FormInput/FormInput.js +27 -25
  102. package/FormInput/FormInput.js.map +1 -1
  103. package/FormSelect/FormSelect.d.ts.map +1 -1
  104. package/FormSelect/FormSelect.js +21 -17
  105. package/FormSelect/FormSelect.js.map +1 -1
  106. package/FormTextarea/FormTextarea.d.ts.map +1 -1
  107. package/FormTextarea/FormTextarea.js +15 -13
  108. package/FormTextarea/FormTextarea.js.map +1 -1
  109. package/InfoBlock/InfoBlock.d.ts +7 -0
  110. package/InfoBlock/InfoBlock.d.ts.map +1 -0
  111. package/InfoBlock/InfoBlock.js +27 -0
  112. package/InfoBlock/InfoBlock.js.map +1 -0
  113. package/InfoBlock/InfoBlock.stories.js +14 -0
  114. package/InfoBlock/InfoBlock.stories.js.map +1 -0
  115. package/InfoBlock/InfoBlock.types.d.ts +8 -0
  116. package/InfoBlock/InfoBlock.types.d.ts.map +1 -0
  117. package/InfoBlock/InfoBlock.types.js +2 -0
  118. package/InfoBlock/InfoBlock.types.js.map +1 -0
  119. package/InfoBlock/index.d.ts +3 -0
  120. package/InfoBlock/index.d.ts.map +1 -0
  121. package/InfoBlock/index.js +5 -0
  122. package/InfoBlock/index.js.map +1 -0
  123. package/InfoBlock/infoBlockVariants.d.ts +6 -0
  124. package/InfoBlock/infoBlockVariants.d.ts.map +1 -0
  125. package/InfoBlock/infoBlockVariants.js +26 -0
  126. package/InfoBlock/infoBlockVariants.js.map +1 -0
  127. package/Input/Input.js +1 -1
  128. package/Input/Input.js.map +1 -1
  129. package/Input/inputVariants.d.ts.map +1 -1
  130. package/Input/inputVariants.js +5 -4
  131. package/Input/inputVariants.js.map +1 -1
  132. package/LoadedIcon/LoadedIcon.d.ts.map +1 -1
  133. package/LoadedIcon/LoadedIcon.js +3 -1
  134. package/LoadedIcon/LoadedIcon.js.map +1 -1
  135. package/LoadingMask/LoadingMask.d.ts +1 -2
  136. package/LoadingMask/LoadingMask.d.ts.map +1 -1
  137. package/LoadingMask/LoadingMask.js +8 -8
  138. package/LoadingMask/LoadingMask.js.map +1 -1
  139. package/LoadingMask/LoadingMask.types.d.ts +1 -0
  140. package/LoadingMask/LoadingMask.types.d.ts.map +1 -1
  141. package/Resizable/Resizable.d.ts +5 -20
  142. package/Resizable/Resizable.d.ts.map +1 -1
  143. package/Resizable/Resizable.js +48 -31
  144. package/Resizable/Resizable.js.map +1 -1
  145. package/Resizable/Resizable.stories.js +140 -0
  146. package/Resizable/Resizable.stories.js.map +1 -0
  147. package/Search/Search.d.ts.map +1 -1
  148. package/Search/Search.js +41 -32
  149. package/Search/Search.js.map +1 -1
  150. package/Search/Search.stories.js +17 -0
  151. package/Search/Search.stories.js.map +1 -0
  152. package/TablePagination/TablePagination.js +9 -8
  153. package/TablePagination/TablePagination.js.map +1 -1
  154. package/Textarea/Textarea.d.ts.map +1 -1
  155. package/Textarea/Textarea.js +48 -43
  156. package/Textarea/Textarea.js.map +1 -1
  157. package/Textarea/Textarea.stories.js +1 -1
  158. package/Textarea/Textarea.stories.js.map +1 -1
  159. package/Textarea/Textarea.types.d.ts +3 -1
  160. package/Textarea/Textarea.types.d.ts.map +1 -1
  161. package/Tooltip/Tooltip.d.ts.map +1 -1
  162. package/Tooltip/Tooltip.js +41 -29
  163. package/Tooltip/Tooltip.js.map +1 -1
  164. package/Tooltip/Tooltip.types.d.ts +1 -0
  165. package/Tooltip/Tooltip.types.d.ts.map +1 -1
  166. package/Tooltip/tooltipVariants.d.ts +4 -0
  167. package/Tooltip/tooltipVariants.d.ts.map +1 -0
  168. package/Tooltip/tooltipVariants.js +23 -0
  169. package/Tooltip/tooltipVariants.js.map +1 -0
  170. package/index.d.ts +1 -0
  171. package/index.d.ts.map +1 -1
  172. package/index.js +335 -330
  173. package/index.js.map +1 -1
  174. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"Input.js","sources":["../../src/Input/Input.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Eye, EyeOff } from 'lucide-react';\nimport { inputVariants } from './inputVariants';\n\nimport { cn } from '@oneplatformdev/utils';\nimport { InputProps } from './Input.types';\n\nexport const BaseInput = React.forwardRef<HTMLInputElement, InputProps>(\n (props, ref) => {\n const {\n className,\n variant,\n type,\n slotProps: { input, wrapper } = {},\n onChange,\n onTransform,\n fullSize = false,\n ...rest\n } = props;\n const {\n startAdornment,\n className: classNameInputSlotProps,\n ...restInputSlotProps\n } = input || {};\n return (\n <div\n {...(wrapper || {})}\n className={cn(\n 'relative',\n fullSize && 'w-full',\n wrapper?.className\n )}>\n {Boolean(startAdornment) && (\n <span className=\"absolute left-[10px] top-1/2 -translate-y-1/2\">\n {startAdornment}\n </span>\n )}\n <input\n type={type}\n className={cn(\n inputVariants({ variant, className }),\n Boolean(startAdornment) && 'pl-8',\n classNameInputSlotProps,\n fullSize && 'min-w-auto',\n )}\n ref={ref}\n {...restInputSlotProps}\n {...rest}\n onChange={(e) => {\n if (typeof onTransform?.(e.target.value, e) === 'string') {\n e.target.value = onTransform(e.target.value, e);\n }\n if (onChange) onChange(e);\n }}\n />\n </div>\n );\n }\n);\nBaseInput.displayName = 'Input';\n\nexport const PasswordInput = React.forwardRef<HTMLInputElement, InputProps>(\n (props, ref) => {\n const [isVisible, setIsVisible] = useState<boolean>(false);\n\n const inputType = isVisible ? 'text' : 'password';\n\n const toggleVisibility = () => {\n setIsVisible(!isVisible);\n };\n\n return (\n <div {...(props?.slotProps?.wrapper || {})} className={cn('relative', props?.slotProps?.wrapper?.className)}>\n <BaseInput {...props} type={inputType} className=\"pr-8\" ref={ref} />\n <VisibilityButton isVisible={isVisible} onClick={toggleVisibility} />\n </div>\n );\n }\n);\nPasswordInput.displayName = 'PasswordInput';\n\ntype VisibilityButtonProps = {\n isVisible: boolean\n onClick: () => void\n}\n\nconst VisibilityButton = ({ isVisible, onClick }:VisibilityButtonProps) => (\n <button\n type=\"button\"\n onClick={onClick}\n className=\"absolute top-1/2 right-3 transform -translate-y-1/2\"\n >\n {isVisible ? <Eye size={16} /> : <EyeOff size={16} />}\n </button>\n);\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ type, ...props }, ref) => {\n if (type === 'password') return <PasswordInput type={type} {...props} ref={ref} />;\n return <BaseInput type={type} {...props} ref={ref} />;\n }\n);\nInput.displayName = 'Input';\n"],"names":["BaseInput","React","props","ref","className","variant","type","input","wrapper","onChange","onTransform","fullSize","rest","startAdornment","classNameInputSlotProps","restInputSlotProps","jsxs","cn","jsx","inputVariants","e","PasswordInput","isVisible","setIsVisible","useState","inputType","toggleVisibility","VisibilityButton","onClick","Eye","EyeOff","Input"],"mappings":";;;;;AAOO,MAAMA,IAAYC,EAAM;AAAA,EAC7B,CAACC,GAAOC,MAAQ;AACd,UAAM;AAAA,MACJ,WAAAC;AAAA,MACA,SAAAC;AAAA,MACA,MAAAC;AAAA,MACA,WAAW,EAAE,OAAAC,GAAO,SAAAC,EAAA,IAAY,CAAA;AAAA,MAChC,UAAAC;AAAA,MACA,aAAAC;AAAA,MACA,UAAAC,IAAW;AAAA,MACX,GAAGC;AAAA,IAAA,IACDV,GACE;AAAA,MACJ,gBAAAW;AAAA,MACA,WAAWC;AAAA,MACX,GAAGC;AAAA,IAAA,IACDR,KAAS,CAAA;AACb,WACE,gBAAAS;AAAA,MAAC;AAAA,MAAA;AAAA,QACE,GAAIR,KAAW,CAAA;AAAA,QAChB,WAAWS;AAAA,UACT;AAAA,UACAN,KAAY;AAAA,UACZH,GAAS;AAAA,QAAA;AAAA,QAEV,UAAA;AAAA,UAAA,EAAQK,KACP,gBAAAK,EAAC,QAAA,EAAK,WAAU,iDACb,UAAAL,GACH;AAAA,UAEF,gBAAAK;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAAZ;AAAA,cACA,WAAWW;AAAA,gBACTE,EAAc,EAAE,SAAAd,GAAS,WAAAD,GAAW;AAAA,gBACpC,EAAQS,KAAmB;AAAA,gBAC3BC;AAAA,gBACAH,KAAY;AAAA,cAAA;AAAA,cAEd,KAAAR;AAAA,cACC,GAAGY;AAAA,cACH,GAAGH;AAAA,cACJ,UAAU,CAACQ,MAAM;AACf,gBAAI,OAAOV,IAAcU,EAAE,OAAO,OAAOA,CAAC,KAAM,aAC9CA,EAAE,OAAO,QAAQV,EAAYU,EAAE,OAAO,OAAOA,CAAC,IAE5CX,OAAmBW,CAAC;AAAA,cAC1B;AAAA,YAAA;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;AACApB,EAAU,cAAc;AAEjB,MAAMqB,IAAgBpB,EAAM;AAAA,EACjC,CAACC,GAAOC,MAAQ;AACd,UAAM,CAACmB,GAAWC,CAAY,IAAIC,EAAkB,EAAK,GAEnDC,IAAYH,IAAY,SAAS,YAEjCI,IAAmB,MAAM;AAC7B,MAAAH,EAAa,CAACD,CAAS;AAAA,IACzB;AAEA,WACE,gBAAAN,EAAC,OAAA,EAAK,GAAId,GAAO,WAAW,WAAW,CAAA,GAAK,WAAWe,EAAG,YAAYf,GAAO,WAAW,SAAS,SAAS,GACxG,UAAA;AAAA,MAAA,gBAAAgB,EAAClB,KAAW,GAAGE,GAAO,MAAMuB,GAAW,WAAU,QAAO,KAAAtB,GAAU;AAAA,MAClE,gBAAAe,EAACS,GAAA,EAAiB,WAAAL,GAAsB,SAASI,EAAA,CAAkB;AAAA,IAAA,GACrE;AAAA,EAEJ;AACF;AACAL,EAAc,cAAc;AAO5B,MAAMM,IAAmB,CAAC,EAAE,WAAAL,GAAW,SAAAM,QACrC,gBAAAV;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,MAAK;AAAA,IACL,SAAAU;AAAA,IACA,WAAU;AAAA,IAET,UAAAN,sBAAaO,GAAA,EAAI,MAAM,IAAI,IAAK,gBAAAX,EAACY,GAAA,EAAO,MAAM,GAAA,CAAI;AAAA,EAAA;AACrD,GAGWC,IAAQ9B,EAAM;AAAA,EACzB,CAAC,EAAE,MAAAK,GAAM,GAAGJ,EAAA,GAASC,MACfG,MAAS,aAAmB,gBAAAY,EAACG,KAAc,MAAAf,GAAa,GAAGJ,GAAO,KAAAC,GAAU,IACzE,gBAAAe,EAAClB,GAAA,EAAU,MAAAM,GAAa,GAAGJ,GAAO,KAAAC,GAAU;AAEvD;AACA4B,EAAM,cAAc;"}
1
+ {"version":3,"file":"Input.js","sources":["../../src/Input/Input.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Eye, EyeOff } from 'lucide-react';\nimport { inputVariants } from './inputVariants';\n\nimport { cn } from '@oneplatformdev/utils';\nimport { InputProps } from './Input.types';\n\nexport const BaseInput = React.forwardRef<HTMLInputElement, InputProps>(\n (props, ref) => {\n const {\n className,\n variant,\n type,\n slotProps: { input, wrapper } = {},\n onChange,\n onTransform,\n fullSize = false,\n ...rest\n } = props;\n const {\n startAdornment,\n className: classNameInputSlotProps,\n ...restInputSlotProps\n } = input || {};\n return (\n <div\n {...(wrapper || {})}\n className={cn(\n 'relative',\n fullSize && 'w-full',\n wrapper?.className\n )}>\n {Boolean(startAdornment) && (\n <span className=\"absolute left-[10px] top-1/2 -translate-y-1/2\">\n {startAdornment}\n </span>\n )}\n <input\n type={type}\n className={cn(\n inputVariants({ variant, className }),\n Boolean(startAdornment) && 'pl-10',\n classNameInputSlotProps,\n fullSize && 'min-w-auto',\n )}\n ref={ref}\n {...restInputSlotProps}\n {...rest}\n onChange={(e) => {\n if (typeof onTransform?.(e.target.value, e) === 'string') {\n e.target.value = onTransform(e.target.value, e);\n }\n if (onChange) onChange(e);\n }}\n />\n </div>\n );\n }\n);\nBaseInput.displayName = 'Input';\n\nexport const PasswordInput = React.forwardRef<HTMLInputElement, InputProps>(\n (props, ref) => {\n const [isVisible, setIsVisible] = useState<boolean>(false);\n\n const inputType = isVisible ? 'text' : 'password';\n\n const toggleVisibility = () => {\n setIsVisible(!isVisible);\n };\n\n return (\n <div {...(props?.slotProps?.wrapper || {})} className={cn('relative', props?.slotProps?.wrapper?.className)}>\n <BaseInput {...props} type={inputType} className=\"pr-8\" ref={ref} />\n <VisibilityButton isVisible={isVisible} onClick={toggleVisibility} />\n </div>\n );\n }\n);\nPasswordInput.displayName = 'PasswordInput';\n\ntype VisibilityButtonProps = {\n isVisible: boolean\n onClick: () => void\n}\n\nconst VisibilityButton = ({ isVisible, onClick }:VisibilityButtonProps) => (\n <button\n type=\"button\"\n onClick={onClick}\n className=\"absolute top-1/2 right-3 transform -translate-y-1/2\"\n >\n {isVisible ? <Eye size={16} /> : <EyeOff size={16} />}\n </button>\n);\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ type, ...props }, ref) => {\n if (type === 'password') return <PasswordInput type={type} {...props} ref={ref} />;\n return <BaseInput type={type} {...props} ref={ref} />;\n }\n);\nInput.displayName = 'Input';\n"],"names":["BaseInput","React","props","ref","className","variant","type","input","wrapper","onChange","onTransform","fullSize","rest","startAdornment","classNameInputSlotProps","restInputSlotProps","jsxs","cn","jsx","inputVariants","e","PasswordInput","isVisible","setIsVisible","useState","inputType","toggleVisibility","VisibilityButton","onClick","Eye","EyeOff","Input"],"mappings":";;;;;AAOO,MAAMA,IAAYC,EAAM;AAAA,EAC7B,CAACC,GAAOC,MAAQ;AACd,UAAM;AAAA,MACJ,WAAAC;AAAA,MACA,SAAAC;AAAA,MACA,MAAAC;AAAA,MACA,WAAW,EAAE,OAAAC,GAAO,SAAAC,EAAA,IAAY,CAAA;AAAA,MAChC,UAAAC;AAAA,MACA,aAAAC;AAAA,MACA,UAAAC,IAAW;AAAA,MACX,GAAGC;AAAA,IAAA,IACDV,GACE;AAAA,MACJ,gBAAAW;AAAA,MACA,WAAWC;AAAA,MACX,GAAGC;AAAA,IAAA,IACDR,KAAS,CAAA;AACb,WACE,gBAAAS;AAAA,MAAC;AAAA,MAAA;AAAA,QACE,GAAIR,KAAW,CAAA;AAAA,QAChB,WAAWS;AAAA,UACT;AAAA,UACAN,KAAY;AAAA,UACZH,GAAS;AAAA,QAAA;AAAA,QAEV,UAAA;AAAA,UAAA,EAAQK,KACP,gBAAAK,EAAC,QAAA,EAAK,WAAU,iDACb,UAAAL,GACH;AAAA,UAEF,gBAAAK;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAAZ;AAAA,cACA,WAAWW;AAAA,gBACTE,EAAc,EAAE,SAAAd,GAAS,WAAAD,GAAW;AAAA,gBACpC,EAAQS,KAAmB;AAAA,gBAC3BC;AAAA,gBACAH,KAAY;AAAA,cAAA;AAAA,cAEd,KAAAR;AAAA,cACC,GAAGY;AAAA,cACH,GAAGH;AAAA,cACJ,UAAU,CAACQ,MAAM;AACf,gBAAI,OAAOV,IAAcU,EAAE,OAAO,OAAOA,CAAC,KAAM,aAC9CA,EAAE,OAAO,QAAQV,EAAYU,EAAE,OAAO,OAAOA,CAAC,IAE5CX,OAAmBW,CAAC;AAAA,cAC1B;AAAA,YAAA;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;AACApB,EAAU,cAAc;AAEjB,MAAMqB,IAAgBpB,EAAM;AAAA,EACjC,CAACC,GAAOC,MAAQ;AACd,UAAM,CAACmB,GAAWC,CAAY,IAAIC,EAAkB,EAAK,GAEnDC,IAAYH,IAAY,SAAS,YAEjCI,IAAmB,MAAM;AAC7B,MAAAH,EAAa,CAACD,CAAS;AAAA,IACzB;AAEA,WACE,gBAAAN,EAAC,OAAA,EAAK,GAAId,GAAO,WAAW,WAAW,CAAA,GAAK,WAAWe,EAAG,YAAYf,GAAO,WAAW,SAAS,SAAS,GACxG,UAAA;AAAA,MAAA,gBAAAgB,EAAClB,KAAW,GAAGE,GAAO,MAAMuB,GAAW,WAAU,QAAO,KAAAtB,GAAU;AAAA,MAClE,gBAAAe,EAACS,GAAA,EAAiB,WAAAL,GAAsB,SAASI,EAAA,CAAkB;AAAA,IAAA,GACrE;AAAA,EAEJ;AACF;AACAL,EAAc,cAAc;AAO5B,MAAMM,IAAmB,CAAC,EAAE,WAAAL,GAAW,SAAAM,QACrC,gBAAAV;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,MAAK;AAAA,IACL,SAAAU;AAAA,IACA,WAAU;AAAA,IAET,UAAAN,sBAAaO,GAAA,EAAI,MAAM,IAAI,IAAK,gBAAAX,EAACY,GAAA,EAAO,MAAM,GAAA,CAAI;AAAA,EAAA;AACrD,GAGWC,IAAQ9B,EAAM;AAAA,EACzB,CAAC,EAAE,MAAAK,GAAM,GAAGJ,EAAA,GAASC,MACfG,MAAS,aAAmB,gBAAAY,EAACG,KAAc,MAAAf,GAAa,GAAGJ,GAAO,KAAAC,GAAU,IACzE,gBAAAe,EAAClB,GAAA,EAAU,MAAAM,GAAa,GAAGJ,GAAO,KAAAC,GAAU;AAEvD;AACA4B,EAAM,cAAc;"}
@@ -1 +1 @@
1
- {"version":3,"file":"inputVariants.d.ts","sourceRoot":"","sources":["../../src/Input/inputVariants.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa;;8EAmBzB,CAAC"}
1
+ {"version":3,"file":"inputVariants.d.ts","sourceRoot":"","sources":["../../src/Input/inputVariants.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa;;8EAoBzB,CAAC"}
@@ -1,11 +1,12 @@
1
- import { cva as e } from "class-variance-authority";
2
- const t = e(
1
+ import { cva as r } from "class-variance-authority";
2
+ const t = r(
3
3
  [
4
- "flex h-10 w-full rounded-md border border-input px-3 py-2",
4
+ "flex h-10 w-full rounded-lg border border-input px-3 py-2",
5
5
  "text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground",
6
6
  "focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
7
7
  "group-data-[state=invalid]/form-control:border-destructive",
8
- "group-data-[state=valid]/form-control:border-input"
8
+ "group-data-[state=valid]/form-control:border-input",
9
+ "box-border"
9
10
  ],
10
11
  {
11
12
  variants: {
@@ -1 +1 @@
1
- {"version":3,"file":"inputVariants.js","sources":["../../src/Input/inputVariants.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority';\n\nexport const inputVariants = cva(\n [\n 'flex h-10 w-full rounded-md border border-input px-3 py-2',\n 'text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground',\n 'focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n 'group-data-[state=invalid]/form-control:border-destructive',\n 'group-data-[state=valid]/form-control:border-input',\n ],\n {\n variants: {\n variant: {\n default: 'bg-background',\n grey: 'bg-slate-200',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n"],"names":["inputVariants","cva"],"mappings":";AAEO,MAAMA,IAAgBC;AAAA,EAC3B;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAAA,EAEF;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,MAAA;AAAA,IACR;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ;"}
1
+ {"version":3,"file":"inputVariants.js","sources":["../../src/Input/inputVariants.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority';\n\nexport const inputVariants = cva(\n [\n 'flex h-10 w-full rounded-lg border border-input px-3 py-2',\n 'text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground',\n 'focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n 'group-data-[state=invalid]/form-control:border-destructive',\n 'group-data-[state=valid]/form-control:border-input',\n 'box-border',\n ],\n {\n variants: {\n variant: {\n default: 'bg-background',\n grey: 'bg-slate-200',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n"],"names":["inputVariants","cva"],"mappings":";AAEO,MAAMA,IAAgBC;AAAA,EAC3B;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAAA,EAEF;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,MAAA;AAAA,IACR;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"LoadedIcon.d.ts","sourceRoot":"","sources":["../../src/LoadedIcon/LoadedIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,EAAE,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAI9D,QAAA,MAAM,kBAAkB;;8EAWtB,CAAC;AAEH,UAAU,gBACT,SAAQ,cAAc,CAAC,cAAc,CAAC,EACrC,YAAY,CAAC,OAAO,kBAAkB,CAAC;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAY9D,CAAC"}
1
+ {"version":3,"file":"LoadedIcon.d.ts","sourceRoot":"","sources":["../../src/LoadedIcon/LoadedIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,EAAE,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAI9D,QAAA,MAAM,kBAAkB;;8EAatB,CAAC;AAEH,UAAU,gBACR,SAAQ,cAAc,CAAC,cAAc,CAAC,EACpC,YAAY,CAAC,OAAO,kBAAkB,CAAC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAY9D,CAAC"}
@@ -2,7 +2,9 @@ import { jsx as s } from "react/jsx-runtime";
2
2
  import { cva as t } from "class-variance-authority";
3
3
  import { LoaderCircleIcon as m } from "lucide-react";
4
4
  import { cn as c } from "@oneplatformdev/utils";
5
- const d = t([], {
5
+ const d = t([
6
+ "relative"
7
+ ], {
6
8
  variants: {
7
9
  size: {
8
10
  inherit: "[&_svg]:size-inherit",
@@ -1 +1 @@
1
- {"version":3,"file":"LoadedIcon.js","sources":["../../src/LoadedIcon/LoadedIcon.tsx"],"sourcesContent":["import { cva, VariantProps } from 'class-variance-authority';\nimport { LoaderCircleIcon } from 'lucide-react';\nimport { FC, HTMLAttributes, PropsWithChildren } from 'react';\n\nimport { cn } from '@oneplatformdev/utils';\n\nconst loadedIconVariants = cva([], {\n variants: {\n size: {\n inherit: '[&_svg]:size-inherit',\n xs: '[&_svg]:size-3',\n sm: '[&_svg]:size-4',\n md: '[&_svg]:size-5',\n lg: '[&_svg]:size-6',\n },\n },\n defaultVariants: { size: 'inherit' },\n});\n\ninterface ILoadedIconProps\n\textends HTMLAttributes<HTMLDivElement>,\n\t\tVariantProps<typeof loadedIconVariants> {\n\tloading?: boolean;\n}\n\nexport const LoadedIcon: FC<PropsWithChildren<ILoadedIconProps>> = (props) => {\n\tconst { loading, children, size = 'md', className, ...rest } = props;\n\treturn (\n\t\t<div\n\t\t\t{...rest}\n\t\t\tclassName={cn(loadedIconVariants({size , className}))}\n\t\t>\n\t\t\t{loading\n\t\t\t\t? <LoaderCircleIcon className=\"animate-spin\"/>\n\t\t\t\t: children}\n\t\t</div>\n\t);\n};\n"],"names":["loadedIconVariants","cva","LoadedIcon","props","loading","children","size","className","rest","jsx","cn","LoaderCircleIcon"],"mappings":";;;;AAMA,MAAMA,IAAqBC,EAAI,IAAI;AAAA,EACjC,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,EACN;AAAA,EAEF,iBAAiB,EAAE,MAAM,UAAA;AAC3B,CAAC,GAQYC,IAAsD,CAACC,MAAU;AAC7E,QAAM,EAAE,SAAAC,GAAS,UAAAC,GAAU,MAAAC,IAAO,MAAM,WAAAC,GAAW,GAAGC,MAASL;AAC/D,SACC,gBAAAM;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,GAAGD;AAAA,MACJ,WAAWE,EAAGV,EAAmB,EAAC,MAAAM,GAAO,WAAAC,EAAA,CAAU,CAAC;AAAA,MAEnD,UAAAH,IACE,gBAAAK,EAACE,GAAA,EAAiB,WAAU,gBAAc,IAC1CN;AAAA,IAAA;AAAA,EAAA;AAGN;"}
1
+ {"version":3,"file":"LoadedIcon.js","sources":["../../src/LoadedIcon/LoadedIcon.tsx"],"sourcesContent":["import { cva, VariantProps } from 'class-variance-authority';\nimport { LoaderCircleIcon } from 'lucide-react';\nimport { FC, HTMLAttributes, PropsWithChildren } from 'react';\n\nimport { cn } from '@oneplatformdev/utils';\n\nconst loadedIconVariants = cva([\n 'relative',\n], {\n variants: {\n size: {\n inherit: '[&_svg]:size-inherit',\n xs: '[&_svg]:size-3',\n sm: '[&_svg]:size-4',\n md: '[&_svg]:size-5',\n lg: '[&_svg]:size-6',\n },\n },\n defaultVariants: { size: 'inherit' },\n});\n\ninterface ILoadedIconProps\n extends HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof loadedIconVariants> {\n loading?: boolean;\n}\n\nexport const LoadedIcon: FC<PropsWithChildren<ILoadedIconProps>> = (props) => {\n const { loading, children, size = 'md', className, ...rest } = props;\n return (\n <div\n {...rest}\n className={cn(loadedIconVariants({ size, className }))}\n >\n {loading\n ? <LoaderCircleIcon className=\"animate-spin\"/>\n : children}\n </div>\n );\n};\n"],"names":["loadedIconVariants","cva","LoadedIcon","props","loading","children","size","className","rest","jsx","cn","LoaderCircleIcon"],"mappings":";;;;AAMA,MAAMA,IAAqBC,EAAI;AAAA,EAC7B;AACF,GAAG;AAAA,EACD,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,EACN;AAAA,EAEF,iBAAiB,EAAE,MAAM,UAAA;AAC3B,CAAC,GAQYC,IAAsD,CAACC,MAAU;AAC5E,QAAM,EAAE,SAAAC,GAAS,UAAAC,GAAU,MAAAC,IAAO,MAAM,WAAAC,GAAW,GAAGC,MAASL;AAC/D,SACE,gBAAAM;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGD;AAAA,MACJ,WAAWE,EAAGV,EAAmB,EAAE,MAAAM,GAAM,WAAAC,EAAA,CAAW,CAAC;AAAA,MAEpD,UAAAH,IACG,gBAAAK,EAACE,GAAA,EAAiB,WAAU,gBAAc,IAC1CN;AAAA,IAAA;AAAA,EAAA;AAGV;"}
@@ -1,4 +1,3 @@
1
- import { FC } from 'react';
2
1
  import { ILoadingMaskProps } from './LoadingMask.types';
3
- export declare const LoadingMask: FC<ILoadingMaskProps>;
2
+ export declare const LoadingMask: (props: ILoadingMaskProps) => import("react/jsx-runtime").JSX.Element | null;
4
3
  //# sourceMappingURL=LoadingMask.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LoadingMask.d.ts","sourceRoot":"","sources":["../../src/LoadingMask/LoadingMask.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAIxD,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,iBAAiB,CAe7C,CAAC"}
1
+ {"version":3,"file":"LoadingMask.d.ts","sourceRoot":"","sources":["../../src/LoadingMask/LoadingMask.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAIxD,eAAO,MAAM,WAAW,GAAI,OAAO,iBAAiB,mDAgBnD,CAAC"}
@@ -1,22 +1,22 @@
1
1
  import { jsx as e } from "react/jsx-runtime";
2
2
  import { RenderLoadingMask as r } from "./RenderLoadingMask.js";
3
- import { cn as o } from "@oneplatformdev/utils";
4
- const f = (t) => {
5
- const { fullWidth: s = !1, className: i, ...n } = t;
6
- return s ? /* @__PURE__ */ e(
3
+ import { cn as a } from "@oneplatformdev/utils";
4
+ const c = (t) => {
5
+ const { loading: n = !0, fullWidth: s = !1, className: i, ...o } = t;
6
+ return n ? s ? /* @__PURE__ */ e(
7
7
  "div",
8
8
  {
9
- ...n,
10
- className: o(
9
+ ...o,
10
+ className: a(
11
11
  "absolute inset-0",
12
12
  "flex items-center justify-center",
13
13
  i
14
14
  ),
15
15
  children: /* @__PURE__ */ e(r, {})
16
16
  }
17
- ) : /* @__PURE__ */ e(r, {});
17
+ ) : /* @__PURE__ */ e(r, {}) : null;
18
18
  };
19
19
  export {
20
- f as LoadingMask
20
+ c as LoadingMask
21
21
  };
22
22
  //# sourceMappingURL=LoadingMask.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LoadingMask.js","sources":["../../src/LoadingMask/LoadingMask.tsx"],"sourcesContent":["import { FC } from 'react';\nimport { ILoadingMaskProps } from './LoadingMask.types';\nimport { RenderLoadingMask } from './RenderLoadingMask';\nimport { cn } from '@oneplatformdev/utils';\n\nexport const LoadingMask: FC<ILoadingMaskProps> = (props) => {\n const { fullWidth = false, className, ...rest } = props;\n if (!fullWidth) return <RenderLoadingMask />;\n return (\n <div\n {...rest}\n className={cn(\n 'absolute inset-0',\n 'flex items-center justify-center',\n className\n )}\n >\n <RenderLoadingMask />\n </div>\n );\n};\n"],"names":["LoadingMask","props","fullWidth","className","rest","jsx","cn","RenderLoadingMask"],"mappings":";;;AAKO,MAAMA,IAAqC,CAACC,MAAU;AAC3D,QAAM,EAAE,WAAAC,IAAY,IAAO,WAAAC,GAAW,GAAGC,MAASH;AAClD,SAAKC,IAEH,gBAAAG;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGD;AAAA,MACJ,WAAWE;AAAA,QACT;AAAA,QACA;AAAA,QACAH;AAAA,MAAA;AAAA,MAGF,4BAACI,GAAA,CAAA,CAAkB;AAAA,IAAA;AAAA,EAAA,IAVA,gBAAAF,EAACE,GAAA,CAAA,CAAkB;AAa5C;"}
1
+ {"version":3,"file":"LoadingMask.js","sources":["../../src/LoadingMask/LoadingMask.tsx"],"sourcesContent":["import { ILoadingMaskProps } from './LoadingMask.types';\nimport { RenderLoadingMask } from './RenderLoadingMask';\nimport { cn } from '@oneplatformdev/utils';\n\nexport const LoadingMask = (props: ILoadingMaskProps) => {\n const { loading = true, fullWidth = false, className, ...rest } = props;\n if(!loading) return null;\n if (!fullWidth) return <RenderLoadingMask />;\n return (\n <div\n {...rest}\n className={cn(\n 'absolute inset-0',\n 'flex items-center justify-center',\n className\n )}\n >\n <RenderLoadingMask />\n </div>\n );\n};\n"],"names":["LoadingMask","props","loading","fullWidth","className","rest","jsx","cn","RenderLoadingMask"],"mappings":";;;AAIO,MAAMA,IAAc,CAACC,MAA6B;AACvD,QAAM,EAAE,SAAAC,IAAU,IAAM,WAAAC,IAAY,IAAO,WAAAC,GAAW,GAAGC,MAASJ;AAClE,SAAIC,IACCC,IAEH,gBAAAG;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGD;AAAA,MACJ,WAAWE;AAAA,QACT;AAAA,QACA;AAAA,QACAH;AAAA,MAAA;AAAA,MAGF,4BAACI,GAAA,CAAA,CAAkB;AAAA,IAAA;AAAA,EAAA,IAVA,gBAAAF,EAACE,GAAA,CAAA,CAAkB,IADtB;AActB;"}
@@ -1,5 +1,6 @@
1
1
  import { HTMLAttributes } from 'react';
2
2
  export interface ILoadingMaskProps extends HTMLAttributes<HTMLDivElement> {
3
3
  fullWidth?: boolean;
4
+ loading?: boolean;
4
5
  }
5
6
  //# sourceMappingURL=LoadingMask.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LoadingMask.types.d.ts","sourceRoot":"","sources":["../../src/LoadingMask/LoadingMask.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,iBAAkB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACvE,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB"}
1
+ {"version":3,"file":"LoadingMask.types.d.ts","sourceRoot":"","sources":["../../src/LoadingMask/LoadingMask.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,iBAAkB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACvE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB"}
@@ -1,24 +1,9 @@
1
+ import * as React from "react";
1
2
  import * as ResizablePrimitive from "react-resizable-panels";
2
- declare const ResizablePanelGroup: ({ className, ...props }: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) => import("react/jsx-runtime").JSX.Element;
3
- declare const ResizablePanel: import('react').ForwardRefExoticComponent<Omit<import('react').HTMLAttributes<any>, "id" | "onResize"> & {
4
- className?: string;
5
- collapsedSize?: number | undefined;
6
- collapsible?: boolean | undefined;
7
- defaultSize?: number | undefined;
8
- id?: string;
9
- maxSize?: number | undefined;
10
- minSize?: number | undefined;
11
- onCollapse?: ResizablePrimitive.PanelOnCollapse;
12
- onExpand?: ResizablePrimitive.PanelOnExpand;
13
- onResize?: ResizablePrimitive.PanelOnResize;
14
- order?: number;
15
- style?: object;
16
- tagName?: keyof HTMLElementTagNameMap | undefined;
17
- } & {
18
- children?: import('react').ReactNode | undefined;
19
- } & import('react').RefAttributes<ResizablePrimitive.ImperativePanelHandle>>;
20
- declare const ResizableHandle: ({ withHandle, className, ...props }: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {
3
+ declare function ResizablePanelGroup({ className, ...props }: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>): import("react/jsx-runtime").JSX.Element;
4
+ declare function ResizablePanel({ ...props }: React.ComponentProps<typeof ResizablePrimitive.Panel>): import("react/jsx-runtime").JSX.Element;
5
+ declare function ResizableHandle(props: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {
21
6
  withHandle?: boolean;
22
- }) => import("react/jsx-runtime").JSX.Element;
7
+ }): import("react/jsx-runtime").JSX.Element;
23
8
  export { ResizablePanelGroup, ResizablePanel, ResizableHandle };
24
9
  //# sourceMappingURL=Resizable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Resizable.d.ts","sourceRoot":"","sources":["../../src/Resizable/Resizable.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,kBAAkB,MAAM,wBAAwB,CAAA;AAI5D,QAAA,MAAM,mBAAmB,GAAI,yBAG1B,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,UAAU,CAAC,4CAQ5D,CAAA;AAED,QAAA,MAAM,cAAc;;;;;;;;;;;;;oBAyB47D,qBAAsB;;;4EAzBv7D,CAAA;AAE/C,QAAA,MAAM,eAAe,GAAI,qCAItB,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,iBAAiB,CAAC,GAAG;IACrE,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,4CAcA,CAAA;AAED,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,eAAe,EAAE,CAAA"}
1
+ {"version":3,"file":"Resizable.d.ts","sourceRoot":"","sources":["../../src/Resizable/Resizable.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,kBAAkB,MAAM,wBAAwB,CAAA;AAI5D,iBAAS,mBAAmB,CAAC,EACE,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,UAAU,CAAC,2CAWzF;AAED,iBAAS,cAAc,CAAC,EACE,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,KAAK,CAAC,2CAE/E;AAED,iBAAS,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,iBAAiB,CAAC,GAAG;IAClG,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,2CAwBA;AAED,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,eAAe,EAAE,CAAA"}
@@ -1,37 +1,54 @@
1
- import { jsx as e } from "react/jsx-runtime";
2
- import { GripVertical as n } from "lucide-react";
1
+ import { jsx as a, jsxs as s } from "react/jsx-runtime";
2
+ import { GripVerticalIcon as c } from "lucide-react";
3
3
  import * as t from "react-resizable-panels";
4
4
  import { cn as i } from "@oneplatformdev/utils";
5
- const f = ({
6
- className: a,
5
+ function u({
6
+ className: e,
7
7
  ...r
8
- }) => /* @__PURE__ */ e(
9
- t.PanelGroup,
10
- {
11
- className: i(
12
- "flex h-full w-full data-[panel-group-direction=vertical]:flex-col",
13
- a
14
- ),
15
- ...r
16
- }
17
- ), d = t.Panel, p = ({
18
- withHandle: a,
19
- className: r,
20
- ...l
21
- }) => /* @__PURE__ */ e(
22
- t.PanelResizeHandle,
23
- {
24
- className: i(
25
- "relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90",
26
- r
27
- ),
28
- ...l,
29
- children: a && /* @__PURE__ */ e("div", { className: "z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border", children: /* @__PURE__ */ e(n, { className: "h-2.5 w-2.5" }) })
30
- }
31
- );
8
+ }) {
9
+ return /* @__PURE__ */ a(
10
+ t.PanelGroup,
11
+ {
12
+ "data-slot": "resizable-panel-group",
13
+ className: i(
14
+ "flex h-full w-full data-[panel-group-direction=vertical]:flex-col",
15
+ e
16
+ ),
17
+ ...r
18
+ }
19
+ );
20
+ }
21
+ function b({
22
+ ...e
23
+ }) {
24
+ return /* @__PURE__ */ a(t.Panel, { "data-slot": "resizable-panel", ...e });
25
+ }
26
+ function v(e) {
27
+ const {
28
+ withHandle: r,
29
+ className: l,
30
+ children: n,
31
+ ...o
32
+ } = e;
33
+ return /* @__PURE__ */ s(
34
+ t.PanelResizeHandle,
35
+ {
36
+ "data-slot": "resizable-handle",
37
+ className: i(
38
+ "bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:translate-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90",
39
+ l
40
+ ),
41
+ ...o,
42
+ children: [
43
+ n,
44
+ r && /* @__PURE__ */ a("div", { className: "bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border", children: /* @__PURE__ */ a(c, { className: "size-2.5" }) })
45
+ ]
46
+ }
47
+ );
48
+ }
32
49
  export {
33
- p as ResizableHandle,
34
- d as ResizablePanel,
35
- f as ResizablePanelGroup
50
+ v as ResizableHandle,
51
+ b as ResizablePanel,
52
+ u as ResizablePanelGroup
36
53
  };
37
54
  //# sourceMappingURL=Resizable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Resizable.js","sources":["../../src/Resizable/Resizable.tsx"],"sourcesContent":["\"use client\"\n\nimport { GripVertical } from \"lucide-react\"\nimport * as ResizablePrimitive from \"react-resizable-panels\"\n\nimport { cn } from \"@oneplatformdev/utils\";\n\nconst ResizablePanelGroup = ({\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) => (\n <ResizablePrimitive.PanelGroup\n className={cn(\n \"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\",\n className\n )}\n {...props}\n />\n)\n\nconst ResizablePanel = ResizablePrimitive.Panel\n\nconst ResizableHandle = ({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\n withHandle?: boolean\n}) => (\n <ResizablePrimitive.PanelResizeHandle\n className={cn(\n \"relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90\",\n className\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border\">\n <GripVertical className=\"h-2.5 w-2.5\" />\n </div>\n )}\n </ResizablePrimitive.PanelResizeHandle>\n)\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle }\n"],"names":["ResizablePanelGroup","className","props","jsx","ResizablePrimitive","cn","ResizablePanel","ResizableHandle","withHandle","GripVertical"],"mappings":";;;;AAOA,MAAMA,IAAsB,CAAC;AAAA,EAC3B,WAAAC;AAAA,EACA,GAAGC;AACL,MACE,gBAAAC;AAAA,EAACC,EAAmB;AAAA,EAAnB;AAAA,IACC,WAAWC;AAAA,MACT;AAAA,MACAJ;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,EAAA;AACN,GAGII,IAAiBF,EAAmB,OAEpCG,IAAkB,CAAC;AAAA,EACvB,YAAAC;AAAA,EACA,WAAAP;AAAA,EACA,GAAGC;AACL,MAGE,gBAAAC;AAAA,EAACC,EAAmB;AAAA,EAAnB;AAAA,IACC,WAAWC;AAAA,MACT;AAAA,MACAJ;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,IAEH,UAAAM,uBACE,OAAA,EAAI,WAAU,6EACb,UAAA,gBAAAL,EAACM,GAAA,EAAa,WAAU,cAAA,CAAc,EAAA,CACxC;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"Resizable.js","sources":["../../src/Resizable/Resizable.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { GripVerticalIcon } from \"lucide-react\"\nimport * as ResizablePrimitive from \"react-resizable-panels\"\n\nimport { cn } from \"@oneplatformdev/utils\"\n\nfunction ResizablePanelGroup({\n className,\n ...props\n }: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>) {\n return (\n <ResizablePrimitive.PanelGroup\n data-slot=\"resizable-panel-group\"\n className={cn(\n \"flex h-full w-full data-[panel-group-direction=vertical]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ResizablePanel({\n ...props\n }: React.ComponentProps<typeof ResizablePrimitive.Panel>) {\n return <ResizablePrimitive.Panel data-slot=\"resizable-panel\" {...props} />\n}\n\nfunction ResizableHandle(props: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {\n withHandle?: boolean\n}) {\n const {\n withHandle,\n className,\n children,\n ...rest\n } = props;\n return (\n <ResizablePrimitive.PanelResizeHandle\n data-slot=\"resizable-handle\"\n className={cn(\n \"bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:translate-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90\",\n className\n )}\n {...rest}\n >\n {children}\n {withHandle && (\n <div className=\"bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border\">\n <GripVerticalIcon className=\"size-2.5\" />\n </div>\n )}\n </ResizablePrimitive.PanelResizeHandle>\n )\n}\n\nexport { ResizablePanelGroup, ResizablePanel, ResizableHandle }\n"],"names":["ResizablePanelGroup","className","props","jsx","ResizablePrimitive","cn","ResizablePanel","ResizableHandle","withHandle","children","rest","jsxs","GripVerticalIcon"],"mappings":";;;;AAQA,SAASA,EAAoB;AAAA,EACE,WAAAC;AAAA,EACA,GAAGC;AACL,GAA+D;AAC1F,SACE,gBAAAC;AAAA,IAACC,EAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAJ;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASI,EAAe;AAAA,EACE,GAAGJ;AACL,GAA0D;AAChF,2BAAQE,EAAmB,OAAnB,EAAyB,aAAU,mBAAmB,GAAGF,GAAO;AAC1E;AAEA,SAASK,EAAgBL,GAEtB;AACD,QAAM;AAAA,IACJ,YAAAM;AAAA,IACA,WAAAP;AAAA,IACA,UAAAQ;AAAA,IACA,GAAGC;AAAA,EAAA,IACDR;AACJ,SACE,gBAAAS;AAAA,IAACP,EAAmB;AAAA,IAAnB;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAJ;AAAA,MAAA;AAAA,MAED,GAAGS;AAAA,MAEH,UAAA;AAAA,QAAAD;AAAA,QACAD,uBACE,OAAA,EAAI,WAAU,6EACb,UAAA,gBAAAL,EAACS,GAAA,EAAiB,WAAU,WAAA,CAAW,EAAA,CACzC;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;"}
@@ -0,0 +1,140 @@
1
+ import { jsx as e, jsxs as t } from "react/jsx-runtime";
2
+ import * as c from "react";
3
+ import { ResizablePanelGroup as r, ResizablePanel as l, ResizableHandle as n } from "./Resizable.js";
4
+ const b = {
5
+ title: "ui/Resizable",
6
+ component: r,
7
+ parameters: {
8
+ layout: "fullscreen"
9
+ },
10
+ decorators: [
11
+ (a) => /* @__PURE__ */ e("div", { className: "p-6", children: /* @__PURE__ */ e("div", { className: "h-[420px] w-[920px] overflow-hidden rounded-xl border bg-background shadow-sm", children: /* @__PURE__ */ e(a, {}) }) })
12
+ ]
13
+ };
14
+ function i({
15
+ label: a,
16
+ subtle: d
17
+ }) {
18
+ return /* @__PURE__ */ e(
19
+ "div",
20
+ {
21
+ className: [
22
+ "h-full w-full",
23
+ "flex items-center justify-center",
24
+ "text-sm font-medium",
25
+ "select-none",
26
+ d ? "bg-muted/30" : "bg-muted/50"
27
+ ].join(" "),
28
+ children: a
29
+ }
30
+ );
31
+ }
32
+ const z = {
33
+ render: () => /* @__PURE__ */ t(r, { direction: "horizontal", children: [
34
+ /* @__PURE__ */ e(l, { defaultSize: 50, children: /* @__PURE__ */ e(i, { label: "Left (50%)" }) }),
35
+ /* @__PURE__ */ e(n, { withHandle: !0 }),
36
+ /* @__PURE__ */ e(l, { defaultSize: 50, children: /* @__PURE__ */ e(i, { label: "Right (50%)", subtle: !0 }) })
37
+ ] })
38
+ }, f = {
39
+ render: () => /* @__PURE__ */ t(r, { direction: "vertical", children: [
40
+ /* @__PURE__ */ e(l, { defaultSize: 60, children: /* @__PURE__ */ e(i, { label: "Top (60%)" }) }),
41
+ /* @__PURE__ */ e(n, { withHandle: !0 }),
42
+ /* @__PURE__ */ e(l, { defaultSize: 40, children: /* @__PURE__ */ e(i, { label: "Bottom (40%)", subtle: !0 }) })
43
+ ] })
44
+ }, S = {
45
+ render: () => /* @__PURE__ */ t(r, { direction: "horizontal", children: [
46
+ /* @__PURE__ */ e(l, { defaultSize: 35, children: /* @__PURE__ */ e(i, { label: "Sidebar (35%)" }) }),
47
+ /* @__PURE__ */ e(n, {}),
48
+ /* @__PURE__ */ e(l, { defaultSize: 65, children: /* @__PURE__ */ e(i, { label: "Content (65%)", subtle: !0 }) })
49
+ ] })
50
+ }, m = {
51
+ render: () => /* @__PURE__ */ t(r, { direction: "horizontal", children: [
52
+ /* @__PURE__ */ e(l, { defaultSize: 33, children: /* @__PURE__ */ e(i, { label: "A (33%)" }) }),
53
+ /* @__PURE__ */ e(n, { withHandle: !0 }),
54
+ /* @__PURE__ */ e(l, { defaultSize: 34, children: /* @__PURE__ */ e(i, { label: "B (34%)", subtle: !0 }) }),
55
+ /* @__PURE__ */ e(n, { withHandle: !0 }),
56
+ /* @__PURE__ */ e(l, { defaultSize: 33, children: /* @__PURE__ */ e(i, { label: "C (33%)" }) })
57
+ ] })
58
+ }, p = {
59
+ render: () => /* @__PURE__ */ t(r, { direction: "horizontal", children: [
60
+ /* @__PURE__ */ e(l, { defaultSize: 20, minSize: 12, children: /* @__PURE__ */ e(i, { label: "Nav (20%)" }) }),
61
+ /* @__PURE__ */ e(n, { withHandle: !0 }),
62
+ /* @__PURE__ */ e(l, { defaultSize: 55, minSize: 30, children: /* @__PURE__ */ e(i, { label: "Main (55%)", subtle: !0 }) }),
63
+ /* @__PURE__ */ e(n, { withHandle: !0 }),
64
+ /* @__PURE__ */ e(l, { defaultSize: 25, minSize: 12, children: /* @__PURE__ */ e(i, { label: "Details (25%)" }) })
65
+ ] })
66
+ }, x = {
67
+ render: () => /* @__PURE__ */ t(r, { direction: "horizontal", children: [
68
+ /* @__PURE__ */ e(l, { defaultSize: 30, minSize: 20, maxSize: 40, children: /* @__PURE__ */ e(i, { label: "Left (min 20 / max 40)" }) }),
69
+ /* @__PURE__ */ e(n, { withHandle: !0 }),
70
+ /* @__PURE__ */ e(l, { defaultSize: 70, minSize: 60, maxSize: 80, children: /* @__PURE__ */ e(i, { label: "Right (min 60 / max 80)", subtle: !0 }) })
71
+ ] })
72
+ }, w = {
73
+ render: () => /* @__PURE__ */ t(r, { direction: "horizontal", children: [
74
+ /* @__PURE__ */ e(
75
+ l,
76
+ {
77
+ defaultSize: 22,
78
+ minSize: 12,
79
+ collapsible: !0,
80
+ collapsedSize: 4,
81
+ children: /* @__PURE__ */ e(i, { label: "Sidebar (collapsible)" })
82
+ }
83
+ ),
84
+ /* @__PURE__ */ e(n, { withHandle: !0 }),
85
+ /* @__PURE__ */ e(l, { defaultSize: 78, minSize: 50, children: /* @__PURE__ */ e(i, { label: "Main content", subtle: !0 }) })
86
+ ] })
87
+ }, H = {
88
+ render: () => /* @__PURE__ */ t(r, { direction: "horizontal", children: [
89
+ /* @__PURE__ */ e(l, { defaultSize: 50, children: /* @__PURE__ */ e(i, { label: "Left (fixed)" }) }),
90
+ /* @__PURE__ */ e(n, { withHandle: !0, disabled: !0 }),
91
+ /* @__PURE__ */ e(l, { defaultSize: 50, children: /* @__PURE__ */ e(i, { label: "Right (fixed)", subtle: !0 }) })
92
+ ] })
93
+ }, g = {
94
+ render: () => /* @__PURE__ */ t(r, { direction: "horizontal", children: [
95
+ /* @__PURE__ */ e(l, { defaultSize: 45, minSize: 25, children: /* @__PURE__ */ t(r, { direction: "vertical", children: [
96
+ /* @__PURE__ */ e(l, { defaultSize: 55, minSize: 20, children: /* @__PURE__ */ e(i, { label: "Left / Top" }) }),
97
+ /* @__PURE__ */ e(n, { withHandle: !0 }),
98
+ /* @__PURE__ */ e(l, { defaultSize: 45, minSize: 20, children: /* @__PURE__ */ e(i, { label: "Left / Bottom", subtle: !0 }) })
99
+ ] }) }),
100
+ /* @__PURE__ */ e(n, { withHandle: !0 }),
101
+ /* @__PURE__ */ e(l, { defaultSize: 55, minSize: 30, children: /* @__PURE__ */ e(i, { label: "Right (single)", subtle: !0 }) })
102
+ ] })
103
+ }, y = {
104
+ render: () => /* @__PURE__ */ e(() => {
105
+ const [d, u] = c.useState([]);
106
+ return /* @__PURE__ */ t("div", { className: "h-full w-full", children: [
107
+ /* @__PURE__ */ t("div", { className: "border-b px-3 py-2 text-xs text-muted-foreground", children: [
108
+ "Layout:",
109
+ " ",
110
+ d.length ? d.map((o) => Math.round(o)).join(" / ") : "— (move handle)"
111
+ ] }),
112
+ /* @__PURE__ */ e("div", { className: "h-[calc(100%-33px)]", children: /* @__PURE__ */ t(
113
+ r,
114
+ {
115
+ direction: "horizontal",
116
+ onLayout: (o) => u(o),
117
+ children: [
118
+ /* @__PURE__ */ e(l, { defaultSize: 40, minSize: 20, children: /* @__PURE__ */ e(i, { label: "Left" }) }),
119
+ /* @__PURE__ */ e(n, { withHandle: !0 }),
120
+ /* @__PURE__ */ e(l, { defaultSize: 60, minSize: 20, children: /* @__PURE__ */ e(i, { label: "Right", subtle: !0 }) })
121
+ ]
122
+ }
123
+ ) })
124
+ ] });
125
+ }, {})
126
+ };
127
+ export {
128
+ w as CollapsibleSidebar,
129
+ H as DisabledHandle,
130
+ S as HandleWithoutGrip,
131
+ z as HorizontalTwoPanels,
132
+ y as LayoutDebug,
133
+ x as MinMaxConstraints,
134
+ g as NestedResizable,
135
+ m as ThreePanelsEqual,
136
+ p as ThreePanelsSidebarLayout,
137
+ f as VerticalTwoPanels,
138
+ b as default
139
+ };
140
+ //# sourceMappingURL=Resizable.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Resizable.stories.js","sources":["../../src/Resizable/Resizable.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react\"\nimport * as React from \"react\"\n\nimport {\n ResizablePanelGroup,\n ResizablePanel,\n ResizableHandle,\n} from \"./Resizable\"\n\nconst meta: Meta<typeof ResizablePanelGroup> = {\n title: \"ui/Resizable\",\n component: ResizablePanelGroup,\n parameters: {\n layout: \"fullscreen\",\n },\n decorators: [\n (Story) => (\n <div className=\"p-6\">\n <div className=\"h-[420px] w-[920px] overflow-hidden rounded-xl border bg-background shadow-sm\">\n <Story />\n </div>\n </div>\n ),\n ],\n}\nexport default meta\ntype Story = StoryObj<typeof ResizablePanelGroup>\n\nfunction PanelBox({\n label,\n subtle,\n }: {\n label: string\n subtle?: boolean\n}) {\n return (\n <div\n className={[\n \"h-full w-full\",\n \"flex items-center justify-center\",\n \"text-sm font-medium\",\n \"select-none\",\n subtle ? \"bg-muted/30\" : \"bg-muted/50\",\n ].join(\" \")}\n >\n {label}\n </div>\n )\n}\n\n/** 1) Базовий горизонтальний спліт 50/50 */\nexport const HorizontalTwoPanels: Story = {\n render: () => (\n <ResizablePanelGroup direction=\"horizontal\">\n <ResizablePanel defaultSize={50}>\n <PanelBox label=\"Left (50%)\" />\n </ResizablePanel>\n <ResizableHandle withHandle />\n <ResizablePanel defaultSize={50}>\n <PanelBox label=\"Right (50%)\" subtle />\n </ResizablePanel>\n </ResizablePanelGroup>\n ),\n}\n\n/** 2) Вертикальний спліт 60/40 */\nexport const VerticalTwoPanels: Story = {\n render: () => (\n <ResizablePanelGroup direction=\"vertical\">\n <ResizablePanel defaultSize={60}>\n <PanelBox label=\"Top (60%)\" />\n </ResizablePanel>\n <ResizableHandle withHandle />\n <ResizablePanel defaultSize={40}>\n <PanelBox label=\"Bottom (40%)\" subtle />\n </ResizablePanel>\n </ResizablePanelGroup>\n ),\n}\n\n/** 3) Без “grip” (withHandle=false) — тонкий роздільник */\nexport const HandleWithoutGrip: Story = {\n render: () => (\n <ResizablePanelGroup direction=\"horizontal\">\n <ResizablePanel defaultSize={35}>\n <PanelBox label=\"Sidebar (35%)\" />\n </ResizablePanel>\n <ResizableHandle />\n <ResizablePanel defaultSize={65}>\n <PanelBox label=\"Content (65%)\" subtle />\n </ResizablePanel>\n </ResizablePanelGroup>\n ),\n}\n\n/** 4) Три панелі рівномірно (33/34/33) */\nexport const ThreePanelsEqual: Story = {\n render: () => (\n <ResizablePanelGroup direction=\"horizontal\">\n <ResizablePanel defaultSize={33}>\n <PanelBox label=\"A (33%)\" />\n </ResizablePanel>\n <ResizableHandle withHandle />\n <ResizablePanel defaultSize={34}>\n <PanelBox label=\"B (34%)\" subtle />\n </ResizablePanel>\n <ResizableHandle withHandle />\n <ResizablePanel defaultSize={33}>\n <PanelBox label=\"C (33%)\" />\n </ResizablePanel>\n </ResizablePanelGroup>\n ),\n}\n\n/** 5) Три панелі з “sidebar layout” (20/55/25) */\nexport const ThreePanelsSidebarLayout: Story = {\n render: () => (\n <ResizablePanelGroup direction=\"horizontal\">\n <ResizablePanel defaultSize={20} minSize={12}>\n <PanelBox label=\"Nav (20%)\" />\n </ResizablePanel>\n <ResizableHandle withHandle />\n <ResizablePanel defaultSize={55} minSize={30}>\n <PanelBox label=\"Main (55%)\" subtle />\n </ResizablePanel>\n <ResizableHandle withHandle />\n <ResizablePanel defaultSize={25} minSize={12}>\n <PanelBox label=\"Details (25%)\" />\n </ResizablePanel>\n </ResizablePanelGroup>\n ),\n}\n\n/** 6) Обмеження min/max size (наочно “впирається” при ресайзі) */\nexport const MinMaxConstraints: Story = {\n render: () => (\n <ResizablePanelGroup direction=\"horizontal\">\n <ResizablePanel defaultSize={30} minSize={20} maxSize={40}>\n <PanelBox label=\"Left (min 20 / max 40)\" />\n </ResizablePanel>\n <ResizableHandle withHandle />\n <ResizablePanel defaultSize={70} minSize={60} maxSize={80}>\n <PanelBox label=\"Right (min 60 / max 80)\" subtle />\n </ResizablePanel>\n </ResizablePanelGroup>\n ),\n}\n\n/** 7) Collapsible sidebar (якщо ваш Panel підтримує collapsible/collapsedSize) */\nexport const CollapsibleSidebar: Story = {\n render: () => (\n <ResizablePanelGroup direction=\"horizontal\">\n <ResizablePanel\n defaultSize={22}\n minSize={12}\n collapsible\n collapsedSize={4}\n >\n <PanelBox label=\"Sidebar (collapsible)\" />\n </ResizablePanel>\n <ResizableHandle withHandle />\n <ResizablePanel defaultSize={78} minSize={50}>\n <PanelBox label=\"Main content\" subtle />\n </ResizablePanel>\n </ResizablePanelGroup>\n ),\n}\n\n/** 8) Disabled handle (якщо Separator/Handle підтримує disabled) */\nexport const DisabledHandle: Story = {\n render: () => (\n <ResizablePanelGroup direction=\"horizontal\">\n <ResizablePanel defaultSize={50}>\n <PanelBox label=\"Left (fixed)\" />\n </ResizablePanel>\n <ResizableHandle withHandle disabled />\n <ResizablePanel defaultSize={50}>\n <PanelBox label=\"Right (fixed)\" subtle />\n </ResizablePanel>\n </ResizablePanelGroup>\n ),\n}\n\n/** 9) Nested split: зліва — вертикальний, справа — суцільний */\nexport const NestedResizable: Story = {\n render: () => (\n <ResizablePanelGroup direction=\"horizontal\">\n <ResizablePanel defaultSize={45} minSize={25}>\n <ResizablePanelGroup direction=\"vertical\">\n <ResizablePanel defaultSize={55} minSize={20}>\n <PanelBox label=\"Left / Top\" />\n </ResizablePanel>\n <ResizableHandle withHandle />\n <ResizablePanel defaultSize={45} minSize={20}>\n <PanelBox label=\"Left / Bottom\" subtle />\n </ResizablePanel>\n </ResizablePanelGroup>\n </ResizablePanel>\n <ResizableHandle withHandle />\n <ResizablePanel defaultSize={55} minSize={30}>\n <PanelBox label=\"Right (single)\" subtle />\n </ResizablePanel>\n </ResizablePanelGroup>\n ),\n}\n\n/** 10) Debug layout: показує поточні розміри (onLayout) */\nexport const LayoutDebug: Story = {\n render: () => {\n const LayoutStory = () => {\n const [layout, setLayout] = React.useState<number[]>([])\n\n return (\n <div className=\"h-full w-full\">\n <div className=\"border-b px-3 py-2 text-xs text-muted-foreground\">\n Layout:{\" \"}\n {layout.length\n ? layout.map((v) => Math.round(v)).join(\" / \")\n : \"— (move handle)\"}\n </div>\n\n <div className=\"h-[calc(100%-33px)]\">\n <ResizablePanelGroup\n direction=\"horizontal\"\n onLayout={(sizes) => setLayout(sizes)}\n >\n <ResizablePanel defaultSize={40} minSize={20}>\n <PanelBox label=\"Left\" />\n </ResizablePanel>\n <ResizableHandle withHandle />\n <ResizablePanel defaultSize={60} minSize={20}>\n <PanelBox label=\"Right\" subtle />\n </ResizablePanel>\n </ResizablePanelGroup>\n </div>\n </div>\n )\n }\n\n return <LayoutStory />\n },\n}\n"],"names":["meta","ResizablePanelGroup","Story","jsx","PanelBox","label","subtle","HorizontalTwoPanels","jsxs","ResizablePanel","ResizableHandle","VerticalTwoPanels","HandleWithoutGrip","ThreePanelsEqual","ThreePanelsSidebarLayout","MinMaxConstraints","CollapsibleSidebar","DisabledHandle","NestedResizable","LayoutDebug","layout","setLayout","React","v","sizes"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Search.d.ts","sourceRoot":"","sources":["../../src/Search/Search.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAO7C,eAAO,MAAM,MAAM,GAAI,OAAO,WAAW,4CAgDxC,CAAC"}
1
+ {"version":3,"file":"Search.d.ts","sourceRoot":"","sources":["../../src/Search/Search.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAO7C,eAAO,MAAM,MAAM,GAAI,OAAO,WAAW,4CAgExC,CAAC"}
package/Search/Search.js CHANGED
@@ -1,48 +1,57 @@
1
1
  import { jsx as t } from "react/jsx-runtime";
2
- import { useState as g, useEffect as v } from "react";
3
- import { Input as C } from "../Input/Input.js";
4
- import { useDebounceCallback as b } from "@oneplatformdev/hooks";
5
- import { cn as x } from "@oneplatformdev/utils";
6
- import { SearchIcon as I } from "lucide-react";
7
- import { LoadedIcon as N } from "../LoadedIcon/LoadedIcon.js";
8
- const E = (n) => {
2
+ import { useState as y, useRef as C, useEffect as k, useCallback as b } from "react";
3
+ import { Input as v } from "../Input/Input.js";
4
+ import { useDebounceCallback as x, useEventListener as D } from "@oneplatformdev/hooks";
5
+ import { cn as I } from "@oneplatformdev/utils";
6
+ import { SearchIcon as K } from "lucide-react";
7
+ import { LoadedIcon as L } from "../LoadedIcon/LoadedIcon.js";
8
+ const z = (s) => {
9
9
  const {
10
- search: e,
11
- onChange: s,
12
- onSearch: c,
13
- placeholder: m = "Search",
14
- className: i,
15
- loading: l = !1,
16
- slotProps: o,
17
- name: h = "search",
10
+ search: o,
11
+ onChange: c,
12
+ onSearch: l,
13
+ placeholder: i = "Search",
14
+ className: u,
15
+ loading: m = !1,
16
+ slotProps: r,
17
+ name: f = "search",
18
18
  ...p
19
- } = n, [u, a] = g(e), f = b(c, 1e3), d = (r) => {
20
- const S = r.target.value;
21
- a(S), s?.(r), f(r.target.value);
19
+ } = s, [d, n] = y(o), h = x(l, 1e3), a = C(null), w = (e) => {
20
+ const g = e.target.value;
21
+ n(g), c?.(e), h(e.target.value);
22
22
  };
23
- return v(() => {
24
- a(e ?? "");
25
- }, [e]), /* @__PURE__ */ t(
26
- C,
23
+ k(() => {
24
+ n(o ?? "");
25
+ }, [o]);
26
+ const S = b((e) => {
27
+ (e.metaKey || e.ctrlKey) && e.key.toLowerCase() === "k" && (e.preventDefault(), a.current?.focus());
28
+ }, []);
29
+ return D(
30
+ "keydown",
31
+ S,
32
+ typeof window < "u" ? window : void 0
33
+ ), /* @__PURE__ */ t(
34
+ v,
27
35
  {
28
- name: h,
29
- placeholder: m,
30
- value: u,
31
- className: x("min-w-[340px]", i),
32
- onChange: d,
36
+ ref: a,
37
+ name: f,
38
+ placeholder: i,
39
+ value: d,
40
+ className: I("min-w-[340px]", u),
41
+ onChange: w,
33
42
  ...p,
34
- ...o || {},
43
+ ...r || {},
35
44
  slotProps: {
36
- ...o || {},
45
+ ...r || {},
37
46
  input: {
38
- startAdornment: /* @__PURE__ */ t(N, { loading: l, size: "sm", children: /* @__PURE__ */ t(I, {}) }),
39
- ...o?.input || {}
47
+ startAdornment: /* @__PURE__ */ t(L, { loading: m, children: /* @__PURE__ */ t(K, {}) }),
48
+ ...r?.input || {}
40
49
  }
41
50
  }
42
51
  }
43
52
  );
44
53
  };
45
54
  export {
46
- E as Search
55
+ z as Search
47
56
  };
48
57
  //# sourceMappingURL=Search.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Search.js","sources":["../../src/Search/Search.tsx"],"sourcesContent":["'use client';\n\nimport { ChangeEvent, useEffect, useState } from 'react';\n\nimport { Input } from '../Input';\nimport { SearchProps } from './Search.types';\n\nimport { useDebounceCallback } from '@oneplatformdev/hooks';\nimport { cn } from '@oneplatformdev/utils';\nimport { SearchIcon } from 'lucide-react';\nimport { LoadedIcon } from '../LoadedIcon';\n\nexport const Search = (props: SearchProps) => {\n const {\n search: initialSearch,\n onChange: handleChange,\n onSearch,\n placeholder = 'Search',\n className,\n loading = false,\n slotProps,\n name = 'search',\n ...rest\n } = props;\n const [search, setSearch] = useState(initialSearch);\n const debounced = useDebounceCallback(onSearch, 1000);\n\n const onChange = (e: ChangeEvent<HTMLInputElement>) => {\n const v = e.target.value;\n setSearch(v);\n handleChange?.(e);\n debounced(e.target.value);\n };\n\n useEffect(() => {\n setSearch(initialSearch ?? '');\n }, [initialSearch]);\n\n return (\n <Input\n name={name}\n placeholder={placeholder}\n value={search}\n className={cn('min-w-[340px]', className)}\n onChange={onChange}\n {...rest}\n {...(slotProps || {})}\n slotProps={{\n ...(slotProps || {}),\n input: {\n startAdornment: (\n <LoadedIcon loading={loading} size=\"sm\">\n <SearchIcon />\n </LoadedIcon>\n ),\n ...(slotProps?.input || {}),\n },\n }}\n />\n );\n};\n"],"names":["Search","props","initialSearch","handleChange","onSearch","placeholder","className","loading","slotProps","name","rest","search","setSearch","useState","debounced","useDebounceCallback","onChange","e","v","useEffect","jsx","Input","cn","LoadedIcon","SearchIcon"],"mappings":";;;;;;;AAYO,MAAMA,IAAS,CAACC,MAAuB;AAC5C,QAAM;AAAA,IACJ,QAAQC;AAAA,IACR,UAAUC;AAAA,IACV,UAAAC;AAAA,IACA,aAAAC,IAAc;AAAA,IACd,WAAAC;AAAA,IACA,SAAAC,IAAU;AAAA,IACV,WAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,GAAGC;AAAA,EAAA,IACDT,GACE,CAACU,GAAQC,CAAS,IAAIC,EAASX,CAAa,GAC5CY,IAAYC,EAAoBX,GAAU,GAAI,GAE9CY,IAAW,CAACC,MAAqC;AACrD,UAAMC,IAAID,EAAE,OAAO;AACnB,IAAAL,EAAUM,CAAC,GACXf,IAAec,CAAC,GAChBH,EAAUG,EAAE,OAAO,KAAK;AAAA,EAC1B;AAEA,SAAAE,EAAU,MAAM;AACd,IAAAP,EAAUV,KAAiB,EAAE;AAAA,EAC/B,GAAG,CAACA,CAAa,CAAC,GAGhB,gBAAAkB;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAAZ;AAAA,MACA,aAAAJ;AAAA,MACA,OAAOM;AAAA,MACP,WAAWW,EAAG,iBAAiBhB,CAAS;AAAA,MACxC,UAAAU;AAAA,MACC,GAAGN;AAAA,MACH,GAAIF,KAAa,CAAA;AAAA,MAClB,WAAW;AAAA,QACT,GAAIA,KAAa,CAAA;AAAA,QACjB,OAAO;AAAA,UACL,kCACGe,GAAA,EAAW,SAAAhB,GAAkB,MAAK,MACjC,UAAA,gBAAAa,EAACI,KAAW,EAAA,CACd;AAAA,UAEF,GAAIhB,GAAW,SAAS,CAAA;AAAA,QAAC;AAAA,MAC3B;AAAA,IACF;AAAA,EAAA;AAGN;"}
1
+ {"version":3,"file":"Search.js","sources":["../../src/Search/Search.tsx"],"sourcesContent":["'use client';\n\nimport { ChangeEvent, useEffect, useState, KeyboardEvent, useRef, useCallback } from 'react';\n\nimport { Input } from '../Input';\nimport { SearchProps } from './Search.types';\n\nimport { useDebounceCallback, useEventListener } from '@oneplatformdev/hooks';\nimport { cn } from '@oneplatformdev/utils';\nimport { SearchIcon } from 'lucide-react';\nimport { LoadedIcon } from '../LoadedIcon';\n\nexport const Search = (props: SearchProps) => {\n const {\n search: initialSearch,\n onChange: handleChange,\n onSearch,\n placeholder = 'Search',\n className,\n loading = false,\n slotProps,\n name = 'search',\n ...rest\n } = props;\n const [ search, setSearch ] = useState(initialSearch);\n const debounced = useDebounceCallback(onSearch, 1000);\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const onChange = (e: ChangeEvent<HTMLInputElement>) => {\n const v = e.target.value;\n setSearch(v);\n handleChange?.(e);\n debounced(e.target.value);\n };\n\n useEffect(() => {\n setSearch(initialSearch ?? '');\n }, [ initialSearch ]);\n\n const handleKeyDown = useCallback((event: KeyboardEvent<HTMLInputElement>) => {\n if ((event.metaKey || event.ctrlKey) && event.key.toLowerCase() === 'k') {\n event.preventDefault();\n inputRef.current?.focus();\n }\n }, []);\n\n useEventListener(\n 'keydown',\n handleKeyDown,\n typeof window !== 'undefined' ? window : undefined\n );\n\n return (\n <Input\n ref={inputRef}\n name={name}\n placeholder={placeholder}\n value={search}\n className={cn('min-w-[340px]', className)}\n onChange={onChange}\n {...rest}\n {...(slotProps || {})}\n slotProps={{\n ...(slotProps || {}),\n input: {\n startAdornment: (\n <LoadedIcon loading={loading}>\n <SearchIcon/>\n </LoadedIcon>\n ),\n ...(slotProps?.input || {}),\n },\n }}\n />\n );\n};\n"],"names":["Search","props","initialSearch","handleChange","onSearch","placeholder","className","loading","slotProps","name","rest","search","setSearch","useState","debounced","useDebounceCallback","inputRef","useRef","onChange","v","useEffect","handleKeyDown","useCallback","event","useEventListener","jsx","Input","cn","LoadedIcon","SearchIcon"],"mappings":";;;;;;;AAYO,MAAMA,IAAS,CAACC,MAAuB;AAC5C,QAAM;AAAA,IACJ,QAAQC;AAAA,IACR,UAAUC;AAAA,IACV,UAAAC;AAAA,IACA,aAAAC,IAAc;AAAA,IACd,WAAAC;AAAA,IACA,SAAAC,IAAU;AAAA,IACV,WAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,GAAGC;AAAA,EAAA,IACDT,GACE,CAAEU,GAAQC,CAAU,IAAIC,EAASX,CAAa,GAC9CY,IAAYC,EAAoBX,GAAU,GAAI,GAE9CY,IAAWC,EAAyB,IAAI,GAExCC,IAAW,CAAC,MAAqC;AACrD,UAAMC,IAAI,EAAE,OAAO;AACnB,IAAAP,EAAUO,CAAC,GACXhB,IAAe,CAAC,GAChBW,EAAU,EAAE,OAAO,KAAK;AAAA,EAC1B;AAEA,EAAAM,EAAU,MAAM;AACd,IAAAR,EAAUV,KAAiB,EAAE;AAAA,EAC/B,GAAG,CAAEA,CAAc,CAAC;AAEpB,QAAMmB,IAAgBC,EAAY,CAACC,MAA2C;AAC5E,KAAKA,EAAM,WAAWA,EAAM,YAAYA,EAAM,IAAI,YAAA,MAAkB,QAClEA,EAAM,eAAA,GACNP,EAAS,SAAS,MAAA;AAAA,EAEtB,GAAG,CAAA,CAAE;AAEL,SAAAQ;AAAA,IACE;AAAA,IACAH;AAAA,IACA,OAAO,SAAW,MAAc,SAAS;AAAA,EAAA,GAIzC,gBAAAI;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,KAAKV;AAAA,MACL,MAAAP;AAAA,MACA,aAAAJ;AAAA,MACA,OAAOM;AAAA,MACP,WAAWgB,EAAG,iBAAiBrB,CAAS;AAAA,MACxC,UAAAY;AAAA,MACC,GAAGR;AAAA,MACH,GAAIF,KAAa,CAAA;AAAA,MAClB,WAAW;AAAA,QACT,GAAIA,KAAa,CAAA;AAAA,QACjB,OAAO;AAAA,UACL,gBACE,gBAAAiB,EAACG,GAAA,EAAW,SAAArB,GACV,UAAA,gBAAAkB,EAACI,KAAU,GACb;AAAA,UAEF,GAAIrB,GAAW,SAAS,CAAA;AAAA,QAAC;AAAA,MAC3B;AAAA,IACF;AAAA,EAAA;AAGN;"}