ics-ui-kit 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/README.md +36 -36
  2. package/dist/AlertContext-CxjW1LVL.js.map +1 -1
  3. package/dist/AlertIcon-5B6AgZpe.js.map +1 -1
  4. package/dist/Button-Dg89xRSi.js.map +1 -1
  5. package/dist/ButtonBase-e6qyv6mD.js.map +1 -1
  6. package/dist/CheckboxField-cX09-eBX.js.map +1 -1
  7. package/dist/Command-BhbfL5wm.js.map +1 -1
  8. package/dist/ComponentVariantProvider-B0SFUaXB.js.map +1 -1
  9. package/dist/Description-BTPMlTT-.js.map +1 -1
  10. package/dist/Dialog-ByiJIDhl.js.map +1 -1
  11. package/dist/Divider-DPW5ZhZ8.js.map +1 -1
  12. package/dist/EmptyState-DRKjscH-.js.map +1 -1
  13. package/dist/ErrorState-B26k67-z.js.map +1 -1
  14. package/dist/FeatureIcon-BGE0Orkc.js.map +1 -1
  15. package/dist/{Field-CKl59qUB.js → Field-BiIWtq9o.js} +13 -13
  16. package/dist/Field-BiIWtq9o.js.map +1 -0
  17. package/dist/FieldLabel-QJ4rJFOi.js.map +1 -1
  18. package/dist/FolderSvg-cw0DxNVy.js.map +1 -1
  19. package/dist/FormFooterTemplate-DPB6Dkxn.js.map +1 -1
  20. package/dist/FormHeader--F6b2aRk.js.map +1 -1
  21. package/dist/{FormStack-B4QOuYgO.js → FormStack-DO15vBgd.js} +2 -2
  22. package/dist/FormStack-DO15vBgd.js.map +1 -0
  23. package/dist/HintState-BxrCAWqq.js.map +1 -1
  24. package/dist/Icon-DH3ev9GK.js.map +1 -1
  25. package/dist/IconButton-DwkpNgn3.js.map +1 -1
  26. package/dist/IconTooltip-CKJKGHbk.js.map +1 -1
  27. package/dist/Indicator-AqxHWPA9.js.map +1 -1
  28. package/dist/InputGroup-BvD9Igmt.js.map +1 -1
  29. package/dist/InputOTP-B2e1nfSO.js.map +1 -1
  30. package/dist/Loader-BpHiL6W-.js.map +1 -1
  31. package/dist/MenuItem-pvsONHlh.js.map +1 -1
  32. package/dist/MenuItemShortcut-DgPol9Nz.js.map +1 -1
  33. package/dist/MenuItemText-7uPl9P3z.js.map +1 -1
  34. package/dist/Overlay-2XMlxApi.js.map +1 -1
  35. package/dist/Popover-Dvr7y0YY.js.map +1 -1
  36. package/dist/RichButton-DuPTenmS.js.map +1 -1
  37. package/dist/ScrollArea-CuuTeDn3.js.map +1 -1
  38. package/dist/ScrollShadowContainer-DdrnF8qU.js.map +1 -1
  39. package/dist/SearchSelectTag-DFCX9zT1.js.map +1 -1
  40. package/dist/Select-DRwv6-eZ.js.map +1 -1
  41. package/dist/Sheet-rtwmzm2-.js.map +1 -1
  42. package/dist/Shortcut-D8L15_ed.js.map +1 -1
  43. package/dist/Skeleton-y6I-i9q5.js.map +1 -1
  44. package/dist/Tag-DdHXTyKF.js.map +1 -1
  45. package/dist/Text-DeBE8AKl.js.map +1 -1
  46. package/dist/TextInput-Cj50ImXi.js.map +1 -1
  47. package/dist/TextOverflowTooltip-DlUgic5y.js.map +1 -1
  48. package/dist/Toggle-v_HT3Gm2.js.map +1 -1
  49. package/dist/Tooltip-C4rVuWr4.js.map +1 -1
  50. package/dist/TriggerButton-CfDObWP9.js.map +1 -1
  51. package/dist/blocks/auth/otp-form.js +1 -1
  52. package/dist/blocks/auth/otp-form.js.map +1 -1
  53. package/dist/cn-dsXlqdJg.js.map +1 -1
  54. package/dist/components/alert-dialog.js.map +1 -1
  55. package/dist/components/alert.js.map +1 -1
  56. package/dist/components/avatar.js.map +1 -1
  57. package/dist/components/badge.js.map +1 -1
  58. package/dist/components/banner.js.map +1 -1
  59. package/dist/components/breadcrumb.js.map +1 -1
  60. package/dist/components/button.js.map +1 -1
  61. package/dist/components/calendar.js.map +1 -1
  62. package/dist/components/card.js.map +1 -1
  63. package/dist/components/carousel.js.map +1 -1
  64. package/dist/components/collapsible.js.map +1 -1
  65. package/dist/components/color-tile.js.map +1 -1
  66. package/dist/components/container.js.map +1 -1
  67. package/dist/components/counter.js.map +1 -1
  68. package/dist/components/dialog.js.map +1 -1
  69. package/dist/components/divider.js.map +1 -1
  70. package/dist/components/drawer.js.map +1 -1
  71. package/dist/components/dropdown.js.map +1 -1
  72. package/dist/components/error-state.js.map +1 -1
  73. package/dist/components/field.js +1 -1
  74. package/dist/components/file-upload.js.map +1 -1
  75. package/dist/components/form.js +2 -2
  76. package/dist/components/form.js.map +1 -1
  77. package/dist/components/image-placeholder.js.map +1 -1
  78. package/dist/components/image-preview.js.map +1 -1
  79. package/dist/components/image-uploader.js.map +1 -1
  80. package/dist/components/input.js.map +1 -1
  81. package/dist/components/menu-item.js.map +1 -1
  82. package/dist/components/page-state.js.map +1 -1
  83. package/dist/components/portal-container.js.map +1 -1
  84. package/dist/components/progress-circle.js.map +1 -1
  85. package/dist/components/progress.js.map +1 -1
  86. package/dist/components/prose.js.map +1 -1
  87. package/dist/components/radio-group.js.map +1 -1
  88. package/dist/components/resizable.js.map +1 -1
  89. package/dist/components/scheduler.js.map +1 -1
  90. package/dist/components/search-select.js.map +1 -1
  91. package/dist/components/sidebar.js.map +1 -1
  92. package/dist/components/slider.js.map +1 -1
  93. package/dist/components/stepper.js.map +1 -1
  94. package/dist/components/switch.js.map +1 -1
  95. package/dist/components/system-state.js.map +1 -1
  96. package/dist/components/table.js.map +1 -1
  97. package/dist/components/tabs.js.map +1 -1
  98. package/dist/components/tag-input.js.map +1 -1
  99. package/dist/components/textarea.js.map +1 -1
  100. package/dist/components/timer.js.map +1 -1
  101. package/dist/components/toast.js.map +1 -1
  102. package/dist/components/toggle-group.js.map +1 -1
  103. package/dist/components/toolbar.js.map +1 -1
  104. package/dist/index-0ioNhtNM.js.map +1 -1
  105. package/dist/index-437EL2iq.js.map +1 -1
  106. package/dist/index-BGQepRFJ.js.map +1 -1
  107. package/dist/index-BVqs-uqP.js.map +1 -1
  108. package/dist/index-BZPx6jYI.js.map +1 -1
  109. package/dist/index-Bb23HztA.js.map +1 -1
  110. package/dist/index-BpWB3aFK.js.map +1 -1
  111. package/dist/index-ByaXH_ih.js.map +1 -1
  112. package/dist/index-BzCriPiK.js.map +1 -1
  113. package/dist/index-CCKe-Mpx.js.map +1 -1
  114. package/dist/index-CFaU3UXv.js.map +1 -1
  115. package/dist/index-CLuiUUQ8.js.map +1 -1
  116. package/dist/index-CQD-Njgt.js.map +1 -1
  117. package/dist/index-CmBeyp2d.js.map +1 -1
  118. package/dist/index-DFZozV_h.js.map +1 -1
  119. package/dist/index-DHsfW5Rj.js.map +1 -1
  120. package/dist/index-DHyZ_0Ut.js.map +1 -1
  121. package/dist/index-DLcqcWxM.js.map +1 -1
  122. package/dist/index-DRo26PBK.js.map +1 -1
  123. package/dist/index-DnnQs07z.js.map +1 -1
  124. package/dist/index-Uiy0Xwy2.js.map +1 -1
  125. package/dist/index-_ITz1IyW.js.map +1 -1
  126. package/dist/index.js.map +1 -1
  127. package/dist/inputBaseStyles-DbzD_jvq.js.map +1 -1
  128. package/dist/lib/utils.js.map +1 -1
  129. package/dist/styles-scoped.css +6293 -6265
  130. package/dist/styles.css +6032 -6004
  131. package/dist/theme.css +356 -329
  132. package/dist/types/css.d.ts +4 -4
  133. package/dist/useBreakpoints-D8wKOvil.js.map +1 -1
  134. package/dist/useDebounce-BRah78CF.js.map +1 -1
  135. package/dist/useFileUpload-iDag0iqM.js.map +1 -1
  136. package/dist/useItemsKeyboardNavigation-CmeOR30y.js.map +1 -1
  137. package/dist/useMergeRefs-qoKniYqT.js.map +1 -1
  138. package/dist/usePortalContainer-ae6EzS08.js.map +1 -1
  139. package/dist/vendors/tanstack/react-table.js.map +1 -1
  140. package/dist/zod-BMNoK3aM.js.map +1 -1
  141. package/package.json +1 -1
  142. package/tailwind.preset.js +444 -444
  143. package/dist/Field-CKl59qUB.js.map +0 -1
  144. package/dist/FormStack-B4QOuYgO.js.map +0 -1
  145. package/dist/design-tokens.source.json +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Tag-DdHXTyKF.js","sources":["../src/components/tag/Tag.tsx"],"sourcesContent":["import React, { PropsWithChildren } from \"react\";\r\nimport { tv } from \"tailwind-variants\";\r\nimport { Slot } from \"@radix-ui/react-slot\";\r\nimport { LucideIcon, X } from \"lucide-react\";\r\nimport { Icon } from \"../icon\";\r\nimport { ButtonProps } from \"../button/button/Button\";\r\nimport { VariantsConfig } from \"@/lib/utils/variants\";\r\n\r\nexport interface TagBaseVariants {\r\n\tstatus?: \"default\" | \"info\" | \"success\" | \"warning\" | \"error\";\r\n\tfocus?: \"low\" | \"high\";\r\n\tsize?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nconst tagBaseStyles = tv({\r\n\tbase: \"inline-flex items-center justify-center overflow-hidden font-medium transition-colors\",\r\n\tvariants: {\r\n\t\tstatus: {\r\n\t\t\tdefault: \"border-primary-border bg-status-neutral-bg text-primary-fg hover:bg-status-neutral-bg-hover\",\r\n\t\t\tinfo: \"border-status-info-primary-border bg-status-info-bg text-status-info-fg hover:bg-status-info-bg-hover\",\r\n\t\t\tsuccess:\r\n\t\t\t\t\"border-status-success-primary-border bg-status-success-bg text-status-success-fg hover:bg-status-success-bg-hover\",\r\n\t\t\twarning:\r\n\t\t\t\t\"border-status-warning-primary-border bg-status-warning-bg text-status-warning-fg hover:bg-status-warning-bg-hover\",\r\n\t\t\terror: \"border-status-error-primary-border bg-status-error-bg text-status-error-fg hover:bg-status-error-bg-hover\"\r\n\t\t},\r\n\t\tfocus: {\r\n\t\t\tlow: \"\",\r\n\t\t\thigh: \"\"\r\n\t\t},\r\n\t\tsize: {\r\n\t\t\tsm: \"h-5 px-1.5 py-1 text-xs leading-none\",\r\n\t\t\tmd: \"h-6 px-1.5 py-1 text-sm leading-none\",\r\n\t\t\tlg: \"h-7 px-2 py-1 text-base leading-none\"\r\n\t\t}\r\n\t} satisfies VariantsConfig<TagBaseVariants>,\r\n\tdefaultVariants: {\r\n\t\tstatus: \"default\",\r\n\t\tfocus: \"low\",\r\n\t\tsize: \"md\"\r\n\t},\r\n\tcompoundVariants: [\r\n\t\t{\r\n\t\t\tstatus: [\"info\", \"success\", \"warning\", \"error\"],\r\n\t\t\tfocus: \"high\",\r\n\t\t\tclass: \"text-white\"\r\n\t\t},\r\n\t\t{\r\n\t\t\tstatus: \"default\",\r\n\t\t\tfocus: \"high\",\r\n\t\t\tclass: \"border-transparent bg-status-neutral text-primary-bg hover:bg-status-neutral-hover\"\r\n\t\t},\r\n\t\t{\r\n\t\t\tstatus: \"info\",\r\n\t\t\tfocus: \"high\",\r\n\t\t\tclass: \"border-transparent bg-status-info hover:bg-status-info-hover\"\r\n\t\t},\r\n\t\t{\r\n\t\t\tstatus: \"success\",\r\n\t\t\tfocus: \"high\",\r\n\t\t\tclass: \"border-transparent bg-status-success hover:bg-status-success-hover\"\r\n\t\t},\r\n\t\t{\r\n\t\t\tstatus: \"warning\",\r\n\t\t\tfocus: \"high\",\r\n\t\t\tclass: \"border-transparent bg-status-warning hover:bg-status-warning-hover\"\r\n\t\t},\r\n\t\t{\r\n\t\t\tstatus: \"error\",\r\n\t\t\tfocus: \"high\",\r\n\t\t\tclass: \"border-transparent bg-status-error hover:bg-status-error-hover\"\r\n\t\t}\r\n\t]\r\n});\r\n\r\nexport type TagBaseProps = React.HTMLAttributes<HTMLElement> &\r\n\tTagBaseVariants & {\r\n\t\tasChild?: boolean;\r\n\t};\r\n\r\nexport const TagBase = ({ asChild = false, children, ...props }: PropsWithChildren<TagBaseProps>) => {\r\n\tconst Comp = asChild ? Slot : \"span\";\r\n\treturn (\r\n\t\t<Comp className={tagBaseStyles(props)} {...props}>\r\n\t\t\t{children}\r\n\t\t</Comp>\r\n\t);\r\n};\r\n\r\nTagBase.displayName = \"TagBase\";\r\n\r\nexport interface TagButtonVariants {\r\n\tsize?: \"sm\" | \"md\" | \"lg\";\r\n\tclickable?: boolean;\r\n\tposition?: \"standalone\" | \"left\" | \"right\" | \"middle\";\r\n}\r\n\r\nconst tagButtonStyles = tv({\r\n\textend: tagBaseStyles,\r\n\tbase: \"z-10 flex cursor-pointer items-center justify-center whitespace-nowrap rounded-sm border focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-primary\",\r\n\tvariants: {\r\n\t\tsize: {\r\n\t\t\tsm: \"gap-1\",\r\n\t\t\tmd: \"gap-1\",\r\n\t\t\tlg: \"gap-1.5\"\r\n\t\t},\r\n\t\tclickable: {\r\n\t\t\tfalse: \"cursor-default\"\r\n\t\t},\r\n\t\tposition: {\r\n\t\t\tstandalone: \"\",\r\n\t\t\tleft: \"rounded-r-none border-r-0\",\r\n\t\t\tright: \"rounded-l-none border-l-0\",\r\n\t\t\tmiddle: \"rounded-none border-l-0 border-r-0\"\r\n\t\t}\r\n\t} satisfies VariantsConfig<TagButtonVariants>,\r\n\tdefaultVariants: {\r\n\t\tclickable: true,\r\n\t\tposition: \"standalone\"\r\n\t}\r\n});\r\n\r\nexport type TagButtonProps = React.HTMLAttributes<HTMLElement> &\r\n\tTagButtonVariants &\r\n\tOmit<TagBaseVariants, \"size\"> & {\r\n\t\tasChild?: boolean;\r\n\t};\r\n\r\nexport const TagButton = (props: PropsWithChildren<TagButtonProps>) => {\r\n\tconst { asChild = false, children, className, ...rest } = props;\r\n\tconst Comp = asChild ? Slot : \"button\";\r\n\tconst styles = tagButtonStyles({ className, ...rest });\r\n\treturn (\r\n\t\t<Comp className={styles} {...rest}>\r\n\t\t\t{children}\r\n\t\t</Comp>\r\n\t);\r\n};\r\n\r\nTagButton.displayName = \"TagButton\";\r\n\r\nexport interface TagCloseVariants {\r\n\tsize?: \"sm\" | \"md\" | \"lg\";\r\n\tfocus?: \"low\" | \"high\";\r\n}\r\n\r\nconst tagCloseStyles = tv({\r\n\textend: tagBaseStyles,\r\n\tbase: \"aspect-square cursor-pointer rounded-l-none rounded-r-sm border border-l-0 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-primary\",\r\n\tvariants: {\r\n\t\tsize: {\r\n\t\t\tsm: \"h-5 p-1 text-xs\",\r\n\t\t\tmd: \"h-6 p-1 text-sm\",\r\n\t\t\tlg: \"h-7 p-1.5 text-base\"\r\n\t\t},\r\n\t\tfocus: {\r\n\t\t\tlow: \"\",\r\n\t\t\thigh: \"\"\r\n\t\t}\r\n\t} satisfies VariantsConfig<TagCloseVariants>\r\n});\r\n\r\nconst tagIconStyles = tv({\r\n\tbase: \"aspect-square flex-shrink-0\",\r\n\tvariants: {\r\n\t\tsize: {\r\n\t\t\tsm: \"h-3 w-3\",\r\n\t\t\tmd: \"h-3.5 w-3.5\",\r\n\t\t\tlg: \"h-4 w-4\"\r\n\t\t}\r\n\t}\r\n});\r\n\r\nexport type TagCloseProps = React.ButtonHTMLAttributes<HTMLButtonElement> &\r\n\tTagCloseVariants &\r\n\tOmit<TagBaseVariants, \"size\"> & {\r\n\t\ticon?: LucideIcon;\r\n\t\ttag?: React.ElementType;\r\n\t};\r\n\r\nexport const TagClose = (props: TagCloseProps) => {\r\n\tconst { icon = X, size, tag: Tag = \"button\", className, ...rest } = props;\r\n\tconst styles = tagCloseStyles({ className, size, ...rest });\r\n\treturn (\r\n\t\t<Tag type=\"button\" className={styles} aria-label=\"Удалить\" size={size} {...rest}>\r\n\t\t\t<Icon icon={icon} className={tagIconStyles({ size })} />\r\n\t\t</Tag>\r\n\t);\r\n};\r\n\r\nTagClose.displayName = \"TagClose\";\r\n\r\nexport interface TagDividerVariants {\r\n\tstatus?: \"default\" | \"info\" | \"success\" | \"warning\" | \"error\";\r\n}\r\n\r\nconst tagDividerStyles = tv({\r\n\tbase: \"self-stretch border-l border-primary-border\",\r\n\tvariants: {\r\n\t\tstatus: {\r\n\t\t\tdefault: \"\",\r\n\t\t\tinfo: \"border-status-info-primary-border\",\r\n\t\t\tsuccess: \"border-status-success-primary-border\",\r\n\t\t\twarning: \"border-status-warning-primary-border\",\r\n\t\t\terror: \"border-status-error-primary-border\"\r\n\t\t}\r\n\t} satisfies VariantsConfig<TagDividerVariants>,\r\n\tdefaultVariants: {\r\n\t\tstatus: \"default\"\r\n\t}\r\n});\r\n\r\nexport type TagDividerProps = React.HTMLAttributes<HTMLDivElement> & TagDividerVariants;\r\n\r\nexport const TagDivider = (props: TagDividerProps) => {\r\n\tconst { status, className, ...rest } = props;\r\n\treturn <div className={tagDividerStyles({ status, className })} {...rest} />;\r\n};\r\n\r\nTagDivider.displayName = \"TagDivider\";\r\n\r\nexport interface TagWrapperVariants {\r\n\tsize?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\nconst tagWrapperStyles = tv({\r\n\tbase: \"inline-flex items-center rounded-sm\",\r\n\tvariants: {\r\n\t\tsize: {\r\n\t\t\tsm: \"h-5\",\r\n\t\t\tmd: \"h-6\",\r\n\t\t\tlg: \"h-7\"\r\n\t\t}\r\n\t} satisfies VariantsConfig<TagWrapperVariants>\r\n});\r\n\r\nexport type TagWrapperProps = React.HTMLAttributes<HTMLDivElement> & TagWrapperVariants;\r\n\r\nexport const TagWrapper = (props: TagWrapperProps) => {\r\n\tconst { children, className, size, ...rest } = props;\r\n\tconst styles = tagWrapperStyles({ className, size });\r\n\treturn (\r\n\t\t<div className={styles} {...rest}>\r\n\t\t\t{children}\r\n\t\t</div>\r\n\t);\r\n};\r\n\r\nexport type TagProps = PropsWithChildren<\r\n\tPick<TagBaseVariants, \"focus\" | \"size\"> &\r\n\t\tButtonProps & {\r\n\t\t\tonLabelClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\r\n\t\t\tonClose?: (e: React.MouseEvent<HTMLButtonElement>) => void;\r\n\t\t\tclassName?: string;\r\n\t\t\tbuttonClassName?: string;\r\n\t\t}\r\n>;\r\n\r\nexport const Tag = (props: TagProps) => {\r\n\tconst {\r\n\t\tstartIcon: StartIcon,\r\n\t\tendIcon: EndIcon,\r\n\t\tchildren,\r\n\t\tonLabelClick,\r\n\t\tonClose,\r\n\t\tstatus,\r\n\t\tfocus,\r\n\t\tsize = \"md\",\r\n\t\tclassName,\r\n\t\tbuttonClassName,\r\n\t\t...rest\r\n\t} = props;\r\n\tconst hasClose = Boolean(onClose);\r\n\r\n\tconst startIconEl = StartIcon && <StartIcon className={tagIconStyles({ size })} />;\r\n\tconst endIconEl = EndIcon && <EndIcon className={tagIconStyles({ size })} />;\r\n\r\n\treturn (\r\n\t\t<TagWrapper size={size} className={className}>\r\n\t\t\t<TagButton\r\n\t\t\t\tposition={hasClose ? \"left\" : undefined}\r\n\t\t\t\tstatus={status}\r\n\t\t\t\tfocus={focus}\r\n\t\t\t\tsize={size}\r\n\t\t\t\tonClick={onLabelClick}\r\n\t\t\t\tclassName={buttonClassName}\r\n\t\t\t\t{...rest}\r\n\t\t\t>\r\n\t\t\t\t{startIconEl}\r\n\t\t\t\t{children}\r\n\t\t\t\t{endIconEl}\r\n\t\t\t</TagButton>\r\n\r\n\t\t\t{hasClose && (\r\n\t\t\t\t<>\r\n\t\t\t\t\t<TagDivider status={status} />\r\n\t\t\t\t\t<TagClose status={status} focus={focus} size={size} onClick={onClose} />\r\n\t\t\t\t</>\r\n\t\t\t)}\r\n\t\t</TagWrapper>\r\n\t);\r\n};\r\n\r\nTag.displayName = \"Tag\";\r\n"],"names":["tagBaseStyles","tv","TagBase","asChild","children","props","jsx","Slot","tagButtonStyles","TagButton","className","rest","Comp","styles","tagCloseStyles","tagIconStyles","TagClose","icon","X","size","Tag","Icon","tagDividerStyles","TagDivider","status","tagWrapperStyles","TagWrapper","StartIcon","EndIcon","onLabelClick","onClose","focus","buttonClassName","hasClose","startIconEl","endIconEl","jsxs","Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"Tag-DdHXTyKF.js","sources":["../src/components/tag/Tag.tsx"],"sourcesContent":["import React, { PropsWithChildren } from \"react\";\nimport { tv } from \"tailwind-variants\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { LucideIcon, X } from \"lucide-react\";\nimport { Icon } from \"../icon\";\nimport { ButtonProps } from \"../button/button/Button\";\nimport { VariantsConfig } from \"@/lib/utils/variants\";\n\nexport interface TagBaseVariants {\n\tstatus?: \"default\" | \"info\" | \"success\" | \"warning\" | \"error\";\n\tfocus?: \"low\" | \"high\";\n\tsize?: \"sm\" | \"md\" | \"lg\";\n}\n\nconst tagBaseStyles = tv({\n\tbase: \"inline-flex items-center justify-center overflow-hidden font-medium transition-colors\",\n\tvariants: {\n\t\tstatus: {\n\t\t\tdefault: \"border-primary-border bg-status-neutral-bg text-primary-fg hover:bg-status-neutral-bg-hover\",\n\t\t\tinfo: \"border-status-info-primary-border bg-status-info-bg text-status-info-fg hover:bg-status-info-bg-hover\",\n\t\t\tsuccess:\n\t\t\t\t\"border-status-success-primary-border bg-status-success-bg text-status-success-fg hover:bg-status-success-bg-hover\",\n\t\t\twarning:\n\t\t\t\t\"border-status-warning-primary-border bg-status-warning-bg text-status-warning-fg hover:bg-status-warning-bg-hover\",\n\t\t\terror: \"border-status-error-primary-border bg-status-error-bg text-status-error-fg hover:bg-status-error-bg-hover\"\n\t\t},\n\t\tfocus: {\n\t\t\tlow: \"\",\n\t\t\thigh: \"\"\n\t\t},\n\t\tsize: {\n\t\t\tsm: \"h-5 px-1.5 py-1 text-xs leading-none\",\n\t\t\tmd: \"h-6 px-1.5 py-1 text-sm leading-none\",\n\t\t\tlg: \"h-7 px-2 py-1 text-base leading-none\"\n\t\t}\n\t} satisfies VariantsConfig<TagBaseVariants>,\n\tdefaultVariants: {\n\t\tstatus: \"default\",\n\t\tfocus: \"low\",\n\t\tsize: \"md\"\n\t},\n\tcompoundVariants: [\n\t\t{\n\t\t\tstatus: [\"info\", \"success\", \"warning\", \"error\"],\n\t\t\tfocus: \"high\",\n\t\t\tclass: \"text-white\"\n\t\t},\n\t\t{\n\t\t\tstatus: \"default\",\n\t\t\tfocus: \"high\",\n\t\t\tclass: \"border-transparent bg-status-neutral text-primary-bg hover:bg-status-neutral-hover\"\n\t\t},\n\t\t{\n\t\t\tstatus: \"info\",\n\t\t\tfocus: \"high\",\n\t\t\tclass: \"border-transparent bg-status-info hover:bg-status-info-hover\"\n\t\t},\n\t\t{\n\t\t\tstatus: \"success\",\n\t\t\tfocus: \"high\",\n\t\t\tclass: \"border-transparent bg-status-success hover:bg-status-success-hover\"\n\t\t},\n\t\t{\n\t\t\tstatus: \"warning\",\n\t\t\tfocus: \"high\",\n\t\t\tclass: \"border-transparent bg-status-warning hover:bg-status-warning-hover\"\n\t\t},\n\t\t{\n\t\t\tstatus: \"error\",\n\t\t\tfocus: \"high\",\n\t\t\tclass: \"border-transparent bg-status-error hover:bg-status-error-hover\"\n\t\t}\n\t]\n});\n\nexport type TagBaseProps = React.HTMLAttributes<HTMLElement> &\n\tTagBaseVariants & {\n\t\tasChild?: boolean;\n\t};\n\nexport const TagBase = ({ asChild = false, children, ...props }: PropsWithChildren<TagBaseProps>) => {\n\tconst Comp = asChild ? Slot : \"span\";\n\treturn (\n\t\t<Comp className={tagBaseStyles(props)} {...props}>\n\t\t\t{children}\n\t\t</Comp>\n\t);\n};\n\nTagBase.displayName = \"TagBase\";\n\nexport interface TagButtonVariants {\n\tsize?: \"sm\" | \"md\" | \"lg\";\n\tclickable?: boolean;\n\tposition?: \"standalone\" | \"left\" | \"right\" | \"middle\";\n}\n\nconst tagButtonStyles = tv({\n\textend: tagBaseStyles,\n\tbase: \"z-10 flex cursor-pointer items-center justify-center whitespace-nowrap rounded-sm border focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-primary\",\n\tvariants: {\n\t\tsize: {\n\t\t\tsm: \"gap-1\",\n\t\t\tmd: \"gap-1\",\n\t\t\tlg: \"gap-1.5\"\n\t\t},\n\t\tclickable: {\n\t\t\tfalse: \"cursor-default\"\n\t\t},\n\t\tposition: {\n\t\t\tstandalone: \"\",\n\t\t\tleft: \"rounded-r-none border-r-0\",\n\t\t\tright: \"rounded-l-none border-l-0\",\n\t\t\tmiddle: \"rounded-none border-l-0 border-r-0\"\n\t\t}\n\t} satisfies VariantsConfig<TagButtonVariants>,\n\tdefaultVariants: {\n\t\tclickable: true,\n\t\tposition: \"standalone\"\n\t}\n});\n\nexport type TagButtonProps = React.HTMLAttributes<HTMLElement> &\n\tTagButtonVariants &\n\tOmit<TagBaseVariants, \"size\"> & {\n\t\tasChild?: boolean;\n\t};\n\nexport const TagButton = (props: PropsWithChildren<TagButtonProps>) => {\n\tconst { asChild = false, children, className, ...rest } = props;\n\tconst Comp = asChild ? Slot : \"button\";\n\tconst styles = tagButtonStyles({ className, ...rest });\n\treturn (\n\t\t<Comp className={styles} {...rest}>\n\t\t\t{children}\n\t\t</Comp>\n\t);\n};\n\nTagButton.displayName = \"TagButton\";\n\nexport interface TagCloseVariants {\n\tsize?: \"sm\" | \"md\" | \"lg\";\n\tfocus?: \"low\" | \"high\";\n}\n\nconst tagCloseStyles = tv({\n\textend: tagBaseStyles,\n\tbase: \"aspect-square cursor-pointer rounded-l-none rounded-r-sm border border-l-0 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-primary\",\n\tvariants: {\n\t\tsize: {\n\t\t\tsm: \"h-5 p-1 text-xs\",\n\t\t\tmd: \"h-6 p-1 text-sm\",\n\t\t\tlg: \"h-7 p-1.5 text-base\"\n\t\t},\n\t\tfocus: {\n\t\t\tlow: \"\",\n\t\t\thigh: \"\"\n\t\t}\n\t} satisfies VariantsConfig<TagCloseVariants>\n});\n\nconst tagIconStyles = tv({\n\tbase: \"aspect-square flex-shrink-0\",\n\tvariants: {\n\t\tsize: {\n\t\t\tsm: \"h-3 w-3\",\n\t\t\tmd: \"h-3.5 w-3.5\",\n\t\t\tlg: \"h-4 w-4\"\n\t\t}\n\t}\n});\n\nexport type TagCloseProps = React.ButtonHTMLAttributes<HTMLButtonElement> &\n\tTagCloseVariants &\n\tOmit<TagBaseVariants, \"size\"> & {\n\t\ticon?: LucideIcon;\n\t\ttag?: React.ElementType;\n\t};\n\nexport const TagClose = (props: TagCloseProps) => {\n\tconst { icon = X, size, tag: Tag = \"button\", className, ...rest } = props;\n\tconst styles = tagCloseStyles({ className, size, ...rest });\n\treturn (\n\t\t<Tag type=\"button\" className={styles} aria-label=\"Удалить\" size={size} {...rest}>\n\t\t\t<Icon icon={icon} className={tagIconStyles({ size })} />\n\t\t</Tag>\n\t);\n};\n\nTagClose.displayName = \"TagClose\";\n\nexport interface TagDividerVariants {\n\tstatus?: \"default\" | \"info\" | \"success\" | \"warning\" | \"error\";\n}\n\nconst tagDividerStyles = tv({\n\tbase: \"self-stretch border-l border-primary-border\",\n\tvariants: {\n\t\tstatus: {\n\t\t\tdefault: \"\",\n\t\t\tinfo: \"border-status-info-primary-border\",\n\t\t\tsuccess: \"border-status-success-primary-border\",\n\t\t\twarning: \"border-status-warning-primary-border\",\n\t\t\terror: \"border-status-error-primary-border\"\n\t\t}\n\t} satisfies VariantsConfig<TagDividerVariants>,\n\tdefaultVariants: {\n\t\tstatus: \"default\"\n\t}\n});\n\nexport type TagDividerProps = React.HTMLAttributes<HTMLDivElement> & TagDividerVariants;\n\nexport const TagDivider = (props: TagDividerProps) => {\n\tconst { status, className, ...rest } = props;\n\treturn <div className={tagDividerStyles({ status, className })} {...rest} />;\n};\n\nTagDivider.displayName = \"TagDivider\";\n\nexport interface TagWrapperVariants {\n\tsize?: \"sm\" | \"md\" | \"lg\";\n}\n\nconst tagWrapperStyles = tv({\n\tbase: \"inline-flex items-center rounded-sm\",\n\tvariants: {\n\t\tsize: {\n\t\t\tsm: \"h-5\",\n\t\t\tmd: \"h-6\",\n\t\t\tlg: \"h-7\"\n\t\t}\n\t} satisfies VariantsConfig<TagWrapperVariants>\n});\n\nexport type TagWrapperProps = React.HTMLAttributes<HTMLDivElement> & TagWrapperVariants;\n\nexport const TagWrapper = (props: TagWrapperProps) => {\n\tconst { children, className, size, ...rest } = props;\n\tconst styles = tagWrapperStyles({ className, size });\n\treturn (\n\t\t<div className={styles} {...rest}>\n\t\t\t{children}\n\t\t</div>\n\t);\n};\n\nexport type TagProps = PropsWithChildren<\n\tPick<TagBaseVariants, \"focus\" | \"size\"> &\n\t\tButtonProps & {\n\t\t\tonLabelClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n\t\t\tonClose?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n\t\t\tclassName?: string;\n\t\t\tbuttonClassName?: string;\n\t\t}\n>;\n\nexport const Tag = (props: TagProps) => {\n\tconst {\n\t\tstartIcon: StartIcon,\n\t\tendIcon: EndIcon,\n\t\tchildren,\n\t\tonLabelClick,\n\t\tonClose,\n\t\tstatus,\n\t\tfocus,\n\t\tsize = \"md\",\n\t\tclassName,\n\t\tbuttonClassName,\n\t\t...rest\n\t} = props;\n\tconst hasClose = Boolean(onClose);\n\n\tconst startIconEl = StartIcon && <StartIcon className={tagIconStyles({ size })} />;\n\tconst endIconEl = EndIcon && <EndIcon className={tagIconStyles({ size })} />;\n\n\treturn (\n\t\t<TagWrapper size={size} className={className}>\n\t\t\t<TagButton\n\t\t\t\tposition={hasClose ? \"left\" : undefined}\n\t\t\t\tstatus={status}\n\t\t\t\tfocus={focus}\n\t\t\t\tsize={size}\n\t\t\t\tonClick={onLabelClick}\n\t\t\t\tclassName={buttonClassName}\n\t\t\t\t{...rest}\n\t\t\t>\n\t\t\t\t{startIconEl}\n\t\t\t\t{children}\n\t\t\t\t{endIconEl}\n\t\t\t</TagButton>\n\n\t\t\t{hasClose && (\n\t\t\t\t<>\n\t\t\t\t\t<TagDivider status={status} />\n\t\t\t\t\t<TagClose status={status} focus={focus} size={size} onClick={onClose} />\n\t\t\t\t</>\n\t\t\t)}\n\t\t</TagWrapper>\n\t);\n};\n\nTag.displayName = \"Tag\";\n"],"names":["tagBaseStyles","tv","TagBase","asChild","children","props","jsx","Slot","tagButtonStyles","TagButton","className","rest","Comp","styles","tagCloseStyles","tagIconStyles","TagClose","icon","X","size","Tag","Icon","tagDividerStyles","TagDivider","status","tagWrapperStyles","TagWrapper","StartIcon","EndIcon","onLabelClick","onClose","focus","buttonClassName","hasClose","startIconEl","endIconEl","jsxs","Fragment"],"mappings":";;;;;AAcA,MAAMA,IAAgBC,EAAG;AAAA,EACxB,MAAM;AAAA,EACN,UAAU;AAAA,IACT,QAAQ;AAAA,MACP,SAAS;AAAA,MACT,MAAM;AAAA,MACN,SACC;AAAA,MACD,SACC;AAAA,MACD,OAAO;AAAA,IACR;AAAA,IACA,OAAO;AAAA,MACN,KAAK;AAAA,MACL,MAAM;AAAA,IACP;AAAA,IACA,MAAM;AAAA,MACL,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,EAEN;AAAA,EACA,iBAAiB;AAAA,IAChB,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACP;AAAA,EACA,kBAAkB;AAAA,IACjB;AAAA,MACC,QAAQ,CAAC,QAAQ,WAAW,WAAW,OAAO;AAAA,MAC9C,OAAO;AAAA,MACP,OAAO;AAAA,IACR;AAAA,IACA;AAAA,MACC,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,OAAO;AAAA,IACR;AAAA,IACA;AAAA,MACC,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,OAAO;AAAA,IACR;AAAA,IACA;AAAA,MACC,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,OAAO;AAAA,IACR;AAAA,IACA;AAAA,MACC,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,OAAO;AAAA,IACR;AAAA,IACA;AAAA,MACC,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,OAAO;AAAA,IAAA;AAAA,EACR;AAEF,CAAC,GAOYC,IAAU,CAAC,EAAE,SAAAC,IAAU,IAAO,UAAAC,GAAU,GAAGC,QAGtD,gBAAAC,EAFYH,IAAUI,IAAO,UAEvB,WAAWP,EAAcK,CAAK,GAAI,GAAGA,GACzC,UAAAD,GACF;AAIFF,EAAQ,cAAc;AAQtB,MAAMM,IAAkBP,EAAG;AAAA,EAC1B,QAAQD;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,IACT,MAAM;AAAA,MACL,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACL;AAAA,IACA,WAAW;AAAA,MACV,OAAO;AAAA,IACR;AAAA,IACA,UAAU;AAAA,MACT,YAAY;AAAA,MACZ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,IAAA;AAAA,EAEV;AAAA,EACA,iBAAiB;AAAA,IAChB,WAAW;AAAA,IACX,UAAU;AAAA,EAAA;AAEZ,CAAC,GAQYS,IAAY,CAACJ,MAA6C;AACtE,QAAM,EAAE,SAAAF,IAAU,IAAO,UAAAC,GAAU,WAAAM,GAAW,GAAGC,MAASN,GACpDO,IAAOT,IAAUI,IAAO,UACxBM,IAASL,EAAgB,EAAE,WAAAE,GAAW,GAAGC,GAAM;AACrD,2BACEC,GAAK,EAAA,WAAWC,GAAS,GAAGF,GAC3B,UAAAP,GACF;AAEF;AAEAK,EAAU,cAAc;AAOxB,MAAMK,IAAiBb,EAAG;AAAA,EACzB,QAAQD;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,IACT,MAAM;AAAA,MACL,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACL;AAAA,IACA,OAAO;AAAA,MACN,KAAK;AAAA,MACL,MAAM;AAAA,IAAA;AAAA,EACP;AAEF,CAAC,GAEKe,IAAgBd,EAAG;AAAA,EACxB,MAAM;AAAA,EACN,UAAU;AAAA,IACT,MAAM;AAAA,MACL,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,EACL;AAEF,CAAC,GASYe,IAAW,CAACX,MAAyB;AAC3C,QAAA,EAAE,MAAAY,IAAOC,GAAG,MAAAC,GAAM,KAAKC,IAAM,UAAU,WAAAV,GAAW,GAAGC,EAAA,IAASN,GAC9DQ,IAASC,EAAe,EAAE,WAAAJ,GAAW,MAAAS,GAAM,GAAGR,GAAM;AAEzD,SAAA,gBAAAL,EAACc,GAAA,EAAI,MAAK,UAAS,WAAWP,GAAQ,cAAW,WAAU,MAAAM,GAAa,GAAGR,GAC1E,UAAA,gBAAAL,EAACe,KAAK,MAAAJ,GAAY,WAAWF,EAAc,EAAE,MAAAI,EAAA,CAAM,EAAG,CAAA,GACvD;AAEF;AAEAH,EAAS,cAAc;AAMvB,MAAMM,IAAmBrB,EAAG;AAAA,EAC3B,MAAM;AAAA,EACN,UAAU;AAAA,IACT,QAAQ;AAAA,MACP,SAAS;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS;AAAA,MACT,OAAO;AAAA,IAAA;AAAA,EAET;AAAA,EACA,iBAAiB;AAAA,IAChB,QAAQ;AAAA,EAAA;AAEV,CAAC,GAIYsB,IAAa,CAAClB,MAA2B;AACrD,QAAM,EAAE,QAAAmB,GAAQ,WAAAd,GAAW,GAAGC,EAAS,IAAAN;AAChC,SAAA,gBAAAC,EAAC,OAAI,EAAA,WAAWgB,EAAiB,EAAE,QAAAE,GAAQ,WAAAd,EAAW,CAAA,GAAI,GAAGC,GAAM;AAC3E;AAEAY,EAAW,cAAc;AAMzB,MAAME,IAAmBxB,EAAG;AAAA,EAC3B,MAAM;AAAA,EACN,UAAU;AAAA,IACT,MAAM;AAAA,MACL,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,EACL;AAEF,CAAC,GAIYyB,IAAa,CAACrB,MAA2B;AACrD,QAAM,EAAE,UAAAD,GAAU,WAAAM,GAAW,MAAAS,GAAM,GAAGR,EAAS,IAAAN,GACzCQ,IAASY,EAAiB,EAAE,WAAAf,GAAW,MAAAS,GAAM;AACnD,2BACE,OAAI,EAAA,WAAWN,GAAS,GAAGF,GAC1B,UAAAP,GACF;AAEF,GAYagB,IAAM,CAACf,MAAoB;AACjC,QAAA;AAAA,IACL,WAAWsB;AAAA,IACX,SAASC;AAAA,IACT,UAAAxB;AAAA,IACA,cAAAyB;AAAA,IACA,SAAAC;AAAA,IACA,QAAAN;AAAA,IACA,OAAAO;AAAA,IACA,MAAAZ,IAAO;AAAA,IACP,WAAAT;AAAA,IACA,iBAAAsB;AAAA,IACA,GAAGrB;AAAA,EAAA,IACAN,GACE4B,IAAW,EAAQH,GAEnBI,IAAcP,KAAc,gBAAArB,EAAAqB,GAAA,EAAU,WAAWZ,EAAc,EAAE,MAAAI,EAAM,CAAA,GAAG,GAC1EgB,IAAYP,KAAY,gBAAAtB,EAAAsB,GAAA,EAAQ,WAAWb,EAAc,EAAE,MAAAI,EAAM,CAAA,GAAG;AAGzE,SAAA,gBAAAiB,EAACV,GAAW,EAAA,MAAAP,GAAY,WAAAT,GACvB,UAAA;AAAA,IAAA,gBAAA0B;AAAA,MAAC3B;AAAA,MAAA;AAAA,QACA,UAAUwB,IAAW,SAAS;AAAA,QAC9B,QAAAT;AAAA,QACA,OAAAO;AAAA,QACA,MAAAZ;AAAA,QACA,SAASU;AAAA,QACT,WAAWG;AAAA,QACV,GAAGrB;AAAA,QAEH,UAAA;AAAA,UAAAuB;AAAA,UACA9B;AAAA,UACA+B;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,IAECF,KAEC,gBAAAG,EAAAC,GAAA,EAAA,UAAA;AAAA,MAAA,gBAAA/B,EAACiB,KAAW,QAAAC,GAAgB;AAAA,wBAC3BR,GAAS,EAAA,QAAAQ,GAAgB,OAAAO,GAAc,MAAAZ,GAAY,SAASW,EAAS,CAAA;AAAA,IAAA,EACvE,CAAA;AAAA,EAAA,GAEF;AAEF;AAEAV,EAAI,cAAc;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Text-DeBE8AKl.js","sources":["../src/components/text/Text.tsx"],"sourcesContent":["import { VariantsConfig } from \"@/lib/utils/variants\";\r\nimport React from \"react\";\r\nimport { tv } from \"tailwind-variants\";\r\n\r\ntype TextVariants = {\r\n\tsize?: \"xs\" | \"sm\";\r\n};\r\n\r\nconst textStyles = tv({\r\n\tbase: \"font-normal text-secondary-fg\",\r\n\tvariants: {\r\n\t\tsize: {\r\n\t\t\txs: \"text-xs\",\r\n\t\t\tsm: \"text-sm\"\r\n\t\t}\r\n\t} satisfies VariantsConfig<TextVariants>,\r\n\tdefaultVariants: {\r\n\t\tsize: \"sm\"\r\n\t}\r\n});\r\n\r\nexport type TextProps = React.HTMLAttributes<HTMLDivElement> & React.PropsWithChildren & TextVariants;\r\n\r\nexport const Text = React.forwardRef<HTMLDivElement, TextProps>(\r\n\t({ className, children, size = \"sm\", ...props }, ref) => {\r\n\t\treturn (\r\n\t\t\t<span ref={ref} className={textStyles({ class: className, size })} {...props}>\r\n\t\t\t\t{children}\r\n\t\t\t</span>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nText.displayName = \"Text\";\r\n"],"names":["textStyles","tv","Text","React","className","children","size","props","ref","jsx"],"mappings":";;;AAQA,MAAMA,IAAaC,EAAG;AAAA,EACrB,MAAM;AAAA,EACN,UAAU;AAAA,IACT,MAAM;AAAA,MACL,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,EAEN;AAAA,EACA,iBAAiB;AAAA,IAChB,MAAM;AAAA,EAAA;AAER,CAAC,GAIYC,IAAOC,EAAM;AAAA,EACzB,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,MAAAC,IAAO,MAAM,GAAGC,EAAM,GAAGC,MAE9C,gBAAAC,EAAA,QAAA,EAAK,KAAAD,GAAU,WAAWR,EAAW,EAAE,OAAOI,GAAW,MAAAE,EAAM,CAAA,GAAI,GAAGC,GACrE,UAAAF,EACF,CAAA;AAGH;AAEAH,EAAK,cAAc;"}
