ics-ui-kit 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -36
- package/dist/AlertContext-CxjW1LVL.js.map +1 -1
- package/dist/AlertIcon-5B6AgZpe.js.map +1 -1
- package/dist/Button-Dg89xRSi.js.map +1 -1
- package/dist/ButtonBase-e6qyv6mD.js.map +1 -1
- package/dist/CheckboxField-cX09-eBX.js.map +1 -1
- package/dist/Command-BhbfL5wm.js.map +1 -1
- package/dist/ComponentVariantProvider-B0SFUaXB.js.map +1 -1
- package/dist/Description-BTPMlTT-.js.map +1 -1
- package/dist/Dialog-ByiJIDhl.js.map +1 -1
- package/dist/Divider-DPW5ZhZ8.js.map +1 -1
- package/dist/EmptyState-DRKjscH-.js.map +1 -1
- package/dist/ErrorState-B26k67-z.js.map +1 -1
- package/dist/FeatureIcon-BGE0Orkc.js.map +1 -1
- package/dist/{Field-CKl59qUB.js → Field-BiIWtq9o.js} +13 -13
- package/dist/Field-BiIWtq9o.js.map +1 -0
- package/dist/FieldLabel-QJ4rJFOi.js.map +1 -1
- package/dist/FolderSvg-cw0DxNVy.js.map +1 -1
- package/dist/FormFooterTemplate-DPB6Dkxn.js.map +1 -1
- package/dist/FormHeader--F6b2aRk.js.map +1 -1
- package/dist/{FormStack-B4QOuYgO.js → FormStack-DO15vBgd.js} +2 -2
- package/dist/FormStack-DO15vBgd.js.map +1 -0
- package/dist/HintState-BxrCAWqq.js.map +1 -1
- package/dist/Icon-DH3ev9GK.js.map +1 -1
- package/dist/IconButton-DwkpNgn3.js.map +1 -1
- package/dist/IconTooltip-CKJKGHbk.js.map +1 -1
- package/dist/Indicator-AqxHWPA9.js.map +1 -1
- package/dist/InputGroup-BvD9Igmt.js.map +1 -1
- package/dist/InputOTP-B2e1nfSO.js.map +1 -1
- package/dist/Loader-BpHiL6W-.js.map +1 -1
- package/dist/MenuItem-pvsONHlh.js.map +1 -1
- package/dist/MenuItemShortcut-DgPol9Nz.js.map +1 -1
- package/dist/MenuItemText-7uPl9P3z.js.map +1 -1
- package/dist/Overlay-2XMlxApi.js.map +1 -1
- package/dist/Popover-Dvr7y0YY.js.map +1 -1
- package/dist/RichButton-DuPTenmS.js.map +1 -1
- package/dist/ScrollArea-CuuTeDn3.js.map +1 -1
- package/dist/ScrollShadowContainer-DdrnF8qU.js.map +1 -1
- package/dist/SearchSelectTag-DFCX9zT1.js.map +1 -1
- package/dist/Select-DRwv6-eZ.js.map +1 -1
- package/dist/Sheet-rtwmzm2-.js.map +1 -1
- package/dist/Shortcut-D8L15_ed.js.map +1 -1
- package/dist/Skeleton-y6I-i9q5.js.map +1 -1
- package/dist/Tag-DdHXTyKF.js.map +1 -1
- package/dist/Text-DeBE8AKl.js.map +1 -1
- package/dist/TextInput-Cj50ImXi.js.map +1 -1
- package/dist/TextOverflowTooltip-DlUgic5y.js.map +1 -1
- package/dist/Toggle-v_HT3Gm2.js.map +1 -1
- package/dist/Tooltip-C4rVuWr4.js.map +1 -1
- package/dist/TriggerButton-CfDObWP9.js.map +1 -1
- package/dist/blocks/auth/otp-form.js +1 -1
- package/dist/blocks/auth/otp-form.js.map +1 -1
- package/dist/cn-dsXlqdJg.js.map +1 -1
- package/dist/components/alert-dialog.js.map +1 -1
- package/dist/components/alert.js.map +1 -1
- package/dist/components/avatar.js.map +1 -1
- package/dist/components/badge.js.map +1 -1
- package/dist/components/banner.js.map +1 -1
- package/dist/components/breadcrumb.js.map +1 -1
- package/dist/components/button.js.map +1 -1
- package/dist/components/calendar.js.map +1 -1
- package/dist/components/card.js.map +1 -1
- package/dist/components/carousel.js.map +1 -1
- package/dist/components/collapsible.js.map +1 -1
- package/dist/components/color-tile.js.map +1 -1
- package/dist/components/container.js.map +1 -1
- package/dist/components/counter.js.map +1 -1
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/divider.js.map +1 -1
- package/dist/components/drawer.js.map +1 -1
- package/dist/components/dropdown.js.map +1 -1
- package/dist/components/error-state.js.map +1 -1
- package/dist/components/field.js +1 -1
- package/dist/components/file-upload.js.map +1 -1
- package/dist/components/form.js +2 -2
- package/dist/components/form.js.map +1 -1
- package/dist/components/image-placeholder.js.map +1 -1
- package/dist/components/image-preview.js.map +1 -1
- package/dist/components/image-uploader.js.map +1 -1
- package/dist/components/input.js.map +1 -1
- package/dist/components/menu-item.js.map +1 -1
- package/dist/components/page-state.js.map +1 -1
- package/dist/components/portal-container.js.map +1 -1
- package/dist/components/progress-circle.js.map +1 -1
- package/dist/components/progress.js.map +1 -1
- package/dist/components/prose.js.map +1 -1
- package/dist/components/radio-group.js.map +1 -1
- package/dist/components/resizable.js.map +1 -1
- package/dist/components/scheduler.js.map +1 -1
- package/dist/components/search-select.js.map +1 -1
- package/dist/components/sidebar.js.map +1 -1
- package/dist/components/slider.js.map +1 -1
- package/dist/components/stepper.js.map +1 -1
- package/dist/components/switch.js.map +1 -1
- package/dist/components/system-state.js.map +1 -1
- package/dist/components/table.js.map +1 -1
- package/dist/components/tabs.js.map +1 -1
- package/dist/components/tag-input.js.map +1 -1
- package/dist/components/textarea.js.map +1 -1
- package/dist/components/timer.js.map +1 -1
- package/dist/components/toast.js.map +1 -1
- package/dist/components/toggle-group.js.map +1 -1
- package/dist/components/toolbar.js.map +1 -1
- package/dist/index-0ioNhtNM.js.map +1 -1
- package/dist/index-437EL2iq.js.map +1 -1
- package/dist/index-BGQepRFJ.js.map +1 -1
- package/dist/index-BVqs-uqP.js.map +1 -1
- package/dist/index-BZPx6jYI.js.map +1 -1
- package/dist/index-Bb23HztA.js.map +1 -1
- package/dist/index-BpWB3aFK.js.map +1 -1
- package/dist/index-ByaXH_ih.js.map +1 -1
- package/dist/index-BzCriPiK.js.map +1 -1
- package/dist/index-CCKe-Mpx.js.map +1 -1
- package/dist/index-CFaU3UXv.js.map +1 -1
- package/dist/index-CLuiUUQ8.js.map +1 -1
- package/dist/index-CQD-Njgt.js.map +1 -1
- package/dist/index-CmBeyp2d.js.map +1 -1
- package/dist/index-DFZozV_h.js.map +1 -1
- package/dist/index-DHsfW5Rj.js.map +1 -1
- package/dist/index-DHyZ_0Ut.js.map +1 -1
- package/dist/index-DLcqcWxM.js.map +1 -1
- package/dist/index-DRo26PBK.js.map +1 -1
- package/dist/index-DnnQs07z.js.map +1 -1
- package/dist/index-Uiy0Xwy2.js.map +1 -1
- package/dist/index-_ITz1IyW.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/inputBaseStyles-DbzD_jvq.js.map +1 -1
- package/dist/lib/utils.js.map +1 -1
- package/dist/styles-scoped.css +6293 -6265
- package/dist/styles.css +6032 -6004
- package/dist/theme.css +354 -329
- package/dist/types/css.d.ts +4 -4
- package/dist/useBreakpoints-D8wKOvil.js.map +1 -1
- package/dist/useDebounce-BRah78CF.js.map +1 -1
- package/dist/useFileUpload-iDag0iqM.js.map +1 -1
- package/dist/useItemsKeyboardNavigation-CmeOR30y.js.map +1 -1
- package/dist/useMergeRefs-qoKniYqT.js.map +1 -1
- package/dist/usePortalContainer-ae6EzS08.js.map +1 -1
- package/dist/vendors/tanstack/react-table.js.map +1 -1
- package/dist/zod-BMNoK3aM.js.map +1 -1
- package/package.json +1 -1
- package/tailwind.preset.js +444 -444
- package/dist/Field-CKl59qUB.js.map +0 -1
- package/dist/FormStack-B4QOuYgO.js.map +0 -1
- package/dist/design-tokens.source.json +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switch.js","sources":["../../node_modules/.pnpm/@radix-ui+react-switch@1.2._f3fb04ca0cb9718d2dd2dba40e11ef1d/node_modules/@radix-ui/react-switch/dist/index.mjs","../../src/components/switch/Switch.tsx","../../src/components/switch/switch-field/SwitchField.tsx"],"sourcesContent":["\"use client\";\n\n// src/switch.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 { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar SWITCH_NAME = \"Switch\";\nvar [createSwitchContext, createSwitchScope] = createContextScope(SWITCH_NAME);\nvar [SwitchProvider, useSwitchContext] = createSwitchContext(SWITCH_NAME);\nvar Switch = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSwitch,\n name,\n checked: checkedProp,\n defaultChecked,\n required,\n disabled,\n value = \"on\",\n onCheckedChange,\n form,\n ...switchProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: SWITCH_NAME\n });\n return /* @__PURE__ */ jsxs(SwitchProvider, { scope: __scopeSwitch, checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"switch\",\n \"aria-checked\": checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...switchProps,\n ref: composedRefs,\n onClick: composeEventHandlers(props.onClick, (event) => {\n setChecked((prevChecked) => !prevChecked);\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n SwitchBubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" }\n }\n )\n ] });\n }\n);\nSwitch.displayName = SWITCH_NAME;\nvar THUMB_NAME = \"SwitchThumb\";\nvar SwitchThumb = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSwitch, ...thumbProps } = props;\n const context = useSwitchContext(THUMB_NAME, __scopeSwitch);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...thumbProps,\n ref: forwardedRef\n }\n );\n }\n);\nSwitchThumb.displayName = THUMB_NAME;\nvar BUBBLE_INPUT_NAME = \"SwitchBubbleInput\";\nvar SwitchBubbleInput = React.forwardRef(\n ({\n __scopeSwitch,\n control,\n checked,\n bubbles = true,\n ...props\n }, forwardedRef) => {\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n return /* @__PURE__ */ jsx(\n \"input\",\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: checked,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n }\n);\nSwitchBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\nvar Root = Switch;\nvar Thumb = SwitchThumb;\nexport {\n Root,\n Switch,\n SwitchThumb,\n Thumb,\n createSwitchScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\";\r\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\";\r\nimport { tv } from \"tailwind-variants\";\r\nimport { VariantsConfig } from \"@/lib/utils/variants\";\r\nimport { useComponentVariant } from \"@/providers/component-variant-context\";\r\n\r\nexport interface SwitchVariants {\r\n\tsize?: \"xs\" | \"sm\" | \"md\";\r\n\ttheme?: \"inverse\";\r\n}\r\n\r\n/**\r\n * Варианты стилей для компонента Switch\r\n */\r\nconst switchStyles = tv({\r\n\tslots: {\r\n\t\troot: [\r\n\t\t\t\"peer relative inline-flex shrink-0 cursor-pointer items-center rounded-full\",\r\n\t\t\t\"transition-colors\",\r\n\t\t\t\"focus-visible:border-tertiary-accent focus-visible:shadow-focus focus-visible:outline-none\",\r\n\t\t\t\"disabled:cursor-not-allowed disabled:opacity-50\",\r\n\t\t\t\"data-[state=checked]:bg-primary-accent data-[state=unchecked]:bg-secondary-border\",\r\n\t\t\t\"data-[state=checked]:hover:enabled:bg-primary-accent-hover\",\r\n\t\t\t\"data-[state=unchecked]:hover:enabled:bg-primary-border\"\r\n\t\t],\r\n\t\tthumb: \"rounded-full bg-secondary-bg shadow-soft-base transition-transform\"\r\n\t},\r\n\tvariants: {\r\n\t\tsize: {\r\n\t\t\txs: {\r\n\t\t\t\troot: \"h-4 w-7\",\r\n\t\t\t\tthumb: \"h-3 w-3 data-[state=checked]:translate-x-[14px] data-[state=unchecked]:translate-x-0.5\"\r\n\t\t\t},\r\n\t\t\tsm: {\r\n\t\t\t\troot: \"h-5 w-9\",\r\n\t\t\t\tthumb: \"h-4 w-4 data-[state=checked]:translate-x-[18px] data-[state=unchecked]:translate-x-0.5\"\r\n\t\t\t},\r\n\t\t\tmd: {\r\n\t\t\t\troot: \"h-6 w-11\",\r\n\t\t\t\tthumb: \"h-5 w-5 data-[state=checked]:translate-x-[22px] data-[state=unchecked]:translate-x-0.5\"\r\n\t\t\t}\r\n\t\t},\r\n\t\ttheme: {\r\n\t\t\tinverse: {\r\n\t\t\t\troot: [\r\n\t\t\t\t\t\"focus-visible:shadow-inverse-focus\",\r\n\t\t\t\t\t\"data-[state=unchecked]:bg-inverse-active data-[state=unchecked]:hover:enabled:bg-inverse-muted\",\r\n\t\t\t\t\t\"data-[state=checked]:bg-inverse-primary-fg data-[state=checked]:hover:enabled:bg-inverse-secondary-fg\"\r\n\t\t\t\t],\r\n\t\t\t\tthumb: \"bg-inverse-primary-bg\"\r\n\t\t\t}\r\n\t\t}\r\n\t} satisfies VariantsConfig<SwitchVariants>,\r\n\tdefaultVariants: {\r\n\t\tsize: \"md\"\r\n\t}\r\n});\r\n\r\nexport type SwitchProps = React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root> & SwitchVariants;\r\n\r\nconst Switch = React.forwardRef<React.ElementRef<typeof SwitchPrimitives.Root>, SwitchProps>(\r\n\t({ className, size, ...props }, ref) => {\r\n\t\tconst { variant: theme } = useComponentVariant();\r\n\t\tconst { root, thumb } = switchStyles({ size, theme });\r\n\r\n\t\treturn (\r\n\t\t\t<SwitchPrimitives.Root className={root({ className })} {...props} ref={ref}>\r\n\t\t\t\t<SwitchPrimitives.Thumb className={thumb()} />\r\n\t\t\t</SwitchPrimitives.Root>\r\n\t\t);\r\n\t}\r\n);\r\nSwitch.displayName = SwitchPrimitives.Root.displayName;\r\n\r\nexport { Switch };\r\n","import * as SwitchPrimitives from \"@radix-ui/react-checkbox\";\r\nimport { tv } from \"tailwind-variants\";\r\nimport React, { useId } from \"react\";\r\nimport { FieldLabel } from \"@/components/label\";\r\nimport { Description } from \"@/components/description\";\r\nimport { Switch, SwitchProps } from \"../Switch\";\r\nimport { VariantsConfig } from \"@/lib/utils/variants\";\r\n\r\nexport interface SwitchFieldVariants {\r\n\toutline?: boolean;\r\n\talignment?: \"left\" | \"right\";\r\n\tdisabled?: boolean;\r\n\terror?: boolean;\r\n}\r\n\r\nconst switchFieldStyles = tv({\r\n\tslots: {\r\n\t\tcontainer: \"flex cursor-pointer items-center gap-3\",\r\n\t\ttextContainer: \"flex flex-col gap-1\",\r\n\t\tlabelWrapper: \"flex h-4 items-center\",\r\n\t\tlabel: \"cursor-pointer\"\r\n\t},\r\n\tvariants: {\r\n\t\toutline: {\r\n\t\t\ttrue: {\r\n\t\t\t\tcontainer: \"rounded-lg border border-secondary-border p-3 px-4\"\r\n\t\t\t}\r\n\t\t},\r\n\t\tdisabled: {\r\n\t\t\ttrue: {\r\n\t\t\t\tcontainer: \"cursor-default\",\r\n\t\t\t\ttextContainer: \"opacity-50\",\r\n\t\t\t\tlabel: \"cursor-default text-primary-fg\",\r\n\t\t\t\tdescription: \"text-muted\"\r\n\t\t\t}\r\n\t\t},\r\n\t\terror: {\r\n\t\t\ttrue: {\r\n\t\t\t\tlabel: \"text-status-error\"\r\n\t\t\t}\r\n\t\t},\r\n\t\talignment: {\r\n\t\t\tleft: {},\r\n\t\t\tright: {\r\n\t\t\t\tcontainer: \"flex-row-reverse space-x-reverse\"\r\n\t\t\t}\r\n\t\t},\r\n\t\twithDescription: { true: { container: \"items-start\" } }\r\n\t} satisfies VariantsConfig<SwitchFieldVariants & { withDescription?: boolean }>,\r\n\tdefaultVariants: {\r\n\t\talignment: \"left\"\r\n\t}\r\n});\r\n\r\ntype SwitchFieldProps = SwitchProps &\r\n\tSwitchFieldVariants & {\r\n\t\tlabel?: string | React.ReactNode;\r\n\t\tdescription?: string;\r\n\t};\r\n\r\nconst SwitchField = React.forwardRef<React.ElementRef<typeof SwitchPrimitives.Root>, SwitchFieldProps>(\r\n\t({ className, id, label, alignment: alignment, error, disabled, outline, description, ...props }, ref) => {\r\n\t\tconst {\r\n\t\t\tcontainer,\r\n\t\t\ttextContainer,\r\n\t\t\tlabel: labelStyles,\r\n\t\t\tlabelWrapper\r\n\t\t} = switchFieldStyles({ alignment, error, disabled, outline, withDescription: !!description });\r\n\r\n\t\tconst generatedId = useId();\r\n\t\tconst switchId = id || `switch-${generatedId}`;\r\n\r\n\t\treturn (\r\n\t\t\t<label htmlFor={switchId} className={container({ class: className })}>\r\n\t\t\t\t<Switch disabled={disabled} id={switchId} {...props} ref={ref} />\r\n\t\t\t\t{(label || description) && (\r\n\t\t\t\t\t<div className={textContainer()}>\r\n\t\t\t\t\t\t{label && (\r\n\t\t\t\t\t\t\t<div className={labelWrapper()}>\r\n\t\t\t\t\t\t\t\t<FieldLabel htmlFor={switchId} className={labelStyles()}>\r\n\t\t\t\t\t\t\t\t\t{label}\r\n\t\t\t\t\t\t\t\t</FieldLabel>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{description && <Description size=\"xs\">{description}</Description>}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t)}\r\n\t\t\t</label>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nSwitchField.displayName = \"SwitchField\";\r\n\r\nexport { SwitchField };\r\n"],"names":["SWITCH_NAME","createSwitchContext","createSwitchScope","createContextScope","SwitchProvider","useSwitchContext","Switch","React","props","forwardedRef","__scopeSwitch","name","checkedProp","defaultChecked","required","disabled","value","onCheckedChange","form","switchProps","button","setButton","composedRefs","useComposedRefs","node","hasConsumerStoppedPropagationRef","isFormControl","checked","setChecked","useControllableState","jsxs","jsx","Primitive","getState","composeEventHandlers","event","prevChecked","SwitchBubbleInput","THUMB_NAME","SwitchThumb","thumbProps","context","BUBBLE_INPUT_NAME","control","bubbles","ref","usePrevious","controlSize","useSize","input","inputProto","Root","Thumb","switchStyles","tv","className","size","theme","useComponentVariant","root","thumb","SwitchPrimitives.Root","SwitchPrimitives.Thumb","switchFieldStyles","SwitchField","id","label","alignment","error","outline","description","container","textContainer","labelStyles","labelWrapper","generatedId","useId","switchId","FieldLabel","Description"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"switch.js","sources":["../../node_modules/.pnpm/@radix-ui+react-switch@1.2.6_@types+react-dom@18.3.6_@types+react@18.3.20__@types+react_f3fb04ca0cb9718d2dd2dba40e11ef1d/node_modules/@radix-ui/react-switch/dist/index.mjs","../../src/components/switch/Switch.tsx","../../src/components/switch/switch-field/SwitchField.tsx"],"sourcesContent":["\"use client\";\n\n// src/switch.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 { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar SWITCH_NAME = \"Switch\";\nvar [createSwitchContext, createSwitchScope] = createContextScope(SWITCH_NAME);\nvar [SwitchProvider, useSwitchContext] = createSwitchContext(SWITCH_NAME);\nvar Switch = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSwitch,\n name,\n checked: checkedProp,\n defaultChecked,\n required,\n disabled,\n value = \"on\",\n onCheckedChange,\n form,\n ...switchProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: SWITCH_NAME\n });\n return /* @__PURE__ */ jsxs(SwitchProvider, { scope: __scopeSwitch, checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"switch\",\n \"aria-checked\": checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...switchProps,\n ref: composedRefs,\n onClick: composeEventHandlers(props.onClick, (event) => {\n setChecked((prevChecked) => !prevChecked);\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n SwitchBubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" }\n }\n )\n ] });\n }\n);\nSwitch.displayName = SWITCH_NAME;\nvar THUMB_NAME = \"SwitchThumb\";\nvar SwitchThumb = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSwitch, ...thumbProps } = props;\n const context = useSwitchContext(THUMB_NAME, __scopeSwitch);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...thumbProps,\n ref: forwardedRef\n }\n );\n }\n);\nSwitchThumb.displayName = THUMB_NAME;\nvar BUBBLE_INPUT_NAME = \"SwitchBubbleInput\";\nvar SwitchBubbleInput = React.forwardRef(\n ({\n __scopeSwitch,\n control,\n checked,\n bubbles = true,\n ...props\n }, forwardedRef) => {\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n return /* @__PURE__ */ jsx(\n \"input\",\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: checked,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n }\n);\nSwitchBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\nvar Root = Switch;\nvar Thumb = SwitchThumb;\nexport {\n Root,\n Switch,\n SwitchThumb,\n Thumb,\n createSwitchScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\";\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\";\nimport { tv } from \"tailwind-variants\";\nimport { VariantsConfig } from \"@/lib/utils/variants\";\nimport { useComponentVariant } from \"@/providers/component-variant-context\";\n\nexport interface SwitchVariants {\n\tsize?: \"xs\" | \"sm\" | \"md\";\n\ttheme?: \"inverse\";\n}\n\n/**\n * Варианты стилей для компонента Switch\n */\nconst switchStyles = tv({\n\tslots: {\n\t\troot: [\n\t\t\t\"peer relative inline-flex shrink-0 cursor-pointer items-center rounded-full\",\n\t\t\t\"transition-colors\",\n\t\t\t\"focus-visible:border-tertiary-accent focus-visible:shadow-focus focus-visible:outline-none\",\n\t\t\t\"disabled:cursor-not-allowed disabled:opacity-50\",\n\t\t\t\"data-[state=checked]:bg-primary-accent data-[state=unchecked]:bg-secondary-border\",\n\t\t\t\"data-[state=checked]:hover:enabled:bg-primary-accent-hover\",\n\t\t\t\"data-[state=unchecked]:hover:enabled:bg-primary-border\"\n\t\t],\n\t\tthumb: \"rounded-full bg-secondary-bg shadow-soft-base transition-transform\"\n\t},\n\tvariants: {\n\t\tsize: {\n\t\t\txs: {\n\t\t\t\troot: \"h-4 w-7\",\n\t\t\t\tthumb: \"h-3 w-3 data-[state=checked]:translate-x-[14px] data-[state=unchecked]:translate-x-0.5\"\n\t\t\t},\n\t\t\tsm: {\n\t\t\t\troot: \"h-5 w-9\",\n\t\t\t\tthumb: \"h-4 w-4 data-[state=checked]:translate-x-[18px] data-[state=unchecked]:translate-x-0.5\"\n\t\t\t},\n\t\t\tmd: {\n\t\t\t\troot: \"h-6 w-11\",\n\t\t\t\tthumb: \"h-5 w-5 data-[state=checked]:translate-x-[22px] data-[state=unchecked]:translate-x-0.5\"\n\t\t\t}\n\t\t},\n\t\ttheme: {\n\t\t\tinverse: {\n\t\t\t\troot: [\n\t\t\t\t\t\"focus-visible:shadow-inverse-focus\",\n\t\t\t\t\t\"data-[state=unchecked]:bg-inverse-active data-[state=unchecked]:hover:enabled:bg-inverse-muted\",\n\t\t\t\t\t\"data-[state=checked]:bg-inverse-primary-fg data-[state=checked]:hover:enabled:bg-inverse-secondary-fg\"\n\t\t\t\t],\n\t\t\t\tthumb: \"bg-inverse-primary-bg\"\n\t\t\t}\n\t\t}\n\t} satisfies VariantsConfig<SwitchVariants>,\n\tdefaultVariants: {\n\t\tsize: \"md\"\n\t}\n});\n\nexport type SwitchProps = React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root> & SwitchVariants;\n\nconst Switch = React.forwardRef<React.ElementRef<typeof SwitchPrimitives.Root>, SwitchProps>(\n\t({ className, size, ...props }, ref) => {\n\t\tconst { variant: theme } = useComponentVariant();\n\t\tconst { root, thumb } = switchStyles({ size, theme });\n\n\t\treturn (\n\t\t\t<SwitchPrimitives.Root className={root({ className })} {...props} ref={ref}>\n\t\t\t\t<SwitchPrimitives.Thumb className={thumb()} />\n\t\t\t</SwitchPrimitives.Root>\n\t\t);\n\t}\n);\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n","import * as SwitchPrimitives from \"@radix-ui/react-checkbox\";\nimport { tv } from \"tailwind-variants\";\nimport React, { useId } from \"react\";\nimport { FieldLabel } from \"@/components/label\";\nimport { Description } from \"@/components/description\";\nimport { Switch, SwitchProps } from \"../Switch\";\nimport { VariantsConfig } from \"@/lib/utils/variants\";\n\nexport interface SwitchFieldVariants {\n\toutline?: boolean;\n\talignment?: \"left\" | \"right\";\n\tdisabled?: boolean;\n\terror?: boolean;\n}\n\nconst switchFieldStyles = tv({\n\tslots: {\n\t\tcontainer: \"flex cursor-pointer items-center gap-3\",\n\t\ttextContainer: \"flex flex-col gap-1\",\n\t\tlabelWrapper: \"flex h-4 items-center\",\n\t\tlabel: \"cursor-pointer\"\n\t},\n\tvariants: {\n\t\toutline: {\n\t\t\ttrue: {\n\t\t\t\tcontainer: \"rounded-lg border border-secondary-border p-3 px-4\"\n\t\t\t}\n\t\t},\n\t\tdisabled: {\n\t\t\ttrue: {\n\t\t\t\tcontainer: \"cursor-default\",\n\t\t\t\ttextContainer: \"opacity-50\",\n\t\t\t\tlabel: \"cursor-default text-primary-fg\",\n\t\t\t\tdescription: \"text-muted\"\n\t\t\t}\n\t\t},\n\t\terror: {\n\t\t\ttrue: {\n\t\t\t\tlabel: \"text-status-error\"\n\t\t\t}\n\t\t},\n\t\talignment: {\n\t\t\tleft: {},\n\t\t\tright: {\n\t\t\t\tcontainer: \"flex-row-reverse space-x-reverse\"\n\t\t\t}\n\t\t},\n\t\twithDescription: { true: { container: \"items-start\" } }\n\t} satisfies VariantsConfig<SwitchFieldVariants & { withDescription?: boolean }>,\n\tdefaultVariants: {\n\t\talignment: \"left\"\n\t}\n});\n\ntype SwitchFieldProps = SwitchProps &\n\tSwitchFieldVariants & {\n\t\tlabel?: string | React.ReactNode;\n\t\tdescription?: string;\n\t};\n\nconst SwitchField = React.forwardRef<React.ElementRef<typeof SwitchPrimitives.Root>, SwitchFieldProps>(\n\t({ className, id, label, alignment: alignment, error, disabled, outline, description, ...props }, ref) => {\n\t\tconst {\n\t\t\tcontainer,\n\t\t\ttextContainer,\n\t\t\tlabel: labelStyles,\n\t\t\tlabelWrapper\n\t\t} = switchFieldStyles({ alignment, error, disabled, outline, withDescription: !!description });\n\n\t\tconst generatedId = useId();\n\t\tconst switchId = id || `switch-${generatedId}`;\n\n\t\treturn (\n\t\t\t<label htmlFor={switchId} className={container({ class: className })}>\n\t\t\t\t<Switch disabled={disabled} id={switchId} {...props} ref={ref} />\n\t\t\t\t{(label || description) && (\n\t\t\t\t\t<div className={textContainer()}>\n\t\t\t\t\t\t{label && (\n\t\t\t\t\t\t\t<div className={labelWrapper()}>\n\t\t\t\t\t\t\t\t<FieldLabel htmlFor={switchId} className={labelStyles()}>\n\t\t\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t\t\t</FieldLabel>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{description && <Description size=\"xs\">{description}</Description>}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</label>\n\t\t);\n\t}\n);\n\nSwitchField.displayName = \"SwitchField\";\n\nexport { SwitchField };\n"],"names":["SWITCH_NAME","createSwitchContext","createSwitchScope","createContextScope","SwitchProvider","useSwitchContext","Switch","React","props","forwardedRef","__scopeSwitch","name","checkedProp","defaultChecked","required","disabled","value","onCheckedChange","form","switchProps","button","setButton","composedRefs","useComposedRefs","node","hasConsumerStoppedPropagationRef","isFormControl","checked","setChecked","useControllableState","jsxs","jsx","Primitive","getState","composeEventHandlers","event","prevChecked","SwitchBubbleInput","THUMB_NAME","SwitchThumb","thumbProps","context","BUBBLE_INPUT_NAME","control","bubbles","ref","usePrevious","controlSize","useSize","input","inputProto","Root","Thumb","switchStyles","tv","className","size","theme","useComponentVariant","root","thumb","SwitchPrimitives.Root","SwitchPrimitives.Thumb","switchFieldStyles","SwitchField","id","label","alignment","error","outline","description","container","textContainer","labelStyles","labelWrapper","generatedId","useId","switchId","FieldLabel","Description"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-state.js","sources":["../../src/components/system-state/SystemState.tsx","../../src/components/system-state/components/SystemStateCode.tsx","../../src/components/system-state/components/SystemStateTitle.tsx","../../src/components/system-state/components/SystemStateDescription.tsx","../../src/components/system-state/components/SystemStateActions.tsx"],"sourcesContent":["import React from \"react\";\
|
|
1
|
+
{"version":3,"file":"system-state.js","sources":["../../src/components/system-state/SystemState.tsx","../../src/components/system-state/components/SystemStateCode.tsx","../../src/components/system-state/components/SystemStateTitle.tsx","../../src/components/system-state/components/SystemStateDescription.tsx","../../src/components/system-state/components/SystemStateActions.tsx"],"sourcesContent":["import React from \"react\";\nimport { tv } from \"tailwind-variants\";\n\nconst systemStateStyles = tv({\n\tbase: \"flex w-full max-w-[343px] flex-col items-center text-center lg:max-w-[672px]\"\n});\n\nexport type SystemStateProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const SystemState = React.forwardRef<HTMLDivElement, SystemStateProps>(\n\t({ className, children, ...props }, ref) => {\n\t\treturn (\n\t\t\t<div ref={ref} className={systemStateStyles({ className })} {...props}>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nSystemState.displayName = \"SystemState\";\n","import React from \"react\";\nimport { tv } from \"tailwind-variants\";\n\nconst codeStyles = tv({\n\tbase: \"mb-8 align-middle text-sm font-medium text-muted\"\n});\n\nexport type SystemStateCodeProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const SystemStateCode = React.forwardRef<HTMLDivElement, SystemStateCodeProps>(\n\t({ className, children, ...props }, ref) => {\n\t\treturn (\n\t\t\t<div ref={ref} className={codeStyles({ className })} {...props}>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nSystemStateCode.displayName = \"SystemStateCode\";\n","import React from \"react\";\nimport { tv } from \"tailwind-variants\";\n\nconst titleStyles = tv({\n\tbase: \"leading-3xl lg:leading-5xl letter-spacing-[-0.02em] pb-4 text-center align-middle text-3xl font-bold lg:text-5xl\"\n});\n\nexport type SystemStateTitleProps = React.HTMLAttributes<HTMLHeadingElement>;\n\nexport const SystemStateTitle = React.forwardRef<HTMLHeadingElement, SystemStateTitleProps>(\n\t({ className, ...props }, ref) => {\n\t\treturn <h2 ref={ref} className={titleStyles({ className })} {...props} />;\n\t}\n);\n\nSystemStateTitle.displayName = \"SystemStateTitle\";\n","import React from \"react\";\nimport { tv } from \"tailwind-variants\";\n\nconst descriptionStyles = tv({\n\tbase: \"leading-base max-w-s text-base font-normal text-muted lg:max-w-xl\"\n});\n\nexport type SystemStateDescriptionProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const SystemStateDescription = React.forwardRef<HTMLDivElement, SystemStateDescriptionProps>(\n\t({ className, children, ...props }, ref) => {\n\t\treturn (\n\t\t\t<div ref={ref} className={descriptionStyles({ className })} {...props}>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nSystemStateDescription.displayName = \"SystemStateDescription\";\n","import React from \"react\";\nimport { tv } from \"tailwind-variants\";\nimport { Button, ButtonProps } from \"@/components/button/button/Button\";\nimport { useIsMobile } from \"@/hooks/useBreakpoints\";\n\nconst actionsStyles = tv({\n\tslots: {\n\t\tcontainer: \"mt-8 flex w-full flex-col items-center gap-3 lg:flex-row lg:justify-center\",\n\t\tbutton: \"w-full lg:w-auto\"\n\t}\n});\n\nexport interface SystemStateActionsProps {\n\tclassName?: string;\n\tprimaryButton?: React.ReactNode;\n\tprimaryButtonProps?: ButtonProps;\n\tsecondaryButton?: React.ReactNode;\n\tsecondaryButtonProps?: ButtonProps;\n}\n\nexport const SystemStateActions = React.forwardRef<HTMLDivElement, SystemStateActionsProps>(\n\t({ className, primaryButton, secondaryButton, primaryButtonProps, secondaryButtonProps }, ref) => {\n\t\tconst isMobile = useIsMobile();\n\t\tconst { container, button } = actionsStyles();\n\n\t\tif (isMobile) {\n\t\t\tprimaryButtonProps = { ...primaryButtonProps, size: \"xl\", className: button({ className: className }) };\n\t\t\tsecondaryButtonProps = { ...secondaryButtonProps, size: \"xl\", className: button({ className: className }) };\n\t\t}\n\n\t\tconst primaryButtonElement = primaryButton && (\n\t\t\t<Button key=\"primary-button\" variant=\"primary\" {...primaryButtonProps}>\n\t\t\t\t{primaryButton}\n\t\t\t</Button>\n\t\t);\n\n\t\tconst secondaryButtonElement = secondaryButton && (\n\t\t\t<Button key=\"secondary-button\" variant=\"outline\" {...secondaryButtonProps}>\n\t\t\t\t{secondaryButton}\n\t\t\t</Button>\n\t\t);\n\n\t\treturn (\n\t\t\t<div ref={ref} className={container({ class: className })}>\n\t\t\t\t{isMobile\n\t\t\t\t\t? [primaryButtonElement, secondaryButtonElement]\n\t\t\t\t\t: [secondaryButtonElement, primaryButtonElement]}\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nSystemStateActions.displayName = \"SystemStateActions\";\n"],"names":["systemStateStyles","tv","SystemState","React","className","children","props","ref","jsx","codeStyles","SystemStateCode","titleStyles","SystemStateTitle","descriptionStyles","SystemStateDescription","actionsStyles","SystemStateActions","primaryButton","secondaryButton","primaryButtonProps","secondaryButtonProps","isMobile","useIsMobile","container","button","primaryButtonElement","Button","secondaryButtonElement"],"mappings":";;;;;AAGA,MAAMA,IAAoBC,EAAG;AAAA,EAC5B,MAAM;AACP,CAAC,GAIYC,IAAcC,EAAM;AAAA,EAChC,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,GAAGC,EAAA,GAASC,MAElC,gBAAAC,EAAC,OAAI,EAAA,KAAAD,GAAU,WAAWP,EAAkB,EAAE,WAAAI,GAAW,GAAI,GAAGE,GAC9D,UAAAD,EACF,CAAA;AAGH;AAEAH,EAAY,cAAc;AChB1B,MAAMO,IAAaR,EAAG;AAAA,EACrB,MAAM;AACP,CAAC,GAIYS,IAAkBP,EAAM;AAAA,EACpC,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,GAAGC,EAAA,GAASC,MAElC,gBAAAC,EAAC,OAAI,EAAA,KAAAD,GAAU,WAAWE,EAAW,EAAE,WAAAL,GAAW,GAAI,GAAGE,GACvD,UAAAD,EACF,CAAA;AAGH;AAEAK,EAAgB,cAAc;AChB9B,MAAMC,IAAcV,EAAG;AAAA,EACtB,MAAM;AACP,CAAC,GAIYW,IAAmBT,EAAM;AAAA,EACrC,CAAC,EAAE,WAAAC,GAAW,GAAGE,EAAA,GAASC,MAClB,gBAAAC,EAAC,MAAG,EAAA,KAAAD,GAAU,WAAWI,EAAY,EAAE,WAAAP,EAAW,CAAA,GAAI,GAAGE,GAAO;AAEzE;AAEAM,EAAiB,cAAc;ACZ/B,MAAMC,IAAoBZ,EAAG;AAAA,EAC5B,MAAM;AACP,CAAC,GAIYa,IAAyBX,EAAM;AAAA,EAC3C,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,GAAGC,EAAA,GAASC,MAElC,gBAAAC,EAAC,OAAI,EAAA,KAAAD,GAAU,WAAWM,EAAkB,EAAE,WAAAT,GAAW,GAAI,GAAGE,GAC9D,UAAAD,EACF,CAAA;AAGH;AAEAS,EAAuB,cAAc;ACdrC,MAAMC,IAAgBd,EAAG;AAAA,EACxB,OAAO;AAAA,IACN,WAAW;AAAA,IACX,QAAQ;AAAA,EAAA;AAEV,CAAC,GAUYe,IAAqBb,EAAM;AAAA,EACvC,CAAC,EAAE,WAAAC,GAAW,eAAAa,GAAe,iBAAAC,GAAiB,oBAAAC,GAAoB,sBAAAC,KAAwBb,MAAQ;AACjG,UAAMc,IAAWC,EAAY,GACvB,EAAE,WAAAC,GAAW,QAAAC,EAAO,IAAIT,EAAc;AAE5C,IAAIM,MACkBF,IAAA,EAAE,GAAGA,GAAoB,MAAM,MAAM,WAAWK,EAAO,EAAE,WAAApB,EAAqB,CAAC,EAAE,GAC/EgB,IAAA,EAAE,GAAGA,GAAsB,MAAM,MAAM,WAAWI,EAAO,EAAE,WAAApB,EAAqB,CAAC,EAAE;AAGrG,UAAAqB,IAAuBR,KAC3B,gBAAAT,EAAAkB,GAAA,EAA4B,SAAQ,WAAW,GAAGP,GACjD,UAAAF,EAAA,GADU,gBAEZ,GAGKU,IAAyBT,KAC7B,gBAAAV,EAAAkB,GAAA,EAA8B,SAAQ,WAAW,GAAGN,GACnD,UAAAF,EAAA,GADU,kBAEZ;AAGD,6BACE,OAAI,EAAA,KAAAX,GAAU,WAAWgB,EAAU,EAAE,OAAOnB,EAAU,CAAC,GACtD,UAAAiB,IACE,CAACI,GAAsBE,CAAsB,IAC7C,CAACA,GAAwBF,CAAoB,GACjD;AAAA,EAAA;AAGH;AAEAT,EAAmB,cAAc;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sources":["../../src/components/table/Table.tsx"],"sourcesContent":["import * as React from \"react\";\
|
|
1
|
+
{"version":3,"file":"table.js","sources":["../../src/components/table/Table.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { tv } from \"tailwind-variants\";\nimport { ScrollShadowContainer } from \"../scroll-shadow-container\";\nimport { ScrollShadowContainerProps } from \"../scroll-shadow-container/ScrollShadowContainer\";\n\nconst tableStyles = tv({\n\tslots: {\n\t\twrapper: \"relative w-full overflow-x-auto\",\n\t\ttable: \"w-full caption-bottom text-sm\"\n\t}\n});\n\nexport const Table = React.forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>(\n\t({ className, ...props }, ref) => {\n\t\tconst styles = tableStyles();\n\n\t\treturn (\n\t\t\t<div className={styles.wrapper()}>\n\t\t\t\t<table ref={ref} className={styles.table({ className })} {...props} />\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nTable.displayName = \"Table\";\n\nconst tableHeaderStyles = tv({\n\tbase: \"border-secondary-border bg-primary-bg [&_tr]:border-b\"\n});\n\nexport const TableHeader = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n\t({ className, ...props }, ref) => <thead ref={ref} className={tableHeaderStyles({ className })} {...props} />\n);\n\nTableHeader.displayName = \"TableHeader\";\n\nconst tableBodyStyles = tv({\n\tbase: \"[&_tr:last-child]:border-0\"\n});\n\nexport const TableBody = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n\t({ className, ...props }, ref) => <tbody ref={ref} className={tableBodyStyles({ className })} {...props} />\n);\n\nTableBody.displayName = \"TableBody\";\n\nconst tableBodyContainerStyles = tv({\n\tbase: \"overflow-x-hidden\"\n});\n\nexport type TableBodyContainerProps = React.HTMLAttributes<HTMLTableSectionElement> & {\n\tcontainerClassName?: string;\n\tshadowSize?: ScrollShadowContainerProps[\"shadowSize\"];\n};\n\nexport const TableBodyContainer = React.forwardRef<HTMLTableSectionElement, TableBodyContainerProps>(\n\t({ className, containerClassName, shadowSize, ...props }, ref) => (\n\t\t<ScrollShadowContainer\n\t\t\tclassName={tableBodyContainerStyles({ className: containerClassName })}\n\t\t\tshadowSize={shadowSize}\n\t\t>\n\t\t\t<tbody ref={ref} className={tableBodyStyles({ className })} {...props} />\n\t\t</ScrollShadowContainer>\n\t)\n);\n\nTableBodyContainer.displayName = \"TableBodyContainer\";\n\nconst tableFooterStyles = tv({\n\tbase: \"border-t bg-primary/[0.03] font-medium [&>tr]:last:border-b-0\"\n});\n\nexport const TableFooter = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n\t({ className, ...props }, ref) => <tfoot ref={ref} className={tableFooterStyles({ className })} {...props} />\n);\n\nTableFooter.displayName = \"TableFooter\";\n\nconst tableRowStyles = tv({\n\tbase: \"border-b border-secondary-border transition-colors hover:bg-alpha-high-97 data-[state=selected]:bg-alpha-high-95 data-[state=selected]:hover:bg-alpha-high-92\"\n});\n\nexport const TableRow = React.forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>(\n\t({ className, ...props }, ref) => <tr ref={ref} className={tableRowStyles({ className })} {...props} />\n);\n\nTableRow.displayName = \"TableRow\";\n\nconst tableHeadStyles = tv({\n\tbase: \"h-10 px-2 text-left align-middle font-medium text-muted [&:has([role=checkbox])]:pr-0\"\n});\n\nexport const TableHead = React.forwardRef<HTMLTableCellElement, React.ThHTMLAttributes<HTMLTableCellElement>>(\n\t({ className, ...props }, ref) => <th ref={ref} className={tableHeadStyles({ className })} {...props} />\n);\n\nTableHead.displayName = \"TableHead\";\n\nconst tableCellStyles = tv({\n\tbase: \"px-3 py-2.5 align-middle [&:has([role=checkbox])]:pr-0\"\n});\n\nexport const TableCell = React.forwardRef<HTMLTableCellElement, React.TdHTMLAttributes<HTMLTableCellElement>>(\n\t({ className, ...props }, ref) => <td ref={ref} className={tableCellStyles({ className })} {...props} />\n);\n\nTableCell.displayName = \"TableCell\";\n\nconst tableCaptionStyles = tv({\n\tbase: \"mt-4 text-sm text-muted\"\n});\n\nexport const TableCaption = React.forwardRef<HTMLTableCaptionElement, React.HTMLAttributes<HTMLTableCaptionElement>>(\n\t({ className, ...props }, ref) => <caption ref={ref} className={tableCaptionStyles({ className })} {...props} />\n);\n\nTableCaption.displayName = \"TableCaption\";\n"],"names":["tableStyles","tv","Table","React","className","props","ref","styles","tableHeaderStyles","TableHeader","jsx","tableBodyStyles","TableBody","tableBodyContainerStyles","TableBodyContainer","containerClassName","shadowSize","ScrollShadowContainer","tableFooterStyles","TableFooter","tableRowStyles","TableRow","tableHeadStyles","TableHead","tableCellStyles","TableCell","tableCaptionStyles","TableCaption"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.js","sources":["../../node_modules/.pnpm/@radix-ui+react-tabs@1.1.13_21753808045192b908d4757aa4b73066/node_modules/@radix-ui/react-tabs/dist/index.mjs","../../src/components/tabs/Tabs.tsx"],"sourcesContent":["\"use client\";\n\n// src/tabs.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TABS_NAME = \"Tabs\";\nvar [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);\nvar Tabs = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = \"horizontal\",\n dir,\n activationMode = \"automatic\",\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue ?? \"\",\n caller: TABS_NAME\n });\n return /* @__PURE__ */ jsx(\n TabsProvider,\n {\n scope: __scopeTabs,\n baseId: useId(),\n value,\n onValueChange: setValue,\n orientation,\n dir: direction,\n activationMode,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n dir: direction,\n \"data-orientation\": orientation,\n ...tabsProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabs.displayName = TABS_NAME;\nvar TAB_LIST_NAME = \"TabsList\";\nvar TabsList = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation: context.orientation,\n dir: context.dir,\n loop,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"tablist\",\n \"aria-orientation\": context.orientation,\n ...listProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabsList.displayName = TAB_LIST_NAME;\nvar TRIGGER_NAME = \"TabsTrigger\";\nvar TabsTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !disabled,\n active: isSelected,\n children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"tab\",\n \"aria-selected\": isSelected,\n \"aria-controls\": contentId,\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n id: triggerId,\n ...triggerProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if ([\" \", \"Enter\"].includes(event.key)) context.onValueChange(value);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n const isAutomaticActivation = context.activationMode !== \"manual\";\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })\n }\n )\n }\n );\n }\n);\nTabsTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"TabsContent\";\nvar TabsContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-orientation\": context.orientation,\n role: \"tabpanel\",\n \"aria-labelledby\": triggerId,\n hidden: !present,\n id: contentId,\n tabIndex: 0,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? \"0s\" : void 0\n },\n children: present && children\n }\n ) });\n }\n);\nTabsContent.displayName = CONTENT_NAME;\nfunction makeTriggerId(baseId, value) {\n return `${baseId}-trigger-${value}`;\n}\nfunction makeContentId(baseId, value) {\n return `${baseId}-content-${value}`;\n}\nvar Root2 = Tabs;\nvar List = TabsList;\nvar Trigger = TabsTrigger;\nvar Content = TabsContent;\nexport {\n Content,\n List,\n Root2 as Root,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n Trigger,\n createTabsScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\";\r\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\r\nimport { tv } from \"tailwind-variants\";\r\n\r\nconst Tabs = TabsPrimitive.Root;\r\n\r\nconst tabsListStyles = tv({\r\n\tbase: \"inline-flex h-10 items-center justify-center rounded-lg bg-secondary-bg-hover p-1 text-muted lg:h-9\"\r\n});\r\n\r\nconst TabsList = React.forwardRef<\r\n\tReact.ElementRef<typeof TabsPrimitive.List>,\r\n\tReact.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\r\n>(({ className, ...props }, ref) => (\r\n\t<TabsPrimitive.List ref={ref} className={tabsListStyles({ className })} {...props} />\r\n));\r\nTabsList.displayName = TabsPrimitive.List.displayName;\r\n\r\nconst tabsTriggerStyles = tv({\r\n\tbase: [\r\n\t\t\"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md px-3 py-1.5 text-sm font-medium ring-offset-background transition-all lg:py-1\",\r\n\t\t\"hover:text-secondary-fg\",\r\n\t\t\"focus-visible:!shadow-focus focus-visible:outline-none\",\r\n\t\t\"disabled:pointer-events-none disabled:opacity-50\",\r\n\t\t\"data-[state=active]:bg-secondary-bg data-[state=active]:text-primary-fg data-[state=active]:shadow-soft-base\"\r\n\t]\r\n});\r\n\r\nconst TabsTrigger = React.forwardRef<\r\n\tReact.ElementRef<typeof TabsPrimitive.Trigger>,\r\n\tReact.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\r\n>(({ className, ...props }, ref) => (\r\n\t<TabsPrimitive.Trigger ref={ref} className={tabsTriggerStyles({ className })} {...props} />\r\n));\r\n\r\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\r\n\r\nconst tabsContentStyles = tv({\r\n\tbase: \"mt-2 ring-offset-background focus-visible:shadow-focus focus-visible:outline-none\"\r\n});\r\n\r\nconst TabsContent = React.forwardRef<\r\n\tReact.ElementRef<typeof TabsPrimitive.Content>,\r\n\tReact.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\r\n>(({ className, ...props }, ref) => (\r\n\t<TabsPrimitive.Content ref={ref} className={tabsContentStyles({ className })} {...props} />\r\n));\r\nTabsContent.displayName = TabsPrimitive.Content.displayName;\r\n\r\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\r\n"],"names":["TABS_NAME","createTabsContext","createTabsScope","createContextScope","createRovingFocusGroupScope","useRovingFocusGroupScope","TabsProvider","useTabsContext","Tabs","React","props","forwardedRef","__scopeTabs","valueProp","onValueChange","defaultValue","orientation","dir","activationMode","tabsProps","direction","useDirection","value","setValue","useControllableState","jsx","useId","Primitive","TAB_LIST_NAME","TabsList","loop","listProps","context","rovingFocusGroupScope","RovingFocusGroup.Root","TRIGGER_NAME","TabsTrigger","disabled","triggerProps","triggerId","makeTriggerId","contentId","makeContentId","isSelected","RovingFocusGroup.Item","composeEventHandlers","event","isAutomaticActivation","CONTENT_NAME","TabsContent","forceMount","children","contentProps","isMountAnimationPreventedRef","rAF","Presence","present","baseId","Root2","List","Trigger","Content","TabsPrimitive.Root","tabsListStyles","tv","className","ref","TabsPrimitive.List","tabsTriggerStyles","TabsPrimitive.Trigger","tabsContentStyles","TabsPrimitive.Content"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"tabs.js","sources":["../../node_modules/.pnpm/@radix-ui+react-tabs@1.1.13_@types+react-dom@18.3.6_@types+react@18.3.20__@types+react@_21753808045192b908d4757aa4b73066/node_modules/@radix-ui/react-tabs/dist/index.mjs","../../src/components/tabs/Tabs.tsx"],"sourcesContent":["\"use client\";\n\n// src/tabs.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TABS_NAME = \"Tabs\";\nvar [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);\nvar Tabs = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = \"horizontal\",\n dir,\n activationMode = \"automatic\",\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue ?? \"\",\n caller: TABS_NAME\n });\n return /* @__PURE__ */ jsx(\n TabsProvider,\n {\n scope: __scopeTabs,\n baseId: useId(),\n value,\n onValueChange: setValue,\n orientation,\n dir: direction,\n activationMode,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n dir: direction,\n \"data-orientation\": orientation,\n ...tabsProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabs.displayName = TABS_NAME;\nvar TAB_LIST_NAME = \"TabsList\";\nvar TabsList = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation: context.orientation,\n dir: context.dir,\n loop,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"tablist\",\n \"aria-orientation\": context.orientation,\n ...listProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabsList.displayName = TAB_LIST_NAME;\nvar TRIGGER_NAME = \"TabsTrigger\";\nvar TabsTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !disabled,\n active: isSelected,\n children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"tab\",\n \"aria-selected\": isSelected,\n \"aria-controls\": contentId,\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n id: triggerId,\n ...triggerProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if ([\" \", \"Enter\"].includes(event.key)) context.onValueChange(value);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n const isAutomaticActivation = context.activationMode !== \"manual\";\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })\n }\n )\n }\n );\n }\n);\nTabsTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"TabsContent\";\nvar TabsContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-orientation\": context.orientation,\n role: \"tabpanel\",\n \"aria-labelledby\": triggerId,\n hidden: !present,\n id: contentId,\n tabIndex: 0,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? \"0s\" : void 0\n },\n children: present && children\n }\n ) });\n }\n);\nTabsContent.displayName = CONTENT_NAME;\nfunction makeTriggerId(baseId, value) {\n return `${baseId}-trigger-${value}`;\n}\nfunction makeContentId(baseId, value) {\n return `${baseId}-content-${value}`;\n}\nvar Root2 = Tabs;\nvar List = TabsList;\nvar Trigger = TabsTrigger;\nvar Content = TabsContent;\nexport {\n Content,\n List,\n Root2 as Root,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n Trigger,\n createTabsScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { tv } from \"tailwind-variants\";\n\nconst Tabs = TabsPrimitive.Root;\n\nconst tabsListStyles = tv({\n\tbase: \"inline-flex h-10 items-center justify-center rounded-lg bg-secondary-bg-hover p-1 text-muted lg:h-9\"\n});\n\nconst TabsList = React.forwardRef<\n\tReact.ElementRef<typeof TabsPrimitive.List>,\n\tReact.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n\t<TabsPrimitive.List ref={ref} className={tabsListStyles({ className })} {...props} />\n));\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst tabsTriggerStyles = tv({\n\tbase: [\n\t\t\"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md px-3 py-1.5 text-sm font-medium ring-offset-background transition-all lg:py-1\",\n\t\t\"hover:text-secondary-fg\",\n\t\t\"focus-visible:!shadow-focus focus-visible:outline-none\",\n\t\t\"disabled:pointer-events-none disabled:opacity-50\",\n\t\t\"data-[state=active]:bg-secondary-bg data-[state=active]:text-primary-fg data-[state=active]:shadow-soft-base\"\n\t]\n});\n\nconst TabsTrigger = React.forwardRef<\n\tReact.ElementRef<typeof TabsPrimitive.Trigger>,\n\tReact.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n\t<TabsPrimitive.Trigger ref={ref} className={tabsTriggerStyles({ className })} {...props} />\n));\n\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst tabsContentStyles = tv({\n\tbase: \"mt-2 ring-offset-background focus-visible:shadow-focus focus-visible:outline-none\"\n});\n\nconst TabsContent = React.forwardRef<\n\tReact.ElementRef<typeof TabsPrimitive.Content>,\n\tReact.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n\t<TabsPrimitive.Content ref={ref} className={tabsContentStyles({ className })} {...props} />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n"],"names":["TABS_NAME","createTabsContext","createTabsScope","createContextScope","createRovingFocusGroupScope","useRovingFocusGroupScope","TabsProvider","useTabsContext","Tabs","React","props","forwardedRef","__scopeTabs","valueProp","onValueChange","defaultValue","orientation","dir","activationMode","tabsProps","direction","useDirection","value","setValue","useControllableState","jsx","useId","Primitive","TAB_LIST_NAME","TabsList","loop","listProps","context","rovingFocusGroupScope","RovingFocusGroup.Root","TRIGGER_NAME","TabsTrigger","disabled","triggerProps","triggerId","makeTriggerId","contentId","makeContentId","isSelected","RovingFocusGroup.Item","composeEventHandlers","event","isAutomaticActivation","CONTENT_NAME","TabsContent","forceMount","children","contentProps","isMountAnimationPreventedRef","rAF","Presence","present","baseId","Root2","List","Trigger","Content","TabsPrimitive.Root","tabsListStyles","tv","className","ref","TabsPrimitive.List","tabsTriggerStyles","TabsPrimitive.Trigger","tabsContentStyles","TabsPrimitive.Content"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tag-input.js","sources":["../../src/components/tag-input/TagInput.tsx"],"sourcesContent":["import { SearchSelectTag } from \"@/components/search-select/components/SearchSelectTag\";\r\nimport { useControllableState } from \"@/hooks/useControllableState\";\r\nimport { useItemsKeyboardNavigation } from \"@/hooks/useItemsKeyboardNavigation\";\r\nimport React, { KeyboardEvent, useCallback, useRef, useState } from \"react\";\r\nimport { tv } from \"tailwind-variants\";\r\nimport { InputGroup, InputGroupInput, InputGroupContentEditable } from \"../input\";\r\nimport { selectTriggerStyles } from \"../select/Select\";\r\n\r\nconst tagInputStyles = tv({\r\n\textend: selectTriggerStyles,\r\n\tbase: \"group/search-select-trigger flex h-auto min-h-10 flex-wrap items-center gap-1 !py-[0.3125rem] px-1.5 lg:h-auto lg:min-h-9 lg:px-1.5\"\r\n});\r\n\r\nconst inputStyles = tv({\r\n\tbase: \"min-w-28 rounded-none p-0 px-1.5 leading-6 read-only:w-0 read-only:min-w-0 lg:p-0 lg:px-1.5\"\r\n});\r\n\r\nconst editingDivStyles = tv({\r\n\tbase: \"p-0 px-1.5 outline-none lg:p-0 lg:px-1.5\"\r\n});\r\n\r\n/**\r\n * Пропсы для рендера тега\r\n */\r\nexport type RenderTagProps = {\r\n\t/** Значение тега (строка) */\r\n\ttag: string;\r\n\t/** Индекс тега в массиве */\r\n\tindex: number;\r\n\t/** Функция для удаления тега */\r\n\tonClose?: () => void;\r\n\t/** Функция для начала редактирования тега */\r\n\tonEdit?: () => void;\r\n\t/** Фокус на теге (для навигации с клавиатуры) */\r\n\tisFocused: boolean;\r\n\t/** Отключен ли компонент */\r\n\treadonly: boolean;\r\n};\r\n\r\n/**\r\n * Функция валидации тега по умолчанию\r\n */\r\nconst defaultValidateTag = (tag: string, allTags: string[], editingIndex?: number): boolean | string => {\r\n\tif (!tag.trim()) return \"Тег не может быть пустым\";\r\n\r\n\tif (editingIndex === undefined) {\r\n\t\t// Добавление нового тега\r\n\t\tif (allTags.includes(tag)) return \"Такой тег уже существует\";\r\n\t} else {\r\n\t\t// Редактирование существующего\r\n\t\tconst otherTags = allTags.filter((_, i) => i !== editingIndex);\r\n\t\tif (otherTags.includes(tag)) return \"Такой тег уже существует\";\r\n\t}\r\n\r\n\treturn true;\r\n};\r\n\r\nexport interface TagInputProps {\r\n\t/** Текущие выбранные опции (controlled режим) */\r\n\tvalue?: string[];\r\n\t/** Опции по умолчанию (uncontrolled режим) */\r\n\tdefaultValue?: string[];\r\n\t/** Callback при изменении выбранных опций */\r\n\tonChange?: (options: string[]) => void;\r\n\t/** Placeholder для input */\r\n\tplaceholder?: string;\r\n\t/** Отключить компонент */\r\n\treadonly?: boolean;\r\n\t/** CSS класс для контейнера */\r\n\tclassName?: string;\r\n\t/** Функция валидации тега. Если null - валидация отключена, если не передана - используется валидация по умолчанию */\r\n\tvalidateTag?: ((tag: string, allTags: string[], editingIndex?: number) => boolean | string) | null;\r\n\t/** Состояние ошибки */\r\n\tinvalid?: boolean;\r\n\t/** Кастомная функция рендера тега */\r\n\trenderOption?: (props: RenderTagProps) => React.ReactNode;\r\n}\r\n\r\n/**\r\n * Компонент для ввода и отображения тегов\r\n */\r\nexport const TagInput = React.forwardRef<HTMLDivElement, TagInputProps>(\r\n\t(\r\n\t\t{\r\n\t\t\tvalue,\r\n\t\t\tdefaultValue = [],\r\n\t\t\tonChange,\r\n\t\t\tplaceholder = \"Добавить тег...\",\r\n\t\t\treadonly = false,\r\n\t\t\tclassName,\r\n\t\t\tvalidateTag,\r\n\t\t\tinvalid,\r\n\t\t\trenderOption\r\n\t\t},\r\n\t\tref\r\n\t) => {\r\n\t\t// Состояние для ввода нового тега\r\n\t\tconst [inputValue, setInputValue] = useState(\"\");\r\n\t\tconst inputRef = useRef<HTMLInputElement>(null);\r\n\r\n\t\t// Управление тегами\r\n\t\tconst [tags = [], setTags] = useControllableState<string[]>({ value, defaultValue, onChange });\r\n\r\n\t\tconst styles = tagInputStyles({ className, invalid });\r\n\t\tconst removeTag = useCallback(\r\n\t\t\t(index: number) => {\r\n\t\t\t\tif (readonly) return;\r\n\t\t\t\tsetTags(tags.filter((_, i) => i !== index));\r\n\t\t\t},\r\n\t\t\t[tags, setTags, readonly]\r\n\t\t);\r\n\r\n\t\t// Состояние для режима редактирования существующих тегов\r\n\t\tconst [editingIndex, setEditingIndex] = useState<number | null>(null);\r\n\t\tconst editingRef = useRef<HTMLDivElement>(null);\r\n\r\n\t\t/**\r\n\t\t * Функция валидации тега\r\n\t\t */\r\n\t\tconst validateTagValue = useCallback(\r\n\t\t\t(tag: string, editingIndex?: number): boolean => {\r\n\t\t\t\tif (validateTag === null) return true;\r\n\r\n\t\t\t\tconst validator = validateTag || defaultValidateTag;\r\n\t\t\t\tconst result = validator(tag, tags, editingIndex);\r\n\r\n\t\t\t\treturn result === true;\r\n\t\t\t},\r\n\t\t\t[validateTag, tags]\r\n\t\t);\r\n\r\n\t\t/**\r\n\t\t * Переключение в режим редактирования существующего тега\r\n\t\t */\r\n\t\tconst startEditing = useCallback(\r\n\t\t\t(index: number) => {\r\n\t\t\t\tif (readonly) return;\r\n\t\t\t\tsetEditingIndex(index);\r\n\t\t\t\t// Фокусируем элемент после обновления состояния\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tif (editingRef.current) {\r\n\t\t\t\t\t\t// Устанавливаем содержимое напрямую, без использования React state\r\n\t\t\t\t\t\teditingRef.current.textContent = tags[index];\r\n\t\t\t\t\t\teditingRef.current.focus();\r\n\t\t\t\t\t\t// Выделяем весь текст\r\n\t\t\t\t\t\tconst range = document.createRange();\r\n\t\t\t\t\t\trange.selectNodeContents(editingRef.current);\r\n\t\t\t\t\t\tconst selection = window.getSelection();\r\n\t\t\t\t\t\tselection?.removeAllRanges();\r\n\t\t\t\t\t\tselection?.addRange(range);\r\n\t\t\t\t\t}\r\n\t\t\t\t}, 0);\r\n\t\t\t},\r\n\t\t\t[tags, setEditingIndex, readonly]\r\n\t\t);\r\n\r\n\t\t/**\r\n\t\t * Отмена редактирования тега\r\n\t\t */\r\n\t\tconst cancelEditing = useCallback(() => {\r\n\t\t\tsetEditingIndex(null);\r\n\t\t\tsetTimeout(() => inputRef.current?.focus(), 0);\r\n\t\t}, [setEditingIndex]);\r\n\r\n\t\t/**\r\n\t\t * Обработчик нажатия Enter на теге: переключает текущий тег в режим редактирования\r\n\t\t */\r\n\t\tconst onEnter = useCallback((_: string, index: number) => startEditing(index), [startEditing]);\r\n\r\n\t\tconst handleDeleteTag = useCallback((_: string, index: number) => removeTag(index), [removeTag]);\r\n\r\n\t\t/**\r\n\t\t * Хук для навигации по тегам с помощью клавиатуры (вперед/назад)\r\n\t\t */\r\n\t\tconst { handleKeyDown: handleTagsKeyDown, isFocused } = useItemsKeyboardNavigation({\r\n\t\t\titems: tags,\r\n\t\t\tonEnter,\r\n\t\t\tonDelete: handleDeleteTag,\r\n\t\t\tcycleNavigation: true\r\n\t\t});\r\n\r\n\t\t/**\r\n\t\t * Сохранение изменений в текущем теге\r\n\t\t */\r\n\t\tconst saveEditing = useCallback(() => {\r\n\t\t\tif (editingIndex !== null && editingRef.current) {\r\n\t\t\t\tconst newValue = editingRef.current.textContent?.trim() || \"\";\r\n\r\n\t\t\t\tif (newValue && validateTagValue(newValue, editingIndex)) {\r\n\t\t\t\t\tconst newTags = [...tags];\r\n\t\t\t\t\tnewTags[editingIndex] = newValue;\r\n\t\t\t\t\tsetTags(newTags);\r\n\t\t\t\t\tsetEditingIndex(null);\r\n\t\t\t\t\t// Возвращаем фокус в input и устанавливаем фокус на отредактированный элемент\r\n\t\t\t\t\tsetTimeout(() => inputRef.current?.focus(), 0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}, [editingIndex, editingRef, tags, setEditingIndex, setTags, validateTagValue]);\r\n\r\n\t\t/**\r\n\t\t * Добавление нового тега\r\n\t\t */\r\n\t\tconst addNewTag = useCallback(\r\n\t\t\t(tagValue: string) => {\r\n\t\t\t\tconst trimmedTag = tagValue.trim();\r\n\t\t\t\tif (trimmedTag && validateTagValue(trimmedTag)) {\r\n\t\t\t\t\tsetTags([...tags, trimmedTag]);\r\n\t\t\t\t\tsetInputValue(\"\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[tags, setTags, setInputValue, validateTagValue]\r\n\t\t);\r\n\r\n\t\t/**\r\n\t\t * Обработчик нажатия клавиш на input:\r\n\t\t * - Если нажат Enter и input не пустой, добавляет новый тег\r\n\t\t * - Если input пустой, обрабатывает навигацию по тегам\r\n\t\t */\r\n\t\tconst handleInputKeyDown = useCallback(\r\n\t\t\t(e: KeyboardEvent<HTMLInputElement>) => {\r\n\t\t\t\tif (e.key === \"Enter\" && inputValue.trim()) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\taddNewTag(inputValue);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (!inputValue.trim()) {\r\n\t\t\t\t\thandleTagsKeyDown(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[inputValue, handleTagsKeyDown, addNewTag]\r\n\t\t);\r\n\r\n\t\t/**\r\n\t\t * Обработчик потери фокуса input - добавляет тег если он не пустой\r\n\t\t */\r\n\t\tconst handleInputBlur = useCallback(() => {\r\n\t\t\tif (inputValue.trim()) {\r\n\t\t\t\taddNewTag(inputValue);\r\n\t\t\t}\r\n\t\t}, [inputValue, addNewTag]);\r\n\r\n\t\tconst handleEditingKeyDown = useCallback(\r\n\t\t\t(e: KeyboardEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (e.key === \"Enter\") {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tsaveEditing();\r\n\t\t\t\t} else if (e.key === \"Escape\") {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tcancelEditing();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[saveEditing, cancelEditing]\r\n\t\t);\r\n\r\n\t\tconst renderTags = useCallback(() => {\r\n\t\t\treturn tags.map((tag, index) => {\r\n\t\t\t\tif (editingIndex === index) {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t<InputGroupContentEditable\r\n\t\t\t\t\t\t\tkey={`editing-${index}`}\r\n\t\t\t\t\t\t\tref={editingRef}\r\n\t\t\t\t\t\t\tclassName={editingDivStyles()}\r\n\t\t\t\t\t\t\tonKeyDown={handleEditingKeyDown}\r\n\t\t\t\t\t\t\tonBlur={cancelEditing}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (renderOption) {\r\n\t\t\t\t\tconst item = renderOption({\r\n\t\t\t\t\t\ttag,\r\n\t\t\t\t\t\tindex,\r\n\t\t\t\t\t\tonClose: () => removeTag(index),\r\n\t\t\t\t\t\tonEdit: () => startEditing(index),\r\n\t\t\t\t\t\tisFocused: !readonly && isFocused(index),\r\n\t\t\t\t\t\treadonly\r\n\t\t\t\t\t});\r\n\t\t\t\t\tif (item !== undefined) {\r\n\t\t\t\t\t\treturn item;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<SearchSelectTag\r\n\t\t\t\t\t\tkey={index}\r\n\t\t\t\t\t\tonLabelClick={() => startEditing(index)}\r\n\t\t\t\t\t\tonClose={() => removeTag(index)}\r\n\t\t\t\t\t\treadonly={readonly}\r\n\t\t\t\t\t\tisFocused={!readonly && isFocused(index)}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t{tag}\r\n\t\t\t\t\t</SearchSelectTag>\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t\t}, [\r\n\t\t\teditingIndex,\r\n\t\t\teditingRef,\r\n\t\t\thandleEditingKeyDown,\r\n\t\t\tcancelEditing,\r\n\t\t\ttags,\r\n\t\t\treadonly,\r\n\t\t\tisFocused,\r\n\t\t\tremoveTag,\r\n\t\t\tstartEditing,\r\n\t\t\trenderOption\r\n\t\t]);\r\n\r\n\t\treturn (\r\n\t\t\t<InputGroup ref={ref} className={styles.base()}>\r\n\t\t\t\t{renderTags()}\r\n\t\t\t\t<InputGroupInput\r\n\t\t\t\t\tref={inputRef}\r\n\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\tvalue={inputValue}\r\n\t\t\t\t\tonChange={(e) => setInputValue(e.target.value)}\r\n\t\t\t\t\tonKeyDown={handleInputKeyDown}\r\n\t\t\t\t\tonBlur={handleInputBlur}\r\n\t\t\t\t\tplaceholder={readonly ? \"\" : placeholder}\r\n\t\t\t\t\tclassName={inputStyles()}\r\n\t\t\t\t\treadOnly={readonly}\r\n\t\t\t\t\taria-invalid={invalid}\r\n\t\t\t\t/>\r\n\t\t\t</InputGroup>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nTagInput.displayName = \"TagInput\";\r\n"],"names":["tagInputStyles","tv","selectTriggerStyles","inputStyles","editingDivStyles","defaultValidateTag","tag","allTags","editingIndex","_","i","TagInput","React","value","defaultValue","onChange","placeholder","readonly","className","validateTag","invalid","renderOption","ref","inputValue","setInputValue","useState","inputRef","useRef","tags","setTags","useControllableState","styles","removeTag","useCallback","index","setEditingIndex","editingRef","validateTagValue","startEditing","range","selection","cancelEditing","onEnter","handleDeleteTag","handleTagsKeyDown","isFocused","useItemsKeyboardNavigation","saveEditing","newValue","newTags","addNewTag","tagValue","trimmedTag","handleInputKeyDown","e","handleInputBlur","handleEditingKeyDown","renderTags","jsx","InputGroupContentEditable","item","SearchSelectTag","InputGroup","InputGroupInput"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tag-input.js","sources":["../../src/components/tag-input/TagInput.tsx"],"sourcesContent":["import { SearchSelectTag } from \"@/components/search-select/components/SearchSelectTag\";\nimport { useControllableState } from \"@/hooks/useControllableState\";\nimport { useItemsKeyboardNavigation } from \"@/hooks/useItemsKeyboardNavigation\";\nimport React, { KeyboardEvent, useCallback, useRef, useState } from \"react\";\nimport { tv } from \"tailwind-variants\";\nimport { InputGroup, InputGroupInput, InputGroupContentEditable } from \"../input\";\nimport { selectTriggerStyles } from \"../select/Select\";\n\nconst tagInputStyles = tv({\n\textend: selectTriggerStyles,\n\tbase: \"group/search-select-trigger flex h-auto min-h-10 flex-wrap items-center gap-1 !py-[0.3125rem] px-1.5 lg:h-auto lg:min-h-9 lg:px-1.5\"\n});\n\nconst inputStyles = tv({\n\tbase: \"min-w-28 rounded-none p-0 px-1.5 leading-6 read-only:w-0 read-only:min-w-0 lg:p-0 lg:px-1.5\"\n});\n\nconst editingDivStyles = tv({\n\tbase: \"p-0 px-1.5 outline-none lg:p-0 lg:px-1.5\"\n});\n\n/**\n * Пропсы для рендера тега\n */\nexport type RenderTagProps = {\n\t/** Значение тега (строка) */\n\ttag: string;\n\t/** Индекс тега в массиве */\n\tindex: number;\n\t/** Функция для удаления тега */\n\tonClose?: () => void;\n\t/** Функция для начала редактирования тега */\n\tonEdit?: () => void;\n\t/** Фокус на теге (для навигации с клавиатуры) */\n\tisFocused: boolean;\n\t/** Отключен ли компонент */\n\treadonly: boolean;\n};\n\n/**\n * Функция валидации тега по умолчанию\n */\nconst defaultValidateTag = (tag: string, allTags: string[], editingIndex?: number): boolean | string => {\n\tif (!tag.trim()) return \"Тег не может быть пустым\";\n\n\tif (editingIndex === undefined) {\n\t\t// Добавление нового тега\n\t\tif (allTags.includes(tag)) return \"Такой тег уже существует\";\n\t} else {\n\t\t// Редактирование существующего\n\t\tconst otherTags = allTags.filter((_, i) => i !== editingIndex);\n\t\tif (otherTags.includes(tag)) return \"Такой тег уже существует\";\n\t}\n\n\treturn true;\n};\n\nexport interface TagInputProps {\n\t/** Текущие выбранные опции (controlled режим) */\n\tvalue?: string[];\n\t/** Опции по умолчанию (uncontrolled режим) */\n\tdefaultValue?: string[];\n\t/** Callback при изменении выбранных опций */\n\tonChange?: (options: string[]) => void;\n\t/** Placeholder для input */\n\tplaceholder?: string;\n\t/** Отключить компонент */\n\treadonly?: boolean;\n\t/** CSS класс для контейнера */\n\tclassName?: string;\n\t/** Функция валидации тега. Если null - валидация отключена, если не передана - используется валидация по умолчанию */\n\tvalidateTag?: ((tag: string, allTags: string[], editingIndex?: number) => boolean | string) | null;\n\t/** Состояние ошибки */\n\tinvalid?: boolean;\n\t/** Кастомная функция рендера тега */\n\trenderOption?: (props: RenderTagProps) => React.ReactNode;\n}\n\n/**\n * Компонент для ввода и отображения тегов\n */\nexport const TagInput = React.forwardRef<HTMLDivElement, TagInputProps>(\n\t(\n\t\t{\n\t\t\tvalue,\n\t\t\tdefaultValue = [],\n\t\t\tonChange,\n\t\t\tplaceholder = \"Добавить тег...\",\n\t\t\treadonly = false,\n\t\t\tclassName,\n\t\t\tvalidateTag,\n\t\t\tinvalid,\n\t\t\trenderOption\n\t\t},\n\t\tref\n\t) => {\n\t\t// Состояние для ввода нового тега\n\t\tconst [inputValue, setInputValue] = useState(\"\");\n\t\tconst inputRef = useRef<HTMLInputElement>(null);\n\n\t\t// Управление тегами\n\t\tconst [tags = [], setTags] = useControllableState<string[]>({ value, defaultValue, onChange });\n\n\t\tconst styles = tagInputStyles({ className, invalid });\n\t\tconst removeTag = useCallback(\n\t\t\t(index: number) => {\n\t\t\t\tif (readonly) return;\n\t\t\t\tsetTags(tags.filter((_, i) => i !== index));\n\t\t\t},\n\t\t\t[tags, setTags, readonly]\n\t\t);\n\n\t\t// Состояние для режима редактирования существующих тегов\n\t\tconst [editingIndex, setEditingIndex] = useState<number | null>(null);\n\t\tconst editingRef = useRef<HTMLDivElement>(null);\n\n\t\t/**\n\t\t * Функция валидации тега\n\t\t */\n\t\tconst validateTagValue = useCallback(\n\t\t\t(tag: string, editingIndex?: number): boolean => {\n\t\t\t\tif (validateTag === null) return true;\n\n\t\t\t\tconst validator = validateTag || defaultValidateTag;\n\t\t\t\tconst result = validator(tag, tags, editingIndex);\n\n\t\t\t\treturn result === true;\n\t\t\t},\n\t\t\t[validateTag, tags]\n\t\t);\n\n\t\t/**\n\t\t * Переключение в режим редактирования существующего тега\n\t\t */\n\t\tconst startEditing = useCallback(\n\t\t\t(index: number) => {\n\t\t\t\tif (readonly) return;\n\t\t\t\tsetEditingIndex(index);\n\t\t\t\t// Фокусируем элемент после обновления состояния\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (editingRef.current) {\n\t\t\t\t\t\t// Устанавливаем содержимое напрямую, без использования React state\n\t\t\t\t\t\teditingRef.current.textContent = tags[index];\n\t\t\t\t\t\teditingRef.current.focus();\n\t\t\t\t\t\t// Выделяем весь текст\n\t\t\t\t\t\tconst range = document.createRange();\n\t\t\t\t\t\trange.selectNodeContents(editingRef.current);\n\t\t\t\t\t\tconst selection = window.getSelection();\n\t\t\t\t\t\tselection?.removeAllRanges();\n\t\t\t\t\t\tselection?.addRange(range);\n\t\t\t\t\t}\n\t\t\t\t}, 0);\n\t\t\t},\n\t\t\t[tags, setEditingIndex, readonly]\n\t\t);\n\n\t\t/**\n\t\t * Отмена редактирования тега\n\t\t */\n\t\tconst cancelEditing = useCallback(() => {\n\t\t\tsetEditingIndex(null);\n\t\t\tsetTimeout(() => inputRef.current?.focus(), 0);\n\t\t}, [setEditingIndex]);\n\n\t\t/**\n\t\t * Обработчик нажатия Enter на теге: переключает текущий тег в режим редактирования\n\t\t */\n\t\tconst onEnter = useCallback((_: string, index: number) => startEditing(index), [startEditing]);\n\n\t\tconst handleDeleteTag = useCallback((_: string, index: number) => removeTag(index), [removeTag]);\n\n\t\t/**\n\t\t * Хук для навигации по тегам с помощью клавиатуры (вперед/назад)\n\t\t */\n\t\tconst { handleKeyDown: handleTagsKeyDown, isFocused } = useItemsKeyboardNavigation({\n\t\t\titems: tags,\n\t\t\tonEnter,\n\t\t\tonDelete: handleDeleteTag,\n\t\t\tcycleNavigation: true\n\t\t});\n\n\t\t/**\n\t\t * Сохранение изменений в текущем теге\n\t\t */\n\t\tconst saveEditing = useCallback(() => {\n\t\t\tif (editingIndex !== null && editingRef.current) {\n\t\t\t\tconst newValue = editingRef.current.textContent?.trim() || \"\";\n\n\t\t\t\tif (newValue && validateTagValue(newValue, editingIndex)) {\n\t\t\t\t\tconst newTags = [...tags];\n\t\t\t\t\tnewTags[editingIndex] = newValue;\n\t\t\t\t\tsetTags(newTags);\n\t\t\t\t\tsetEditingIndex(null);\n\t\t\t\t\t// Возвращаем фокус в input и устанавливаем фокус на отредактированный элемент\n\t\t\t\t\tsetTimeout(() => inputRef.current?.focus(), 0);\n\t\t\t\t}\n\t\t\t}\n\t\t}, [editingIndex, editingRef, tags, setEditingIndex, setTags, validateTagValue]);\n\n\t\t/**\n\t\t * Добавление нового тега\n\t\t */\n\t\tconst addNewTag = useCallback(\n\t\t\t(tagValue: string) => {\n\t\t\t\tconst trimmedTag = tagValue.trim();\n\t\t\t\tif (trimmedTag && validateTagValue(trimmedTag)) {\n\t\t\t\t\tsetTags([...tags, trimmedTag]);\n\t\t\t\t\tsetInputValue(\"\");\n\t\t\t\t}\n\t\t\t},\n\t\t\t[tags, setTags, setInputValue, validateTagValue]\n\t\t);\n\n\t\t/**\n\t\t * Обработчик нажатия клавиш на input:\n\t\t * - Если нажат Enter и input не пустой, добавляет новый тег\n\t\t * - Если input пустой, обрабатывает навигацию по тегам\n\t\t */\n\t\tconst handleInputKeyDown = useCallback(\n\t\t\t(e: KeyboardEvent<HTMLInputElement>) => {\n\t\t\t\tif (e.key === \"Enter\" && inputValue.trim()) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\taddNewTag(inputValue);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!inputValue.trim()) {\n\t\t\t\t\thandleTagsKeyDown(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[inputValue, handleTagsKeyDown, addNewTag]\n\t\t);\n\n\t\t/**\n\t\t * Обработчик потери фокуса input - добавляет тег если он не пустой\n\t\t */\n\t\tconst handleInputBlur = useCallback(() => {\n\t\t\tif (inputValue.trim()) {\n\t\t\t\taddNewTag(inputValue);\n\t\t\t}\n\t\t}, [inputValue, addNewTag]);\n\n\t\tconst handleEditingKeyDown = useCallback(\n\t\t\t(e: KeyboardEvent<HTMLDivElement>) => {\n\t\t\t\tif (e.key === \"Enter\") {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tsaveEditing();\n\t\t\t\t} else if (e.key === \"Escape\") {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tcancelEditing();\n\t\t\t\t}\n\t\t\t},\n\t\t\t[saveEditing, cancelEditing]\n\t\t);\n\n\t\tconst renderTags = useCallback(() => {\n\t\t\treturn tags.map((tag, index) => {\n\t\t\t\tif (editingIndex === index) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<InputGroupContentEditable\n\t\t\t\t\t\t\tkey={`editing-${index}`}\n\t\t\t\t\t\t\tref={editingRef}\n\t\t\t\t\t\t\tclassName={editingDivStyles()}\n\t\t\t\t\t\t\tonKeyDown={handleEditingKeyDown}\n\t\t\t\t\t\t\tonBlur={cancelEditing}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (renderOption) {\n\t\t\t\t\tconst item = renderOption({\n\t\t\t\t\t\ttag,\n\t\t\t\t\t\tindex,\n\t\t\t\t\t\tonClose: () => removeTag(index),\n\t\t\t\t\t\tonEdit: () => startEditing(index),\n\t\t\t\t\t\tisFocused: !readonly && isFocused(index),\n\t\t\t\t\t\treadonly\n\t\t\t\t\t});\n\t\t\t\t\tif (item !== undefined) {\n\t\t\t\t\t\treturn item;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<SearchSelectTag\n\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\tonLabelClick={() => startEditing(index)}\n\t\t\t\t\t\tonClose={() => removeTag(index)}\n\t\t\t\t\t\treadonly={readonly}\n\t\t\t\t\t\tisFocused={!readonly && isFocused(index)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{tag}\n\t\t\t\t\t</SearchSelectTag>\n\t\t\t\t);\n\t\t\t});\n\t\t}, [\n\t\t\teditingIndex,\n\t\t\teditingRef,\n\t\t\thandleEditingKeyDown,\n\t\t\tcancelEditing,\n\t\t\ttags,\n\t\t\treadonly,\n\t\t\tisFocused,\n\t\t\tremoveTag,\n\t\t\tstartEditing,\n\t\t\trenderOption\n\t\t]);\n\n\t\treturn (\n\t\t\t<InputGroup ref={ref} className={styles.base()}>\n\t\t\t\t{renderTags()}\n\t\t\t\t<InputGroupInput\n\t\t\t\t\tref={inputRef}\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tvalue={inputValue}\n\t\t\t\t\tonChange={(e) => setInputValue(e.target.value)}\n\t\t\t\t\tonKeyDown={handleInputKeyDown}\n\t\t\t\t\tonBlur={handleInputBlur}\n\t\t\t\t\tplaceholder={readonly ? \"\" : placeholder}\n\t\t\t\t\tclassName={inputStyles()}\n\t\t\t\t\treadOnly={readonly}\n\t\t\t\t\taria-invalid={invalid}\n\t\t\t\t/>\n\t\t\t</InputGroup>\n\t\t);\n\t}\n);\n\nTagInput.displayName = \"TagInput\";\n"],"names":["tagInputStyles","tv","selectTriggerStyles","inputStyles","editingDivStyles","defaultValidateTag","tag","allTags","editingIndex","_","i","TagInput","React","value","defaultValue","onChange","placeholder","readonly","className","validateTag","invalid","renderOption","ref","inputValue","setInputValue","useState","inputRef","useRef","tags","setTags","useControllableState","styles","removeTag","useCallback","index","setEditingIndex","editingRef","validateTagValue","startEditing","range","selection","cancelEditing","onEnter","handleDeleteTag","handleTagsKeyDown","isFocused","useItemsKeyboardNavigation","saveEditing","newValue","newTags","addNewTag","tagValue","trimmedTag","handleInputKeyDown","e","handleInputBlur","handleEditingKeyDown","renderTags","jsx","InputGroupContentEditable","item","SearchSelectTag","InputGroup","InputGroupInput"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textarea.js","sources":["../../src/components/textarea/textarea/Textarea.tsx","../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/extends.js","../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../node_modules/.pnpm/use-isomorphic-layout-effec_0eaf1275c42a90a284bd73abb469f932/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js","../../node_modules/.pnpm/use-latest@1.3.0_@types+react@18.3.20_react@18.3.1/node_modules/use-latest/dist/use-latest.esm.js","../../node_modules/.pnpm/use-composed-ref@1.4.0_@types+react@18.3.20_react@18.3.1/node_modules/use-composed-ref/dist/use-composed-ref.esm.js","../../node_modules/.pnpm/react-textarea-autosize@8.5_234058ab51b636a76d02be9312558ea5/node_modules/react-textarea-autosize/dist/react-textarea-autosize.browser.esm.js","../../src/components/textarea/autogrow-textarea/AutogrowTextarea.tsx"],"sourcesContent":["import React, { useRef } from \"react\";\r\nimport { tv } from \"tailwind-variants\";\r\nimport { useMergeRefs } from \"../../../hooks/useMergeRefs\";\r\nimport { useCustomValidity } from \"../../../hooks/useCustomValidity\";\r\nimport { inputBaseControlStyles } from \"../../input/styles/inputBaseStyles\";\r\nimport { VariantsConfig } from \"@/lib/utils/variants\";\r\n\r\nexport interface TextareaVariants {\r\n\tresize?: \"none\" | \"vertical\" | \"horizontal\" | \"both\";\r\n}\r\n\r\nconst textareaStyles = tv({\r\n\textend: inputBaseControlStyles,\r\n\tbase: \"min-h-14\",\r\n\tvariants: {\r\n\t\tresize: {\r\n\t\t\tnone: \"resize-none\",\r\n\t\t\tvertical: \"resize-y\",\r\n\t\t\thorizontal: \"resize-x\",\r\n\t\t\tboth: \"resize\"\r\n\t\t}\r\n\t} satisfies VariantsConfig<TextareaVariants>,\r\n\tdefaultVariants: {\r\n\t\tresize: \"vertical\"\r\n\t}\r\n});\r\n\r\nexport type TextareaProps = React.ComponentProps<\"textarea\"> &\r\n\tTextareaVariants & {\r\n\t\t/** Текст сообщения об ошибке. При наличии делает поле невалидным */\r\n\t\terror?: string;\r\n\t};\r\n\r\n/**\r\n * Стилизованный компонент textarea для многострочного ввода текста.\r\n * Поддерживает все стандартные свойства textarea элемента.\r\n */\r\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\r\n\t({ className, error, resize, ...other }, ref) => {\r\n\t\tconst textareaRef = useRef<HTMLTextAreaElement>(null);\r\n\t\tconst mergedRef = useMergeRefs(textareaRef, ref);\r\n\r\n\t\tuseCustomValidity(textareaRef, error);\r\n\r\n\t\treturn (\r\n\t\t\t<textarea\r\n\t\t\t\tclassName={textareaStyles({ resize, className })}\r\n\t\t\t\tref={mergedRef}\r\n\t\t\t\taria-invalid={!!error}\r\n\t\t\t\t{...other}\r\n\t\t\t/>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nTextarea.displayName = \"Textarea\";\r\n\r\nexport default Textarea;\r\n","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import { useLayoutEffect } from 'react';\n\nvar index = useLayoutEffect ;\n\nexport { index as default };\n","import React from 'react';\nimport useIsomorphicLayoutEffect from 'use-isomorphic-layout-effect';\n\nvar useLatest = function useLatest(value) {\n var ref = React.useRef(value);\n useIsomorphicLayoutEffect(function () {\n ref.current = value;\n });\n return ref;\n};\n\nexport { useLatest as default };\n","import React from 'react';\n\n// basically Exclude<React.ClassAttributes<T>[\"ref\"], string>\n\nvar updateRef = function updateRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n return;\n }\n ref.current = value;\n};\nvar useComposedRef = function useComposedRef(libRef, userRef) {\n var prevUserRef = React.useRef();\n return React.useCallback(function (instance) {\n libRef.current = instance;\n if (prevUserRef.current) {\n updateRef(prevUserRef.current, null);\n }\n prevUserRef.current = userRef;\n if (!userRef) {\n return;\n }\n updateRef(userRef, instance);\n }, [userRef]);\n};\n\nexport { useComposedRef as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport * as React from 'react';\nimport useLatest from 'use-latest';\nimport useComposedRef from 'use-composed-ref';\n\nvar HIDDEN_TEXTAREA_STYLE = {\n 'min-height': '0',\n 'max-height': 'none',\n height: '0',\n visibility: 'hidden',\n overflow: 'hidden',\n position: 'absolute',\n 'z-index': '-1000',\n top: '0',\n right: '0',\n display: 'block'\n};\nvar forceHiddenStyles = function forceHiddenStyles(node) {\n Object.keys(HIDDEN_TEXTAREA_STYLE).forEach(function (key) {\n node.style.setProperty(key, HIDDEN_TEXTAREA_STYLE[key], 'important');\n });\n};\nvar forceHiddenStyles$1 = forceHiddenStyles;\n\nvar hiddenTextarea = null;\nvar getHeight = function getHeight(node, sizingData) {\n var height = node.scrollHeight;\n if (sizingData.sizingStyle.boxSizing === 'border-box') {\n // border-box: add border, since height = content + padding + border\n return height + sizingData.borderSize;\n }\n\n // remove padding, since height = content\n return height - sizingData.paddingSize;\n};\nfunction calculateNodeHeight(sizingData, value, minRows, maxRows) {\n if (minRows === void 0) {\n minRows = 1;\n }\n if (maxRows === void 0) {\n maxRows = Infinity;\n }\n if (!hiddenTextarea) {\n hiddenTextarea = document.createElement('textarea');\n hiddenTextarea.setAttribute('tabindex', '-1');\n hiddenTextarea.setAttribute('aria-hidden', 'true');\n forceHiddenStyles$1(hiddenTextarea);\n }\n if (hiddenTextarea.parentNode === null) {\n document.body.appendChild(hiddenTextarea);\n }\n var paddingSize = sizingData.paddingSize,\n borderSize = sizingData.borderSize,\n sizingStyle = sizingData.sizingStyle;\n var boxSizing = sizingStyle.boxSizing;\n Object.keys(sizingStyle).forEach(function (_key) {\n var key = _key;\n hiddenTextarea.style[key] = sizingStyle[key];\n });\n forceHiddenStyles$1(hiddenTextarea);\n hiddenTextarea.value = value;\n var height = getHeight(hiddenTextarea, sizingData);\n // Double set and calc due to Firefox bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1795904\n hiddenTextarea.value = value;\n height = getHeight(hiddenTextarea, sizingData);\n\n // measure height of a textarea with a single row\n hiddenTextarea.value = 'x';\n var rowHeight = hiddenTextarea.scrollHeight - paddingSize;\n var minHeight = rowHeight * minRows;\n if (boxSizing === 'border-box') {\n minHeight = minHeight + paddingSize + borderSize;\n }\n height = Math.max(minHeight, height);\n var maxHeight = rowHeight * maxRows;\n if (boxSizing === 'border-box') {\n maxHeight = maxHeight + paddingSize + borderSize;\n }\n height = Math.min(maxHeight, height);\n return [height, rowHeight];\n}\n\nvar noop = function noop() {};\nvar pick = function pick(props, obj) {\n return props.reduce(function (acc, prop) {\n acc[prop] = obj[prop];\n return acc;\n }, {});\n};\n\nvar SIZING_STYLE = ['borderBottomWidth', 'borderLeftWidth', 'borderRightWidth', 'borderTopWidth', 'boxSizing', 'fontFamily', 'fontSize', 'fontStyle', 'fontWeight', 'letterSpacing', 'lineHeight', 'paddingBottom', 'paddingLeft', 'paddingRight', 'paddingTop',\n// non-standard\n'tabSize', 'textIndent',\n// non-standard\n'textRendering', 'textTransform', 'width', 'wordBreak', 'wordSpacing', 'scrollbarGutter'];\nvar isIE = !!document.documentElement.currentStyle ;\nvar getSizingData = function getSizingData(node) {\n var style = window.getComputedStyle(node);\n if (style === null) {\n return null;\n }\n var sizingStyle = pick(SIZING_STYLE, style);\n var boxSizing = sizingStyle.boxSizing;\n\n // probably node is detached from DOM, can't read computed dimensions\n if (boxSizing === '') {\n return null;\n }\n\n // IE (Edge has already correct behaviour) returns content width as computed width\n // so we need to add manually padding and border widths\n if (isIE && boxSizing === 'border-box') {\n sizingStyle.width = parseFloat(sizingStyle.width) + parseFloat(sizingStyle.borderRightWidth) + parseFloat(sizingStyle.borderLeftWidth) + parseFloat(sizingStyle.paddingRight) + parseFloat(sizingStyle.paddingLeft) + 'px';\n }\n var paddingSize = parseFloat(sizingStyle.paddingBottom) + parseFloat(sizingStyle.paddingTop);\n var borderSize = parseFloat(sizingStyle.borderBottomWidth) + parseFloat(sizingStyle.borderTopWidth);\n return {\n sizingStyle: sizingStyle,\n paddingSize: paddingSize,\n borderSize: borderSize\n };\n};\nvar getSizingData$1 = getSizingData;\n\nfunction useListener(target, type, listener) {\n var latestListener = useLatest(listener);\n React.useLayoutEffect(function () {\n var handler = function handler(ev) {\n return latestListener.current(ev);\n };\n // might happen if document.fonts is not defined, for instance\n if (!target) {\n return;\n }\n target.addEventListener(type, handler);\n return function () {\n return target.removeEventListener(type, handler);\n };\n }, []);\n}\nvar useFormResetListener = function useFormResetListener(libRef, listener) {\n useListener(document.body, 'reset', function (ev) {\n if (libRef.current.form === ev.target) {\n listener(ev);\n }\n });\n};\nvar useWindowResizeListener = function useWindowResizeListener(listener) {\n useListener(window, 'resize', listener);\n};\nvar useFontsLoadedListener = function useFontsLoadedListener(listener) {\n useListener(document.fonts, 'loadingdone', listener);\n};\n\nvar _excluded = [\"cacheMeasurements\", \"maxRows\", \"minRows\", \"onChange\", \"onHeightChange\"];\nvar TextareaAutosize = function TextareaAutosize(_ref, userRef) {\n var cacheMeasurements = _ref.cacheMeasurements,\n maxRows = _ref.maxRows,\n minRows = _ref.minRows,\n _ref$onChange = _ref.onChange,\n onChange = _ref$onChange === void 0 ? noop : _ref$onChange,\n _ref$onHeightChange = _ref.onHeightChange,\n onHeightChange = _ref$onHeightChange === void 0 ? noop : _ref$onHeightChange,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n var isControlled = props.value !== undefined;\n var libRef = React.useRef(null);\n var ref = useComposedRef(libRef, userRef);\n var heightRef = React.useRef(0);\n var measurementsCacheRef = React.useRef();\n var resizeTextarea = function resizeTextarea() {\n var node = libRef.current;\n var nodeSizingData = cacheMeasurements && measurementsCacheRef.current ? measurementsCacheRef.current : getSizingData$1(node);\n if (!nodeSizingData) {\n return;\n }\n measurementsCacheRef.current = nodeSizingData;\n var _calculateNodeHeight = calculateNodeHeight(nodeSizingData, node.value || node.placeholder || 'x', minRows, maxRows),\n height = _calculateNodeHeight[0],\n rowHeight = _calculateNodeHeight[1];\n if (heightRef.current !== height) {\n heightRef.current = height;\n node.style.setProperty('height', height + \"px\", 'important');\n onHeightChange(height, {\n rowHeight: rowHeight\n });\n }\n };\n var handleChange = function handleChange(event) {\n if (!isControlled) {\n resizeTextarea();\n }\n onChange(event);\n };\n {\n React.useLayoutEffect(resizeTextarea);\n useFormResetListener(libRef, function () {\n if (!isControlled) {\n var currentValue = libRef.current.value;\n requestAnimationFrame(function () {\n var node = libRef.current;\n if (node && currentValue !== node.value) {\n resizeTextarea();\n }\n });\n }\n });\n useWindowResizeListener(resizeTextarea);\n useFontsLoadedListener(resizeTextarea);\n return /*#__PURE__*/React.createElement(\"textarea\", _extends({}, props, {\n onChange: handleChange,\n ref: ref\n }));\n }\n};\nvar index = /* #__PURE__ */React.forwardRef(TextareaAutosize);\n\nexport { index as default };\n","import React, { useRef } from \"react\";\r\nimport TextareaAutosize from \"react-textarea-autosize\";\r\nimport { tv } from \"tailwind-variants\";\r\nimport { useMergeRefs } from \"../../../hooks/useMergeRefs\";\r\nimport { useCustomValidity } from \"../../../hooks/useCustomValidity\";\r\nimport { inputBaseControlStyles } from \"../../input/styles/inputBaseStyles\";\r\n\r\nconst autogrowTextareaStyles = tv({\r\n\textend: inputBaseControlStyles,\r\n\tbase: \"resize-none leading-[1.125rem]\"\r\n});\r\n\r\nexport type AutogrowTextareaProps = React.ComponentProps<typeof TextareaAutosize> & {\r\n\t/** Текст сообщения об ошибке. При наличии делает поле невалидным */\r\n\terror?: string;\r\n};\r\n\r\n/**\r\n * Стилизованный компонент textarea с автоматическим увеличением высоты.\r\n * Использует библиотеку react-textarea-autosize для надежной работы с min-height и max-height.\r\n */\r\nexport const AutogrowTextarea = React.forwardRef<HTMLTextAreaElement, AutogrowTextareaProps>(\r\n\t({ className, minRows = 2, error, ...other }, ref) => {\r\n\t\tconst textareaRef = useRef<HTMLTextAreaElement>(null);\r\n\t\tconst mergedRef = useMergeRefs(textareaRef, ref);\r\n\r\n\t\tuseCustomValidity(textareaRef, error);\r\n\r\n\t\tconst sharedProps = {\r\n\t\t\tclassName: autogrowTextareaStyles({ className }),\r\n\t\t\tref: mergedRef,\r\n\t\t\t\"aria-invalid\": !!error as boolean,\r\n\t\t\tminRows,\r\n\t\t\t...other\r\n\t\t};\r\n\r\n\t\t// SSR: document недоступен — рендерим обычный textarea\r\n\t\tif (typeof document === \"undefined\") {\r\n\t\t\treturn <textarea {...sharedProps} rows={minRows} />;\r\n\t\t}\r\n\r\n\t\treturn <TextareaAutosize {...sharedProps} />;\r\n\t}\r\n);\r\n\r\nAutogrowTextarea.displayName = \"AutogrowTextarea\";\r\n\r\nexport default AutogrowTextarea;\r\n"],"names":["textareaStyles","tv","inputBaseControlStyles","Textarea","React","className","error","resize","other","ref","textareaRef","useRef","mergedRef","useMergeRefs","useCustomValidity","jsx","_extends","t","r","_objectWithoutPropertiesLoose","n","index","useLayoutEffect","useLatest","value","useIsomorphicLayoutEffect","updateRef","useComposedRef","libRef","userRef","prevUserRef","instance","HIDDEN_TEXTAREA_STYLE","forceHiddenStyles","node","key","forceHiddenStyles$1","hiddenTextarea","getHeight","sizingData","height","calculateNodeHeight","minRows","maxRows","paddingSize","borderSize","sizingStyle","boxSizing","_key","rowHeight","minHeight","maxHeight","noop","pick","props","obj","acc","prop","SIZING_STYLE","isIE","getSizingData","style","getSizingData$1","useListener","target","type","listener","latestListener","handler","ev","useFormResetListener","useWindowResizeListener","useFontsLoadedListener","_excluded","TextareaAutosize","_ref","cacheMeasurements","_ref$onChange","onChange","_ref$onHeightChange","onHeightChange","isControlled","heightRef","measurementsCacheRef","resizeTextarea","nodeSizingData","_calculateNodeHeight","handleChange","event","currentValue","autogrowTextareaStyles","AutogrowTextarea","sharedProps"],"mappings":";;;;;;AAWA,MAAMA,IAAiBC,EAAG;AAAA,EACzB,QAAQC;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,IACT,QAAQ;AAAA,MACP,MAAM;AAAA,MACN,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,MAAM;AAAA,IAAA;AAAA,EAER;AAAA,EACA,iBAAiB;AAAA,IAChB,QAAQ;AAAA,EAAA;AAEV,CAAC,GAYYC,IAAWC,EAAM;AAAA,EAC7B,CAAC,EAAE,WAAAC,GAAW,OAAAC,GAAO,QAAAC,GAAQ,GAAGC,KAASC,MAAQ;AAC1C,UAAAC,IAAcC,EAA4B,IAAI,GAC9CC,IAAYC,EAAaH,GAAaD,CAAG;AAE/C,WAAAK,EAAkBJ,GAAaJ,CAAK,GAGnC,gBAAAS;AAAA,MAAC;AAAA,MAAA;AAAA,QACA,WAAWf,EAAe,EAAE,QAAAO,GAAQ,WAAAF,GAAW;AAAA,QAC/C,KAAKO;AAAA,QACL,gBAAc,CAAC,CAACN;AAAA,QACf,GAAGE;AAAA,MAAA;AAAA,IACL;AAAA,EAAA;AAGH;AAEAL,EAAS,cAAc;ACvDvB,SAASa,IAAW;AAClB,SAAOA,IAAW,OAAO,SAAS,OAAO,OAAO,KAAI,IAAK,SAAU,GAAG;AACpE,aAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,UAAIC,IAAI,UAAU,CAAC;AACnB,eAASC,KAAKD,EAAG,EAAC,CAAE,GAAE,eAAe,KAAKA,GAAGC,CAAC,MAAM,EAAEA,CAAC,IAAID,EAAEC,CAAC;AAAA,IACpE;AACI,WAAO;AAAA,EACR,GAAEF,EAAS,MAAM,MAAM,SAAS;AACnC;ACRA,SAASG,EAA8BD,GAAG,GAAG;AAC3C,MAAYA,KAAR,KAAW,QAAO,CAAE;AACxB,MAAID,IAAI,CAAE;AACV,WAASG,KAAKF,EAAG,KAAI,CAAA,EAAG,eAAe,KAAKA,GAAGE,CAAC,GAAG;AACjD,QAAW,EAAE,QAAQA,CAAC,MAAlB,GAAqB;AACzB,IAAAH,EAAEG,CAAC,IAAIF,EAAEE,CAAC;AAAA,EACd;AACE,SAAOH;AACT;ACNA,IAAII,IAAQC,GCCRC,IAAY,SAAmBC,GAAO;AACxC,MAAIf,IAAML,EAAM,OAAOoB,CAAK;AAC5BC,SAAAA,EAA0B,WAAY;AACpC,IAAAhB,EAAI,UAAUe;AAAA,EAClB,CAAG,GACMf;AACT,GCLIiB,IAAY,SAAmBjB,GAAKe,GAAO;AAC7C,MAAI,OAAOf,KAAQ,YAAY;AAC7B,IAAAA,EAAIe,CAAK;AACT;AAAA,EACJ;AACE,EAAAf,EAAI,UAAUe;AAChB,GACIG,IAAiB,SAAwBC,GAAQC,GAAS;AAC5D,MAAIC,IAAc1B,EAAM,OAAQ;AAChC,SAAOA,EAAM,YAAY,SAAU2B,GAAU;AAM3C,IALAH,EAAO,UAAUG,GACbD,EAAY,WACdJ,EAAUI,EAAY,SAAS,IAAI,GAErCA,EAAY,UAAUD,GACjBA,KAGLH,EAAUG,GAASE,CAAQ;AAAA,EAC/B,GAAK,CAACF,CAAO,CAAC;AACd,GClBIG,IAAwB;AAAA,EAC1B,cAAc;AAAA,EACd,cAAc;AAAA,EACd,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,UAAU;AAAA,EACV,WAAW;AAAA,EACX,KAAK;AAAA,EACL,OAAO;AAAA,EACP,SAAS;AACX,GACIC,IAAoB,SAA2BC,GAAM;AACvD,SAAO,KAAKF,CAAqB,EAAE,QAAQ,SAAUG,GAAK;AACxD,IAAAD,EAAK,MAAM,YAAYC,GAAKH,EAAsBG,CAAG,GAAG,WAAW;AAAA,EACvE,CAAG;AACH,GACIC,IAAsBH,GAEtBI,IAAiB,MACjBC,IAAY,SAAmBJ,GAAMK,GAAY;AACnD,MAAIC,IAASN,EAAK;AAClB,SAAIK,EAAW,YAAY,cAAc,eAEhCC,IAASD,EAAW,aAItBC,IAASD,EAAW;AAC7B;AACA,SAASE,EAAoBF,GAAYf,GAAOkB,GAASC,GAAS;AAChE,EAAID,MAAY,WACdA,IAAU,IAERC,MAAY,WACdA,IAAU,QAEPN,MACHA,IAAiB,SAAS,cAAc,UAAU,GAClDA,EAAe,aAAa,YAAY,IAAI,GAC5CA,EAAe,aAAa,eAAe,MAAM,GACjDD,EAAoBC,CAAc,IAEhCA,EAAe,eAAe,QAChC,SAAS,KAAK,YAAYA,CAAc;AAE1C,MAAIO,IAAcL,EAAW,aAC3BM,IAAaN,EAAW,YACxBO,IAAcP,EAAW,aACvBQ,IAAYD,EAAY;AAC5B,SAAO,KAAKA,CAAW,EAAE,QAAQ,SAAUE,GAAM;AAC/C,QAAIb,IAAMa;AACV,IAAAX,EAAe,MAAMF,CAAG,IAAIW,EAAYX,CAAG;AAAA,EAC/C,CAAG,GACDC,EAAoBC,CAAc,GAClCA,EAAe,QAAQb;AACvB,MAAIgB,IAASF,EAAUD,GAAgBE,CAAU;AAEjD,EAAAF,EAAe,QAAQb,GACvBgB,IAASF,EAAUD,GAAgBE,CAAU,GAG7CF,EAAe,QAAQ;AACvB,MAAIY,IAAYZ,EAAe,eAAeO,GAC1CM,IAAYD,IAAYP;AAC5B,EAAIK,MAAc,iBAChBG,IAAYA,IAAYN,IAAcC,IAExCL,IAAS,KAAK,IAAIU,GAAWV,CAAM;AACnC,MAAIW,IAAYF,IAAYN;AAC5B,SAAII,MAAc,iBAChBI,IAAYA,IAAYP,IAAcC,IAExCL,IAAS,KAAK,IAAIW,GAAWX,CAAM,GAC5B,CAACA,GAAQS,CAAS;AAC3B;AAEA,IAAIG,IAAO,WAAgB;AAAE,GACzBC,IAAO,SAAcC,GAAOC,GAAK;AACnC,SAAOD,EAAM,OAAO,SAAUE,GAAKC,GAAM;AACvC,WAAAD,EAAIC,CAAI,IAAIF,EAAIE,CAAI,GACbD;AAAA,EACR,GAAE,EAAE;AACP,GAEIE,IAAe;AAAA,EAAC;AAAA,EAAqB;AAAA,EAAmB;AAAA,EAAoB;AAAA,EAAkB;AAAA,EAAa;AAAA,EAAc;AAAA,EAAY;AAAA,EAAa;AAAA,EAAc;AAAA,EAAiB;AAAA,EAAc;AAAA,EAAiB;AAAA,EAAe;AAAA,EAAgB;AAAA;AAAA,EAEnP;AAAA,EAAW;AAAA;AAAA,EAEX;AAAA,EAAiB;AAAA,EAAiB;AAAA,EAAS;AAAA,EAAa;AAAA,EAAe;AAAiB,GACpFC,IAAO,CAAC,CAAC,SAAS,gBAAgB,cAClCC,IAAgB,SAAuB1B,GAAM;AAC/C,MAAI2B,IAAQ,OAAO,iBAAiB3B,CAAI;AACxC,MAAI2B,MAAU;AACZ,WAAO;AAET,MAAIf,IAAcO,EAAKK,GAAcG,CAAK,GACtCd,IAAYD,EAAY;AAG5B,MAAIC,MAAc;AAChB,WAAO;AAKT,EAAIY,KAAQZ,MAAc,iBACxBD,EAAY,QAAQ,WAAWA,EAAY,KAAK,IAAI,WAAWA,EAAY,gBAAgB,IAAI,WAAWA,EAAY,eAAe,IAAI,WAAWA,EAAY,YAAY,IAAI,WAAWA,EAAY,WAAW,IAAI;AAExN,MAAIF,IAAc,WAAWE,EAAY,aAAa,IAAI,WAAWA,EAAY,UAAU,GACvFD,IAAa,WAAWC,EAAY,iBAAiB,IAAI,WAAWA,EAAY,cAAc;AAClG,SAAO;AAAA,IACL,aAAaA;AAAA,IACb,aAAaF;AAAA,IACb,YAAYC;AAAA,EACb;AACH,GACIiB,IAAkBF;AAEtB,SAASG,EAAYC,GAAQC,GAAMC,GAAU;AAC3C,MAAIC,IAAiB5C,EAAU2C,CAAQ;AACvC,EAAA9D,EAAM,gBAAgB,WAAY;AAChC,QAAIgE,IAAU,SAAiBC,GAAI;AACjC,aAAOF,EAAe,QAAQE,CAAE;AAAA,IACjC;AAED,QAAKL;AAGL,aAAAA,EAAO,iBAAiBC,GAAMG,CAAO,GAC9B,WAAY;AACjB,eAAOJ,EAAO,oBAAoBC,GAAMG,CAAO;AAAA,MAChD;AAAA,EACF,GAAE,EAAE;AACP;AACA,IAAIE,KAAuB,SAA8B1C,GAAQsC,GAAU;AACzE,EAAAH,EAAY,SAAS,MAAM,SAAS,SAAUM,GAAI;AAChD,IAAIzC,EAAO,QAAQ,SAASyC,EAAG,UAC7BH,EAASG,CAAE;AAAA,EAEjB,CAAG;AACH,GACIE,KAA0B,SAAiCL,GAAU;AACvE,EAAAH,EAAY,QAAQ,UAAUG,CAAQ;AACxC,GACIM,KAAyB,SAAgCN,GAAU;AACrE,EAAAH,EAAY,SAAS,OAAO,eAAeG,CAAQ;AACrD,GAEIO,KAAY,CAAC,qBAAqB,WAAW,WAAW,YAAY,gBAAgB,GACpFC,KAAmB,SAA0BC,GAAM9C,GAAS;AAC9D,MAAI+C,IAAoBD,EAAK,mBAC3BhC,IAAUgC,EAAK,SACfjC,IAAUiC,EAAK,SACfE,IAAgBF,EAAK,UACrBG,IAAWD,MAAkB,SAASzB,IAAOyB,GAC7CE,IAAsBJ,EAAK,gBAC3BK,IAAiBD,MAAwB,SAAS3B,IAAO2B,GACzDzB,IAAQnC,EAA8BwD,GAAMF,EAAS,GACnDQ,IAAe3B,EAAM,UAAU,QAC/B1B,IAASxB,EAAM,OAAO,IAAI,GAC1BK,IAAMkB,EAAeC,GAAQC,CAAO,GACpCqD,IAAY9E,EAAM,OAAO,CAAC,GAC1B+E,IAAuB/E,EAAM,OAAQ,GACrCgF,IAAiB,WAA0B;AAC7C,QAAIlD,IAAON,EAAO,SACdyD,IAAiBT,KAAqBO,EAAqB,UAAUA,EAAqB,UAAUrB,EAAgB5B,CAAI;AAC5H,QAAKmD,GAGL;AAAA,MAAAF,EAAqB,UAAUE;AAC/B,UAAIC,IAAuB7C,EAAoB4C,GAAgBnD,EAAK,SAASA,EAAK,eAAe,KAAKQ,GAASC,CAAO,GACpHH,IAAS8C,EAAqB,CAAC,GAC/BrC,IAAYqC,EAAqB,CAAC;AACpC,MAAIJ,EAAU,YAAY1C,MACxB0C,EAAU,UAAU1C,GACpBN,EAAK,MAAM,YAAY,UAAUM,IAAS,MAAM,WAAW,GAC3DwC,EAAexC,GAAQ;AAAA,QACrB,WAAWS;AAAA,MACnB,CAAO;AAAA;AAAA,EAEJ,GACGsC,IAAe,SAAsBC,GAAO;AAC9C,IAAKP,KACHG,EAAgB,GAElBN,EAASU,CAAK;AAAA,EACf;AAEC,SAAApF,EAAM,gBAAgBgF,CAAc,GACpCd,GAAqB1C,GAAQ,WAAY;AACvC,QAAI,CAACqD,GAAc;AACjB,UAAIQ,IAAe7D,EAAO,QAAQ;AAClC,4BAAsB,WAAY;AAChC,YAAIM,IAAON,EAAO;AAClB,QAAIM,KAAQuD,MAAiBvD,EAAK,SAChCkD,EAAgB;AAAA,MAE5B,CAAS;AAAA,IACT;AAAA,EACA,CAAK,GACDb,GAAwBa,CAAc,GACtCZ,GAAuBY,CAAc,GACjB,gBAAAhF,EAAM,cAAc,YAAYY,EAAS,CAAA,GAAIsC,GAAO;AAAA,IACtE,UAAUiC;AAAA,IACV,KAAK9E;AAAA,EACX,CAAK,CAAC;AAEN,GACIY,KAAuB,gBAAAjB,EAAM,WAAWsE,EAAgB;AChN5D,MAAMgB,KAAyBzF,EAAG;AAAA,EACjC,QAAQC;AAAA,EACR,MAAM;AACP,CAAC,GAWYyF,KAAmBvF,EAAM;AAAA,EACrC,CAAC,EAAE,WAAAC,GAAW,SAAAqC,IAAU,GAAG,OAAApC,GAAO,GAAGE,EAAM,GAAGC,MAAQ;AAC/C,UAAAC,IAAcC,EAA4B,IAAI,GAC9CC,IAAYC,EAAaH,GAAaD,CAAG;AAE/C,IAAAK,EAAkBJ,GAAaJ,CAAK;AAEpC,UAAMsF,IAAc;AAAA,MACnB,WAAWF,GAAuB,EAAE,WAAArF,GAAW;AAAA,MAC/C,KAAKO;AAAA,MACL,gBAAgB,CAAC,CAACN;AAAA,MAClB,SAAAoC;AAAA,MACA,GAAGlC;AAAA,IACJ;AAGI,WAAA,OAAO,WAAa,MACf,gBAAAO,EAAA,YAAA,EAAU,GAAG6E,GAAa,MAAMlD,GAAS,IAG3C,gBAAA3B,EAAC2D,IAAkB,EAAA,GAAGkB,EAAa,CAAA;AAAA,EAAA;AAE5C;AAEAD,GAAiB,cAAc;","x_google_ignoreList":[1,2,3,4,5,6]}
|
|
1
|
+
{"version":3,"file":"textarea.js","sources":["../../src/components/textarea/textarea/Textarea.tsx","../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/extends.js","../../node_modules/.pnpm/@babel+runtime@7.27.0/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../node_modules/.pnpm/use-isomorphic-layout-effect@1.2.1_@types+react@18.3.20_react@18.3.1/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js","../../node_modules/.pnpm/use-latest@1.3.0_@types+react@18.3.20_react@18.3.1/node_modules/use-latest/dist/use-latest.esm.js","../../node_modules/.pnpm/use-composed-ref@1.4.0_@types+react@18.3.20_react@18.3.1/node_modules/use-composed-ref/dist/use-composed-ref.esm.js","../../node_modules/.pnpm/react-textarea-autosize@8.5.9_@types+react@18.3.20_react@18.3.1/node_modules/react-textarea-autosize/dist/react-textarea-autosize.browser.esm.js","../../src/components/textarea/autogrow-textarea/AutogrowTextarea.tsx"],"sourcesContent":["import React, { useRef } from \"react\";\nimport { tv } from \"tailwind-variants\";\nimport { useMergeRefs } from \"../../../hooks/useMergeRefs\";\nimport { useCustomValidity } from \"../../../hooks/useCustomValidity\";\nimport { inputBaseControlStyles } from \"../../input/styles/inputBaseStyles\";\nimport { VariantsConfig } from \"@/lib/utils/variants\";\n\nexport interface TextareaVariants {\n\tresize?: \"none\" | \"vertical\" | \"horizontal\" | \"both\";\n}\n\nconst textareaStyles = tv({\n\textend: inputBaseControlStyles,\n\tbase: \"min-h-14\",\n\tvariants: {\n\t\tresize: {\n\t\t\tnone: \"resize-none\",\n\t\t\tvertical: \"resize-y\",\n\t\t\thorizontal: \"resize-x\",\n\t\t\tboth: \"resize\"\n\t\t}\n\t} satisfies VariantsConfig<TextareaVariants>,\n\tdefaultVariants: {\n\t\tresize: \"vertical\"\n\t}\n});\n\nexport type TextareaProps = React.ComponentProps<\"textarea\"> &\n\tTextareaVariants & {\n\t\t/** Текст сообщения об ошибке. При наличии делает поле невалидным */\n\t\terror?: string;\n\t};\n\n/**\n * Стилизованный компонент textarea для многострочного ввода текста.\n * Поддерживает все стандартные свойства textarea элемента.\n */\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n\t({ className, error, resize, ...other }, ref) => {\n\t\tconst textareaRef = useRef<HTMLTextAreaElement>(null);\n\t\tconst mergedRef = useMergeRefs(textareaRef, ref);\n\n\t\tuseCustomValidity(textareaRef, error);\n\n\t\treturn (\n\t\t\t<textarea\n\t\t\t\tclassName={textareaStyles({ resize, className })}\n\t\t\t\tref={mergedRef}\n\t\t\t\taria-invalid={!!error}\n\t\t\t\t{...other}\n\t\t\t/>\n\t\t);\n\t}\n);\n\nTextarea.displayName = \"Textarea\";\n\nexport default Textarea;\n","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import { useLayoutEffect } from 'react';\n\nvar index = useLayoutEffect ;\n\nexport { index as default };\n","import React from 'react';\nimport useIsomorphicLayoutEffect from 'use-isomorphic-layout-effect';\n\nvar useLatest = function useLatest(value) {\n var ref = React.useRef(value);\n useIsomorphicLayoutEffect(function () {\n ref.current = value;\n });\n return ref;\n};\n\nexport { useLatest as default };\n","import React from 'react';\n\n// basically Exclude<React.ClassAttributes<T>[\"ref\"], string>\n\nvar updateRef = function updateRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n return;\n }\n ref.current = value;\n};\nvar useComposedRef = function useComposedRef(libRef, userRef) {\n var prevUserRef = React.useRef();\n return React.useCallback(function (instance) {\n libRef.current = instance;\n if (prevUserRef.current) {\n updateRef(prevUserRef.current, null);\n }\n prevUserRef.current = userRef;\n if (!userRef) {\n return;\n }\n updateRef(userRef, instance);\n }, [userRef]);\n};\n\nexport { useComposedRef as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport * as React from 'react';\nimport useLatest from 'use-latest';\nimport useComposedRef from 'use-composed-ref';\n\nvar HIDDEN_TEXTAREA_STYLE = {\n 'min-height': '0',\n 'max-height': 'none',\n height: '0',\n visibility: 'hidden',\n overflow: 'hidden',\n position: 'absolute',\n 'z-index': '-1000',\n top: '0',\n right: '0',\n display: 'block'\n};\nvar forceHiddenStyles = function forceHiddenStyles(node) {\n Object.keys(HIDDEN_TEXTAREA_STYLE).forEach(function (key) {\n node.style.setProperty(key, HIDDEN_TEXTAREA_STYLE[key], 'important');\n });\n};\nvar forceHiddenStyles$1 = forceHiddenStyles;\n\nvar hiddenTextarea = null;\nvar getHeight = function getHeight(node, sizingData) {\n var height = node.scrollHeight;\n if (sizingData.sizingStyle.boxSizing === 'border-box') {\n // border-box: add border, since height = content + padding + border\n return height + sizingData.borderSize;\n }\n\n // remove padding, since height = content\n return height - sizingData.paddingSize;\n};\nfunction calculateNodeHeight(sizingData, value, minRows, maxRows) {\n if (minRows === void 0) {\n minRows = 1;\n }\n if (maxRows === void 0) {\n maxRows = Infinity;\n }\n if (!hiddenTextarea) {\n hiddenTextarea = document.createElement('textarea');\n hiddenTextarea.setAttribute('tabindex', '-1');\n hiddenTextarea.setAttribute('aria-hidden', 'true');\n forceHiddenStyles$1(hiddenTextarea);\n }\n if (hiddenTextarea.parentNode === null) {\n document.body.appendChild(hiddenTextarea);\n }\n var paddingSize = sizingData.paddingSize,\n borderSize = sizingData.borderSize,\n sizingStyle = sizingData.sizingStyle;\n var boxSizing = sizingStyle.boxSizing;\n Object.keys(sizingStyle).forEach(function (_key) {\n var key = _key;\n hiddenTextarea.style[key] = sizingStyle[key];\n });\n forceHiddenStyles$1(hiddenTextarea);\n hiddenTextarea.value = value;\n var height = getHeight(hiddenTextarea, sizingData);\n // Double set and calc due to Firefox bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1795904\n hiddenTextarea.value = value;\n height = getHeight(hiddenTextarea, sizingData);\n\n // measure height of a textarea with a single row\n hiddenTextarea.value = 'x';\n var rowHeight = hiddenTextarea.scrollHeight - paddingSize;\n var minHeight = rowHeight * minRows;\n if (boxSizing === 'border-box') {\n minHeight = minHeight + paddingSize + borderSize;\n }\n height = Math.max(minHeight, height);\n var maxHeight = rowHeight * maxRows;\n if (boxSizing === 'border-box') {\n maxHeight = maxHeight + paddingSize + borderSize;\n }\n height = Math.min(maxHeight, height);\n return [height, rowHeight];\n}\n\nvar noop = function noop() {};\nvar pick = function pick(props, obj) {\n return props.reduce(function (acc, prop) {\n acc[prop] = obj[prop];\n return acc;\n }, {});\n};\n\nvar SIZING_STYLE = ['borderBottomWidth', 'borderLeftWidth', 'borderRightWidth', 'borderTopWidth', 'boxSizing', 'fontFamily', 'fontSize', 'fontStyle', 'fontWeight', 'letterSpacing', 'lineHeight', 'paddingBottom', 'paddingLeft', 'paddingRight', 'paddingTop',\n// non-standard\n'tabSize', 'textIndent',\n// non-standard\n'textRendering', 'textTransform', 'width', 'wordBreak', 'wordSpacing', 'scrollbarGutter'];\nvar isIE = !!document.documentElement.currentStyle ;\nvar getSizingData = function getSizingData(node) {\n var style = window.getComputedStyle(node);\n if (style === null) {\n return null;\n }\n var sizingStyle = pick(SIZING_STYLE, style);\n var boxSizing = sizingStyle.boxSizing;\n\n // probably node is detached from DOM, can't read computed dimensions\n if (boxSizing === '') {\n return null;\n }\n\n // IE (Edge has already correct behaviour) returns content width as computed width\n // so we need to add manually padding and border widths\n if (isIE && boxSizing === 'border-box') {\n sizingStyle.width = parseFloat(sizingStyle.width) + parseFloat(sizingStyle.borderRightWidth) + parseFloat(sizingStyle.borderLeftWidth) + parseFloat(sizingStyle.paddingRight) + parseFloat(sizingStyle.paddingLeft) + 'px';\n }\n var paddingSize = parseFloat(sizingStyle.paddingBottom) + parseFloat(sizingStyle.paddingTop);\n var borderSize = parseFloat(sizingStyle.borderBottomWidth) + parseFloat(sizingStyle.borderTopWidth);\n return {\n sizingStyle: sizingStyle,\n paddingSize: paddingSize,\n borderSize: borderSize\n };\n};\nvar getSizingData$1 = getSizingData;\n\nfunction useListener(target, type, listener) {\n var latestListener = useLatest(listener);\n React.useLayoutEffect(function () {\n var handler = function handler(ev) {\n return latestListener.current(ev);\n };\n // might happen if document.fonts is not defined, for instance\n if (!target) {\n return;\n }\n target.addEventListener(type, handler);\n return function () {\n return target.removeEventListener(type, handler);\n };\n }, []);\n}\nvar useFormResetListener = function useFormResetListener(libRef, listener) {\n useListener(document.body, 'reset', function (ev) {\n if (libRef.current.form === ev.target) {\n listener(ev);\n }\n });\n};\nvar useWindowResizeListener = function useWindowResizeListener(listener) {\n useListener(window, 'resize', listener);\n};\nvar useFontsLoadedListener = function useFontsLoadedListener(listener) {\n useListener(document.fonts, 'loadingdone', listener);\n};\n\nvar _excluded = [\"cacheMeasurements\", \"maxRows\", \"minRows\", \"onChange\", \"onHeightChange\"];\nvar TextareaAutosize = function TextareaAutosize(_ref, userRef) {\n var cacheMeasurements = _ref.cacheMeasurements,\n maxRows = _ref.maxRows,\n minRows = _ref.minRows,\n _ref$onChange = _ref.onChange,\n onChange = _ref$onChange === void 0 ? noop : _ref$onChange,\n _ref$onHeightChange = _ref.onHeightChange,\n onHeightChange = _ref$onHeightChange === void 0 ? noop : _ref$onHeightChange,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n var isControlled = props.value !== undefined;\n var libRef = React.useRef(null);\n var ref = useComposedRef(libRef, userRef);\n var heightRef = React.useRef(0);\n var measurementsCacheRef = React.useRef();\n var resizeTextarea = function resizeTextarea() {\n var node = libRef.current;\n var nodeSizingData = cacheMeasurements && measurementsCacheRef.current ? measurementsCacheRef.current : getSizingData$1(node);\n if (!nodeSizingData) {\n return;\n }\n measurementsCacheRef.current = nodeSizingData;\n var _calculateNodeHeight = calculateNodeHeight(nodeSizingData, node.value || node.placeholder || 'x', minRows, maxRows),\n height = _calculateNodeHeight[0],\n rowHeight = _calculateNodeHeight[1];\n if (heightRef.current !== height) {\n heightRef.current = height;\n node.style.setProperty('height', height + \"px\", 'important');\n onHeightChange(height, {\n rowHeight: rowHeight\n });\n }\n };\n var handleChange = function handleChange(event) {\n if (!isControlled) {\n resizeTextarea();\n }\n onChange(event);\n };\n {\n React.useLayoutEffect(resizeTextarea);\n useFormResetListener(libRef, function () {\n if (!isControlled) {\n var currentValue = libRef.current.value;\n requestAnimationFrame(function () {\n var node = libRef.current;\n if (node && currentValue !== node.value) {\n resizeTextarea();\n }\n });\n }\n });\n useWindowResizeListener(resizeTextarea);\n useFontsLoadedListener(resizeTextarea);\n return /*#__PURE__*/React.createElement(\"textarea\", _extends({}, props, {\n onChange: handleChange,\n ref: ref\n }));\n }\n};\nvar index = /* #__PURE__ */React.forwardRef(TextareaAutosize);\n\nexport { index as default };\n","import React, { useRef } from \"react\";\nimport TextareaAutosize from \"react-textarea-autosize\";\nimport { tv } from \"tailwind-variants\";\nimport { useMergeRefs } from \"../../../hooks/useMergeRefs\";\nimport { useCustomValidity } from \"../../../hooks/useCustomValidity\";\nimport { inputBaseControlStyles } from \"../../input/styles/inputBaseStyles\";\n\nconst autogrowTextareaStyles = tv({\n\textend: inputBaseControlStyles,\n\tbase: \"resize-none leading-[1.125rem]\"\n});\n\nexport type AutogrowTextareaProps = React.ComponentProps<typeof TextareaAutosize> & {\n\t/** Текст сообщения об ошибке. При наличии делает поле невалидным */\n\terror?: string;\n};\n\n/**\n * Стилизованный компонент textarea с автоматическим увеличением высоты.\n * Использует библиотеку react-textarea-autosize для надежной работы с min-height и max-height.\n */\nexport const AutogrowTextarea = React.forwardRef<HTMLTextAreaElement, AutogrowTextareaProps>(\n\t({ className, minRows = 2, error, ...other }, ref) => {\n\t\tconst textareaRef = useRef<HTMLTextAreaElement>(null);\n\t\tconst mergedRef = useMergeRefs(textareaRef, ref);\n\n\t\tuseCustomValidity(textareaRef, error);\n\n\t\tconst sharedProps = {\n\t\t\tclassName: autogrowTextareaStyles({ className }),\n\t\t\tref: mergedRef,\n\t\t\t\"aria-invalid\": !!error as boolean,\n\t\t\tminRows,\n\t\t\t...other\n\t\t};\n\n\t\t// SSR: document недоступен — рендерим обычный textarea\n\t\tif (typeof document === \"undefined\") {\n\t\t\treturn <textarea {...sharedProps} rows={minRows} />;\n\t\t}\n\n\t\treturn <TextareaAutosize {...sharedProps} />;\n\t}\n);\n\nAutogrowTextarea.displayName = \"AutogrowTextarea\";\n\nexport default AutogrowTextarea;\n"],"names":["textareaStyles","tv","inputBaseControlStyles","Textarea","React","className","error","resize","other","ref","textareaRef","useRef","mergedRef","useMergeRefs","useCustomValidity","jsx","_extends","t","r","_objectWithoutPropertiesLoose","n","index","useLayoutEffect","useLatest","value","useIsomorphicLayoutEffect","updateRef","useComposedRef","libRef","userRef","prevUserRef","instance","HIDDEN_TEXTAREA_STYLE","forceHiddenStyles","node","key","forceHiddenStyles$1","hiddenTextarea","getHeight","sizingData","height","calculateNodeHeight","minRows","maxRows","paddingSize","borderSize","sizingStyle","boxSizing","_key","rowHeight","minHeight","maxHeight","noop","pick","props","obj","acc","prop","SIZING_STYLE","isIE","getSizingData","style","getSizingData$1","useListener","target","type","listener","latestListener","handler","ev","useFormResetListener","useWindowResizeListener","useFontsLoadedListener","_excluded","TextareaAutosize","_ref","cacheMeasurements","_ref$onChange","onChange","_ref$onHeightChange","onHeightChange","isControlled","heightRef","measurementsCacheRef","resizeTextarea","nodeSizingData","_calculateNodeHeight","handleChange","event","currentValue","autogrowTextareaStyles","AutogrowTextarea","sharedProps"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timer.js","sources":["../../src/components/timer/Timer.tsx","../../src/components/timer/components/TimerValue.tsx","../../src/components/timer/components/TimerUnit.tsx"],"sourcesContent":["import React from \"react\";\
|
|
1
|
+
{"version":3,"file":"timer.js","sources":["../../src/components/timer/Timer.tsx","../../src/components/timer/components/TimerValue.tsx","../../src/components/timer/components/TimerUnit.tsx"],"sourcesContent":["import React from \"react\";\nimport { tv } from \"tailwind-variants\";\n\nconst timerStyles = tv({\n\tbase: \"flex h-8 flex-row items-center justify-center gap-px rounded-md bg-secondary-border px-1.5 py-2\"\n});\n\nexport type TimerProps = React.HTMLAttributes<HTMLDivElement> & React.PropsWithChildren;\n\nexport const Timer = React.forwardRef<HTMLDivElement, TimerProps>(({ className, children, ...props }, ref) => {\n\treturn (\n\t\t<span ref={ref} className={timerStyles({ class: className })} {...props}>\n\t\t\t{children}\n\t\t</span>\n\t);\n});\n\nTimer.displayName = \"Timer\";\n","import React from \"react\";\nimport { tv } from \"tailwind-variants\";\n\nconst timerValueStyles = tv({\n\tbase: \"text-sm font-medium text-primary-fg\"\n});\n\nexport type TimerValueProps = React.HTMLAttributes<HTMLDivElement> & React.PropsWithChildren;\n\nexport const TimerValue = React.forwardRef<HTMLDivElement, TimerValueProps>(\n\t({ className, children, ...props }, ref) => {\n\t\treturn (\n\t\t\t<span ref={ref} className={timerValueStyles({ class: className })} {...props}>\n\t\t\t\t{children}\n\t\t\t</span>\n\t\t);\n\t}\n);\n\nTimerValue.displayName = \"TimerValue\";\n","import React from \"react\";\nimport { tv } from \"tailwind-variants\";\n\nconst timerUnitStyles = tv({\n\tbase: \"text-sm text-muted\"\n});\n\nexport type TimerUnitProps = React.HTMLAttributes<HTMLDivElement> & React.PropsWithChildren;\n\nexport const TimerUnit = React.forwardRef<HTMLDivElement, TimerUnitProps>(({ className, children, ...props }, ref) => {\n\treturn (\n\t\t<span ref={ref} className={timerUnitStyles({ class: className })} {...props}>\n\t\t\t{children}\n\t\t</span>\n\t);\n});\n\nTimerUnit.displayName = \"TimerUnit\";\n"],"names":["timerStyles","tv","Timer","React","className","children","props","ref","jsx","timerValueStyles","TimerValue","timerUnitStyles","TimerUnit"],"mappings":";;;AAGA,MAAMA,IAAcC,EAAG;AAAA,EACtB,MAAM;AACP,CAAC,GAIYC,IAAQC,EAAM,WAAuC,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,GAAGC,EAAM,GAAGC,MAEnG,gBAAAC,EAAA,QAAA,EAAK,KAAAD,GAAU,WAAWP,EAAY,EAAE,OAAOI,EAAA,CAAW,GAAI,GAAGE,GAChE,UAAAD,EACF,CAAA,CAED;AAEDH,EAAM,cAAc;ACdpB,MAAMO,IAAmBR,EAAG;AAAA,EAC3B,MAAM;AACP,CAAC,GAIYS,IAAaP,EAAM;AAAA,EAC/B,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,GAAGC,EAAA,GAASC,MAEjC,gBAAAC,EAAA,QAAA,EAAK,KAAAD,GAAU,WAAWE,EAAiB,EAAE,OAAOL,EAAA,CAAW,GAAI,GAAGE,GACrE,UAAAD,EACF,CAAA;AAGH;AAEAK,EAAW,cAAc;AChBzB,MAAMC,IAAkBV,EAAG;AAAA,EAC1B,MAAM;AACP,CAAC,GAIYW,IAAYT,EAAM,WAA2C,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,GAAGC,EAAM,GAAGC,MAE3G,gBAAAC,EAAA,QAAA,EAAK,KAAAD,GAAU,WAAWI,EAAgB,EAAE,OAAOP,EAAA,CAAW,GAAI,GAAGE,GACpE,UAAAD,EACF,CAAA,CAED;AAEDO,EAAU,cAAc;"}
|