1
+ {"version":3,"file":"Text-DeBE8AKl.js","sources":["../src/components/text/Text.tsx"],"sourcesContent":["import { VariantsConfig } from \"@/lib/utils/variants\";\nimport React from \"react\";\nimport { tv } from \"tailwind-variants\";\n\ntype TextVariants = {\n\tsize?: \"xs\" | \"sm\";\n};\n\nconst textStyles = tv({\n\tbase: \"font-normal text-secondary-fg\",\n\tvariants: {\n\t\tsize: {\n\t\t\txs: \"text-xs\",\n\t\t\tsm: \"text-sm\"\n\t\t}\n\t} satisfies VariantsConfig<TextVariants>,\n\tdefaultVariants: {\n\t\tsize: \"sm\"\n\t}\n});\n\nexport type TextProps = React.HTMLAttributes<HTMLDivElement> & React.PropsWithChildren & TextVariants;\n\nexport const Text = React.forwardRef<HTMLDivElement, TextProps>(\n\t({ className, children, size = \"sm\", ...props }, ref) => {\n\t\treturn (\n\t\t\t<span ref={ref} className={textStyles({ class: className, size })} {...props}>\n\t\t\t\t{children}\n\t\t\t</span>\n\t\t);\n\t}\n);\n\nText.displayName = \"Text\";\n"],"names":["textStyles","tv","Text","React","className","children","size","props","ref","jsx"],"mappings":";;;AAQA,MAAMA,IAAaC,EAAG;AAAA,EACrB,MAAM;AAAA,EACN,UAAU;AAAA,IACT,MAAM;AAAA,MACL,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,EAEN;AAAA,EACA,iBAAiB;AAAA,IAChB,MAAM;AAAA,EAAA;AAER,CAAC,GAIYC,IAAOC,EAAM;AAAA,EACzB,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,MAAAC,IAAO,MAAM,GAAGC,EAAM,GAAGC,MAE9C,gBAAAC,EAAA,QAAA,EAAK,KAAAD,GAAU,WAAWR,EAAW,EAAE,OAAOI,GAAW,MAAAE,EAAM,CAAA,GAAI,GAAGC,GACrE,UAAAF,EACF,CAAA;AAGH;AAEAH,EAAK,cAAc;"}
@@ -1 +1 @@
1
- {"version":3,"file":"TextInput-Cj50ImXi.js","sources":["../node_modules/.pnpm/lucide-react@0.460.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/copy.js","../src/hooks/useControlledValue.ts","../src/hooks/useCopyAction.ts","../src/hooks/useAutofill.ts","../src/hooks/useInputWithActions.ts","../src/components/input/text-input/TextInput.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Copy = createLucideIcon(\"Copy\", [\n [\"rect\", { width: \"14\", height: \"14\", x: \"8\", y: \"8\", rx: \"2\", ry: \"2\", key: \"17jyea\" }],\n [\"path\", { d: \"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\", key: \"zix9uf\" }]\n]);\n\nexport { Copy as default };\n//# sourceMappingURL=copy.js.map\n","import { useCallback, useEffect, useRef, useState } from \"react\";\r\n\r\n/**\r\n * Хук для управления контролируемым и неконтролируемым состоянием\r\n */\r\nexport function useControlledValue(\r\n\tvalue: string | number | readonly string[] | undefined,\r\n\tdefaultValue: string | number | readonly string[] | undefined,\r\n\tonChange?: (value: string | null) => void\r\n) {\r\n\tconst [uncontrolledValue, setUncontrolledValue] = useState(\r\n\t\ttypeof defaultValue === \"string\" ? defaultValue : String(defaultValue ?? \"\")\r\n\t);\r\n\tconst inputRef = useRef<HTMLInputElement>(null);\r\n\r\n\t// Добавляем обработчик для отслеживания изменений в uncontrolled режиме\r\n\tuseEffect(() => {\r\n\t\tif (value !== undefined) return;\r\n\r\n\t\tconst input = inputRef.current;\r\n\t\tif (!input) return;\r\n\r\n\t\tconst handleInput = () => {\r\n\t\t\tsetUncontrolledValue(input.value);\r\n\t\t};\r\n\r\n\t\tinput.addEventListener(\"input\", handleInput);\r\n\t\treturn () => input.removeEventListener(\"input\", handleInput);\r\n\t}, [value, inputRef]);\r\n\r\n\tconst getCurrentValue = useCallback(() => {\r\n\t\tif (value !== undefined) return String(value);\r\n\t\treturn uncontrolledValue;\r\n\t}, [value, uncontrolledValue]);\r\n\r\n\tconst handleChange = useCallback(\r\n\t\t(e: React.ChangeEvent<HTMLInputElement>) => {\r\n\t\t\tonChange?.(e.target.value);\r\n\t\t},\r\n\t\t[onChange]\r\n\t);\r\n\r\n\treturn {\r\n\t\tinputRef,\r\n\t\tgetCurrentValue,\r\n\t\thandleChange,\r\n\t\tcurrentValue: getCurrentValue()\r\n\t};\r\n}\r\n","import { useCallback, useEffect, useState } from \"react\";\r\n\r\n/**\r\n * Хук для копирования содержимого в буфер обмена\r\n */\r\nexport function useCopyAction() {\r\n\tconst [hasCopied, setHasCopied] = useState(false);\r\n\r\n\t// Эффект для сброса статуса копирования\r\n\tuseEffect(() => {\r\n\t\tif (!hasCopied) return;\r\n\t\tconst timeout = setTimeout(() => {\r\n\t\t\tsetHasCopied(false);\r\n\t\t}, 2000);\r\n\t\treturn () => clearTimeout(timeout);\r\n\t}, [hasCopied]);\r\n\r\n\tconst handleCopy = useCallback((value: string) => {\r\n\t\tif (value) {\r\n\t\t\tnavigator.clipboard.writeText(value);\r\n\t\t\tsetHasCopied(true);\r\n\t\t}\r\n\t}, []);\r\n\r\n\treturn {\r\n\t\thasCopied,\r\n\t\thandleCopy\r\n\t};\r\n}\r\n","import { useEffect, useRef, useState } from \"react\";\r\n\r\n/**\r\n * Хук для определения состояния автозаполнения input'а\r\n */\r\nexport function useAutofill() {\r\n\tconst [isAutofilled, setIsAutofilled] = useState(false);\r\n\tconst inputRef = useRef<HTMLInputElement>(null);\r\n\r\n\tuseEffect(() => {\r\n\t\tconst input = inputRef.current;\r\n\t\tif (!input) return;\r\n\r\n\t\tconst checkAutofill = (element: Element): boolean => {\r\n\t\t\ttry {\r\n\t\t\t\treturn element.matches(\":-webkit-autofill\");\r\n\t\t\t} catch {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tconst updateAutofillState = () => {\r\n\t\t\tconst autofilled = checkAutofill(input);\r\n\t\t\tsetIsAutofilled(autofilled);\r\n\t\t};\r\n\r\n\t\tinput.addEventListener(\"input\", updateAutofillState);\r\n\r\n\t\tlet intervalCounter = 0;\r\n\t\tconst intervalTime = 25;\r\n\t\t// Максимальное время ожидания появления autofill, в ms\r\n\t\tconst intervalTimeLimit = 1000;\r\n\r\n\t\tconst interval = setInterval(() => {\r\n\t\t\tintervalCounter += intervalTime;\r\n\t\t\tif (intervalCounter > intervalTimeLimit) {\r\n\t\t\t\tclearInterval(interval);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (checkAutofill(input)) {\r\n\t\t\t\tsetIsAutofilled(true);\r\n\t\t\t\tclearInterval(interval);\r\n\t\t\t}\r\n\t\t}, intervalTime);\r\n\r\n\t\tupdateAutofillState();\r\n\r\n\t\treturn () => {\r\n\t\t\tclearInterval(interval);\r\n\t\t\tinput.removeEventListener(\"input\", updateAutofillState);\r\n\t\t};\r\n\t}, []);\r\n\r\n\treturn {\r\n\t\tisAutofilled,\r\n\t\tinputRef\r\n\t};\r\n}\r\n","import { useCallback, useMemo } from \"react\";\r\nimport { useControlledValue } from \"./useControlledValue\";\r\nimport { useCopyAction } from \"./useCopyAction\";\r\nimport { useAutofill } from \"./useAutofill\";\r\n\r\nexport interface UseInputWithActionsOptions {\r\n\t/** Значение input (для контролируемого режима) */\r\n\tvalue?: string | number | readonly string[];\r\n\t/** Значение по умолчанию (для неконтролируемого режима) */\r\n\tdefaultValue?: string | number | readonly string[];\r\n\t/** Колбэк на изменение значения */\r\n\tonChange?: (value: string | null) => void;\r\n\t/** Флаг только для чтения */\r\n\treadOnly?: boolean;\r\n\t/** Флаг отключения */\r\n\tdisabled?: boolean;\r\n\t/** Флаг для отображения кнопки очистки */\r\n\tshowClearIcon?: boolean;\r\n\t/** Флаг для отображения кнопки копирования */\r\n\tshowCopyIcon?: boolean;\r\n}\r\n\r\n/**\r\n * Общий хук для input с полным функционалом копирования и очистки\r\n */\r\nexport function useInputWithActions({\r\n\tvalue,\r\n\tdefaultValue,\r\n\tonChange,\r\n\treadOnly,\r\n\tdisabled,\r\n\tshowClearIcon = false,\r\n\tshowCopyIcon = false\r\n}: UseInputWithActionsOptions) {\r\n\tconst controlledValue = useControlledValue(value, defaultValue, onChange);\r\n\tconst copyAction = useCopyAction();\r\n\tconst { isAutofilled } = useAutofill();\r\n\r\n\tconst isEditable = useMemo(() => {\r\n\t\treturn !readOnly && !disabled;\r\n\t}, [readOnly, disabled]);\r\n\r\n\tconst handleClear = useCallback(() => {\r\n\t\tif (value !== undefined) {\r\n\t\t\t// Controlled mode\r\n\t\t\tonChange?.(\"\");\r\n\t\t} else {\r\n\t\t\t// Uncontrolled mode\r\n\t\t\tif (controlledValue.inputRef.current) {\r\n\t\t\t\tcontrolledValue.inputRef.current.value = \"\";\r\n\t\t\t\tcontrolledValue.inputRef.current.dispatchEvent(new Event(\"input\", { bubbles: true }));\r\n\t\t\t}\r\n\t\t}\r\n\t}, [onChange, value, controlledValue.inputRef]);\r\n\r\n\tconst handleCopyValue = useCallback(() => {\r\n\t\tcopyAction.handleCopy(String(controlledValue.currentValue));\r\n\t}, [copyAction.handleCopy, controlledValue.currentValue]);\r\n\r\n\tconst shouldShowClearIcon = showClearIcon && isEditable && controlledValue.currentValue;\r\n\tconst shouldShowCopyIcon = showCopyIcon && controlledValue.currentValue;\r\n\r\n\treturn {\r\n\t\t// Значения и состояние\r\n\t\tcurrentValue: controlledValue.currentValue,\r\n\t\tinputRef: controlledValue.inputRef,\r\n\t\tisEditable,\r\n\r\n\t\t// Обработчики\r\n\t\thandleChange: controlledValue.handleChange,\r\n\t\thandleClear,\r\n\t\thandleCopy: handleCopyValue,\r\n\r\n\t\t// Состояние копирования\r\n\t\thasCopied: copyAction.hasCopied,\r\n\r\n\t\t// Состояние автозаполнения\r\n\t\tisAutofilled,\r\n\r\n\t\t// Флаги видимости кнопок\r\n\t\tshouldShowClearIcon,\r\n\t\tshouldShowCopyIcon\r\n\t};\r\n}\r\n","import React, { HTMLAttributes } from \"react\";\r\nimport { useMergeRefs } from \"@/hooks/useMergeRefs\";\r\nimport { useInputWithActions } from \"@/hooks/useInputWithActions\";\r\nimport { InputGroup, InputGroupInput, InputGroupButton, InputGroupText } from \"../input-group/InputGroup\";\r\nimport { CircleX, Copy, Check } from \"lucide-react\";\r\nimport { tv } from \"tailwind-variants\";\r\nimport { InputProps } from \"../input/Input\";\r\n\r\nconst textInputStyles = tv({\r\n\tbase: \"\",\r\n\tslots: {\r\n\t\taction: \"hidden group-focus-within/input-group:block group-hover/input-group:block\",\r\n\t\tstartIcon: \"!border-r-0 pr-0 text-muted\",\r\n\t\tendIcon: \"border-l-0 pl-0 text-muted\",\r\n\t\tinput: \"\"\r\n\t},\r\n\tvariants: {\r\n\t\thasStartIcon: { true: { input: \"pl-2\" } }\r\n\t}\r\n});\r\n\r\nexport interface TextInputProps\r\n\textends Omit<InputProps, \"onChange\">,\r\n\t\tOmit<HTMLAttributes<HTMLInputElement>, \"onChange\"> {\r\n\t/** Иконка, отображаемая в начале текстового поля */\r\n\tstartIcon?: React.ReactNode;\r\n\t/** Иконка, отображаемая в конце текстового поля */\r\n\tendIcon?: React.ReactNode;\r\n\t/** Флаг для отображения кнопки очистки значения */\r\n\tshowClearIcon?: boolean;\r\n\t/** Флаг для отображения кнопки копирования значения */\r\n\tshowCopyIcon?: boolean;\r\n\t/** Колбэк на изменение значения */\r\n\tonChange?: (value: string | null) => void;\r\n}\r\n\r\n/**\r\n * Компонент текстового поля ввода с поддержкой иконок и дополнительных действий.\r\n */\r\nexport const TextInput = React.forwardRef<HTMLInputElement, TextInputProps>(\r\n\t(\r\n\t\t{\r\n\t\t\tstartIcon,\r\n\t\t\tendIcon,\r\n\t\t\tshowClearIcon,\r\n\t\t\tshowCopyIcon,\r\n\t\t\tvalue,\r\n\t\t\tdefaultValue,\r\n\t\t\tonChange,\r\n\t\t\treadOnly,\r\n\t\t\tdisabled,\r\n\t\t\terror,\r\n\t\t\tclassName,\r\n\t\t\t...props\r\n\t\t},\r\n\t\tref\r\n\t) => {\r\n\t\tconst styles = textInputStyles();\r\n\r\n\t\tconst inputActions = useInputWithActions({\r\n\t\t\tvalue,\r\n\t\t\tdefaultValue,\r\n\t\t\tonChange,\r\n\t\t\treadOnly,\r\n\t\t\tdisabled,\r\n\t\t\tshowClearIcon,\r\n\t\t\tshowCopyIcon\r\n\t\t});\r\n\r\n\t\tconst mergedRef = useMergeRefs(ref, inputActions.inputRef);\r\n\r\n\t\treturn (\r\n\t\t\t<InputGroup className={styles.base({ className })}>\r\n\t\t\t\t{startIcon && <InputGroupText className={styles.startIcon()}>{startIcon}</InputGroupText>}\r\n\r\n\t\t\t\t<InputGroupInput\r\n\t\t\t\t\tref={mergedRef}\r\n\t\t\t\t\tvalue={value}\r\n\t\t\t\t\tdefaultValue={defaultValue}\r\n\t\t\t\t\tonChange={inputActions.handleChange}\r\n\t\t\t\t\treadOnly={readOnly}\r\n\t\t\t\t\tdisabled={disabled}\r\n\t\t\t\t\terror={error}\r\n\t\t\t\t\tclassName={styles.input({ hasStartIcon: !!startIcon })}\r\n\t\t\t\t\t{...props}\r\n\t\t\t\t/>\r\n\r\n\t\t\t\t{inputActions.shouldShowClearIcon && (\r\n\t\t\t\t\t<InputGroupButton\r\n\t\t\t\t\t\ticon={CircleX}\r\n\t\t\t\t\t\tonClick={inputActions.handleClear}\r\n\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\tclassName={styles.action()}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{inputActions.shouldShowCopyIcon && (\r\n\t\t\t\t\t<InputGroupButton\r\n\t\t\t\t\t\ticon={inputActions.hasCopied ? Check : Copy}\r\n\t\t\t\t\t\tonClick={inputActions.handleCopy}\r\n\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\tclassName={styles.action()}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t{endIcon && <InputGroupText className={styles.endIcon()}>{endIcon}</InputGroupText>}\r\n\t\t\t</InputGroup>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nTextInput.displayName = \"TextInput\";\r\n\r\nexport default TextInput;\r\n"],"names":["Copy","createLucideIcon","useControlledValue","value","defaultValue","onChange","uncontrolledValue","setUncontrolledValue","useState","inputRef","useRef","useEffect","input","handleInput","getCurrentValue","useCallback","handleChange","e","useCopyAction","hasCopied","setHasCopied","timeout","handleCopy","useAutofill","isAutofilled","setIsAutofilled","checkAutofill","element","updateAutofillState","autofilled","intervalCounter","intervalTime","intervalTimeLimit","interval","useInputWithActions","readOnly","disabled","showClearIcon","showCopyIcon","controlledValue","copyAction","isEditable","useMemo","handleClear","handleCopyValue","shouldShowClearIcon","shouldShowCopyIcon","textInputStyles","tv","TextInput","React","startIcon","endIcon","error","className","props","ref","styles","inputActions","mergedRef","useMergeRefs","jsxs","InputGroup","InputGroupText","jsx","InputGroupInput","InputGroupButton","CircleX","Check"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"TextInput-Cj50ImXi.js","sources":["../node_modules/.pnpm/lucide-react@0.460.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/copy.js","../src/hooks/useControlledValue.ts","../src/hooks/useCopyAction.ts","../src/hooks/useAutofill.ts","../src/hooks/useInputWithActions.ts","../src/components/input/text-input/TextInput.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Copy = createLucideIcon(\"Copy\", [\n [\"rect\", { width: \"14\", height: \"14\", x: \"8\", y: \"8\", rx: \"2\", ry: \"2\", key: \"17jyea\" }],\n [\"path\", { d: \"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\", key: \"zix9uf\" }]\n]);\n\nexport { Copy as default };\n//# sourceMappingURL=copy.js.map\n","import { useCallback, useEffect, useRef, useState } from \"react\";\n\n/**\n * Хук для управления контролируемым и неконтролируемым состоянием\n */\nexport function useControlledValue(\n\tvalue: string | number | readonly string[] | undefined,\n\tdefaultValue: string | number | readonly string[] | undefined,\n\tonChange?: (value: string | null) => void\n) {\n\tconst [uncontrolledValue, setUncontrolledValue] = useState(\n\t\ttypeof defaultValue === \"string\" ? defaultValue : String(defaultValue ?? \"\")\n\t);\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\n\t// Добавляем обработчик для отслеживания изменений в uncontrolled режиме\n\tuseEffect(() => {\n\t\tif (value !== undefined) return;\n\n\t\tconst input = inputRef.current;\n\t\tif (!input) return;\n\n\t\tconst handleInput = () => {\n\t\t\tsetUncontrolledValue(input.value);\n\t\t};\n\n\t\tinput.addEventListener(\"input\", handleInput);\n\t\treturn () => input.removeEventListener(\"input\", handleInput);\n\t}, [value, inputRef]);\n\n\tconst getCurrentValue = useCallback(() => {\n\t\tif (value !== undefined) return String(value);\n\t\treturn uncontrolledValue;\n\t}, [value, uncontrolledValue]);\n\n\tconst handleChange = useCallback(\n\t\t(e: React.ChangeEvent<HTMLInputElement>) => {\n\t\t\tonChange?.(e.target.value);\n\t\t},\n\t\t[onChange]\n\t);\n\n\treturn {\n\t\tinputRef,\n\t\tgetCurrentValue,\n\t\thandleChange,\n\t\tcurrentValue: getCurrentValue()\n\t};\n}\n","import { useCallback, useEffect, useState } from \"react\";\n\n/**\n * Хук для копирования содержимого в буфер обмена\n */\nexport function useCopyAction() {\n\tconst [hasCopied, setHasCopied] = useState(false);\n\n\t// Эффект для сброса статуса копирования\n\tuseEffect(() => {\n\t\tif (!hasCopied) return;\n\t\tconst timeout = setTimeout(() => {\n\t\t\tsetHasCopied(false);\n\t\t}, 2000);\n\t\treturn () => clearTimeout(timeout);\n\t}, [hasCopied]);\n\n\tconst handleCopy = useCallback((value: string) => {\n\t\tif (value) {\n\t\t\tnavigator.clipboard.writeText(value);\n\t\t\tsetHasCopied(true);\n\t\t}\n\t}, []);\n\n\treturn {\n\t\thasCopied,\n\t\thandleCopy\n\t};\n}\n","import { useEffect, useRef, useState } from \"react\";\n\n/**\n * Хук для определения состояния автозаполнения input'а\n */\nexport function useAutofill() {\n\tconst [isAutofilled, setIsAutofilled] = useState(false);\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\n\tuseEffect(() => {\n\t\tconst input = inputRef.current;\n\t\tif (!input) return;\n\n\t\tconst checkAutofill = (element: Element): boolean => {\n\t\t\ttry {\n\t\t\t\treturn element.matches(\":-webkit-autofill\");\n\t\t\t} catch {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t};\n\n\t\tconst updateAutofillState = () => {\n\t\t\tconst autofilled = checkAutofill(input);\n\t\t\tsetIsAutofilled(autofilled);\n\t\t};\n\n\t\tinput.addEventListener(\"input\", updateAutofillState);\n\n\t\tlet intervalCounter = 0;\n\t\tconst intervalTime = 25;\n\t\t// Максимальное время ожидания появления autofill, в ms\n\t\tconst intervalTimeLimit = 1000;\n\n\t\tconst interval = setInterval(() => {\n\t\t\tintervalCounter += intervalTime;\n\t\t\tif (intervalCounter > intervalTimeLimit) {\n\t\t\t\tclearInterval(interval);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (checkAutofill(input)) {\n\t\t\t\tsetIsAutofilled(true);\n\t\t\t\tclearInterval(interval);\n\t\t\t}\n\t\t}, intervalTime);\n\n\t\tupdateAutofillState();\n\n\t\treturn () => {\n\t\t\tclearInterval(interval);\n\t\t\tinput.removeEventListener(\"input\", updateAutofillState);\n\t\t};\n\t}, []);\n\n\treturn {\n\t\tisAutofilled,\n\t\tinputRef\n\t};\n}\n","import { useCallback, useMemo } from \"react\";\nimport { useControlledValue } from \"./useControlledValue\";\nimport { useCopyAction } from \"./useCopyAction\";\nimport { useAutofill } from \"./useAutofill\";\n\nexport interface UseInputWithActionsOptions {\n\t/** Значение input (для контролируемого режима) */\n\tvalue?: string | number | readonly string[];\n\t/** Значение по умолчанию (для неконтролируемого режима) */\n\tdefaultValue?: string | number | readonly string[];\n\t/** Колбэк на изменение значения */\n\tonChange?: (value: string | null) => void;\n\t/** Флаг только для чтения */\n\treadOnly?: boolean;\n\t/** Флаг отключения */\n\tdisabled?: boolean;\n\t/** Флаг для отображения кнопки очистки */\n\tshowClearIcon?: boolean;\n\t/** Флаг для отображения кнопки копирования */\n\tshowCopyIcon?: boolean;\n}\n\n/**\n * Общий хук для input с полным функционалом копирования и очистки\n */\nexport function useInputWithActions({\n\tvalue,\n\tdefaultValue,\n\tonChange,\n\treadOnly,\n\tdisabled,\n\tshowClearIcon = false,\n\tshowCopyIcon = false\n}: UseInputWithActionsOptions) {\n\tconst controlledValue = useControlledValue(value, defaultValue, onChange);\n\tconst copyAction = useCopyAction();\n\tconst { isAutofilled } = useAutofill();\n\n\tconst isEditable = useMemo(() => {\n\t\treturn !readOnly && !disabled;\n\t}, [readOnly, disabled]);\n\n\tconst handleClear = useCallback(() => {\n\t\tif (value !== undefined) {\n\t\t\t// Controlled mode\n\t\t\tonChange?.(\"\");\n\t\t} else {\n\t\t\t// Uncontrolled mode\n\t\t\tif (controlledValue.inputRef.current) {\n\t\t\t\tcontrolledValue.inputRef.current.value = \"\";\n\t\t\t\tcontrolledValue.inputRef.current.dispatchEvent(new Event(\"input\", { bubbles: true }));\n\t\t\t}\n\t\t}\n\t}, [onChange, value, controlledValue.inputRef]);\n\n\tconst handleCopyValue = useCallback(() => {\n\t\tcopyAction.handleCopy(String(controlledValue.currentValue));\n\t}, [copyAction.handleCopy, controlledValue.currentValue]);\n\n\tconst shouldShowClearIcon = showClearIcon && isEditable && controlledValue.currentValue;\n\tconst shouldShowCopyIcon = showCopyIcon && controlledValue.currentValue;\n\n\treturn {\n\t\t// Значения и состояние\n\t\tcurrentValue: controlledValue.currentValue,\n\t\tinputRef: controlledValue.inputRef,\n\t\tisEditable,\n\n\t\t// Обработчики\n\t\thandleChange: controlledValue.handleChange,\n\t\thandleClear,\n\t\thandleCopy: handleCopyValue,\n\n\t\t// Состояние копирования\n\t\thasCopied: copyAction.hasCopied,\n\n\t\t// Состояние автозаполнения\n\t\tisAutofilled,\n\n\t\t// Флаги видимости кнопок\n\t\tshouldShowClearIcon,\n\t\tshouldShowCopyIcon\n\t};\n}\n","import React, { HTMLAttributes } from \"react\";\nimport { useMergeRefs } from \"@/hooks/useMergeRefs\";\nimport { useInputWithActions } from \"@/hooks/useInputWithActions\";\nimport { InputGroup, InputGroupInput, InputGroupButton, InputGroupText } from \"../input-group/InputGroup\";\nimport { CircleX, Copy, Check } from \"lucide-react\";\nimport { tv } from \"tailwind-variants\";\nimport { InputProps } from \"../input/Input\";\n\nconst textInputStyles = tv({\n\tbase: \"\",\n\tslots: {\n\t\taction: \"hidden group-focus-within/input-group:block group-hover/input-group:block\",\n\t\tstartIcon: \"!border-r-0 pr-0 text-muted\",\n\t\tendIcon: \"border-l-0 pl-0 text-muted\",\n\t\tinput: \"\"\n\t},\n\tvariants: {\n\t\thasStartIcon: { true: { input: \"pl-2\" } }\n\t}\n});\n\nexport interface TextInputProps\n\textends Omit<InputProps, \"onChange\">,\n\t\tOmit<HTMLAttributes<HTMLInputElement>, \"onChange\"> {\n\t/** Иконка, отображаемая в начале текстового поля */\n\tstartIcon?: React.ReactNode;\n\t/** Иконка, отображаемая в конце текстового поля */\n\tendIcon?: React.ReactNode;\n\t/** Флаг для отображения кнопки очистки значения */\n\tshowClearIcon?: boolean;\n\t/** Флаг для отображения кнопки копирования значения */\n\tshowCopyIcon?: boolean;\n\t/** Колбэк на изменение значения */\n\tonChange?: (value: string | null) => void;\n}\n\n/**\n * Компонент текстового поля ввода с поддержкой иконок и дополнительных действий.\n */\nexport const TextInput = React.forwardRef<HTMLInputElement, TextInputProps>(\n\t(\n\t\t{\n\t\t\tstartIcon,\n\t\t\tendIcon,\n\t\t\tshowClearIcon,\n\t\t\tshowCopyIcon,\n\t\t\tvalue,\n\t\t\tdefaultValue,\n\t\t\tonChange,\n\t\t\treadOnly,\n\t\t\tdisabled,\n\t\t\terror,\n\t\t\tclassName,\n\t\t\t...props\n\t\t},\n\t\tref\n\t) => {\n\t\tconst styles = textInputStyles();\n\n\t\tconst inputActions = useInputWithActions({\n\t\t\tvalue,\n\t\t\tdefaultValue,\n\t\t\tonChange,\n\t\t\treadOnly,\n\t\t\tdisabled,\n\t\t\tshowClearIcon,\n\t\t\tshowCopyIcon\n\t\t});\n\n\t\tconst mergedRef = useMergeRefs(ref, inputActions.inputRef);\n\n\t\treturn (\n\t\t\t<InputGroup className={styles.base({ className })}>\n\t\t\t\t{startIcon && <InputGroupText className={styles.startIcon()}>{startIcon}</InputGroupText>}\n\n\t\t\t\t<InputGroupInput\n\t\t\t\t\tref={mergedRef}\n\t\t\t\t\tvalue={value}\n\t\t\t\t\tdefaultValue={defaultValue}\n\t\t\t\t\tonChange={inputActions.handleChange}\n\t\t\t\t\treadOnly={readOnly}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\terror={error}\n\t\t\t\t\tclassName={styles.input({ hasStartIcon: !!startIcon })}\n\t\t\t\t\t{...props}\n\t\t\t\t/>\n\n\t\t\t\t{inputActions.shouldShowClearIcon && (\n\t\t\t\t\t<InputGroupButton\n\t\t\t\t\t\ticon={CircleX}\n\t\t\t\t\t\tonClick={inputActions.handleClear}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclassName={styles.action()}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{inputActions.shouldShowCopyIcon && (\n\t\t\t\t\t<InputGroupButton\n\t\t\t\t\t\ticon={inputActions.hasCopied ? Check : Copy}\n\t\t\t\t\t\tonClick={inputActions.handleCopy}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclassName={styles.action()}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{endIcon && <InputGroupText className={styles.endIcon()}>{endIcon}</InputGroupText>}\n\t\t\t</InputGroup>\n\t\t);\n\t}\n);\n\nTextInput.displayName = \"TextInput\";\n\nexport default TextInput;\n"],"names":["Copy","createLucideIcon","useControlledValue","value","defaultValue","onChange","uncontrolledValue","setUncontrolledValue","useState","inputRef","useRef","useEffect","input","handleInput","getCurrentValue","useCallback","handleChange","e","useCopyAction","hasCopied","setHasCopied","timeout","handleCopy","useAutofill","isAutofilled","setIsAutofilled","checkAutofill","element","updateAutofillState","autofilled","intervalCounter","intervalTime","intervalTimeLimit","interval","useInputWithActions","readOnly","disabled","showClearIcon","showCopyIcon","controlledValue","copyAction","isEditable","useMemo","handleClear","handleCopyValue","shouldShowClearIcon","shouldShowCopyIcon","textInputStyles","tv","TextInput","React","startIcon","endIcon","error","className","props","ref","styles","inputActions","mergedRef","useMergeRefs","jsxs","InputGroup","InputGroupText","jsx","InputGroupInput","InputGroupButton","CircleX","Check"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1 +1 @@
1
- {"version":3,"file":"TextOverflowTooltip-DlUgic5y.js","sources":["../src/lib/utils/dom.ts","../src/components/overflow-tooltip/useOverflowTooltip.ts","../src/components/overflow-tooltip/OverflowTooltip.tsx","../src/components/overflow-tooltip/TextOverflowTooltip.tsx"],"sourcesContent":["/**\r\n * Проверяет, переполнен ли элемент (дочерние элементы выходят за пределы родительского элемента)\r\n * @param element - HTML элемент для проверки\r\n * @returns true, если элемент переполнен по ширине или высоте\r\n */\r\nexport const isElementOverflowing = (element: HTMLElement): boolean => {\r\n\treturn element.scrollWidth > element.offsetWidth || element.scrollHeight > element.offsetHeight;\r\n};\r\n","import { useCallback, useRef, useState } from \"react\";\r\nimport { isElementOverflowing } from \"../../lib/utils/dom\";\r\n\r\nexport const useOverflowTooltip = <T extends HTMLElement>() => {\r\n\tconst [open, setOpen] = useState(false);\r\n\tconst ref = useRef<T>(null);\r\n\r\n\tconst onOpenChange = useCallback((newOpen: boolean) => {\r\n\t\tif (newOpen === false) {\r\n\t\t\tsetOpen(false);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!ref.current) return;\r\n\t\tif (isElementOverflowing(ref.current)) {\r\n\t\t\tsetOpen(true);\r\n\t\t}\r\n\t}, []);\r\n\r\n\treturn { open, onOpenChange, ref };\r\n};\r\n","import { cn } from \"@/lib/utils\";\r\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"../tooltip\";\r\nimport { useOverflowTooltip } from \"./useOverflowTooltip\";\r\nimport React from \"react\";\r\n\r\ntype OverflowTooltipProps = {\r\n\tchildren: React.ReactNode;\r\n\t/**\r\n\t * HTML-элемент для обертки содержимого.\r\n\t * Используется для соблюдения правильной HTML-семантики.\r\n\t * Например:\r\n\t * - span (по умолчанию) для текста и инлайн-элементов\r\n\t * - div для блочного содержимого и сложных структур\r\n\t * @default span\r\n\t */\r\n\ttriggerTag?: React.ElementType;\r\n\t/**\r\n\t * Классы для обработки переполненного содержимого.\r\n\t * Например: \"truncate\", \"line-clamp-3\" и т.д.\r\n\t */\r\n\tclassName?: string;\r\n\t/**\r\n\t * Классы для содержимого тултипа.\r\n\t * С помощью них можно управлять стилями тултипа, например шириной, переносом текста и т.д.\r\n\t */\r\n\ttooltipClassName?: string;\r\n\tfocus?: \"high\";\r\n};\r\n\r\nexport const OverflowTooltip = ({ children, className, focus, triggerTag, tooltipClassName }: OverflowTooltipProps) => {\r\n\tconst { open, onOpenChange, ref } = useOverflowTooltip<HTMLDivElement>();\r\n\tconst TriggerTag = triggerTag || \"span\";\r\n\treturn (\r\n\t\t<TooltipProvider>\r\n\t\t\t<Tooltip open={open} onOpenChange={onOpenChange}>\r\n\t\t\t\t<TooltipTrigger asChild>\r\n\t\t\t\t\t<TriggerTag ref={ref} className={cn(className)}>\r\n\t\t\t\t\t\t{children}\r\n\t\t\t\t\t</TriggerTag>\r\n\t\t\t\t</TooltipTrigger>\r\n\t\t\t\t<TooltipContent focus={focus} className={cn(\"max-w-xs\", tooltipClassName)}>\r\n\t\t\t\t\t{children}\r\n\t\t\t\t</TooltipContent>\r\n\t\t\t</Tooltip>\r\n\t\t</TooltipProvider>\r\n\t);\r\n};\r\n\r\nOverflowTooltip.displayName = \"OverflowTooltip\";\r\n","import { cn } from \"@/lib/utils\";\r\nimport React from \"react\";\r\nimport { OverflowTooltip } from \"./OverflowTooltip\";\r\n\r\ntype TextOverflowTooltipProps = {\r\n\tchildren?: React.ReactNode;\r\n\tclassName?: string;\r\n\ttooltipClassName?: string;\r\n};\r\n\r\nexport const TextOverflowTooltip = ({ children, className, tooltipClassName }: TextOverflowTooltipProps) => {\r\n\treturn (\r\n\t\t<OverflowTooltip\r\n\t\t\tclassName={cn(\"inline-block max-w-full truncate\", className)}\r\n\t\t\ttooltipClassName={tooltipClassName}\r\n\t\t>\r\n\t\t\t{children}\r\n\t\t</OverflowTooltip>\r\n\t);\r\n};\r\n\r\nTextOverflowTooltip.displayName = \"TextOverflowTooltip\";\r\n"],"names":["isElementOverflowing","element","useOverflowTooltip","open","setOpen","useState","ref","useRef","onOpenChange","useCallback","newOpen","OverflowTooltip","children","className","focus","triggerTag","tooltipClassName","jsx","TooltipProvider","jsxs","Tooltip","TooltipTrigger","cn","TooltipContent","TextOverflowTooltip"],"mappings":";;;;AAKa,MAAAA,IAAuB,CAACC,MAC7BA,EAAQ,cAAcA,EAAQ,eAAeA,EAAQ,eAAeA,EAAQ,cCHvEC,IAAqB,MAA6B;AAC9D,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAAS,EAAK,GAChCC,IAAMC,EAAU,IAAI,GAEpBC,IAAeC,EAAY,CAACC,MAAqB;AACtD,QAAIA,MAAY,IAAO;AACtB,MAAAN,EAAQ,EAAK;AACb;AAAA,IAAA;AAEG,IAACE,EAAI,WACLN,EAAqBM,EAAI,OAAO,KACnCF,EAAQ,EAAI;AAAA,EAEd,GAAG,EAAE;AAEE,SAAA,EAAE,MAAAD,GAAM,cAAAK,GAAc,KAAAF,EAAI;AAClC,GCUaK,IAAkB,CAAC,EAAE,UAAAC,GAAU,WAAAC,GAAW,OAAAC,GAAO,YAAAC,GAAY,kBAAAC,QAA6C;AACtH,QAAM,EAAE,MAAAb,GAAM,cAAAK,GAAc,KAAAF,EAAA,IAAQJ,EAAmC;AAEvE,SACE,gBAAAe,EAAAC,GAAA,EACA,UAAC,gBAAAC,EAAAC,GAAA,EAAQ,MAAAjB,GAAY,cAAAK,GACpB,UAAA;AAAA,IAAC,gBAAAS,EAAAI,GAAA,EAAe,SAAO,IACtB,UAAC,gBAAAJ,EALcF,KAAc,QAK5B,EAAW,KAAAT,GAAU,WAAWgB,EAAGT,CAAS,GAC3C,UAAAD,EACF,CAAA,GACD;AAAA,IACA,gBAAAK,EAACM,KAAe,OAAAT,GAAc,WAAWQ,EAAG,YAAYN,CAAgB,GACtE,UAAAJ,EACF,CAAA;AAAA,EAAA,EAAA,CACD,EACD,CAAA;AAEF;AAEAD,EAAgB,cAAc;ACtCvB,MAAMa,IAAsB,CAAC,EAAE,UAAAZ,GAAU,WAAAC,GAAW,kBAAAG,QAEzD,gBAAAC;AAAA,EAACN;AAAA,EAAA;AAAA,IACA,WAAWW,EAAG,oCAAoCT,CAAS;AAAA,IAC3D,kBAAAG;AAAA,IAEC,UAAAJ;AAAA,EAAA;AACF;AAIFY,EAAoB,cAAc;"}
1
+ {"version":3,"file":"TextOverflowTooltip-DlUgic5y.js","sources":["../src/lib/utils/dom.ts","../src/components/overflow-tooltip/useOverflowTooltip.ts","../src/components/overflow-tooltip/OverflowTooltip.tsx","../src/components/overflow-tooltip/TextOverflowTooltip.tsx"],"sourcesContent":["/**\n * Проверяет, переполнен ли элемент (дочерние элементы выходят за пределы родительского элемента)\n * @param element - HTML элемент для проверки\n * @returns true, если элемент переполнен по ширине или высоте\n */\nexport const isElementOverflowing = (element: HTMLElement): boolean => {\n\treturn element.scrollWidth > element.offsetWidth || element.scrollHeight > element.offsetHeight;\n};\n","import { useCallback, useRef, useState } from \"react\";\nimport { isElementOverflowing } from \"../../lib/utils/dom\";\n\nexport const useOverflowTooltip = <T extends HTMLElement>() => {\n\tconst [open, setOpen] = useState(false);\n\tconst ref = useRef<T>(null);\n\n\tconst onOpenChange = useCallback((newOpen: boolean) => {\n\t\tif (newOpen === false) {\n\t\t\tsetOpen(false);\n\t\t\treturn;\n\t\t}\n\t\tif (!ref.current) return;\n\t\tif (isElementOverflowing(ref.current)) {\n\t\t\tsetOpen(true);\n\t\t}\n\t}, []);\n\n\treturn { open, onOpenChange, ref };\n};\n","import { cn } from \"@/lib/utils\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"../tooltip\";\nimport { useOverflowTooltip } from \"./useOverflowTooltip\";\nimport React from \"react\";\n\ntype OverflowTooltipProps = {\n\tchildren: React.ReactNode;\n\t/**\n\t * HTML-элемент для обертки содержимого.\n\t * Используется для соблюдения правильной HTML-семантики.\n\t * Например:\n\t * - span (по умолчанию) для текста и инлайн-элементов\n\t * - div для блочного содержимого и сложных структур\n\t * @default span\n\t */\n\ttriggerTag?: React.ElementType;\n\t/**\n\t * Классы для обработки переполненного содержимого.\n\t * Например: \"truncate\", \"line-clamp-3\" и т.д.\n\t */\n\tclassName?: string;\n\t/**\n\t * Классы для содержимого тултипа.\n\t * С помощью них можно управлять стилями тултипа, например шириной, переносом текста и т.д.\n\t */\n\ttooltipClassName?: string;\n\tfocus?: \"high\";\n};\n\nexport const OverflowTooltip = ({ children, className, focus, triggerTag, tooltipClassName }: OverflowTooltipProps) => {\n\tconst { open, onOpenChange, ref } = useOverflowTooltip<HTMLDivElement>();\n\tconst TriggerTag = triggerTag || \"span\";\n\treturn (\n\t\t<TooltipProvider>\n\t\t\t<Tooltip open={open} onOpenChange={onOpenChange}>\n\t\t\t\t<TooltipTrigger asChild>\n\t\t\t\t\t<TriggerTag ref={ref} className={cn(className)}>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</TriggerTag>\n\t\t\t\t</TooltipTrigger>\n\t\t\t\t<TooltipContent focus={focus} className={cn(\"max-w-xs\", tooltipClassName)}>\n\t\t\t\t\t{children}\n\t\t\t\t</TooltipContent>\n\t\t\t</Tooltip>\n\t\t</TooltipProvider>\n\t);\n};\n\nOverflowTooltip.displayName = \"OverflowTooltip\";\n","import { cn } from \"@/lib/utils\";\nimport React from \"react\";\nimport { OverflowTooltip } from \"./OverflowTooltip\";\n\ntype TextOverflowTooltipProps = {\n\tchildren?: React.ReactNode;\n\tclassName?: string;\n\ttooltipClassName?: string;\n};\n\nexport const TextOverflowTooltip = ({ children, className, tooltipClassName }: TextOverflowTooltipProps) => {\n\treturn (\n\t\t<OverflowTooltip\n\t\t\tclassName={cn(\"inline-block max-w-full truncate\", className)}\n\t\t\ttooltipClassName={tooltipClassName}\n\t\t>\n\t\t\t{children}\n\t\t</OverflowTooltip>\n\t);\n};\n\nTextOverflowTooltip.displayName = \"TextOverflowTooltip\";\n"],"names":["isElementOverflowing","element","useOverflowTooltip","open","setOpen","useState","ref","useRef","onOpenChange","useCallback","newOpen","OverflowTooltip","children","className","focus","triggerTag","tooltipClassName","jsx","TooltipProvider","jsxs","Tooltip","TooltipTrigger","cn","TooltipContent","TextOverflowTooltip"],"mappings":";;;;AAKa,MAAAA,IAAuB,CAACC,MAC7BA,EAAQ,cAAcA,EAAQ,eAAeA,EAAQ,eAAeA,EAAQ,cCHvEC,IAAqB,MAA6B;AAC9D,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAAS,EAAK,GAChCC,IAAMC,EAAU,IAAI,GAEpBC,IAAeC,EAAY,CAACC,MAAqB;AACtD,QAAIA,MAAY,IAAO;AACtB,MAAAN,EAAQ,EAAK;AACb;AAAA,IAAA;AAEG,IAACE,EAAI,WACLN,EAAqBM,EAAI,OAAO,KACnCF,EAAQ,EAAI;AAAA,EAEd,GAAG,EAAE;AAEE,SAAA,EAAE,MAAAD,GAAM,cAAAK,GAAc,KAAAF,EAAI;AAClC,GCUaK,IAAkB,CAAC,EAAE,UAAAC,GAAU,WAAAC,GAAW,OAAAC,GAAO,YAAAC,GAAY,kBAAAC,QAA6C;AACtH,QAAM,EAAE,MAAAb,GAAM,cAAAK,GAAc,KAAAF,EAAA,IAAQJ,EAAmC;AAEvE,SACE,gBAAAe,EAAAC,GAAA,EACA,UAAC,gBAAAC,EAAAC,GAAA,EAAQ,MAAAjB,GAAY,cAAAK,GACpB,UAAA;AAAA,IAAC,gBAAAS,EAAAI,GAAA,EAAe,SAAO,IACtB,UAAC,gBAAAJ,EALcF,KAAc,QAK5B,EAAW,KAAAT,GAAU,WAAWgB,EAAGT,CAAS,GAC3C,UAAAD,EACF,CAAA,GACD;AAAA,IACA,gBAAAK,EAACM,KAAe,OAAAT,GAAc,WAAWQ,EAAG,YAAYN,CAAgB,GACtE,UAAAJ,EACF,CAAA;AAAA,EAAA,EAAA,CACD,EACD,CAAA;AAEF;AAEAD,EAAgB,cAAc;ACtCvB,MAAMa,IAAsB,CAAC,EAAE,UAAAZ,GAAU,WAAAC,GAAW,kBAAAG,QAEzD,gBAAAC;AAAA,EAACN;AAAA,EAAA;AAAA,IACA,WAAWW,EAAG,oCAAoCT,CAAS;AAAA,IAC3D,kBAAAG;AAAA,IAEC,UAAAJ;AAAA,EAAA;AACF;AAIFY,EAAoB,cAAc;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Toggle-v_HT3Gm2.js","sources":["../src/components/toggle/Toggle.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\";\r\nimport { cn } from \"@/lib/utils\";\r\nimport { tv } from \"tailwind-variants\";\r\nimport { VariantsConfig } from \"@/lib/utils/variants\";\r\n\r\nexport interface ToggleVariants {\r\n\tvariant?: \"default\" | \"outline\" | \"ghost\";\r\n\tsize?: \"2xs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n}\r\n\r\nconst toggleStyles = tv({\r\n\tbase: [\r\n\t\t\"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium leading-none text-primary-fg transition-colors\",\r\n\t\t\"hover:bg-secondary-bg-hover hover:text-muted\",\r\n\t\t\"focus-visible:border-secondary-border focus-visible:shadow-focus focus-visible:outline-none\",\r\n\t\t\"disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\r\n\t\t\"data-[state=on]:bg-primary-bg-hover data-[state=on]:text-primary-fg\",\r\n\t\t\"[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\"\r\n\t],\r\n\tvariants: {\r\n\t\tvariant: {\r\n\t\t\tdefault: \"bg-transparent\",\r\n\t\t\toutline:\r\n\t\t\t\t\"border border-secondary-border bg-secondary-bg shadow-soft-sm data-[state=on]:border-primary-border\",\r\n\t\t\tghost: \"bg-transparent hover:text-primary-fg hover:opacity-65 data-[state=on]:bg-secondary-bg-hover\"\r\n\t\t},\r\n\t\tsize: {\r\n\t\t\t\"2xs\": \"h-6 min-w-6 gap-1 rounded-sm p-1\",\r\n\t\t\txs: \"h-7 min-w-7 gap-1.5 rounded-sm p-1.5\",\r\n\t\t\tsm: \"h-8 min-w-8 rounded-sm p-2\",\r\n\t\t\tmd: \"h-9 min-w-9 p-2.5\",\r\n\t\t\tlg: \"h-10 min-w-10 px-3 py-2\",\r\n\t\t\txl: \"h-11 min-w-11 px-4 py-3 text-base leading-none [&_svg]:size-5\"\r\n\t\t}\r\n\t} satisfies VariantsConfig<ToggleVariants>,\r\n\tdefaultVariants: {\r\n\t\tvariant: \"default\",\r\n\t\tsize: \"md\"\r\n\t}\r\n});\r\n\r\nconst Toggle = React.forwardRef<\r\n\tReact.ElementRef<typeof TogglePrimitive.Root>,\r\n\tReact.ComponentPropsWithoutRef<typeof TogglePrimitive.Root> & ToggleVariants\r\n>(({ className, variant, size, ...props }, ref) => (\r\n\t<TogglePrimitive.Root ref={ref} className={cn(toggleStyles({ variant, size, className }))} {...props} />\r\n));\r\n\r\nToggle.displayName = TogglePrimitive.Root.displayName;\r\n\r\nexport { Toggle, toggleStyles as toggleVariants };\r\n"],"names":["toggleStyles","tv","Toggle","React","className","variant","size","props","ref","jsx","TogglePrimitive.Root","cn"],"mappings":";;;;;AAWA,MAAMA,IAAeC,EAAG;AAAA,EACvB,MAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,UAAU;AAAA,IACT,SAAS;AAAA,MACR,SAAS;AAAA,MACT,SACC;AAAA,MACD,OAAO;AAAA,IACR;AAAA,IACA,MAAM;AAAA,MACL,OAAO;AAAA,MACP,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,EAEN;AAAA,EACA,iBAAiB;AAAA,IAChB,SAAS;AAAA,IACT,MAAM;AAAA,EAAA;AAER,CAAC,GAEKC,IAASC,EAAM,WAGnB,CAAC,EAAE,WAAAC,GAAW,SAAAC,GAAS,MAAAC,GAAM,GAAGC,KAASC,MACzC,gBAAAC,EAAAC,GAAA,EAAqB,KAAAF,GAAU,WAAWG,EAAGX,EAAa,EAAE,SAAAK,GAAS,MAAAC,GAAM,WAAAF,EAAW,CAAA,CAAC,GAAI,GAAGG,GAAO,CACtG;AAEDL,EAAO,cAAcQ,EAAqB;"}
1
+ {"version":3,"file":"Toggle-v_HT3Gm2.js","sources":["../src/components/toggle/Toggle.tsx"],"sourcesContent":["import * as React from \"react\";\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\";\nimport { cn } from \"@/lib/utils\";\nimport { tv } from \"tailwind-variants\";\nimport { VariantsConfig } from \"@/lib/utils/variants\";\n\nexport interface ToggleVariants {\n\tvariant?: \"default\" | \"outline\" | \"ghost\";\n\tsize?: \"2xs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n}\n\nconst toggleStyles = tv({\n\tbase: [\n\t\t\"inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium leading-none text-primary-fg transition-colors\",\n\t\t\"hover:bg-secondary-bg-hover hover:text-muted\",\n\t\t\"focus-visible:border-secondary-border focus-visible:shadow-focus focus-visible:outline-none\",\n\t\t\"disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n\t\t\"data-[state=on]:bg-primary-bg-hover data-[state=on]:text-primary-fg\",\n\t\t\"[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\"\n\t],\n\tvariants: {\n\t\tvariant: {\n\t\t\tdefault: \"bg-transparent\",\n\t\t\toutline:\n\t\t\t\t\"border border-secondary-border bg-secondary-bg shadow-soft-sm data-[state=on]:border-primary-border\",\n\t\t\tghost: \"bg-transparent hover:text-primary-fg hover:opacity-65 data-[state=on]:bg-secondary-bg-hover\"\n\t\t},\n\t\tsize: {\n\t\t\t\"2xs\": \"h-6 min-w-6 gap-1 rounded-sm p-1\",\n\t\t\txs: \"h-7 min-w-7 gap-1.5 rounded-sm p-1.5\",\n\t\t\tsm: \"h-8 min-w-8 rounded-sm p-2\",\n\t\t\tmd: \"h-9 min-w-9 p-2.5\",\n\t\t\tlg: \"h-10 min-w-10 px-3 py-2\",\n\t\t\txl: \"h-11 min-w-11 px-4 py-3 text-base leading-none [&_svg]:size-5\"\n\t\t}\n\t} satisfies VariantsConfig<ToggleVariants>,\n\tdefaultVariants: {\n\t\tvariant: \"default\",\n\t\tsize: \"md\"\n\t}\n});\n\nconst Toggle = React.forwardRef<\n\tReact.ElementRef<typeof TogglePrimitive.Root>,\n\tReact.ComponentPropsWithoutRef<typeof TogglePrimitive.Root> & ToggleVariants\n>(({ className, variant, size, ...props }, ref) => (\n\t<TogglePrimitive.Root ref={ref} className={cn(toggleStyles({ variant, size, className }))} {...props} />\n));\n\nToggle.displayName = TogglePrimitive.Root.displayName;\n\nexport { Toggle, toggleStyles as toggleVariants };\n"],"names":["toggleStyles","tv","Toggle","React","className","variant","size","props","ref","jsx","TogglePrimitive.Root","cn"],"mappings":";;;;;AAWA,MAAMA,IAAeC,EAAG;AAAA,EACvB,MAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,UAAU;AAAA,IACT,SAAS;AAAA,MACR,SAAS;AAAA,MACT,SACC;AAAA,MACD,OAAO;AAAA,IACR;AAAA,IACA,MAAM;AAAA,MACL,OAAO;AAAA,MACP,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,EAEN;AAAA,EACA,iBAAiB;AAAA,IAChB,SAAS;AAAA,IACT,MAAM;AAAA,EAAA;AAER,CAAC,GAEKC,IAASC,EAAM,WAGnB,CAAC,EAAE,WAAAC,GAAW,SAAAC,GAAS,MAAAC,GAAM,GAAGC,KAASC,MACzC,gBAAAC,EAAAC,GAAA,EAAqB,KAAAF,GAAU,WAAWG,EAAGX,EAAa,EAAE,SAAAK,GAAS,MAAAC,GAAM,WAAAF,EAAW,CAAA,CAAC,GAAI,GAAGG,GAAO,CACtG;AAEDL,EAAO,cAAcQ,EAAqB;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip-C4rVuWr4.js","sources":["../node_modules/.pnpm/@radix-ui+react-tooltip@1.2_c0a573e5fee67df1b7628ac6f2833e9e/node_modules/@radix-ui/react-tooltip/dist/index.mjs","../src/components/tooltip/useTooltipContext.ts","../src/components/tooltip/Tooltip.tsx"],"sourcesContent":["\"use client\";\n\n// src/tooltip.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlottable } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport * as VisuallyHiddenPrimitive from \"@radix-ui/react-visually-hidden\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar [createTooltipContext, createTooltipScope] = createContextScope(\"Tooltip\", [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar PROVIDER_NAME = \"TooltipProvider\";\nvar DEFAULT_DELAY_DURATION = 700;\nvar TOOLTIP_OPEN = \"tooltip.open\";\nvar [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME);\nvar TooltipProvider = (props) => {\n const {\n __scopeTooltip,\n delayDuration = DEFAULT_DELAY_DURATION,\n skipDelayDuration = 300,\n disableHoverableContent = false,\n children\n } = props;\n const isOpenDelayedRef = React.useRef(true);\n const isPointerInTransitRef = React.useRef(false);\n const skipDelayTimerRef = React.useRef(0);\n React.useEffect(() => {\n const skipDelayTimer = skipDelayTimerRef.current;\n return () => window.clearTimeout(skipDelayTimer);\n }, []);\n return /* @__PURE__ */ jsx(\n TooltipProviderContextProvider,\n {\n scope: __scopeTooltip,\n isOpenDelayedRef,\n delayDuration,\n onOpen: React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n isOpenDelayedRef.current = false;\n }, []),\n onClose: React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = window.setTimeout(\n () => isOpenDelayedRef.current = true,\n skipDelayDuration\n );\n }, [skipDelayDuration]),\n isPointerInTransitRef,\n onPointerInTransitChange: React.useCallback((inTransit) => {\n isPointerInTransitRef.current = inTransit;\n }, []),\n disableHoverableContent,\n children\n }\n );\n};\nTooltipProvider.displayName = PROVIDER_NAME;\nvar TOOLTIP_NAME = \"Tooltip\";\nvar [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME);\nvar Tooltip = (props) => {\n const {\n __scopeTooltip,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n disableHoverableContent: disableHoverableContentProp,\n delayDuration: delayDurationProp\n } = props;\n const providerContext = useTooltipProviderContext(TOOLTIP_NAME, props.__scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const [trigger, setTrigger] = React.useState(null);\n const contentId = useId();\n const openTimerRef = React.useRef(0);\n const disableHoverableContent = disableHoverableContentProp ?? providerContext.disableHoverableContent;\n const delayDuration = delayDurationProp ?? providerContext.delayDuration;\n const wasOpenDelayedRef = React.useRef(false);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: (open2) => {\n if (open2) {\n providerContext.onOpen();\n document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));\n } else {\n providerContext.onClose();\n }\n onOpenChange?.(open2);\n },\n caller: TOOLTIP_NAME\n });\n const stateAttribute = React.useMemo(() => {\n return open ? wasOpenDelayedRef.current ? \"delayed-open\" : \"instant-open\" : \"closed\";\n }, [open]);\n const handleOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n wasOpenDelayedRef.current = false;\n setOpen(true);\n }, [setOpen]);\n const handleClose = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n setOpen(false);\n }, [setOpen]);\n const handleDelayedOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = window.setTimeout(() => {\n wasOpenDelayedRef.current = true;\n setOpen(true);\n openTimerRef.current = 0;\n }, delayDuration);\n }, [delayDuration, setOpen]);\n React.useEffect(() => {\n return () => {\n if (openTimerRef.current) {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n };\n }, []);\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n TooltipContextProvider,\n {\n scope: __scopeTooltip,\n contentId,\n open,\n stateAttribute,\n trigger,\n onTriggerChange: setTrigger,\n onTriggerEnter: React.useCallback(() => {\n if (providerContext.isOpenDelayedRef.current) handleDelayedOpen();\n else handleOpen();\n }, [providerContext.isOpenDelayedRef, handleDelayedOpen, handleOpen]),\n onTriggerLeave: React.useCallback(() => {\n if (disableHoverableContent) {\n handleClose();\n } else {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n }, [handleClose, disableHoverableContent]),\n onOpen: handleOpen,\n onClose: handleClose,\n disableHoverableContent,\n children\n }\n ) });\n};\nTooltip.displayName = TOOLTIP_NAME;\nvar TRIGGER_NAME = \"TooltipTrigger\";\nvar TooltipTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTooltip, ...triggerProps } = props;\n const context = useTooltipContext(TRIGGER_NAME, __scopeTooltip);\n const providerContext = useTooltipProviderContext(TRIGGER_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onTriggerChange);\n const isPointerDownRef = React.useRef(false);\n const hasPointerMoveOpenedRef = React.useRef(false);\n const handlePointerUp = React.useCallback(() => isPointerDownRef.current = false, []);\n React.useEffect(() => {\n return () => document.removeEventListener(\"pointerup\", handlePointerUp);\n }, [handlePointerUp]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n \"aria-describedby\": context.open ? context.contentId : void 0,\n \"data-state\": context.stateAttribute,\n ...triggerProps,\n ref: composedRefs,\n onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {\n if (event.pointerType === \"touch\") return;\n if (!hasPointerMoveOpenedRef.current && !providerContext.isPointerInTransitRef.current) {\n context.onTriggerEnter();\n hasPointerMoveOpenedRef.current = true;\n }\n }),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, () => {\n context.onTriggerLeave();\n hasPointerMoveOpenedRef.current = false;\n }),\n onPointerDown: composeEventHandlers(props.onPointerDown, () => {\n if (context.open) {\n context.onClose();\n }\n isPointerDownRef.current = true;\n document.addEventListener(\"pointerup\", handlePointerUp, { once: true });\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n if (!isPointerDownRef.current) context.onOpen();\n }),\n onBlur: composeEventHandlers(props.onBlur, context.onClose),\n onClick: composeEventHandlers(props.onClick, context.onClose)\n }\n ) });\n }\n);\nTooltipTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"TooltipPortal\";\nvar [PortalProvider, usePortalContext] = createTooltipContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar TooltipPortal = (props) => {\n const { __scopeTooltip, forceMount, children, container } = props;\n const context = useTooltipContext(PORTAL_NAME, __scopeTooltip);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeTooltip, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nTooltipPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"TooltipContent\";\nvar TooltipContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeTooltip);\n const { forceMount = portalContext.forceMount, side = \"top\", ...contentProps } = props;\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.disableHoverableContent ? /* @__PURE__ */ jsx(TooltipContentImpl, { side, ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(TooltipContentHoverable, { side, ...contentProps, ref: forwardedRef }) });\n }\n);\nvar TooltipContentHoverable = React.forwardRef((props, forwardedRef) => {\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n const providerContext = useTooltipProviderContext(CONTENT_NAME, props.__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [pointerGraceArea, setPointerGraceArea] = React.useState(null);\n const { trigger, onClose } = context;\n const content = ref.current;\n const { onPointerInTransitChange } = providerContext;\n const handleRemoveGraceArea = React.useCallback(() => {\n setPointerGraceArea(null);\n onPointerInTransitChange(false);\n }, [onPointerInTransitChange]);\n const handleCreateGraceArea = React.useCallback(\n (event, hoverTarget) => {\n const currentTarget = event.currentTarget;\n const exitPoint = { x: event.clientX, y: event.clientY };\n const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());\n const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);\n const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());\n const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints]);\n setPointerGraceArea(graceArea);\n onPointerInTransitChange(true);\n },\n [onPointerInTransitChange]\n );\n React.useEffect(() => {\n return () => handleRemoveGraceArea();\n }, [handleRemoveGraceArea]);\n React.useEffect(() => {\n if (trigger && content) {\n const handleTriggerLeave = (event) => handleCreateGraceArea(event, content);\n const handleContentLeave = (event) => handleCreateGraceArea(event, trigger);\n trigger.addEventListener(\"pointerleave\", handleTriggerLeave);\n content.addEventListener(\"pointerleave\", handleContentLeave);\n return () => {\n trigger.removeEventListener(\"pointerleave\", handleTriggerLeave);\n content.removeEventListener(\"pointerleave\", handleContentLeave);\n };\n }\n }, [trigger, content, handleCreateGraceArea, handleRemoveGraceArea]);\n React.useEffect(() => {\n if (pointerGraceArea) {\n const handleTrackPointerGrace = (event) => {\n const target = event.target;\n const pointerPosition = { x: event.clientX, y: event.clientY };\n const hasEnteredTarget = trigger?.contains(target) || content?.contains(target);\n const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea);\n if (hasEnteredTarget) {\n handleRemoveGraceArea();\n } else if (isPointerOutsideGraceArea) {\n handleRemoveGraceArea();\n onClose();\n }\n };\n document.addEventListener(\"pointermove\", handleTrackPointerGrace);\n return () => document.removeEventListener(\"pointermove\", handleTrackPointerGrace);\n }\n }, [trigger, content, pointerGraceArea, onClose, handleRemoveGraceArea]);\n return /* @__PURE__ */ jsx(TooltipContentImpl, { ...props, ref: composedRefs });\n});\nvar [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] = createTooltipContext(TOOLTIP_NAME, { isInside: false });\nvar Slottable = createSlottable(\"TooltipContent\");\nvar TooltipContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTooltip,\n children,\n \"aria-label\": ariaLabel,\n onEscapeKeyDown,\n onPointerDownOutside,\n ...contentProps\n } = props;\n const context = useTooltipContext(CONTENT_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const { onClose } = context;\n React.useEffect(() => {\n document.addEventListener(TOOLTIP_OPEN, onClose);\n return () => document.removeEventListener(TOOLTIP_OPEN, onClose);\n }, [onClose]);\n React.useEffect(() => {\n if (context.trigger) {\n const handleScroll = (event) => {\n const target = event.target;\n if (target?.contains(context.trigger)) onClose();\n };\n window.addEventListener(\"scroll\", handleScroll, { capture: true });\n return () => window.removeEventListener(\"scroll\", handleScroll, { capture: true });\n }\n }, [context.trigger, onClose]);\n return /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents: false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside: (event) => event.preventDefault(),\n onDismiss: onClose,\n children: /* @__PURE__ */ jsxs(\n PopperPrimitive.Content,\n {\n \"data-state\": context.stateAttribute,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-tooltip-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-tooltip-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-tooltip-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-tooltip-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-tooltip-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n },\n children: [\n /* @__PURE__ */ jsx(Slottable, { children }),\n /* @__PURE__ */ jsx(VisuallyHiddenContentContextProvider, { scope: __scopeTooltip, isInside: true, children: /* @__PURE__ */ jsx(VisuallyHiddenPrimitive.Root, { id: context.contentId, role: \"tooltip\", children: ariaLabel || children }) })\n ]\n }\n )\n }\n );\n }\n);\nTooltipContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"TooltipArrow\";\nvar TooltipArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTooltip, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeTooltip);\n const visuallyHiddenContentContext = useVisuallyHiddenContentContext(\n ARROW_NAME,\n __scopeTooltip\n );\n return visuallyHiddenContentContext.isInside ? null : /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nTooltipArrow.displayName = ARROW_NAME;\nfunction getExitSideFromRect(point, rect) {\n const top = Math.abs(rect.top - point.y);\n const bottom = Math.abs(rect.bottom - point.y);\n const right = Math.abs(rect.right - point.x);\n const left = Math.abs(rect.left - point.x);\n switch (Math.min(top, bottom, right, left)) {\n case left:\n return \"left\";\n case right:\n return \"right\";\n case top:\n return \"top\";\n case bottom:\n return \"bottom\";\n default:\n throw new Error(\"unreachable\");\n }\n}\nfunction getPaddedExitPoints(exitPoint, exitSide, padding = 5) {\n const paddedExitPoints = [];\n switch (exitSide) {\n case \"top\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y + padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"bottom\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y - padding }\n );\n break;\n case \"left\":\n paddedExitPoints.push(\n { x: exitPoint.x + padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"right\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x - padding, y: exitPoint.y + padding }\n );\n break;\n }\n return paddedExitPoints;\n}\nfunction getPointsFromRect(rect) {\n const { top, right, bottom, left } = rect;\n return [\n { x: left, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom }\n ];\n}\nfunction isPointInPolygon(point, polygon) {\n const { x, y } = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const ii = polygon[i];\n const jj = polygon[j];\n const xi = ii.x;\n const yi = ii.y;\n const xj = jj.x;\n const yj = jj.y;\n const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) inside = !inside;\n }\n return inside;\n}\nfunction getHull(points) {\n const newPoints = points.slice();\n newPoints.sort((a, b) => {\n if (a.x < b.x) return -1;\n else if (a.x > b.x) return 1;\n else if (a.y < b.y) return -1;\n else if (a.y > b.y) return 1;\n else return 0;\n });\n return getHullPresorted(newPoints);\n}\nfunction getHullPresorted(points) {\n if (points.length <= 1) return points.slice();\n const upperHull = [];\n for (let i = 0; i < points.length; i++) {\n const p = points[i];\n while (upperHull.length >= 2) {\n const q = upperHull[upperHull.length - 1];\n const r = upperHull[upperHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) upperHull.pop();\n else break;\n }\n upperHull.push(p);\n }\n upperHull.pop();\n const lowerHull = [];\n for (let i = points.length - 1; i >= 0; i--) {\n const p = points[i];\n while (lowerHull.length >= 2) {\n const q = lowerHull[lowerHull.length - 1];\n const r = lowerHull[lowerHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) lowerHull.pop();\n else break;\n }\n lowerHull.push(p);\n }\n lowerHull.pop();\n if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) {\n return upperHull;\n } else {\n return upperHull.concat(lowerHull);\n }\n}\nvar Provider = TooltipProvider;\nvar Root3 = Tooltip;\nvar Trigger = TooltipTrigger;\nvar Portal = TooltipPortal;\nvar Content2 = TooltipContent;\nvar Arrow2 = TooltipArrow;\nexport {\n Arrow2 as Arrow,\n Content2 as Content,\n Portal,\n Provider,\n Root3 as Root,\n Tooltip,\n TooltipArrow,\n TooltipContent,\n TooltipPortal,\n TooltipProvider,\n TooltipTrigger,\n Trigger,\n createTooltipScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\";\r\n\r\nexport type TooltipVariants = {\r\n\tfocus?: \"high\";\r\n};\r\n\r\nexport const TooltipContext = React.createContext<TooltipVariants>({});\r\n\r\nexport const useTooltipContext = () => {\r\n\tconst context = React.useContext(TooltipContext);\r\n\treturn context;\r\n};\r\n","import * as React from \"react\";\r\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\r\nimport { tv } from \"tailwind-variants\";\r\nimport { Icon, IconProps } from \"../icon/Icon\";\r\nimport { Shortcut } from \"../shortcut\";\r\nimport { usePortalContainer } from \"../portal-container\";\r\nimport { VariantsConfig } from \"@/lib/utils/variants\";\r\nimport { TooltipContext, TooltipVariants, useTooltipContext } from \"./useTooltipContext\";\r\nimport { Text } from \"@/components/text\";\r\n\r\nconst TooltipProvider = TooltipPrimitive.Provider;\r\n\r\nconst Tooltip = TooltipPrimitive.Root;\r\n\r\nconst TooltipTrigger = TooltipPrimitive.Trigger;\r\n\r\nconst tooltipArrowStyles = tv({\r\n\tslots: {\r\n\t\tfill: \"fill-status-neutral-fg\",\r\n\t\tstroke: \"stroke-primary-border stroke-[0.5px]\",\r\n\t\tsvg: \"rotate-180\"\r\n\t},\r\n\tvariants: {\r\n\t\tfocus: {\r\n\t\t\thigh: {\r\n\t\t\t\tfill: \"fill-alpha-high-20\",\r\n\t\t\t\tstroke: \"stroke-none\"\r\n\t\t\t}\r\n\t\t}\r\n\t} satisfies VariantsConfig<TooltipVariants>\r\n});\r\n\r\ntype TooltipArrowProps = React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Arrow>;\r\n\r\nconst TooltipArrow = React.forwardRef<React.ElementRef<typeof TooltipPrimitive.Arrow>, TooltipArrowProps>(\r\n\t({ width, height, className, ...props }, ref) => {\r\n\t\tconst { focus } = useTooltipContext();\r\n\t\tconst styles = tooltipArrowStyles({ focus });\r\n\r\n\t\treturn (\r\n\t\t\t<TooltipPrimitive.Arrow ref={ref} asChild {...props}>\r\n\t\t\t\t<svg\r\n\t\t\t\t\twidth={width || \"10\"}\r\n\t\t\t\t\theight={height || \"5\"}\r\n\t\t\t\t\tviewBox=\"0 0 10 5\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\tclassName={styles.svg({ className })}\r\n\t\t\t\t>\r\n\t\t\t\t\t<path d=\"M5.00082 0.248638L10 5.99523L0 6.00001L5.00082 0.248638Z\" className={styles.fill()} />\r\n\t\t\t\t\t<path\r\n\t\t\t\t\t\td=\"M9.57422 5.25L5.37732 0.433047C5.17793 0.204195 4.82228 0.204345 4.62308 0.433365L0.433594 5.25\"\r\n\t\t\t\t\t\tclassName={styles.stroke()}\r\n\t\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</TooltipPrimitive.Arrow>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nTooltipArrow.displayName = TooltipPrimitive.Arrow.displayName;\r\n\r\nconst tooltipContentStyles = tv({\r\n\tbase: [\r\n\t\t\"z-50 rounded-lg border-[0.5px] px-2 py-1.5 text-xs backdrop-blur animate-in fade-in-0 zoom-in-95\",\r\n\t\t\"border-primary-border bg-alpha-30 text-primary-fg shadow-soft-sm\",\r\n\t\t\"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\r\n\t\t\"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\"\r\n\t],\r\n\tvariants: {\r\n\t\tfocus: {\r\n\t\t\thigh: \"border-0 bg-alpha-high-20 text-inverse-primary-fg shadow-soft-base\"\r\n\t\t}\r\n\t} satisfies VariantsConfig<TooltipVariants>\r\n});\r\n\r\nexport type TooltipContentProps = React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content> &\r\n\tTooltipVariants & {\r\n\t\t/**\r\n\t\t * Контейнер для портала. Если не указан, используется хук usePortalContainer\r\n\t\t * для поиска PortalContainer\r\n\t\t */\r\n\t\tportalContainer?: HTMLElement;\r\n\t};\r\n\r\nconst TooltipContent = React.forwardRef<React.ElementRef<typeof TooltipPrimitive.Content>, TooltipContentProps>(\r\n\t({ className, sideOffset = 8, portalContainer, focus, ...props }, ref) => {\r\n\t\tconst container = usePortalContainer(portalContainer);\r\n\r\n\t\treturn (\r\n\t\t\t<TooltipContext.Provider value={{ focus }}>\r\n\t\t\t\t<TooltipPrimitive.Portal container={container}>\r\n\t\t\t\t\t<TooltipPrimitive.Content\r\n\t\t\t\t\t\tref={ref}\r\n\t\t\t\t\t\tsideOffset={sideOffset}\r\n\t\t\t\t\t\tclassName={tooltipContentStyles({ className, focus })}\r\n\t\t\t\t\t\t{...props}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</TooltipPrimitive.Portal>\r\n\t\t\t</TooltipContext.Provider>\r\n\t\t);\r\n\t}\r\n);\r\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\r\n\r\nconst tooltipTitleStyles = tv({\r\n\tbase: \"text-sm font-medium text-primary-fg\",\r\n\tvariants: {\r\n\t\tfocus: {\r\n\t\t\thigh: \"text-inverse-primary-fg\"\r\n\t\t}\r\n\t} satisfies VariantsConfig<TooltipVariants>\r\n});\r\n\r\ntype TooltipTitleProps = React.HTMLAttributes<HTMLDivElement>;\r\n\r\nconst TooltipTitle = React.forwardRef<HTMLDivElement, TooltipTitleProps>(({ className, children, ...props }, ref) => {\r\n\tconst { focus } = useTooltipContext();\r\n\treturn (\r\n\t\t<div ref={ref} className={tooltipTitleStyles({ className, focus })} {...props}>\r\n\t\t\t{children}\r\n\t\t</div>\r\n\t);\r\n});\r\nTooltipTitle.displayName = \"TooltipTitle\";\r\n\r\nconst tooltipTextStyles = tv({\r\n\tbase: \"\",\r\n\tvariants: {\r\n\t\tfocus: {\r\n\t\t\thigh: \"text-inverse-secondary-fg\"\r\n\t\t}\r\n\t} satisfies VariantsConfig<TooltipVariants>\r\n});\r\n\r\ntype TooltipTextProps = React.HTMLAttributes<HTMLDivElement>;\r\n\r\nconst TooltipText = React.forwardRef<HTMLDivElement, TooltipTextProps>(({ className, children, ...props }, ref) => {\r\n\tconst { focus } = useTooltipContext();\r\n\treturn (\r\n\t\t<Text ref={ref} size=\"xs\" className={tooltipTextStyles({ className, focus })} {...props}>\r\n\t\t\t{children}\r\n\t\t</Text>\r\n\t);\r\n});\r\nTooltipText.displayName = \"TooltipText\";\r\n\r\nconst tooltipIconStyles = tv({\r\n\tbase: \"flex-shrink-0 text-xs text-primary-fg\",\r\n\tvariants: {\r\n\t\tfocus: {\r\n\t\t\thigh: \"text-inverse-primary-fg\"\r\n\t\t}\r\n\t} satisfies VariantsConfig<TooltipVariants>\r\n});\r\n\r\ntype TooltipIconProps = IconProps;\r\n\r\nconst TooltipIcon = React.forwardRef<SVGSVGElement, TooltipIconProps>(({ className, ...props }, ref) => {\r\n\tconst { focus } = useTooltipContext();\r\n\treturn <Icon size=\"lg\" className={tooltipIconStyles({ className, focus })} ref={ref} {...props} />;\r\n});\r\nTooltipIcon.displayName = \"TooltipIcon\";\r\n\r\nconst tooltipShortcutStyles = tv({\r\n\tbase: \"h-auto p-0 text-xs text-muted\",\r\n\tvariants: {\r\n\t\tfocus: {\r\n\t\t\thigh: \"text-inverse-secondary-fg opacity-70\"\r\n\t\t}\r\n\t} satisfies VariantsConfig<TooltipVariants>\r\n});\r\n\r\ntype TooltipShortcutProps = React.HTMLAttributes<HTMLDivElement>;\r\n\r\nconst TooltipShortcut = React.forwardRef<HTMLDivElement, TooltipShortcutProps>(({ className, ...props }, ref) => {\r\n\tconst { focus } = useTooltipContext();\r\n\treturn <Shortcut variant=\"ghost\" className={tooltipShortcutStyles({ className, focus })} ref={ref} {...props} />;\r\n});\r\nTooltipShortcut.displayName = \"TooltipShortcut\";\r\n\r\nexport {\r\n\tTooltip,\r\n\tTooltipTrigger,\r\n\tTooltipContent,\r\n\tTooltipArrow,\r\n\tTooltipProvider,\r\n\tTooltipTitle,\r\n\tTooltipText,\r\n\tTooltipIcon,\r\n\tTooltipShortcut\r\n};\r\n"],"names":["createTooltipContext","createTooltipScope","createContextScope","createPopperScope","usePopperScope","PROVIDER_NAME","DEFAULT_DELAY_DURATION","TOOLTIP_OPEN","TooltipProviderContextProvider","useTooltipProviderContext","TooltipProvider","props","__scopeTooltip","delayDuration","skipDelayDuration","disableHoverableContent","children","isOpenDelayedRef","React","isPointerInTransitRef","skipDelayTimerRef","skipDelayTimer","jsx","inTransit","TOOLTIP_NAME","TooltipContextProvider","useTooltipContext","Tooltip","openProp","defaultOpen","onOpenChange","disableHoverableContentProp","delayDurationProp","providerContext","popperScope","trigger","setTrigger","contentId","useId","openTimerRef","wasOpenDelayedRef","open","setOpen","useControllableState","open2","stateAttribute","handleOpen","handleClose","handleDelayedOpen","PopperPrimitive.Root","TRIGGER_NAME","TooltipTrigger","forwardedRef","triggerProps","context","ref","composedRefs","useComposedRefs","isPointerDownRef","hasPointerMoveOpenedRef","handlePointerUp","PopperPrimitive.Anchor","Primitive","composeEventHandlers","event","PORTAL_NAME","PortalProvider","usePortalContext","TooltipPortal","forceMount","container","Presence","PortalPrimitive","CONTENT_NAME","TooltipContent","portalContext","side","contentProps","TooltipContentImpl","TooltipContentHoverable","pointerGraceArea","setPointerGraceArea","onClose","content","onPointerInTransitChange","handleRemoveGraceArea","handleCreateGraceArea","hoverTarget","currentTarget","exitPoint","exitSide","getExitSideFromRect","paddedExitPoints","getPaddedExitPoints","hoverTargetPoints","getPointsFromRect","graceArea","getHull","handleTriggerLeave","handleContentLeave","handleTrackPointerGrace","target","pointerPosition","hasEnteredTarget","isPointerOutsideGraceArea","isPointInPolygon","VisuallyHiddenContentContextProvider","useVisuallyHiddenContentContext","Slottable","createSlottable","ariaLabel","onEscapeKeyDown","onPointerDownOutside","handleScroll","DismissableLayer","jsxs","PopperPrimitive.Content","VisuallyHiddenPrimitive.Root","ARROW_NAME","TooltipArrow","arrowProps","PopperPrimitive.Arrow","point","rect","top","bottom","right","left","padding","polygon","x","y","inside","j","ii","jj","xi","yi","xj","yj","points","newPoints","a","b","getHullPresorted","upperHull","i","p","q","r","lowerHull","Provider","Root3","Trigger","Portal","Content2","Arrow2","TooltipContext","TooltipPrimitive.Provider","TooltipPrimitive.Root","TooltipPrimitive.Trigger","tooltipArrowStyles","tv","width","height","className","focus","styles","TooltipPrimitive.Arrow","tooltipContentStyles","sideOffset","portalContainer","usePortalContainer","TooltipPrimitive.Portal","TooltipPrimitive.Content","tooltipTitleStyles","TooltipTitle","tooltipTextStyles","TooltipText","Text","tooltipIconStyles","TooltipIcon","Icon","tooltipShortcutStyles","TooltipShortcut","Shortcut"],"mappings":";;;;;;;;;;;;;;;;AAkBA,IAAI,CAACA,GAAsBC,EAAkB,IAAIC,GAAmB,WAAW;AAAA,EAC7EC;AACF,CAAC,GACGC,IAAiBD,EAAmB,GACpCE,IAAgB,mBAChBC,KAAyB,KACzBC,IAAe,gBACf,CAACC,IAAgCC,CAAyB,IAAIT,EAAqBK,CAAa,GAChGK,IAAkB,CAACC,MAAU;AAC/B,QAAM;AAAA,IACJ,gBAAAC;AAAA,IACA,eAAAC,IAAgBP;AAAA,IAChB,mBAAAQ,IAAoB;AAAA,IACpB,yBAAAC,IAA0B;AAAA,IAC1B,UAAAC;AAAA,EACJ,IAAML,GACEM,IAAmBC,EAAM,OAAO,EAAI,GACpCC,IAAwBD,EAAM,OAAO,EAAK,GAC1CE,IAAoBF,EAAM,OAAO,CAAC;AACxC,SAAAA,EAAM,UAAU,MAAM;AACpB,UAAMG,IAAiBD,EAAkB;AACzC,WAAO,MAAM,OAAO,aAAaC,CAAc;AAAA,EAChD,GAAE,EAAE,GACkB,gBAAAC;AAAA,IACrBd;AAAA,IACA;AAAA,MACE,OAAOI;AAAA,MACP,kBAAAK;AAAA,MACA,eAAAJ;AAAA,MACA,QAAQK,EAAM,YAAY,MAAM;AAC9B,eAAO,aAAaE,EAAkB,OAAO,GAC7CH,EAAiB,UAAU;AAAA,MAC5B,GAAE,EAAE;AAAA,MACL,SAASC,EAAM,YAAY,MAAM;AAC/B,eAAO,aAAaE,EAAkB,OAAO,GAC7CA,EAAkB,UAAU,OAAO;AAAA,UACjC,MAAMH,EAAiB,UAAU;AAAA,UACjCH;AAAA,QACD;AAAA,MACT,GAAS,CAACA,CAAiB,CAAC;AAAA,MACtB,uBAAAK;AAAA,MACA,0BAA0BD,EAAM,YAAY,CAACK,MAAc;AACzD,QAAAJ,EAAsB,UAAUI;AAAA,MACjC,GAAE,EAAE;AAAA,MACL,yBAAAR;AAAA,MACA,UAAAC;AAAA,IACN;AAAA,EACG;AACH;AACAN,EAAgB,cAAcL;AAC9B,IAAImB,IAAe,WACf,CAACC,IAAwBC,CAAiB,IAAI1B,EAAqBwB,CAAY,GAC/EG,IAAU,CAAChB,MAAU;AACvB,QAAM;AAAA,IACJ,gBAAAC;AAAA,IACA,UAAAI;AAAA,IACA,MAAMY;AAAA,IACN,aAAAC;AAAA,IACA,cAAAC;AAAA,IACA,yBAAyBC;AAAA,IACzB,eAAeC;AAAA,EACnB,IAAMrB,GACEsB,IAAkBxB,EAA0Be,GAAcb,EAAM,cAAc,GAC9EuB,IAAc9B,EAAeQ,CAAc,GAC3C,CAACuB,GAASC,CAAU,IAAIlB,EAAM,SAAS,IAAI,GAC3CmB,IAAYC,GAAO,GACnBC,IAAerB,EAAM,OAAO,CAAC,GAC7BH,IAA0BgB,KAA+BE,EAAgB,yBACzEpB,IAAgBmB,KAAqBC,EAAgB,eACrDO,IAAoBtB,EAAM,OAAO,EAAK,GACtC,CAACuB,GAAMC,CAAO,IAAIC,GAAqB;AAAA,IAC3C,MAAMf;AAAA,IACN,aAAaC,KAAe;AAAA,IAC5B,UAAU,CAACe,MAAU;AACnB,MAAIA,KACFX,EAAgB,OAAQ,GACxB,SAAS,cAAc,IAAI,YAAY1B,CAAY,CAAC,KAEpD0B,EAAgB,QAAS,GAE3BH,IAAec,CAAK;AAAA,IACrB;AAAA,IACD,QAAQpB;AAAA,EACZ,CAAG,GACKqB,IAAiB3B,EAAM,QAAQ,MAC5BuB,IAAOD,EAAkB,UAAU,iBAAiB,iBAAiB,UAC3E,CAACC,CAAI,CAAC,GACHK,IAAa5B,EAAM,YAAY,MAAM;AACzC,WAAO,aAAaqB,EAAa,OAAO,GACxCA,EAAa,UAAU,GACvBC,EAAkB,UAAU,IAC5BE,EAAQ,EAAI;AAAA,EAChB,GAAK,CAACA,CAAO,CAAC,GACNK,IAAc7B,EAAM,YAAY,MAAM;AAC1C,WAAO,aAAaqB,EAAa,OAAO,GACxCA,EAAa,UAAU,GACvBG,EAAQ,EAAK;AAAA,EACjB,GAAK,CAACA,CAAO,CAAC,GACNM,IAAoB9B,EAAM,YAAY,MAAM;AAChD,WAAO,aAAaqB,EAAa,OAAO,GACxCA,EAAa,UAAU,OAAO,WAAW,MAAM;AAC7C,MAAAC,EAAkB,UAAU,IAC5BE,EAAQ,EAAI,GACZH,EAAa,UAAU;AAAA,IACxB,GAAE1B,CAAa;AAAA,EACpB,GAAK,CAACA,GAAe6B,CAAO,CAAC;AAC3B,SAAAxB,EAAM,UAAU,MACP,MAAM;AACX,IAAIqB,EAAa,YACf,OAAO,aAAaA,EAAa,OAAO,GACxCA,EAAa,UAAU;AAAA,EAE1B,GACA,EAAE,GACkB,gBAAAjB,EAAI2B,IAAsB,EAAE,GAAGf,GAAa,UAA0B,gBAAAZ;AAAA,IAC3FG;AAAA,IACA;AAAA,MACE,OAAOb;AAAA,MACP,WAAAyB;AAAA,MACA,MAAAI;AAAA,MACA,gBAAAI;AAAA,MACA,SAAAV;AAAA,MACA,iBAAiBC;AAAA,MACjB,gBAAgBlB,EAAM,YAAY,MAAM;AACtC,QAAIe,EAAgB,iBAAiB,UAASe,EAAmB,IAC5DF,EAAY;AAAA,MAClB,GAAE,CAACb,EAAgB,kBAAkBe,GAAmBF,CAAU,CAAC;AAAA,MACpE,gBAAgB5B,EAAM,YAAY,MAAM;AACtC,QAAIH,IACFgC,EAAa,KAEb,OAAO,aAAaR,EAAa,OAAO,GACxCA,EAAa,UAAU;AAAA,MAEjC,GAAS,CAACQ,GAAahC,CAAuB,CAAC;AAAA,MACzC,QAAQ+B;AAAA,MACR,SAASC;AAAA,MACT,yBAAAhC;AAAA,MACA,UAAAC;AAAA,IACN;AAAA,EACA,GAAK;AACL;AACAW,EAAQ,cAAcH;AACtB,IAAI0B,IAAe,kBACfC,IAAiBjC,EAAM;AAAA,EACzB,CAACP,GAAOyC,MAAiB;AACvB,UAAM,EAAE,gBAAAxC,GAAgB,GAAGyC,EAAY,IAAK1C,GACtC2C,IAAU5B,EAAkBwB,GAActC,CAAc,GACxDqB,IAAkBxB,EAA0ByC,GAActC,CAAc,GACxEsB,IAAc9B,EAAeQ,CAAc,GAC3C2C,IAAMrC,EAAM,OAAO,IAAI,GACvBsC,IAAeC,EAAgBL,GAAcG,GAAKD,EAAQ,eAAe,GACzEI,IAAmBxC,EAAM,OAAO,EAAK,GACrCyC,IAA0BzC,EAAM,OAAO,EAAK,GAC5C0C,IAAkB1C,EAAM,YAAY,MAAMwC,EAAiB,UAAU,IAAO,EAAE;AACpF,WAAAxC,EAAM,UAAU,MACP,MAAM,SAAS,oBAAoB,aAAa0C,CAAe,GACrE,CAACA,CAAe,CAAC,GACG,gBAAAtC,EAAIuC,IAAwB,EAAE,SAAS,IAAM,GAAG3B,GAAa,UAA0B,gBAAAZ;AAAA,MAC5GwC,GAAU;AAAA,MACV;AAAA,QACE,oBAAoBR,EAAQ,OAAOA,EAAQ,YAAY;AAAA,QACvD,cAAcA,EAAQ;AAAA,QACtB,GAAGD;AAAA,QACH,KAAKG;AAAA,QACL,eAAeO,EAAqBpD,EAAM,eAAe,CAACqD,MAAU;AAClE,UAAIA,EAAM,gBAAgB,WACtB,CAACL,EAAwB,WAAW,CAAC1B,EAAgB,sBAAsB,YAC7EqB,EAAQ,eAAgB,GACxBK,EAAwB,UAAU;AAAA,QAE9C,CAAS;AAAA,QACD,gBAAgBI,EAAqBpD,EAAM,gBAAgB,MAAM;AAC/D,UAAA2C,EAAQ,eAAgB,GACxBK,EAAwB,UAAU;AAAA,QAC5C,CAAS;AAAA,QACD,eAAeI,EAAqBpD,EAAM,eAAe,MAAM;AAC7D,UAAI2C,EAAQ,QACVA,EAAQ,QAAS,GAEnBI,EAAiB,UAAU,IAC3B,SAAS,iBAAiB,aAAaE,GAAiB,EAAE,MAAM,IAAM;AAAA,QAChF,CAAS;AAAA,QACD,SAASG,EAAqBpD,EAAM,SAAS,MAAM;AACjD,UAAK+C,EAAiB,WAASJ,EAAQ,OAAQ;AAAA,QACzD,CAAS;AAAA,QACD,QAAQS,EAAqBpD,EAAM,QAAQ2C,EAAQ,OAAO;AAAA,QAC1D,SAASS,EAAqBpD,EAAM,SAAS2C,EAAQ,OAAO;AAAA,MACpE;AAAA,IACA,GAAO;AAAA,EACP;AACA;AACAH,EAAe,cAAcD;AAC7B,IAAIe,IAAc,iBACd,CAACC,IAAgBC,EAAgB,IAAInE,EAAqBiE,GAAa;AAAA,EACzE,YAAY;AACd,CAAC,GACGG,IAAgB,CAACzD,MAAU;AAC7B,QAAM,EAAE,gBAAAC,GAAgB,YAAAyD,GAAY,UAAArD,GAAU,WAAAsD,EAAW,IAAG3D,GACtD2C,IAAU5B,EAAkBuC,GAAarD,CAAc;AAC7D,SAAuB,gBAAAU,EAAI4C,IAAgB,EAAE,OAAOtD,GAAgB,YAAAyD,GAAY,UAA0B,gBAAA/C,EAAIiD,GAAU,EAAE,SAASF,KAAcf,EAAQ,MAAM,UAA0B,gBAAAhC,EAAIkD,IAAiB,EAAE,SAAS,IAAM,WAAAF,GAAW,UAAAtD,GAAU,EAAC,CAAE,EAAC,CAAE;AAC5P;AACAoD,EAAc,cAAcH;AAC5B,IAAIQ,IAAe,kBACfC,IAAiBxD,EAAM;AAAA,EACzB,CAACP,GAAOyC,MAAiB;AACvB,UAAMuB,IAAgBR,GAAiBM,GAAc9D,EAAM,cAAc,GACnE,EAAE,YAAA0D,IAAaM,EAAc,YAAY,MAAAC,IAAO,OAAO,GAAGC,EAAY,IAAKlE,GAC3E2C,IAAU5B,EAAkB+C,GAAc9D,EAAM,cAAc;AACpE,WAAuB,gBAAAW,EAAIiD,GAAU,EAAE,SAASF,KAAcf,EAAQ,MAAM,UAAUA,EAAQ,0BAA0C,gBAAAhC,EAAIwD,GAAoB,EAAE,MAAAF,GAAM,GAAGC,GAAc,KAAKzB,GAAc,IAAoB,gBAAA9B,EAAIyD,IAAyB,EAAE,MAAAH,GAAM,GAAGC,GAAc,KAAKzB,EAAY,CAAE,EAAC,CAAE;AAAA,EAChT;AACA,GACI2B,KAA0B7D,EAAM,WAAW,CAACP,GAAOyC,MAAiB;AACtE,QAAME,IAAU5B,EAAkB+C,GAAc9D,EAAM,cAAc,GAC9DsB,IAAkBxB,EAA0BgE,GAAc9D,EAAM,cAAc,GAC9E4C,IAAMrC,EAAM,OAAO,IAAI,GACvBsC,IAAeC,EAAgBL,GAAcG,CAAG,GAChD,CAACyB,GAAkBC,CAAmB,IAAI/D,EAAM,SAAS,IAAI,GAC7D,EAAE,SAAAiB,GAAS,SAAA+C,EAAO,IAAK5B,GACvB6B,IAAU5B,EAAI,SACd,EAAE,0BAAA6B,EAAwB,IAAKnD,GAC/BoD,IAAwBnE,EAAM,YAAY,MAAM;AACpD,IAAA+D,EAAoB,IAAI,GACxBG,EAAyB,EAAK;AAAA,EAClC,GAAK,CAACA,CAAwB,CAAC,GACvBE,IAAwBpE,EAAM;AAAA,IAClC,CAAC8C,GAAOuB,MAAgB;AACtB,YAAMC,IAAgBxB,EAAM,eACtByB,IAAY,EAAE,GAAGzB,EAAM,SAAS,GAAGA,EAAM,QAAS,GAClD0B,IAAWC,GAAoBF,GAAWD,EAAc,sBAAqB,CAAE,GAC/EI,IAAmBC,GAAoBJ,GAAWC,CAAQ,GAC1DI,IAAoBC,GAAkBR,EAAY,sBAAqB,CAAE,GACzES,IAAYC,GAAQ,CAAC,GAAGL,GAAkB,GAAGE,CAAiB,CAAC;AACrE,MAAAb,EAAoBe,CAAS,GAC7BZ,EAAyB,EAAI;AAAA,IAC9B;AAAA,IACD,CAACA,CAAwB;AAAA,EAC1B;AACD,SAAAlE,EAAM,UAAU,MACP,MAAMmE,EAAuB,GACnC,CAACA,CAAqB,CAAC,GAC1BnE,EAAM,UAAU,MAAM;AACpB,QAAIiB,KAAWgD,GAAS;AACtB,YAAMe,IAAqB,CAAClC,MAAUsB,EAAsBtB,GAAOmB,CAAO,GACpEgB,IAAqB,CAACnC,MAAUsB,EAAsBtB,GAAO7B,CAAO;AAC1E,aAAAA,EAAQ,iBAAiB,gBAAgB+D,CAAkB,GAC3Df,EAAQ,iBAAiB,gBAAgBgB,CAAkB,GACpD,MAAM;AACX,QAAAhE,EAAQ,oBAAoB,gBAAgB+D,CAAkB,GAC9Df,EAAQ,oBAAoB,gBAAgBgB,CAAkB;AAAA,MAC/D;AAAA,IACP;AAAA,EACG,GAAE,CAAChE,GAASgD,GAASG,GAAuBD,CAAqB,CAAC,GACnEnE,EAAM,UAAU,MAAM;AACpB,QAAI8D,GAAkB;AACpB,YAAMoB,IAA0B,CAACpC,MAAU;AACzC,cAAMqC,IAASrC,EAAM,QACfsC,IAAkB,EAAE,GAAGtC,EAAM,SAAS,GAAGA,EAAM,QAAS,GACxDuC,IAAmBpE,GAAS,SAASkE,CAAM,KAAKlB,GAAS,SAASkB,CAAM,GACxEG,IAA4B,CAACC,GAAiBH,GAAiBtB,CAAgB;AACrF,QAAIuB,IACFlB,EAAuB,IACdmB,MACTnB,EAAuB,GACvBH,EAAS;AAAA,MAEZ;AACD,sBAAS,iBAAiB,eAAekB,CAAuB,GACzD,MAAM,SAAS,oBAAoB,eAAeA,CAAuB;AAAA,IACtF;AAAA,EACA,GAAK,CAACjE,GAASgD,GAASH,GAAkBE,GAASG,CAAqB,CAAC,GAChD,gBAAA/D,EAAIwD,GAAoB,EAAE,GAAGnE,GAAO,KAAK6C,GAAc;AAChF,CAAC,GACG,CAACkD,IAAsCC,EAA+B,IAAI3G,EAAqBwB,GAAc,EAAE,UAAU,IAAO,GAChIoF,KAAYC,GAAgB,gBAAgB,GAC5C/B,IAAqB5D,EAAM;AAAA,EAC7B,CAACP,GAAOyC,MAAiB;AACvB,UAAM;AAAA,MACJ,gBAAAxC;AAAA,MACA,UAAAI;AAAA,MACA,cAAc8F;AAAA,MACd,iBAAAC;AAAA,MACA,sBAAAC;AAAA,MACA,GAAGnC;AAAA,IACT,IAAQlE,GACE2C,IAAU5B,EAAkB+C,GAAc7D,CAAc,GACxDsB,IAAc9B,EAAeQ,CAAc,GAC3C,EAAE,SAAAsE,EAAO,IAAK5B;AACpB,WAAApC,EAAM,UAAU,OACd,SAAS,iBAAiBX,GAAc2E,CAAO,GACxC,MAAM,SAAS,oBAAoB3E,GAAc2E,CAAO,IAC9D,CAACA,CAAO,CAAC,GACZhE,EAAM,UAAU,MAAM;AACpB,UAAIoC,EAAQ,SAAS;AACnB,cAAM2D,IAAe,CAACjD,MAAU;AAE9B,UADeA,EAAM,QACT,SAASV,EAAQ,OAAO,KAAG4B,EAAS;AAAA,QACjD;AACD,sBAAO,iBAAiB,UAAU+B,GAAc,EAAE,SAAS,IAAM,GAC1D,MAAM,OAAO,oBAAoB,UAAUA,GAAc,EAAE,SAAS,IAAM;AAAA,MACzF;AAAA,IACK,GAAE,CAAC3D,EAAQ,SAAS4B,CAAO,CAAC,GACN,gBAAA5D;AAAA,MACrB4F;AAAA,MACA;AAAA,QACE,SAAS;AAAA,QACT,6BAA6B;AAAA,QAC7B,iBAAAH;AAAA,QACA,sBAAAC;AAAA,QACA,gBAAgB,CAAChD,MAAUA,EAAM,eAAgB;AAAA,QACjD,WAAWkB;AAAA,QACX,UAA0B,gBAAAiC;AAAA,UACxBC;AAAAA,UACA;AAAA,YACE,cAAc9D,EAAQ;AAAA,YACtB,GAAGpB;AAAA,YACH,GAAG2C;AAAA,YACH,KAAKzB;AAAA,YACL,OAAO;AAAA,cACL,GAAGyB,EAAa;AAAA,cAGd,4CAA4C;AAAA,cAC5C,2CAA2C;AAAA,cAC3C,4CAA4C;AAAA,cAC5C,iCAAiC;AAAA,cACjC,kCAAkC;AAAA,YAErC;AAAA,YACD,UAAU;AAAA,cACQ,gBAAAvD,EAAIsF,IAAW,EAAE,UAAA5F,GAAU;AAAA,cAC3B,gBAAAM,EAAIoF,IAAsC,EAAE,OAAO9F,GAAgB,UAAU,IAAM,UAA0B,gBAAAU,EAAI+F,IAA8B,EAAE,IAAI/D,EAAQ,WAAW,MAAM,WAAW,UAAUwD,KAAa9F,EAAQ,CAAE,EAAG,CAAA;AAAA,YAC3P;AAAA,UACA;AAAA,QACA;AAAA,MACA;AAAA,IACK;AAAA,EACL;AACA;AACA0D,EAAe,cAAcD;AAC7B,IAAI6C,IAAa,gBACbC,IAAerG,EAAM;AAAA,EACvB,CAACP,GAAOyC,MAAiB;AACvB,UAAM,EAAE,gBAAAxC,GAAgB,GAAG4G,EAAU,IAAK7G,GACpCuB,IAAc9B,EAAeQ,CAAc;AAKjD,WAJqC+F;AAAA,MACnCW;AAAA,MACA1G;AAAA,IACD,EACmC,WAAW,OAAuB,gBAAAU,EAAImG,IAAuB,EAAE,GAAGvF,GAAa,GAAGsF,GAAY,KAAKpE,EAAY,CAAE;AAAA,EACzJ;AACA;AACAmE,EAAa,cAAcD;AAC3B,SAAS3B,GAAoB+B,GAAOC,GAAM;AACxC,QAAMC,IAAM,KAAK,IAAID,EAAK,MAAMD,EAAM,CAAC,GACjCG,IAAS,KAAK,IAAIF,EAAK,SAASD,EAAM,CAAC,GACvCI,IAAQ,KAAK,IAAIH,EAAK,QAAQD,EAAM,CAAC,GACrCK,IAAO,KAAK,IAAIJ,EAAK,OAAOD,EAAM,CAAC;AACzC,UAAQ,KAAK,IAAIE,GAAKC,GAAQC,GAAOC,CAAI,GAAC;AAAA,IACxC,KAAKA;AACH,aAAO;AAAA,IACT,KAAKD;AACH,aAAO;AAAA,IACT,KAAKF;AACH,aAAO;AAAA,IACT,KAAKC;AACH,aAAO;AAAA,IACT;AACE,YAAM,IAAI,MAAM,aAAa;AAAA,EACnC;AACA;AACA,SAAShC,GAAoBJ,GAAWC,GAAUsC,IAAU,GAAG;AAC7D,QAAMpC,IAAmB,CAAE;AAC3B,UAAQF,GAAQ;AAAA,IACd,KAAK;AACH,MAAAE,EAAiB;AAAA,QACf,EAAE,GAAGH,EAAU,IAAIuC,GAAS,GAAGvC,EAAU,IAAIuC,EAAS;AAAA,QACtD,EAAE,GAAGvC,EAAU,IAAIuC,GAAS,GAAGvC,EAAU,IAAIuC,EAAO;AAAA,MACrD;AACD;AAAA,IACF,KAAK;AACH,MAAApC,EAAiB;AAAA,QACf,EAAE,GAAGH,EAAU,IAAIuC,GAAS,GAAGvC,EAAU,IAAIuC,EAAS;AAAA,QACtD,EAAE,GAAGvC,EAAU,IAAIuC,GAAS,GAAGvC,EAAU,IAAIuC,EAAO;AAAA,MACrD;AACD;AAAA,IACF,KAAK;AACH,MAAApC,EAAiB;AAAA,QACf,EAAE,GAAGH,EAAU,IAAIuC,GAAS,GAAGvC,EAAU,IAAIuC,EAAS;AAAA,QACtD,EAAE,GAAGvC,EAAU,IAAIuC,GAAS,GAAGvC,EAAU,IAAIuC,EAAO;AAAA,MACrD;AACD;AAAA,IACF,KAAK;AACH,MAAApC,EAAiB;AAAA,QACf,EAAE,GAAGH,EAAU,IAAIuC,GAAS,GAAGvC,EAAU,IAAIuC,EAAS;AAAA,QACtD,EAAE,GAAGvC,EAAU,IAAIuC,GAAS,GAAGvC,EAAU,IAAIuC,EAAO;AAAA,MACrD;AACD;AAAA,EACN;AACE,SAAOpC;AACT;AACA,SAASG,GAAkB4B,GAAM;AAC/B,QAAM,EAAE,KAAAC,GAAK,OAAAE,GAAO,QAAAD,GAAQ,MAAAE,EAAM,IAAGJ;AACrC,SAAO;AAAA,IACL,EAAE,GAAGI,GAAM,GAAGH,EAAK;AAAA,IACnB,EAAE,GAAGE,GAAO,GAAGF,EAAK;AAAA,IACpB,EAAE,GAAGE,GAAO,GAAGD,EAAQ;AAAA,IACvB,EAAE,GAAGE,GAAM,GAAGF,EAAM;AAAA,EACrB;AACH;AACA,SAASpB,GAAiBiB,GAAOO,GAAS;AACxC,QAAM,EAAE,GAAAC,GAAG,GAAAC,EAAC,IAAKT;AACjB,MAAIU,IAAS;AACb,WAAS,IAAI,GAAGC,IAAIJ,EAAQ,SAAS,GAAG,IAAIA,EAAQ,QAAQI,IAAI,KAAK;AACnE,UAAMC,IAAKL,EAAQ,CAAC,GACdM,IAAKN,EAAQI,CAAC,GACdG,IAAKF,EAAG,GACRG,IAAKH,EAAG,GACRI,IAAKH,EAAG,GACRI,IAAKJ,EAAG;AAEd,IADkBE,IAAKN,KAAMQ,IAAKR,KAAKD,KAAKQ,IAAKF,MAAOL,IAAIM,MAAOE,IAAKF,KAAMD,MAC/DJ,IAAS,CAACA;AAAA,EAC7B;AACE,SAAOA;AACT;AACA,SAASnC,GAAQ2C,GAAQ;AACvB,QAAMC,IAAYD,EAAO,MAAO;AAChC,SAAAC,EAAU,KAAK,CAACC,GAAGC,MACbD,EAAE,IAAIC,EAAE,IAAU,KACbD,EAAE,IAAIC,EAAE,IAAU,IAClBD,EAAE,IAAIC,EAAE,IAAU,KAClBD,EAAE,IAAIC,EAAE,IAAU,IACf,CACb,GACMC,GAAiBH,CAAS;AACnC;AACA,SAASG,GAAiBJ,GAAQ;AAChC,MAAIA,EAAO,UAAU,EAAG,QAAOA,EAAO,MAAO;AAC7C,QAAMK,IAAY,CAAE;AACpB,WAASC,IAAI,GAAGA,IAAIN,EAAO,QAAQM,KAAK;AACtC,UAAMC,IAAIP,EAAOM,CAAC;AAClB,WAAOD,EAAU,UAAU,KAAG;AAC5B,YAAMG,IAAIH,EAAUA,EAAU,SAAS,CAAC,GAClCI,IAAIJ,EAAUA,EAAU,SAAS,CAAC;AACxC,WAAKG,EAAE,IAAIC,EAAE,MAAMF,EAAE,IAAIE,EAAE,OAAOD,EAAE,IAAIC,EAAE,MAAMF,EAAE,IAAIE,EAAE,GAAI,CAAAJ,EAAU,IAAK;AAAA,UACtE;AAAA,IACX;AACI,IAAAA,EAAU,KAAKE,CAAC;AAAA,EACpB;AACE,EAAAF,EAAU,IAAK;AACf,QAAMK,IAAY,CAAE;AACpB,WAASJ,IAAIN,EAAO,SAAS,GAAGM,KAAK,GAAGA,KAAK;AAC3C,UAAMC,IAAIP,EAAOM,CAAC;AAClB,WAAOI,EAAU,UAAU,KAAG;AAC5B,YAAMF,IAAIE,EAAUA,EAAU,SAAS,CAAC,GAClCD,IAAIC,EAAUA,EAAU,SAAS,CAAC;AACxC,WAAKF,EAAE,IAAIC,EAAE,MAAMF,EAAE,IAAIE,EAAE,OAAOD,EAAE,IAAIC,EAAE,MAAMF,EAAE,IAAIE,EAAE,GAAI,CAAAC,EAAU,IAAK;AAAA,UACtE;AAAA,IACX;AACI,IAAAA,EAAU,KAAKH,CAAC;AAAA,EACpB;AAEE,SADAG,EAAU,IAAK,GACXL,EAAU,WAAW,KAAKK,EAAU,WAAW,KAAKL,EAAU,CAAC,EAAE,MAAMK,EAAU,CAAC,EAAE,KAAKL,EAAU,CAAC,EAAE,MAAMK,EAAU,CAAC,EAAE,IACpHL,IAEAA,EAAU,OAAOK,CAAS;AAErC;AACA,IAAIC,IAAW7I,GACX8I,KAAQ7H,GACR8H,KAAUtG,GACVuG,KAAStF,GACTuF,IAAWjF,GACXkF,IAASrC;;;;;;;;;;;;;;;;8CCreAsC,KAAiB3I,EAAM,cAA+B,CAAE,CAAA,GAExDQ,IAAoB,MAChBR,EAAM,WAAW2I,EAAc,GCC1CnJ,KAAkBoJ,GAElBnI,KAAUoI,IAEV5G,KAAiB6G,IAEjBC,KAAqBC,EAAG;AAAA,EAC7B,OAAO;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,KAAK;AAAA,EACN;AAAA,EACA,UAAU;AAAA,IACT,OAAO;AAAA,MACN,MAAM;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,MAAA;AAAA,IACT;AAAA,EACD;AAEF,CAAC,GAIK3C,KAAerG,EAAM;AAAA,EAC1B,CAAC,EAAE,OAAAiJ,GAAO,QAAAC,GAAQ,WAAAC,GAAW,GAAG1J,KAAS4C,MAAQ;AAC1C,UAAA,EAAE,OAAA+G,EAAM,IAAI5I,EAAkB,GAC9B6I,IAASN,GAAmB,EAAE,OAAAK,GAAO;AAG1C,WAAA,gBAAAhJ,EAACkJ,GAAA,EAAuB,KAAAjH,GAAU,SAAO,IAAE,GAAG5C,GAC7C,UAAA,gBAAAwG;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,OAAOgD,KAAS;AAAA,QAChB,QAAQC,KAAU;AAAA,QAClB,SAAQ;AAAA,QACR,MAAK;AAAA,QACL,OAAM;AAAA,QACN,WAAWG,EAAO,IAAI,EAAE,WAAAF,GAAW;AAAA,QAEnC,UAAA;AAAA,UAAA,gBAAA/I,EAAC,UAAK,GAAE,4DAA2D,WAAWiJ,EAAO,QAAQ;AAAA,UAC7F,gBAAAjJ;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,GAAE;AAAA,cACF,WAAWiJ,EAAO,OAAO;AAAA,cACzB,eAAc;AAAA,YAAA;AAAA,UAAA;AAAA,QACf;AAAA,MAAA;AAAA,IAAA,GAEF;AAAA,EAAA;AAGH;AAEAhD,GAAa,cAAciD,EAAuB;AAElD,MAAMC,KAAuBP,EAAG;AAAA,EAC/B,MAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,UAAU;AAAA,IACT,OAAO;AAAA,MACN,MAAM;AAAA,IAAA;AAAA,EACP;AAEF,CAAC,GAWKxF,KAAiBxD,EAAM;AAAA,EAC5B,CAAC,EAAE,WAAAmJ,GAAW,YAAAK,IAAa,GAAG,iBAAAC,GAAiB,OAAAL,GAAO,GAAG3J,EAAM,GAAG4C,MAAQ;AACnE,UAAAe,IAAYsG,GAAmBD,CAAe;AAEpD,WACE,gBAAArJ,EAAAuI,GAAe,UAAf,EAAwB,OAAO,EAAE,OAAAS,KACjC,UAAC,gBAAAhJ,EAAAuJ,IAAA,EAAwB,WAAAvG,GACxB,UAAA,gBAAAhD;AAAA,MAACwJ;AAAAA,MAAA;AAAA,QACA,KAAAvH;AAAA,QACA,YAAAmH;AAAA,QACA,WAAWD,GAAqB,EAAE,WAAAJ,GAAW,OAAAC,GAAO;AAAA,QACnD,GAAG3J;AAAA,MAAA;AAAA,OAEN,EACD,CAAA;AAAA,EAAA;AAGH;AACA+D,GAAe,cAAcoG,EAAyB;AAEtD,MAAMC,KAAqBb,EAAG;AAAA,EAC7B,MAAM;AAAA,EACN,UAAU;AAAA,IACT,OAAO;AAAA,MACN,MAAM;AAAA,IAAA;AAAA,EACP;AAEF,CAAC,GAIKc,KAAe9J,EAAM,WAA8C,CAAC,EAAE,WAAAmJ,GAAW,UAAArJ,GAAU,GAAGL,EAAM,GAAG4C,MAAQ;AAC9G,QAAA,EAAE,OAAA+G,EAAM,IAAI5I,EAAkB;AACpC,SACE,gBAAAJ,EAAA,OAAA,EAAI,KAAAiC,GAAU,WAAWwH,GAAmB,EAAE,WAAAV,GAAW,OAAAC,EAAA,CAAO,GAAI,GAAG3J,GACtE,UAAAK,EACF,CAAA;AAEF,CAAC;AACDgK,GAAa,cAAc;AAE3B,MAAMC,KAAoBf,EAAG;AAAA,EAC5B,MAAM;AAAA,EACN,UAAU;AAAA,IACT,OAAO;AAAA,MACN,MAAM;AAAA,IAAA;AAAA,EACP;AAEF,CAAC,GAIKgB,KAAchK,EAAM,WAA6C,CAAC,EAAE,WAAAmJ,GAAW,UAAArJ,GAAU,GAAGL,EAAM,GAAG4C,MAAQ;AAC5G,QAAA,EAAE,OAAA+G,EAAM,IAAI5I,EAAkB;AACpC,SACE,gBAAAJ,EAAA6J,IAAA,EAAK,KAAA5H,GAAU,MAAK,MAAK,WAAW0H,GAAkB,EAAE,WAAAZ,GAAW,OAAAC,EAAO,CAAA,GAAI,GAAG3J,GAChF,UAAAK,EACF,CAAA;AAEF,CAAC;AACDkK,GAAY,cAAc;AAE1B,MAAME,KAAoBlB,EAAG;AAAA,EAC5B,MAAM;AAAA,EACN,UAAU;AAAA,IACT,OAAO;AAAA,MACN,MAAM;AAAA,IAAA;AAAA,EACP;AAEF,CAAC,GAIKmB,KAAcnK,EAAM,WAA4C,CAAC,EAAE,WAAAmJ,GAAW,GAAG1J,EAAM,GAAG4C,MAAQ;AACjG,QAAA,EAAE,OAAA+G,EAAM,IAAI5I,EAAkB;AACpC,SAAQ,gBAAAJ,EAAAgK,IAAA,EAAK,MAAK,MAAK,WAAWF,GAAkB,EAAE,WAAAf,GAAW,OAAAC,EAAO,CAAA,GAAG,KAAA/G,GAAW,GAAG5C,EAAO,CAAA;AACjG,CAAC;AACD0K,GAAY,cAAc;AAE1B,MAAME,KAAwBrB,EAAG;AAAA,EAChC,MAAM;AAAA,EACN,UAAU;AAAA,IACT,OAAO;AAAA,MACN,MAAM;AAAA,IAAA;AAAA,EACP;AAEF,CAAC,GAIKsB,KAAkBtK,EAAM,WAAiD,CAAC,EAAE,WAAAmJ,GAAW,GAAG1J,EAAM,GAAG4C,MAAQ;AAC1G,QAAA,EAAE,OAAA+G,EAAM,IAAI5I,EAAkB;AACpC,SAAQ,gBAAAJ,EAAAmK,IAAA,EAAS,SAAQ,SAAQ,WAAWF,GAAsB,EAAE,WAAAlB,GAAW,OAAAC,EAAO,CAAA,GAAG,KAAA/G,GAAW,GAAG5C,EAAO,CAAA;AAC/G,CAAC;AACD6K,GAAgB,cAAc;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"Tooltip-C4rVuWr4.js","sources":["../node_modules/.pnpm/@radix-ui+react-tooltip@1.2.8_@types+react-dom@18.3.6_@types+react@18.3.20__@types+reac_c0a573e5fee67df1b7628ac6f2833e9e/node_modules/@radix-ui/react-tooltip/dist/index.mjs","../src/components/tooltip/useTooltipContext.ts","../src/components/tooltip/Tooltip.tsx"],"sourcesContent":["\"use client\";\n\n// src/tooltip.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlottable } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport * as VisuallyHiddenPrimitive from \"@radix-ui/react-visually-hidden\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar [createTooltipContext, createTooltipScope] = createContextScope(\"Tooltip\", [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar PROVIDER_NAME = \"TooltipProvider\";\nvar DEFAULT_DELAY_DURATION = 700;\nvar TOOLTIP_OPEN = \"tooltip.open\";\nvar [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME);\nvar TooltipProvider = (props) => {\n const {\n __scopeTooltip,\n delayDuration = DEFAULT_DELAY_DURATION,\n skipDelayDuration = 300,\n disableHoverableContent = false,\n children\n } = props;\n const isOpenDelayedRef = React.useRef(true);\n const isPointerInTransitRef = React.useRef(false);\n const skipDelayTimerRef = React.useRef(0);\n React.useEffect(() => {\n const skipDelayTimer = skipDelayTimerRef.current;\n return () => window.clearTimeout(skipDelayTimer);\n }, []);\n return /* @__PURE__ */ jsx(\n TooltipProviderContextProvider,\n {\n scope: __scopeTooltip,\n isOpenDelayedRef,\n delayDuration,\n onOpen: React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n isOpenDelayedRef.current = false;\n }, []),\n onClose: React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = window.setTimeout(\n () => isOpenDelayedRef.current = true,\n skipDelayDuration\n );\n }, [skipDelayDuration]),\n isPointerInTransitRef,\n onPointerInTransitChange: React.useCallback((inTransit) => {\n isPointerInTransitRef.current = inTransit;\n }, []),\n disableHoverableContent,\n children\n }\n );\n};\nTooltipProvider.displayName = PROVIDER_NAME;\nvar TOOLTIP_NAME = \"Tooltip\";\nvar [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME);\nvar Tooltip = (props) => {\n const {\n __scopeTooltip,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n disableHoverableContent: disableHoverableContentProp,\n delayDuration: delayDurationProp\n } = props;\n const providerContext = useTooltipProviderContext(TOOLTIP_NAME, props.__scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const [trigger, setTrigger] = React.useState(null);\n const contentId = useId();\n const openTimerRef = React.useRef(0);\n const disableHoverableContent = disableHoverableContentProp ?? providerContext.disableHoverableContent;\n const delayDuration = delayDurationProp ?? providerContext.delayDuration;\n const wasOpenDelayedRef = React.useRef(false);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: (open2) => {\n if (open2) {\n providerContext.onOpen();\n document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));\n } else {\n providerContext.onClose();\n }\n onOpenChange?.(open2);\n },\n caller: TOOLTIP_NAME\n });\n const stateAttribute = React.useMemo(() => {\n return open ? wasOpenDelayedRef.current ? \"delayed-open\" : \"instant-open\" : \"closed\";\n }, [open]);\n const handleOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n wasOpenDelayedRef.current = false;\n setOpen(true);\n }, [setOpen]);\n const handleClose = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n setOpen(false);\n }, [setOpen]);\n const handleDelayedOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = window.setTimeout(() => {\n wasOpenDelayedRef.current = true;\n setOpen(true);\n openTimerRef.current = 0;\n }, delayDuration);\n }, [delayDuration, setOpen]);\n React.useEffect(() => {\n return () => {\n if (openTimerRef.current) {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n };\n }, []);\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n TooltipContextProvider,\n {\n scope: __scopeTooltip,\n contentId,\n open,\n stateAttribute,\n trigger,\n onTriggerChange: setTrigger,\n onTriggerEnter: React.useCallback(() => {\n if (providerContext.isOpenDelayedRef.current) handleDelayedOpen();\n else handleOpen();\n }, [providerContext.isOpenDelayedRef, handleDelayedOpen, handleOpen]),\n onTriggerLeave: React.useCallback(() => {\n if (disableHoverableContent) {\n handleClose();\n } else {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n }, [handleClose, disableHoverableContent]),\n onOpen: handleOpen,\n onClose: handleClose,\n disableHoverableContent,\n children\n }\n ) });\n};\nTooltip.displayName = TOOLTIP_NAME;\nvar TRIGGER_NAME = \"TooltipTrigger\";\nvar TooltipTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTooltip, ...triggerProps } = props;\n const context = useTooltipContext(TRIGGER_NAME, __scopeTooltip);\n const providerContext = useTooltipProviderContext(TRIGGER_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onTriggerChange);\n const isPointerDownRef = React.useRef(false);\n const hasPointerMoveOpenedRef = React.useRef(false);\n const handlePointerUp = React.useCallback(() => isPointerDownRef.current = false, []);\n React.useEffect(() => {\n return () => document.removeEventListener(\"pointerup\", handlePointerUp);\n }, [handlePointerUp]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n \"aria-describedby\": context.open ? context.contentId : void 0,\n \"data-state\": context.stateAttribute,\n ...triggerProps,\n ref: composedRefs,\n onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {\n if (event.pointerType === \"touch\") return;\n if (!hasPointerMoveOpenedRef.current && !providerContext.isPointerInTransitRef.current) {\n context.onTriggerEnter();\n hasPointerMoveOpenedRef.current = true;\n }\n }),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, () => {\n context.onTriggerLeave();\n hasPointerMoveOpenedRef.current = false;\n }),\n onPointerDown: composeEventHandlers(props.onPointerDown, () => {\n if (context.open) {\n context.onClose();\n }\n isPointerDownRef.current = true;\n document.addEventListener(\"pointerup\", handlePointerUp, { once: true });\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n if (!isPointerDownRef.current) context.onOpen();\n }),\n onBlur: composeEventHandlers(props.onBlur, context.onClose),\n onClick: composeEventHandlers(props.onClick, context.onClose)\n }\n ) });\n }\n);\nTooltipTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"TooltipPortal\";\nvar [PortalProvider, usePortalContext] = createTooltipContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar TooltipPortal = (props) => {\n const { __scopeTooltip, forceMount, children, container } = props;\n const context = useTooltipContext(PORTAL_NAME, __scopeTooltip);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeTooltip, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nTooltipPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"TooltipContent\";\nvar TooltipContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeTooltip);\n const { forceMount = portalContext.forceMount, side = \"top\", ...contentProps } = props;\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.disableHoverableContent ? /* @__PURE__ */ jsx(TooltipContentImpl, { side, ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(TooltipContentHoverable, { side, ...contentProps, ref: forwardedRef }) });\n }\n);\nvar TooltipContentHoverable = React.forwardRef((props, forwardedRef) => {\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n const providerContext = useTooltipProviderContext(CONTENT_NAME, props.__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [pointerGraceArea, setPointerGraceArea] = React.useState(null);\n const { trigger, onClose } = context;\n const content = ref.current;\n const { onPointerInTransitChange } = providerContext;\n const handleRemoveGraceArea = React.useCallback(() => {\n setPointerGraceArea(null);\n onPointerInTransitChange(false);\n }, [onPointerInTransitChange]);\n const handleCreateGraceArea = React.useCallback(\n (event, hoverTarget) => {\n const currentTarget = event.currentTarget;\n const exitPoint = { x: event.clientX, y: event.clientY };\n const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());\n const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);\n const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());\n const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints]);\n setPointerGraceArea(graceArea);\n onPointerInTransitChange(true);\n },\n [onPointerInTransitChange]\n );\n React.useEffect(() => {\n return () => handleRemoveGraceArea();\n }, [handleRemoveGraceArea]);\n React.useEffect(() => {\n if (trigger && content) {\n const handleTriggerLeave = (event) => handleCreateGraceArea(event, content);\n const handleContentLeave = (event) => handleCreateGraceArea(event, trigger);\n trigger.addEventListener(\"pointerleave\", handleTriggerLeave);\n content.addEventListener(\"pointerleave\", handleContentLeave);\n return () => {\n trigger.removeEventListener(\"pointerleave\", handleTriggerLeave);\n content.removeEventListener(\"pointerleave\", handleContentLeave);\n };\n }\n }, [trigger, content, handleCreateGraceArea, handleRemoveGraceArea]);\n React.useEffect(() => {\n if (pointerGraceArea) {\n const handleTrackPointerGrace = (event) => {\n const target = event.target;\n const pointerPosition = { x: event.clientX, y: event.clientY };\n const hasEnteredTarget = trigger?.contains(target) || content?.contains(target);\n const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea);\n if (hasEnteredTarget) {\n handleRemoveGraceArea();\n } else if (isPointerOutsideGraceArea) {\n handleRemoveGraceArea();\n onClose();\n }\n };\n document.addEventListener(\"pointermove\", handleTrackPointerGrace);\n return () => document.removeEventListener(\"pointermove\", handleTrackPointerGrace);\n }\n }, [trigger, content, pointerGraceArea, onClose, handleRemoveGraceArea]);\n return /* @__PURE__ */ jsx(TooltipContentImpl, { ...props, ref: composedRefs });\n});\nvar [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] = createTooltipContext(TOOLTIP_NAME, { isInside: false });\nvar Slottable = createSlottable(\"TooltipContent\");\nvar TooltipContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTooltip,\n children,\n \"aria-label\": ariaLabel,\n onEscapeKeyDown,\n onPointerDownOutside,\n ...contentProps\n } = props;\n const context = useTooltipContext(CONTENT_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const { onClose } = context;\n React.useEffect(() => {\n document.addEventListener(TOOLTIP_OPEN, onClose);\n return () => document.removeEventListener(TOOLTIP_OPEN, onClose);\n }, [onClose]);\n React.useEffect(() => {\n if (context.trigger) {\n const handleScroll = (event) => {\n const target = event.target;\n if (target?.contains(context.trigger)) onClose();\n };\n window.addEventListener(\"scroll\", handleScroll, { capture: true });\n return () => window.removeEventListener(\"scroll\", handleScroll, { capture: true });\n }\n }, [context.trigger, onClose]);\n return /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents: false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside: (event) => event.preventDefault(),\n onDismiss: onClose,\n children: /* @__PURE__ */ jsxs(\n PopperPrimitive.Content,\n {\n \"data-state\": context.stateAttribute,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-tooltip-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-tooltip-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-tooltip-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-tooltip-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-tooltip-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n },\n children: [\n /* @__PURE__ */ jsx(Slottable, { children }),\n /* @__PURE__ */ jsx(VisuallyHiddenContentContextProvider, { scope: __scopeTooltip, isInside: true, children: /* @__PURE__ */ jsx(VisuallyHiddenPrimitive.Root, { id: context.contentId, role: \"tooltip\", children: ariaLabel || children }) })\n ]\n }\n )\n }\n );\n }\n);\nTooltipContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"TooltipArrow\";\nvar TooltipArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTooltip, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeTooltip);\n const visuallyHiddenContentContext = useVisuallyHiddenContentContext(\n ARROW_NAME,\n __scopeTooltip\n );\n return visuallyHiddenContentContext.isInside ? null : /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nTooltipArrow.displayName = ARROW_NAME;\nfunction getExitSideFromRect(point, rect) {\n const top = Math.abs(rect.top - point.y);\n const bottom = Math.abs(rect.bottom - point.y);\n const right = Math.abs(rect.right - point.x);\n const left = Math.abs(rect.left - point.x);\n switch (Math.min(top, bottom, right, left)) {\n case left:\n return \"left\";\n case right:\n return \"right\";\n case top:\n return \"top\";\n case bottom:\n return \"bottom\";\n default:\n throw new Error(\"unreachable\");\n }\n}\nfunction getPaddedExitPoints(exitPoint, exitSide, padding = 5) {\n const paddedExitPoints = [];\n switch (exitSide) {\n case \"top\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y + padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"bottom\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y - padding }\n );\n break;\n case \"left\":\n paddedExitPoints.push(\n { x: exitPoint.x + padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"right\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x - padding, y: exitPoint.y + padding }\n );\n break;\n }\n return paddedExitPoints;\n}\nfunction getPointsFromRect(rect) {\n const { top, right, bottom, left } = rect;\n return [\n { x: left, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom }\n ];\n}\nfunction isPointInPolygon(point, polygon) {\n const { x, y } = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const ii = polygon[i];\n const jj = polygon[j];\n const xi = ii.x;\n const yi = ii.y;\n const xj = jj.x;\n const yj = jj.y;\n const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) inside = !inside;\n }\n return inside;\n}\nfunction getHull(points) {\n const newPoints = points.slice();\n newPoints.sort((a, b) => {\n if (a.x < b.x) return -1;\n else if (a.x > b.x) return 1;\n else if (a.y < b.y) return -1;\n else if (a.y > b.y) return 1;\n else return 0;\n });\n return getHullPresorted(newPoints);\n}\nfunction getHullPresorted(points) {\n if (points.length <= 1) return points.slice();\n const upperHull = [];\n for (let i = 0; i < points.length; i++) {\n const p = points[i];\n while (upperHull.length >= 2) {\n const q = upperHull[upperHull.length - 1];\n const r = upperHull[upperHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) upperHull.pop();\n else break;\n }\n upperHull.push(p);\n }\n upperHull.pop();\n const lowerHull = [];\n for (let i = points.length - 1; i >= 0; i--) {\n const p = points[i];\n while (lowerHull.length >= 2) {\n const q = lowerHull[lowerHull.length - 1];\n const r = lowerHull[lowerHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) lowerHull.pop();\n else break;\n }\n lowerHull.push(p);\n }\n lowerHull.pop();\n if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) {\n return upperHull;\n } else {\n return upperHull.concat(lowerHull);\n }\n}\nvar Provider = TooltipProvider;\nvar Root3 = Tooltip;\nvar Trigger = TooltipTrigger;\nvar Portal = TooltipPortal;\nvar Content2 = TooltipContent;\nvar Arrow2 = TooltipArrow;\nexport {\n Arrow2 as Arrow,\n Content2 as Content,\n Portal,\n Provider,\n Root3 as Root,\n Tooltip,\n TooltipArrow,\n TooltipContent,\n TooltipPortal,\n TooltipProvider,\n TooltipTrigger,\n Trigger,\n createTooltipScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\";\n\nexport type TooltipVariants = {\n\tfocus?: \"high\";\n};\n\nexport const TooltipContext = React.createContext<TooltipVariants>({});\n\nexport const useTooltipContext = () => {\n\tconst context = React.useContext(TooltipContext);\n\treturn context;\n};\n","import * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\nimport { tv } from \"tailwind-variants\";\nimport { Icon, IconProps } from \"../icon/Icon\";\nimport { Shortcut } from \"../shortcut\";\nimport { usePortalContainer } from \"../portal-container\";\nimport { VariantsConfig } from \"@/lib/utils/variants\";\nimport { TooltipContext, TooltipVariants, useTooltipContext } from \"./useTooltipContext\";\nimport { Text } from \"@/components/text\";\n\nconst TooltipProvider = TooltipPrimitive.Provider;\n\nconst Tooltip = TooltipPrimitive.Root;\n\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\nconst tooltipArrowStyles = tv({\n\tslots: {\n\t\tfill: \"fill-status-neutral-fg\",\n\t\tstroke: \"stroke-primary-border stroke-[0.5px]\",\n\t\tsvg: \"rotate-180\"\n\t},\n\tvariants: {\n\t\tfocus: {\n\t\t\thigh: {\n\t\t\t\tfill: \"fill-alpha-high-20\",\n\t\t\t\tstroke: \"stroke-none\"\n\t\t\t}\n\t\t}\n\t} satisfies VariantsConfig<TooltipVariants>\n});\n\ntype TooltipArrowProps = React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Arrow>;\n\nconst TooltipArrow = React.forwardRef<React.ElementRef<typeof TooltipPrimitive.Arrow>, TooltipArrowProps>(\n\t({ width, height, className, ...props }, ref) => {\n\t\tconst { focus } = useTooltipContext();\n\t\tconst styles = tooltipArrowStyles({ focus });\n\n\t\treturn (\n\t\t\t<TooltipPrimitive.Arrow ref={ref} asChild {...props}>\n\t\t\t\t<svg\n\t\t\t\t\twidth={width || \"10\"}\n\t\t\t\t\theight={height || \"5\"}\n\t\t\t\t\tviewBox=\"0 0 10 5\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\tclassName={styles.svg({ className })}\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M5.00082 0.248638L10 5.99523L0 6.00001L5.00082 0.248638Z\" className={styles.fill()} />\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M9.57422 5.25L5.37732 0.433047C5.17793 0.204195 4.82228 0.204345 4.62308 0.433365L0.433594 5.25\"\n\t\t\t\t\t\tclassName={styles.stroke()}\n\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</TooltipPrimitive.Arrow>\n\t\t);\n\t}\n);\n\nTooltipArrow.displayName = TooltipPrimitive.Arrow.displayName;\n\nconst tooltipContentStyles = tv({\n\tbase: [\n\t\t\"z-50 rounded-lg border-[0.5px] px-2 py-1.5 text-xs backdrop-blur animate-in fade-in-0 zoom-in-95\",\n\t\t\"border-primary-border bg-alpha-30 text-primary-fg shadow-soft-sm\",\n\t\t\"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n\t\t\"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\"\n\t],\n\tvariants: {\n\t\tfocus: {\n\t\t\thigh: \"border-0 bg-alpha-high-20 text-inverse-primary-fg shadow-soft-base\"\n\t\t}\n\t} satisfies VariantsConfig<TooltipVariants>\n});\n\nexport type TooltipContentProps = React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content> &\n\tTooltipVariants & {\n\t\t/**\n\t\t * Контейнер для портала. Если не указан, используется хук usePortalContainer\n\t\t * для поиска PortalContainer\n\t\t */\n\t\tportalContainer?: HTMLElement;\n\t};\n\nconst TooltipContent = React.forwardRef<React.ElementRef<typeof TooltipPrimitive.Content>, TooltipContentProps>(\n\t({ className, sideOffset = 8, portalContainer, focus, ...props }, ref) => {\n\t\tconst container = usePortalContainer(portalContainer);\n\n\t\treturn (\n\t\t\t<TooltipContext.Provider value={{ focus }}>\n\t\t\t\t<TooltipPrimitive.Portal container={container}>\n\t\t\t\t\t<TooltipPrimitive.Content\n\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\tsideOffset={sideOffset}\n\t\t\t\t\t\tclassName={tooltipContentStyles({ className, focus })}\n\t\t\t\t\t\t{...props}\n\t\t\t\t\t/>\n\t\t\t\t</TooltipPrimitive.Portal>\n\t\t\t</TooltipContext.Provider>\n\t\t);\n\t}\n);\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nconst tooltipTitleStyles = tv({\n\tbase: \"text-sm font-medium text-primary-fg\",\n\tvariants: {\n\t\tfocus: {\n\t\t\thigh: \"text-inverse-primary-fg\"\n\t\t}\n\t} satisfies VariantsConfig<TooltipVariants>\n});\n\ntype TooltipTitleProps = React.HTMLAttributes<HTMLDivElement>;\n\nconst TooltipTitle = React.forwardRef<HTMLDivElement, TooltipTitleProps>(({ className, children, ...props }, ref) => {\n\tconst { focus } = useTooltipContext();\n\treturn (\n\t\t<div ref={ref} className={tooltipTitleStyles({ className, focus })} {...props}>\n\t\t\t{children}\n\t\t</div>\n\t);\n});\nTooltipTitle.displayName = \"TooltipTitle\";\n\nconst tooltipTextStyles = tv({\n\tbase: \"\",\n\tvariants: {\n\t\tfocus: {\n\t\t\thigh: \"text-inverse-secondary-fg\"\n\t\t}\n\t} satisfies VariantsConfig<TooltipVariants>\n});\n\ntype TooltipTextProps = React.HTMLAttributes<HTMLDivElement>;\n\nconst TooltipText = React.forwardRef<HTMLDivElement, TooltipTextProps>(({ className, children, ...props }, ref) => {\n\tconst { focus } = useTooltipContext();\n\treturn (\n\t\t<Text ref={ref} size=\"xs\" className={tooltipTextStyles({ className, focus })} {...props}>\n\t\t\t{children}\n\t\t</Text>\n\t);\n});\nTooltipText.displayName = \"TooltipText\";\n\nconst tooltipIconStyles = tv({\n\tbase: \"flex-shrink-0 text-xs text-primary-fg\",\n\tvariants: {\n\t\tfocus: {\n\t\t\thigh: \"text-inverse-primary-fg\"\n\t\t}\n\t} satisfies VariantsConfig<TooltipVariants>\n});\n\ntype TooltipIconProps = IconProps;\n\nconst TooltipIcon = React.forwardRef<SVGSVGElement, TooltipIconProps>(({ className, ...props }, ref) => {\n\tconst { focus } = useTooltipContext();\n\treturn <Icon size=\"lg\" className={tooltipIconStyles({ className, focus })} ref={ref} {...props} />;\n});\nTooltipIcon.displayName = \"TooltipIcon\";\n\nconst tooltipShortcutStyles = tv({\n\tbase: \"h-auto p-0 text-xs text-muted\",\n\tvariants: {\n\t\tfocus: {\n\t\t\thigh: \"text-inverse-secondary-fg opacity-70\"\n\t\t}\n\t} satisfies VariantsConfig<TooltipVariants>\n});\n\ntype TooltipShortcutProps = React.HTMLAttributes<HTMLDivElement>;\n\nconst TooltipShortcut = React.forwardRef<HTMLDivElement, TooltipShortcutProps>(({ className, ...props }, ref) => {\n\tconst { focus } = useTooltipContext();\n\treturn <Shortcut variant=\"ghost\" className={tooltipShortcutStyles({ className, focus })} ref={ref} {...props} />;\n});\nTooltipShortcut.displayName = \"TooltipShortcut\";\n\nexport {\n\tTooltip,\n\tTooltipTrigger,\n\tTooltipContent,\n\tTooltipArrow,\n\tTooltipProvider,\n\tTooltipTitle,\n\tTooltipText,\n\tTooltipIcon,\n\tTooltipShortcut\n};\n"],"names":["createTooltipContext","createTooltipScope","createContextScope","createPopperScope","usePopperScope","PROVIDER_NAME","DEFAULT_DELAY_DURATION","TOOLTIP_OPEN","TooltipProviderContextProvider","useTooltipProviderContext","TooltipProvider","props","__scopeTooltip","delayDuration","skipDelayDuration","disableHoverableContent","children","isOpenDelayedRef","React","isPointerInTransitRef","skipDelayTimerRef","skipDelayTimer","jsx","inTransit","TOOLTIP_NAME","TooltipContextProvider","useTooltipContext","Tooltip","openProp","defaultOpen","onOpenChange","disableHoverableContentProp","delayDurationProp","providerContext","popperScope","trigger","setTrigger","contentId","useId","openTimerRef","wasOpenDelayedRef","open","setOpen","useControllableState","open2","stateAttribute","handleOpen","handleClose","handleDelayedOpen","PopperPrimitive.Root","TRIGGER_NAME","TooltipTrigger","forwardedRef","triggerProps","context","ref","composedRefs","useComposedRefs","isPointerDownRef","hasPointerMoveOpenedRef","handlePointerUp","PopperPrimitive.Anchor","Primitive","composeEventHandlers","event","PORTAL_NAME","PortalProvider","usePortalContext","TooltipPortal","forceMount","container","Presence","PortalPrimitive","CONTENT_NAME","TooltipContent","portalContext","side","contentProps","TooltipContentImpl","TooltipContentHoverable","pointerGraceArea","setPointerGraceArea","onClose","content","onPointerInTransitChange","handleRemoveGraceArea","handleCreateGraceArea","hoverTarget","currentTarget","exitPoint","exitSide","getExitSideFromRect","paddedExitPoints","getPaddedExitPoints","hoverTargetPoints","getPointsFromRect","graceArea","getHull","handleTriggerLeave","handleContentLeave","handleTrackPointerGrace","target","pointerPosition","hasEnteredTarget","isPointerOutsideGraceArea","isPointInPolygon","VisuallyHiddenContentContextProvider","useVisuallyHiddenContentContext","Slottable","createSlottable","ariaLabel","onEscapeKeyDown","onPointerDownOutside","handleScroll","DismissableLayer","jsxs","PopperPrimitive.Content","VisuallyHiddenPrimitive.Root","ARROW_NAME","TooltipArrow","arrowProps","PopperPrimitive.Arrow","point","rect","top","bottom","right","left","padding","polygon","x","y","inside","j","ii","jj","xi","yi","xj","yj","points","newPoints","a","b","getHullPresorted","upperHull","i","p","q","r","lowerHull","Provider","Root3","Trigger","Portal","Content2","Arrow2","TooltipContext","TooltipPrimitive.Provider","TooltipPrimitive.Root","TooltipPrimitive.Trigger","tooltipArrowStyles","tv","width","height","className","focus","styles","TooltipPrimitive.Arrow","tooltipContentStyles","sideOffset","portalContainer","usePortalContainer","TooltipPrimitive.Portal","TooltipPrimitive.Content","tooltipTitleStyles","TooltipTitle","tooltipTextStyles","TooltipText","Text","tooltipIconStyles","TooltipIcon","Icon","tooltipShortcutStyles","TooltipShortcut","Shortcut"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1 +1 @@
1
- {"version":3,"file":"TriggerButton-CfDObWP9.js","sources":["../src/components/button/trigger-button/TriggerButton.tsx"],"sourcesContent":["import React, { PropsWithChildren } from \"react\";\r\nimport { tv } from \"tailwind-variants\";\r\nimport { VariantsConfig } from \"@/lib/utils/variants\";\r\nimport { Button, ButtonProps } from \"../button/Button\";\r\n\r\nexport interface TriggerButtonVariants {\r\n\tvariant?: \"outline\" | \"ghost\" | \"text\";\r\n}\r\n\r\nconst triggerButtonVariants = tv({\r\n\tbase: \"\",\r\n\tvariants: {\r\n\t\tvariant: {\r\n\t\t\toutline:\r\n\t\t\t\t\"data-[state=open]:bg-secondary-bg-hover data-[state=open]:shadow-none active:data-[state=open]:bg-secondary-bg-hover lg:hover:data-[state=open]:bg-secondary-bg-hover\",\r\n\t\t\tghost:\r\n\t\t\t\t\"data-[state=open]:bg-secondary-bg-hover data-[state=open]:shadow-none active:data-[state=open]:bg-secondary-bg-hover lg:hover:data-[state=open]:bg-secondary-bg-hover\",\r\n\t\t\ttext: \"data-[state=open]:text-secondary-fg\"\r\n\t\t}\r\n\t} satisfies VariantsConfig<TriggerButtonVariants>,\r\n\tdefaultVariants: {\r\n\t\tvariant: \"outline\"\r\n\t}\r\n});\r\n\r\nexport type TriggerButtonProps = Omit<ButtonProps, \"variant\" | \"status\"> &\r\n\tTriggerButtonVariants & {\r\n\t\t\"data-state\"?: \"open\" | \"closed\";\r\n\t};\r\n\r\nexport const TriggerButton = React.forwardRef<HTMLButtonElement, PropsWithChildren<TriggerButtonProps>>(\r\n\t({ className, children, variant, ...props }, ref) => {\r\n\t\treturn (\r\n\t\t\t<Button\r\n\t\t\t\tvariant={variant || \"outline\"}\r\n\t\t\t\tclassName={triggerButtonVariants({ className, variant })}\r\n\t\t\t\tref={ref}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t{children}\r\n\t\t\t</Button>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nTriggerButton.displayName = \"TriggerButton\";\r\n"],"names":["triggerButtonVariants","tv","TriggerButton","React","className","children","variant","props","ref","jsx","Button"],"mappings":";;;;AASA,MAAMA,IAAwBC,EAAG;AAAA,EAChC,MAAM;AAAA,EACN,UAAU;AAAA,IACT,SAAS;AAAA,MACR,SACC;AAAA,MACD,OACC;AAAA,MACD,MAAM;AAAA,IAAA;AAAA,EAER;AAAA,EACA,iBAAiB;AAAA,IAChB,SAAS;AAAA,EAAA;AAEX,CAAC,GAOYC,IAAgBC,EAAM;AAAA,EAClC,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,SAAAC,GAAS,GAAGC,KAASC,MAE3C,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACA,SAASJ,KAAW;AAAA,MACpB,WAAWN,EAAsB,EAAE,WAAAI,GAAW,SAAAE,GAAS;AAAA,MACvD,KAAAE;AAAA,MACC,GAAGD;AAAA,MAEH,UAAAF;AAAA,IAAA;AAAA,EACF;AAGH;AAEAH,EAAc,cAAc;"}
1
+ {"version":3,"file":"TriggerButton-CfDObWP9.js","sources":["../src/components/button/trigger-button/TriggerButton.tsx"],"sourcesContent":["import React, { PropsWithChildren } from \"react\";\nimport { tv } from \"tailwind-variants\";\nimport { VariantsConfig } from \"@/lib/utils/variants\";\nimport { Button, ButtonProps } from \"../button/Button\";\n\nexport interface TriggerButtonVariants {\n\tvariant?: \"outline\" | \"ghost\" | \"text\";\n}\n\nconst triggerButtonVariants = tv({\n\tbase: \"\",\n\tvariants: {\n\t\tvariant: {\n\t\t\toutline:\n\t\t\t\t\"data-[state=open]:bg-secondary-bg-hover data-[state=open]:shadow-none active:data-[state=open]:bg-secondary-bg-hover lg:hover:data-[state=open]:bg-secondary-bg-hover\",\n\t\t\tghost:\n\t\t\t\t\"data-[state=open]:bg-secondary-bg-hover data-[state=open]:shadow-none active:data-[state=open]:bg-secondary-bg-hover lg:hover:data-[state=open]:bg-secondary-bg-hover\",\n\t\t\ttext: \"data-[state=open]:text-secondary-fg\"\n\t\t}\n\t} satisfies VariantsConfig<TriggerButtonVariants>,\n\tdefaultVariants: {\n\t\tvariant: \"outline\"\n\t}\n});\n\nexport type TriggerButtonProps = Omit<ButtonProps, \"variant\" | \"status\"> &\n\tTriggerButtonVariants & {\n\t\t\"data-state\"?: \"open\" | \"closed\";\n\t};\n\nexport const TriggerButton = React.forwardRef<HTMLButtonElement, PropsWithChildren<TriggerButtonProps>>(\n\t({ className, children, variant, ...props }, ref) => {\n\t\treturn (\n\t\t\t<Button\n\t\t\t\tvariant={variant || \"outline\"}\n\t\t\t\tclassName={triggerButtonVariants({ className, variant })}\n\t\t\t\tref={ref}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</Button>\n\t\t);\n\t}\n);\n\nTriggerButton.displayName = \"TriggerButton\";\n"],"names":["triggerButtonVariants","tv","TriggerButton","React","className","children","variant","props","ref","jsx","Button"],"mappings":";;;;AASA,MAAMA,IAAwBC,EAAG;AAAA,EAChC,MAAM;AAAA,EACN,UAAU;AAAA,IACT,SAAS;AAAA,MACR,SACC;AAAA,MACD,OACC;AAAA,MACD,MAAM;AAAA,IAAA;AAAA,EAER;AAAA,EACA,iBAAiB;AAAA,IAChB,SAAS;AAAA,EAAA;AAEX,CAAC,GAOYC,IAAgBC,EAAM;AAAA,EAClC,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,SAAAC,GAAS,GAAGC,KAASC,MAE3C,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACA,SAASJ,KAAW;AAAA,MACpB,WAAWN,EAAsB,EAAE,WAAAI,GAAW,SAAAE,GAAS;AAAA,MACvD,KAAAE;AAAA,MACC,GAAGD;AAAA,MAEH,UAAAF;AAAA,IAAA;AAAA,EACF;AAGH;AAEAH,EAAc,cAAc;"}
@@ -3,7 +3,7 @@ var z = (t, o, n) => o in t ? $(t, o, { enumerable: !0, configurable: !0, writab
3
3
  var P = (t, o, n) => z(t, typeof o != "symbol" ? o + "" : o, n);
4
4
  import { jsx as a, jsxs as x } from "react/jsx-runtime";
5
5
  import S, { useMemo as N, useState as O, useCallback as B } from "react";
6
- import { a as D, F as L, g as R } from "../../FormStack-B4QOuYgO.js";
6
+ import { a as D, F as L, g as R } from "../../FormStack-DO15vBgd.js";
7
7
  import { s as G } from "../../zod-BMNoK3aM.js";
8
8
  import { e as V } from "../../index.esm-CXA6i4d7.js";
9
9
  import { z as v } from "../../vendors/zod.js";