@tetherto/dev-websites-core 0.2.1 → 0.3.1
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 +81 -9
- package/dist/analytics/GtmLoader.d.mts +14 -0
- package/dist/analytics/GtmLoader.d.mts.map +1 -0
- package/dist/analytics/GtmLoader.mjs +30 -0
- package/dist/analytics/GtmLoader.mjs.map +1 -0
- package/dist/analytics/createTrackedLink.d.mts +46 -0
- package/dist/analytics/createTrackedLink.d.mts.map +1 -0
- package/dist/analytics/createTrackedLink.mjs +36 -0
- package/dist/analytics/createTrackedLink.mjs.map +1 -0
- package/dist/analytics/index.d.mts +3 -0
- package/dist/analytics/index.mjs +3 -0
- package/dist/cms/index.d.mts +2 -2
- package/dist/cms/index.mjs +2 -2
- package/dist/{cms-5bS91IRZ.mjs → cms.mjs} +2 -2
- package/dist/cms.mjs.map +1 -0
- package/dist/i18n/index.d.mts +1 -1
- package/dist/i18n/index.mjs +1 -1
- package/dist/{i18n-Dy3VrbBw.mjs → i18n.mjs} +1 -1
- package/dist/i18n.mjs.map +1 -0
- package/dist/index.d.mts +214 -6
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +6 -6
- package/dist/{index-D36IEwUg.d.mts → index2.d.mts} +1 -1
- package/dist/index2.d.mts.map +1 -0
- package/dist/{index-tTs9h9BS.d.mts → index3.d.mts} +2 -2
- package/dist/index3.d.mts.map +1 -0
- package/dist/{index-Dyi7DDoO.d.mts → index4.d.mts} +1 -1
- package/dist/index4.d.mts.map +1 -0
- package/dist/index5.d.mts +6 -0
- package/dist/{logger-BPURnavq.mjs → logger.mjs} +1 -1
- package/dist/logger.mjs.map +1 -0
- package/dist/{readMediaBuffer-1C3QTpkO.d.mts → readMediaBuffer.d.mts} +1 -1
- package/dist/readMediaBuffer.d.mts.map +1 -0
- package/dist/{readMediaBuffer-DWkTbYVn.mjs → readMediaBuffer.mjs} +2 -2
- package/dist/readMediaBuffer.mjs.map +1 -0
- package/dist/seo/index.d.mts +1 -1
- package/dist/seo/index.mjs +1 -1
- package/dist/{seo-e5XjgQ7l.mjs → seo.mjs} +3 -3
- package/dist/seo.mjs.map +1 -0
- package/dist/ui/a11y/focus.d.mts +6 -0
- package/dist/ui/a11y/focus.d.mts.map +1 -0
- package/dist/ui/a11y/focus.mjs +7 -0
- package/dist/ui/a11y/focus.mjs.map +1 -0
- package/dist/ui/a11y/index.d.mts +4 -0
- package/dist/ui/a11y/index.mjs +4 -0
- package/dist/ui/carousel/index.d.mts +3 -0
- package/dist/ui/carousel/index.mjs +3 -0
- package/dist/ui/components/Accordion/Accordion.d.mts +16 -0
- package/dist/ui/components/Accordion/Accordion.d.mts.map +1 -0
- package/dist/ui/components/Accordion/Accordion.mjs +51 -0
- package/dist/ui/components/Accordion/Accordion.mjs.map +1 -0
- package/dist/ui/components/Accordion/index.d.mts +2 -0
- package/dist/ui/components/Accordion/index.mjs +2 -0
- package/dist/ui/components/Avatar/Avatar.d.mts +9 -0
- package/dist/ui/components/Avatar/Avatar.d.mts.map +1 -0
- package/dist/ui/components/Avatar/Avatar.mjs +15 -0
- package/dist/ui/components/Avatar/Avatar.mjs.map +1 -0
- package/dist/ui/components/Avatar/index.d.mts +2 -0
- package/dist/ui/components/Avatar/index.mjs +2 -0
- package/dist/ui/components/Badge/Badge.d.mts +14 -0
- package/dist/ui/components/Badge/Badge.d.mts.map +1 -0
- package/dist/ui/components/Badge/Badge.mjs +30 -0
- package/dist/ui/components/Badge/Badge.mjs.map +1 -0
- package/dist/ui/components/Badge/index.d.mts +2 -0
- package/dist/ui/components/Badge/index.mjs +2 -0
- package/dist/ui/components/BadgeVersion/BadgeVersion.d.mts +24 -0
- package/dist/ui/components/BadgeVersion/BadgeVersion.d.mts.map +1 -0
- package/dist/ui/components/BadgeVersion/BadgeVersion.mjs +66 -0
- package/dist/ui/components/BadgeVersion/BadgeVersion.mjs.map +1 -0
- package/dist/ui/components/BadgeVersion/index.d.mts +2 -0
- package/dist/ui/components/BadgeVersion/index.mjs +2 -0
- package/dist/ui/components/Button/Button.d.mts +14 -0
- package/dist/ui/components/Button/Button.d.mts.map +1 -0
- package/dist/ui/components/Button/Button.mjs +48 -0
- package/dist/ui/components/Button/Button.mjs.map +1 -0
- package/dist/ui/components/Button/index.d.mts +2 -0
- package/dist/ui/components/Button/index.mjs +2 -0
- package/dist/ui/components/Card/Card.d.mts +14 -0
- package/dist/ui/components/Card/Card.d.mts.map +1 -0
- package/dist/ui/components/Card/Card.mjs +40 -0
- package/dist/ui/components/Card/Card.mjs.map +1 -0
- package/dist/ui/components/Card/index.d.mts +2 -0
- package/dist/ui/components/Card/index.mjs +2 -0
- package/dist/ui/components/Carousel/Carousel.d.mts +42 -0
- package/dist/ui/components/Carousel/Carousel.d.mts.map +1 -0
- package/dist/ui/components/Carousel/Carousel.mjs +164 -0
- package/dist/ui/components/Carousel/Carousel.mjs.map +1 -0
- package/dist/ui/components/Carousel/index.d.mts +2 -0
- package/dist/ui/components/Carousel/index.mjs +2 -0
- package/dist/ui/components/Checkbox/Checkbox.d.mts +8 -0
- package/dist/ui/components/Checkbox/Checkbox.d.mts.map +1 -0
- package/dist/ui/components/Checkbox/Checkbox.mjs +39 -0
- package/dist/ui/components/Checkbox/Checkbox.mjs.map +1 -0
- package/dist/ui/components/Checkbox/index.d.mts +2 -0
- package/dist/ui/components/Checkbox/index.mjs +2 -0
- package/dist/ui/components/CodeBlock/CodeBlock.d.mts +22 -0
- package/dist/ui/components/CodeBlock/CodeBlock.d.mts.map +1 -0
- package/dist/ui/components/CodeBlock/CodeBlock.mjs +66 -0
- package/dist/ui/components/CodeBlock/CodeBlock.mjs.map +1 -0
- package/dist/ui/components/CodeBlock/index.d.mts +2 -0
- package/dist/ui/components/CodeBlock/index.mjs +2 -0
- package/dist/ui/components/CodeBlockTabs/CodeBlockTabs.d.mts +19 -0
- package/dist/ui/components/CodeBlockTabs/CodeBlockTabs.d.mts.map +1 -0
- package/dist/ui/components/CodeBlockTabs/CodeBlockTabs.mjs +59 -0
- package/dist/ui/components/CodeBlockTabs/CodeBlockTabs.mjs.map +1 -0
- package/dist/ui/components/CodeBlockTabs/index.d.mts +2 -0
- package/dist/ui/components/CodeBlockTabs/index.mjs +2 -0
- package/dist/ui/components/CollapsibleSection/CollapsibleSection.d.mts +13 -0
- package/dist/ui/components/CollapsibleSection/CollapsibleSection.d.mts.map +1 -0
- package/dist/ui/components/CollapsibleSection/CollapsibleSection.mjs +55 -0
- package/dist/ui/components/CollapsibleSection/CollapsibleSection.mjs.map +1 -0
- package/dist/ui/components/CollapsibleSection/index.d.mts +2 -0
- package/dist/ui/components/CollapsibleSection/index.mjs +2 -0
- package/dist/ui/components/CopyButton/CopyButton.d.mts +12 -0
- package/dist/ui/components/CopyButton/CopyButton.d.mts.map +1 -0
- package/dist/ui/components/CopyButton/CopyButton.mjs +45 -0
- package/dist/ui/components/CopyButton/CopyButton.mjs.map +1 -0
- package/dist/ui/components/CopyButton/index.d.mts +2 -0
- package/dist/ui/components/CopyButton/index.mjs +2 -0
- package/dist/ui/components/Dialog/Dialog.d.mts +26 -0
- package/dist/ui/components/Dialog/Dialog.d.mts.map +1 -0
- package/dist/ui/components/Dialog/Dialog.mjs +79 -0
- package/dist/ui/components/Dialog/Dialog.mjs.map +1 -0
- package/dist/ui/components/Dialog/index.d.mts +2 -0
- package/dist/ui/components/Dialog/index.mjs +2 -0
- package/dist/ui/components/EmptyState/EmptyState.d.mts +18 -0
- package/dist/ui/components/EmptyState/EmptyState.d.mts.map +1 -0
- package/dist/ui/components/EmptyState/EmptyState.mjs +36 -0
- package/dist/ui/components/EmptyState/EmptyState.mjs.map +1 -0
- package/dist/ui/components/EmptyState/index.d.mts +2 -0
- package/dist/ui/components/EmptyState/index.mjs +2 -0
- package/dist/ui/components/FieldError/FieldError.d.mts +14 -0
- package/dist/ui/components/FieldError/FieldError.d.mts.map +1 -0
- package/dist/ui/components/FieldError/FieldError.mjs +19 -0
- package/dist/ui/components/FieldError/FieldError.mjs.map +1 -0
- package/dist/ui/components/FieldError/index.d.mts +2 -0
- package/dist/ui/components/FieldError/index.mjs +2 -0
- package/dist/ui/components/FormattedDate/FormattedDate.d.mts +15 -0
- package/dist/ui/components/FormattedDate/FormattedDate.d.mts.map +1 -0
- package/dist/ui/components/FormattedDate/FormattedDate.mjs +23 -0
- package/dist/ui/components/FormattedDate/FormattedDate.mjs.map +1 -0
- package/dist/ui/components/FormattedDate/index.d.mts +2 -0
- package/dist/ui/components/FormattedDate/index.mjs +2 -0
- package/dist/ui/components/IconButton/IconButton.d.mts +10 -0
- package/dist/ui/components/IconButton/IconButton.d.mts.map +1 -0
- package/dist/ui/components/IconButton/IconButton.mjs +19 -0
- package/dist/ui/components/IconButton/IconButton.mjs.map +1 -0
- package/dist/ui/components/IconButton/index.d.mts +2 -0
- package/dist/ui/components/IconButton/index.mjs +2 -0
- package/dist/ui/components/Input/Input.d.mts +12 -0
- package/dist/ui/components/Input/Input.d.mts.map +1 -0
- package/dist/ui/components/Input/Input.mjs +43 -0
- package/dist/ui/components/Input/Input.mjs.map +1 -0
- package/dist/ui/components/Input/index.d.mts +2 -0
- package/dist/ui/components/Input/index.mjs +2 -0
- package/dist/ui/components/Label/Label.d.mts +11 -0
- package/dist/ui/components/Label/Label.d.mts.map +1 -0
- package/dist/ui/components/Label/Label.mjs +18 -0
- package/dist/ui/components/Label/Label.mjs.map +1 -0
- package/dist/ui/components/Label/index.d.mts +2 -0
- package/dist/ui/components/Label/index.mjs +2 -0
- package/dist/ui/components/LazyVideo/LazyVideo.d.mts +23 -0
- package/dist/ui/components/LazyVideo/LazyVideo.d.mts.map +1 -0
- package/dist/ui/components/LazyVideo/LazyVideo.mjs +57 -0
- package/dist/ui/components/LazyVideo/LazyVideo.mjs.map +1 -0
- package/dist/ui/components/LazyVideo/index.d.mts +2 -0
- package/dist/ui/components/LazyVideo/index.mjs +2 -0
- package/dist/ui/components/Pagination/Pagination.d.mts +38 -0
- package/dist/ui/components/Pagination/Pagination.d.mts.map +1 -0
- package/dist/ui/components/Pagination/Pagination.mjs +110 -0
- package/dist/ui/components/Pagination/Pagination.mjs.map +1 -0
- package/dist/ui/components/Pagination/index.d.mts +2 -0
- package/dist/ui/components/Pagination/index.mjs +2 -0
- package/dist/ui/components/PaginationItem/PaginationItem.d.mts +15 -0
- package/dist/ui/components/PaginationItem/PaginationItem.d.mts.map +1 -0
- package/dist/ui/components/PaginationItem/PaginationItem.mjs +34 -0
- package/dist/ui/components/PaginationItem/PaginationItem.mjs.map +1 -0
- package/dist/ui/components/PaginationItem/index.d.mts +2 -0
- package/dist/ui/components/PaginationItem/index.mjs +2 -0
- package/dist/ui/components/PasswordInput/PasswordInput.d.mts +10 -0
- package/dist/ui/components/PasswordInput/PasswordInput.d.mts.map +1 -0
- package/dist/ui/components/PasswordInput/PasswordInput.mjs +39 -0
- package/dist/ui/components/PasswordInput/PasswordInput.mjs.map +1 -0
- package/dist/ui/components/PasswordInput/index.d.mts +2 -0
- package/dist/ui/components/PasswordInput/index.mjs +2 -0
- package/dist/ui/components/ProgressStepper/ProgressStepper.d.mts +20 -0
- package/dist/ui/components/ProgressStepper/ProgressStepper.d.mts.map +1 -0
- package/dist/ui/components/ProgressStepper/ProgressStepper.mjs +39 -0
- package/dist/ui/components/ProgressStepper/ProgressStepper.mjs.map +1 -0
- package/dist/ui/components/ProgressStepper/index.d.mts +2 -0
- package/dist/ui/components/ProgressStepper/index.mjs +2 -0
- package/dist/ui/components/Prose/Prose.d.mts +10 -0
- package/dist/ui/components/Prose/Prose.d.mts.map +1 -0
- package/dist/ui/components/Prose/Prose.mjs +19 -0
- package/dist/ui/components/Prose/Prose.mjs.map +1 -0
- package/dist/ui/components/Prose/index.d.mts +2 -0
- package/dist/ui/components/Prose/index.mjs +2 -0
- package/dist/ui/components/Radio/Radio.d.mts +8 -0
- package/dist/ui/components/Radio/Radio.d.mts.map +1 -0
- package/dist/ui/components/Radio/Radio.mjs +25 -0
- package/dist/ui/components/Radio/Radio.mjs.map +1 -0
- package/dist/ui/components/Radio/index.d.mts +2 -0
- package/dist/ui/components/Radio/index.mjs +2 -0
- package/dist/ui/components/Reveal/Reveal.d.mts +10 -0
- package/dist/ui/components/Reveal/Reveal.d.mts.map +1 -0
- package/dist/ui/components/Reveal/Reveal.mjs +18 -0
- package/dist/ui/components/Reveal/Reveal.mjs.map +1 -0
- package/dist/ui/components/Reveal/index.d.mts +2 -0
- package/dist/ui/components/Reveal/index.mjs +2 -0
- package/dist/ui/components/SearchInput/SearchInput.d.mts +15 -0
- package/dist/ui/components/SearchInput/SearchInput.d.mts.map +1 -0
- package/dist/ui/components/SearchInput/SearchInput.mjs +28 -0
- package/dist/ui/components/SearchInput/SearchInput.mjs.map +1 -0
- package/dist/ui/components/SearchInput/index.d.mts +2 -0
- package/dist/ui/components/SearchInput/index.mjs +2 -0
- package/dist/ui/components/Select/Select.d.mts +34 -0
- package/dist/ui/components/Select/Select.d.mts.map +1 -0
- package/dist/ui/components/Select/Select.mjs +167 -0
- package/dist/ui/components/Select/Select.mjs.map +1 -0
- package/dist/ui/components/Select/index.d.mts +2 -0
- package/dist/ui/components/Select/index.mjs +2 -0
- package/dist/ui/components/Sheet/Sheet.d.mts +19 -0
- package/dist/ui/components/Sheet/Sheet.d.mts.map +1 -0
- package/dist/ui/components/Sheet/Sheet.mjs +59 -0
- package/dist/ui/components/Sheet/Sheet.mjs.map +1 -0
- package/dist/ui/components/Sheet/index.d.mts +2 -0
- package/dist/ui/components/Sheet/index.mjs +2 -0
- package/dist/ui/components/StaggerReveal/StaggerReveal.d.mts +10 -0
- package/dist/ui/components/StaggerReveal/StaggerReveal.d.mts.map +1 -0
- package/dist/ui/components/StaggerReveal/StaggerReveal.mjs +31 -0
- package/dist/ui/components/StaggerReveal/StaggerReveal.mjs.map +1 -0
- package/dist/ui/components/StaggerReveal/index.d.mts +2 -0
- package/dist/ui/components/StaggerReveal/index.mjs +2 -0
- package/dist/ui/components/Stepper/Stepper.d.mts +15 -0
- package/dist/ui/components/Stepper/Stepper.d.mts.map +1 -0
- package/dist/ui/components/Stepper/Stepper.mjs +38 -0
- package/dist/ui/components/Stepper/Stepper.mjs.map +1 -0
- package/dist/ui/components/Stepper/index.d.mts +2 -0
- package/dist/ui/components/Stepper/index.mjs +2 -0
- package/dist/ui/components/Switch/Switch.d.mts +12 -0
- package/dist/ui/components/Switch/Switch.d.mts.map +1 -0
- package/dist/ui/components/Switch/Switch.mjs +34 -0
- package/dist/ui/components/Switch/Switch.mjs.map +1 -0
- package/dist/ui/components/Switch/index.d.mts +2 -0
- package/dist/ui/components/Switch/index.mjs +2 -0
- package/dist/ui/components/TextButton/TextButton.d.mts +9 -0
- package/dist/ui/components/TextButton/TextButton.d.mts.map +1 -0
- package/dist/ui/components/TextButton/TextButton.mjs +16 -0
- package/dist/ui/components/TextButton/TextButton.mjs.map +1 -0
- package/dist/ui/components/TextButton/index.d.mts +2 -0
- package/dist/ui/components/TextButton/index.mjs +2 -0
- package/dist/ui/components/Textarea/Textarea.d.mts +9 -0
- package/dist/ui/components/Textarea/Textarea.d.mts.map +1 -0
- package/dist/ui/components/Textarea/Textarea.mjs +27 -0
- package/dist/ui/components/Textarea/Textarea.mjs.map +1 -0
- package/dist/ui/components/Textarea/index.d.mts +2 -0
- package/dist/ui/components/Textarea/index.mjs +2 -0
- package/dist/ui/components/Toast/Toast.d.mts +20 -0
- package/dist/ui/components/Toast/Toast.d.mts.map +1 -0
- package/dist/ui/components/Toast/Toast.mjs +128 -0
- package/dist/ui/components/Toast/Toast.mjs.map +1 -0
- package/dist/ui/components/Toast/index.d.mts +2 -0
- package/dist/ui/components/Toast/index.mjs +2 -0
- package/dist/ui/components/Tooltip/Tooltip.d.mts +11 -0
- package/dist/ui/components/Tooltip/Tooltip.d.mts.map +1 -0
- package/dist/ui/components/Tooltip/Tooltip.mjs +20 -0
- package/dist/ui/components/Tooltip/Tooltip.mjs.map +1 -0
- package/dist/ui/components/Tooltip/index.d.mts +2 -0
- package/dist/ui/components/Tooltip/index.mjs +2 -0
- package/dist/ui/components/VisuallyHidden/VisuallyHidden.d.mts +7 -0
- package/dist/ui/components/VisuallyHidden/VisuallyHidden.d.mts.map +1 -0
- package/dist/ui/components/VisuallyHidden/VisuallyHidden.mjs +13 -0
- package/dist/ui/components/VisuallyHidden/VisuallyHidden.mjs.map +1 -0
- package/dist/ui/components/VisuallyHidden/index.d.mts +2 -0
- package/dist/ui/components/VisuallyHidden/index.mjs +2 -0
- package/dist/ui/hooks/index.d.mts +2 -0
- package/dist/ui/hooks/index.mjs +2 -0
- package/dist/ui/hooks/useInView.d.mts +13 -0
- package/dist/ui/hooks/useInView.d.mts.map +1 -0
- package/dist/ui/hooks/useInView.mjs +37 -0
- package/dist/ui/hooks/useInView.mjs.map +1 -0
- package/dist/ui/index.d.mts +81 -0
- package/dist/ui/index.mjs +40 -0
- package/dist/ui/theme/preset.d.mts +170 -0
- package/dist/ui/theme/preset.d.mts.map +1 -0
- package/dist/ui/theme/preset.mjs +143 -0
- package/dist/ui/theme/preset.mjs.map +1 -0
- package/dist/ui/utils/cn.d.mts +6 -0
- package/dist/ui/utils/cn.d.mts.map +1 -0
- package/dist/ui/utils/cn.mjs +42 -0
- package/dist/ui/utils/cn.mjs.map +1 -0
- package/dist/ui/utils/index.d.mts +2 -0
- package/dist/ui/utils/index.mjs +2 -0
- package/dist/utils/index.d.mts +1 -1
- package/dist/utils/index.mjs +2 -2
- package/dist/{utils-CVVQQltg.mjs → utils.mjs} +1 -1
- package/dist/utils.mjs.map +1 -0
- package/package.json +76 -7
- package/src/ui/theme/preset.css +53 -0
- package/src/ui/theme/preset.ts +131 -0
- package/src/ui/theme/theme.css +12 -0
- package/src/ui/theme/tokens.css +57 -0
- package/dist/cms-5bS91IRZ.mjs.map +0 -1
- package/dist/i18n-Dy3VrbBw.mjs.map +0 -1
- package/dist/index-9B8SfwdR.d.mts +0 -214
- package/dist/index-9B8SfwdR.d.mts.map +0 -1
- package/dist/index-D36IEwUg.d.mts.map +0 -1
- package/dist/index-Dyi7DDoO.d.mts.map +0 -1
- package/dist/index-tTs9h9BS.d.mts.map +0 -1
- package/dist/logger-BPURnavq.mjs.map +0 -1
- package/dist/readMediaBuffer-1C3QTpkO.d.mts.map +0 -1
- package/dist/readMediaBuffer-DWkTbYVn.mjs.map +0 -1
- package/dist/seo-e5XjgQ7l.mjs.map +0 -1
- package/dist/utils-CVVQQltg.mjs.map +0 -1
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ComponentProps, ReactNode } from "react";
|
|
2
|
+
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
3
|
+
//#region src/ui/components/Sheet/Sheet.d.ts
|
|
4
|
+
declare const Sheet: import("react").FC<DialogPrimitive.DialogProps>;
|
|
5
|
+
declare const SheetTrigger: import("react").ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
6
|
+
declare const SheetClose: import("react").ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
7
|
+
declare const SheetPortal: import("react").FC<DialogPrimitive.DialogPortalProps>;
|
|
8
|
+
type SheetOverlayProps = ComponentProps<typeof DialogPrimitive.Overlay>;
|
|
9
|
+
declare function SheetOverlay({ className, ...props }: SheetOverlayProps): import("react").JSX.Element;
|
|
10
|
+
type SheetContentProps = ComponentProps<typeof DialogPrimitive.Content> & {
|
|
11
|
+
side?: 'left' | 'right';
|
|
12
|
+
closeLabel?: string;
|
|
13
|
+
title?: string;
|
|
14
|
+
children?: ReactNode;
|
|
15
|
+
};
|
|
16
|
+
declare function SheetContent({ side, className, children, closeLabel, title, ...props }: SheetContentProps): import("react").JSX.Element;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { Sheet, SheetClose, SheetContent, SheetContentProps, SheetOverlay, SheetOverlayProps, SheetPortal, SheetTrigger };
|
|
19
|
+
//# sourceMappingURL=Sheet.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sheet.d.mts","names":[],"sources":["../../../../src/ui/components/Sheet/Sheet.tsx"],"mappings":";;;cASM,uBAAK,GAAA,gBAAA;cACL,8BAAY,0BAAA,gBAAA,qCAAA,cAAA;cACZ,4BAAU,0BAAA,gBAAA,mCAAA,cAAA;cACV,6BAAW,GAAA,gBAAA;KAOL,oBAAoB,sBAAsB,gBAAgB;iBAE7D,eAAe,cAAc,SAAS,oCAAiB,IAAA;KAiBpD,oBAAoB,sBAAsB,gBAAgB;EACpE;EACA;EACA;EACA,WAAW;;iBAGJ,eACP,MACA,WACA,UACA,YACA,UACG,SACF,oCAAiB,IAAA"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../../utils/cn.mjs";
|
|
3
|
+
import { IconButton } from "../IconButton/IconButton.mjs";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
6
|
+
//#region src/ui/components/Sheet/Sheet.tsx
|
|
7
|
+
const Sheet = DialogPrimitive.Root;
|
|
8
|
+
const SheetTrigger = DialogPrimitive.Trigger;
|
|
9
|
+
const SheetClose = DialogPrimitive.Close;
|
|
10
|
+
const SheetPortal = DialogPrimitive.Portal;
|
|
11
|
+
const sheetOverlayClasses = cn("fixed inset-0 z-50 bg-background/75 backdrop-blur-sm", "data-[state=closed]:pointer-events-none");
|
|
12
|
+
function SheetOverlay({ className, ...props }) {
|
|
13
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Overlay, {
|
|
14
|
+
className: cn(sheetOverlayClasses, className),
|
|
15
|
+
...props
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
function CloseIcon() {
|
|
19
|
+
return /* @__PURE__ */ jsx("svg", {
|
|
20
|
+
"aria-hidden": "true",
|
|
21
|
+
viewBox: "0 0 20 20",
|
|
22
|
+
width: "20",
|
|
23
|
+
height: "20",
|
|
24
|
+
fill: "none",
|
|
25
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
26
|
+
d: "M5 5l10 10M15 5L5 15",
|
|
27
|
+
stroke: "currentColor",
|
|
28
|
+
strokeWidth: "1.5",
|
|
29
|
+
strokeLinecap: "round"
|
|
30
|
+
})
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
function SheetContent({ side = "left", className, children, closeLabel, title, ...props }) {
|
|
34
|
+
return /* @__PURE__ */ jsxs(SheetPortal, { children: [/* @__PURE__ */ jsx(SheetOverlay, {}), /* @__PURE__ */ jsxs(DialogPrimitive.Content, {
|
|
35
|
+
"data-side": side,
|
|
36
|
+
className: cn("fixed z-50 flex h-full flex-col bg-background shadow-xl", side === "left" && "inset-y-0 left-0 w-[min(100vw,280px)] border-r border-border", side === "right" && "inset-y-0 right-0 w-[min(100vw,280px)] border-l border-border", className),
|
|
37
|
+
...props,
|
|
38
|
+
children: [
|
|
39
|
+
title ? /* @__PURE__ */ jsx(DialogPrimitive.Title, {
|
|
40
|
+
className: "sr-only",
|
|
41
|
+
children: title
|
|
42
|
+
}) : null,
|
|
43
|
+
children,
|
|
44
|
+
closeLabel ? /* @__PURE__ */ jsx(SheetClose, {
|
|
45
|
+
asChild: true,
|
|
46
|
+
children: /* @__PURE__ */ jsx(IconButton, {
|
|
47
|
+
type: "button",
|
|
48
|
+
className: "absolute top-3 right-3 lg:hidden",
|
|
49
|
+
"aria-label": closeLabel,
|
|
50
|
+
children: /* @__PURE__ */ jsx(CloseIcon, {})
|
|
51
|
+
})
|
|
52
|
+
}) : null
|
|
53
|
+
]
|
|
54
|
+
})] });
|
|
55
|
+
}
|
|
56
|
+
//#endregion
|
|
57
|
+
export { Sheet, SheetClose, SheetContent, SheetOverlay, SheetPortal, SheetTrigger };
|
|
58
|
+
|
|
59
|
+
//# sourceMappingURL=Sheet.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sheet.mjs","names":[],"sources":["../../../../src/ui/components/Sheet/Sheet.tsx"],"sourcesContent":["'use client'\n\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\n\nimport { IconButton } from '../IconButton/IconButton.js'\nimport { cn } from '../../utils/cn.js'\n\nimport type { ComponentProps, ReactNode } from 'react'\n\nconst Sheet = DialogPrimitive.Root\nconst SheetTrigger = DialogPrimitive.Trigger\nconst SheetClose = DialogPrimitive.Close\nconst SheetPortal = DialogPrimitive.Portal\n\nconst sheetOverlayClasses = cn(\n 'fixed inset-0 z-50 bg-background/75 backdrop-blur-sm',\n 'data-[state=closed]:pointer-events-none'\n)\n\nexport type SheetOverlayProps = ComponentProps<typeof DialogPrimitive.Overlay>\n\nfunction SheetOverlay({ className, ...props }: SheetOverlayProps) {\n return <DialogPrimitive.Overlay className={cn(sheetOverlayClasses, className)} {...props} />\n}\n\nfunction CloseIcon() {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 20 20\" width=\"20\" height=\"20\" fill=\"none\">\n <path\n d=\"M5 5l10 10M15 5L5 15\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n )\n}\n\nexport type SheetContentProps = ComponentProps<typeof DialogPrimitive.Content> & {\n side?: 'left' | 'right'\n closeLabel?: string\n title?: string\n children?: ReactNode\n}\n\nfunction SheetContent({\n side = 'left',\n className,\n children,\n closeLabel,\n title,\n ...props\n}: SheetContentProps) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <DialogPrimitive.Content\n data-side={side}\n className={cn(\n 'fixed z-50 flex h-full flex-col bg-background shadow-xl',\n side === 'left' && 'inset-y-0 left-0 w-[min(100vw,280px)] border-r border-border',\n side === 'right' && 'inset-y-0 right-0 w-[min(100vw,280px)] border-l border-border',\n className\n )}\n {...props}\n >\n {title ? <DialogPrimitive.Title className=\"sr-only\">{title}</DialogPrimitive.Title> : null}\n {children}\n {closeLabel ? (\n <SheetClose asChild>\n <IconButton\n type=\"button\"\n className=\"absolute top-3 right-3 lg:hidden\"\n aria-label={closeLabel}\n >\n <CloseIcon />\n </IconButton>\n </SheetClose>\n ) : null}\n </DialogPrimitive.Content>\n </SheetPortal>\n )\n}\n\nexport { Sheet, SheetTrigger, SheetClose, SheetPortal, SheetOverlay, SheetContent }\n"],"mappings":";;;;;;AASA,MAAM,QAAQ,gBAAgB;AAC9B,MAAM,eAAe,gBAAgB;AACrC,MAAM,aAAa,gBAAgB;AACnC,MAAM,cAAc,gBAAgB;AAEpC,MAAM,sBAAsB,GAC1B,wDACA,yCACF;AAIA,SAAS,aAAa,EAAE,WAAW,GAAG,SAA4B;CAChE,OAAO,oBAAC,gBAAgB,SAAjB;EAAyB,WAAW,GAAG,qBAAqB,SAAS;EAAG,GAAI;CAAQ,CAAA;AAC7F;AAEA,SAAS,YAAY;CACnB,OACE,oBAAC,OAAD;EAAK,eAAY;EAAO,SAAQ;EAAY,OAAM;EAAK,QAAO;EAAK,MAAK;EACtE,UAAA,oBAAC,QAAD;GACE,GAAE;GACF,QAAO;GACP,aAAY;GACZ,eAAc;EACf,CAAA;CACE,CAAA;AAET;AASA,SAAS,aAAa,EACpB,OAAO,QACP,WACA,UACA,YACA,OACA,GAAG,SACiB;CACpB,OACE,qBAAC,aAAD,EAAA,UAAA,CACE,oBAAC,cAAD,CAAe,CAAA,GACf,qBAAC,gBAAgB,SAAjB;EACE,aAAW;EACX,WAAW,GACT,2DACA,SAAS,UAAU,gEACnB,SAAS,WAAW,iEACpB,SACF;EACA,GAAI;EARN,UAAA;GAUG,QAAQ,oBAAC,gBAAgB,OAAjB;IAAuB,WAAU;IAAW,UAAA;GAA6B,CAAA,IAAI;GACrF;GACA,aACC,oBAAC,YAAD;IAAY,SAAA;IACV,UAAA,oBAAC,YAAD;KACE,MAAK;KACL,WAAU;KACV,cAAY;KAEZ,UAAA,oBAAC,WAAD,CAAY,CAAA;IACF,CAAA;GACF,CAAA,IACV;EACmB;CACd,CAAA,CAAA,EAAA,CAAA;AAEjB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
//#region src/ui/components/StaggerReveal/StaggerReveal.d.ts
|
|
3
|
+
type StaggerRevealProps = {
|
|
4
|
+
className?: string;
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
};
|
|
7
|
+
declare function StaggerReveal({ className, children }: StaggerRevealProps): import("react").JSX.Element;
|
|
8
|
+
//#endregion
|
|
9
|
+
export { StaggerReveal, StaggerRevealProps };
|
|
10
|
+
//# sourceMappingURL=StaggerReveal.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StaggerReveal.d.mts","names":[],"sources":["../../../../src/ui/components/StaggerReveal/StaggerReveal.tsx"],"mappings":";;KASY;EACV;EACA,UAAU;;iBAcH,gBAAgB,WAAW,YAAY,qCAAkB,IAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../../utils/cn.mjs";
|
|
3
|
+
import { useInView } from "../../hooks/useInView.mjs";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
import { Children } from "react";
|
|
6
|
+
//#region src/ui/components/StaggerReveal/StaggerReveal.tsx
|
|
7
|
+
const STAGGER_DELAYS = [
|
|
8
|
+
"delay-[0ms]",
|
|
9
|
+
"delay-[100ms]",
|
|
10
|
+
"delay-[200ms]",
|
|
11
|
+
"delay-[300ms]",
|
|
12
|
+
"delay-[400ms]",
|
|
13
|
+
"delay-[500ms]",
|
|
14
|
+
"delay-[600ms]",
|
|
15
|
+
"delay-[700ms]"
|
|
16
|
+
];
|
|
17
|
+
function StaggerReveal({ className, children }) {
|
|
18
|
+
const { ref, inView } = useInView();
|
|
19
|
+
return /* @__PURE__ */ jsx("div", {
|
|
20
|
+
ref,
|
|
21
|
+
className,
|
|
22
|
+
children: Children.map(children, (child, index) => /* @__PURE__ */ jsx("div", {
|
|
23
|
+
className: cn("h-full transition-all duration-[550ms] ease-[cubic-bezier(0.16,1,0.3,1)] motion-reduce:transition-none", STAGGER_DELAYS[Math.min(index, STAGGER_DELAYS.length - 1)], inView ? "translate-y-0 opacity-100" : "translate-y-6 opacity-0 motion-reduce:translate-y-0 motion-reduce:opacity-100"),
|
|
24
|
+
children: child
|
|
25
|
+
}))
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
//#endregion
|
|
29
|
+
export { StaggerReveal };
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=StaggerReveal.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StaggerReveal.mjs","names":[],"sources":["../../../../src/ui/components/StaggerReveal/StaggerReveal.tsx"],"sourcesContent":["'use client'\n\nimport { Children } from 'react'\n\nimport { useInView } from '../../hooks/useInView.js'\nimport { cn } from '../../utils/cn.js'\n\nimport type { ReactNode } from 'react'\n\nexport type StaggerRevealProps = {\n className?: string\n children: ReactNode\n}\n\nconst STAGGER_DELAYS = [\n 'delay-[0ms]',\n 'delay-[100ms]',\n 'delay-[200ms]',\n 'delay-[300ms]',\n 'delay-[400ms]',\n 'delay-[500ms]',\n 'delay-[600ms]',\n 'delay-[700ms]',\n]\n\nfunction StaggerReveal({ className, children }: StaggerRevealProps) {\n const { ref, inView } = useInView<HTMLDivElement>()\n\n return (\n <div ref={ref} className={className}>\n {Children.map(children, (child, index) => (\n <div\n className={cn(\n 'h-full transition-all duration-[550ms] ease-[cubic-bezier(0.16,1,0.3,1)] motion-reduce:transition-none',\n STAGGER_DELAYS[Math.min(index, STAGGER_DELAYS.length - 1)],\n inView\n ? 'translate-y-0 opacity-100'\n : 'translate-y-6 opacity-0 motion-reduce:translate-y-0 motion-reduce:opacity-100'\n )}\n >\n {child}\n </div>\n ))}\n </div>\n )\n}\n\nexport { StaggerReveal }\n"],"mappings":";;;;;;AAcA,MAAM,iBAAiB;CACrB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAEA,SAAS,cAAc,EAAE,WAAW,YAAgC;CAClE,MAAM,EAAE,KAAK,WAAW,UAA0B;CAElD,OACE,oBAAC,OAAD;EAAU;EAAgB;EACvB,UAAA,SAAS,IAAI,WAAW,OAAO,UAC9B,oBAAC,OAAD;GACE,WAAW,GACT,0GACA,eAAe,KAAK,IAAI,OAAO,eAAe,SAAS,CAAC,IACxD,SACI,8BACA,+EACN;GAEC,UAAA;EACE,CAAA,CACN;CACE,CAAA;AAET"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
//#region src/ui/components/Stepper/Stepper.d.ts
|
|
3
|
+
type StepperItem = {
|
|
4
|
+
id: string;
|
|
5
|
+
title: string;
|
|
6
|
+
description?: ReactNode;
|
|
7
|
+
};
|
|
8
|
+
type StepperProps = {
|
|
9
|
+
items: StepperItem[];
|
|
10
|
+
className?: string;
|
|
11
|
+
};
|
|
12
|
+
declare function Stepper({ items, className }: StepperProps): import("react").JSX.Element;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { Stepper, StepperItem, StepperProps };
|
|
15
|
+
//# sourceMappingURL=Stepper.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Stepper.d.mts","names":[],"sources":["../../../../src/ui/components/Stepper/Stepper.tsx"],"mappings":";;KAIY;EACV;EACA;EACA,cAAc;;KAGJ;EACV,OAAO;EACP;;iBAGO,UAAU,OAAO,aAAa,+BAAY,IAAA"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { cn } from "../../utils/cn.mjs";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
//#region src/ui/components/Stepper/Stepper.tsx
|
|
4
|
+
function Stepper({ items, className }) {
|
|
5
|
+
return /* @__PURE__ */ jsx("ol", {
|
|
6
|
+
className: cn("relative flex flex-col gap-8 pl-0", className),
|
|
7
|
+
children: items.map((item, idx) => /* @__PURE__ */ jsxs("li", {
|
|
8
|
+
className: "relative flex items-start gap-2.5",
|
|
9
|
+
children: [
|
|
10
|
+
idx < items.length - 1 ? /* @__PURE__ */ jsx("span", {
|
|
11
|
+
"aria-hidden": true,
|
|
12
|
+
className: "absolute top-8 bottom-[-32px] left-[17px] w-px bg-border"
|
|
13
|
+
}) : null,
|
|
14
|
+
/* @__PURE__ */ jsx("span", {
|
|
15
|
+
className: "relative z-10 flex size-[34px] shrink-0 items-center justify-center rounded-full bg-accent text-sm font-normal text-accent-foreground",
|
|
16
|
+
children: String(idx + 1).padStart(2, "0")
|
|
17
|
+
}),
|
|
18
|
+
/* @__PURE__ */ jsxs("div", {
|
|
19
|
+
className: "flex-1 pt-1",
|
|
20
|
+
children: [/* @__PURE__ */ jsx("p", {
|
|
21
|
+
className: "mb-3 text-base font-bold text-foreground",
|
|
22
|
+
children: item.title
|
|
23
|
+
}), item.description ? typeof item.description === "string" ? /* @__PURE__ */ jsx("div", {
|
|
24
|
+
className: "prose text-base text-secondary",
|
|
25
|
+
dangerouslySetInnerHTML: { __html: item.description }
|
|
26
|
+
}) : /* @__PURE__ */ jsx("div", {
|
|
27
|
+
className: "text-base text-secondary",
|
|
28
|
+
children: item.description
|
|
29
|
+
}) : null]
|
|
30
|
+
})
|
|
31
|
+
]
|
|
32
|
+
}, item.id))
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
//#endregion
|
|
36
|
+
export { Stepper };
|
|
37
|
+
|
|
38
|
+
//# sourceMappingURL=Stepper.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Stepper.mjs","names":[],"sources":["../../../../src/ui/components/Stepper/Stepper.tsx"],"sourcesContent":["import { cn } from '../../utils/cn.js'\n\nimport type { ReactNode } from 'react'\n\nexport type StepperItem = {\n id: string\n title: string\n description?: ReactNode\n}\n\nexport type StepperProps = {\n items: StepperItem[]\n className?: string\n}\n\nfunction Stepper({ items, className }: StepperProps) {\n return (\n <ol className={cn('relative flex flex-col gap-8 pl-0', className)}>\n {items.map((item, idx) => (\n <li key={item.id} className=\"relative flex items-start gap-2.5\">\n {idx < items.length - 1 ? (\n <span\n aria-hidden\n className=\"absolute top-8 bottom-[-32px] left-[17px] w-px bg-border\"\n />\n ) : null}\n <span className=\"relative z-10 flex size-[34px] shrink-0 items-center justify-center rounded-full bg-accent text-sm font-normal text-accent-foreground\">\n {String(idx + 1).padStart(2, '0')}\n </span>\n <div className=\"flex-1 pt-1\">\n <p className=\"mb-3 text-base font-bold text-foreground\">{item.title}</p>\n {item.description ? (\n typeof item.description === 'string' ? (\n <div\n className=\"prose text-base text-secondary\"\n dangerouslySetInnerHTML={{ __html: item.description }}\n />\n ) : (\n <div className=\"text-base text-secondary\">{item.description}</div>\n )\n ) : null}\n </div>\n </li>\n ))}\n </ol>\n )\n}\n\nexport { Stepper }\n"],"mappings":";;;AAeA,SAAS,QAAQ,EAAE,OAAO,aAA2B;CACnD,OACE,oBAAC,MAAD;EAAI,WAAW,GAAG,qCAAqC,SAAS;EAC7D,UAAA,MAAM,KAAK,MAAM,QAChB,qBAAC,MAAD;GAAkB,WAAU;GAA5B,UAAA;IACG,MAAM,MAAM,SAAS,IACpB,oBAAC,QAAD;KACE,eAAA;KACA,WAAU;IACX,CAAA,IACC;IACJ,oBAAC,QAAD;KAAM,WAAU;KACb,UAAA,OAAO,MAAM,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG;IAC5B,CAAA;IACN,qBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACE,oBAAC,KAAD;MAAG,WAAU;MAA4C,UAAA,KAAK;KAAS,CAAA,GACtE,KAAK,cACJ,OAAO,KAAK,gBAAgB,WAC1B,oBAAC,OAAD;MACE,WAAU;MACV,yBAAyB,EAAE,QAAQ,KAAK,YAAY;KACrD,CAAA,IAED,oBAAC,OAAD;MAAK,WAAU;MAA4B,UAAA,KAAK;KAAiB,CAAA,IAEjE,IACD;;GACH;EAvBK,GAAA,KAAK,EAuBV,CACL;CACC,CAAA;AAER"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ComponentProps } from "react";
|
|
2
|
+
import { Primitive } from "@radix-ui/react-primitive";
|
|
3
|
+
//#region src/ui/components/Switch/Switch.d.ts
|
|
4
|
+
type SwitchProps = Omit<ComponentProps<typeof Primitive.button>, 'onChange'> & {
|
|
5
|
+
checked?: boolean;
|
|
6
|
+
defaultChecked?: boolean;
|
|
7
|
+
onCheckedChange?: (checked: boolean) => void;
|
|
8
|
+
};
|
|
9
|
+
declare function Switch({ className, checked: checkedProp, defaultChecked, onCheckedChange, disabled, ...props }: SwitchProps): import("react").JSX.Element;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { Switch, SwitchProps };
|
|
12
|
+
//# sourceMappingURL=Switch.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Switch.d.mts","names":[],"sources":["../../../../src/ui/components/Switch/Switch.tsx"],"mappings":";;;KASY,cAAc,KAAK,sBAAsB,UAAU;EAC7D;EACA;EACA,mBAAmB;;iBAGZ,SACP,WACA,SAAS,aACT,gBACA,iBACA,aACG,SACF,8BAAW,IAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../../utils/cn.mjs";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
import { useState } from "react";
|
|
5
|
+
import { Primitive } from "@radix-ui/react-primitive";
|
|
6
|
+
//#region src/ui/components/Switch/Switch.tsx
|
|
7
|
+
function Switch({ className, checked: checkedProp, defaultChecked = false, onCheckedChange, disabled, ...props }) {
|
|
8
|
+
const isControlled = checkedProp !== void 0;
|
|
9
|
+
const [uncontrolled, setUncontrolled] = useState(defaultChecked);
|
|
10
|
+
const checked = isControlled ? Boolean(checkedProp) : uncontrolled;
|
|
11
|
+
function setChecked(next) {
|
|
12
|
+
if (!isControlled) setUncontrolled(next);
|
|
13
|
+
onCheckedChange?.(next);
|
|
14
|
+
}
|
|
15
|
+
return /* @__PURE__ */ jsx(Primitive.button, {
|
|
16
|
+
type: "button",
|
|
17
|
+
role: "switch",
|
|
18
|
+
"data-slot": "switch",
|
|
19
|
+
"data-state": checked ? "checked" : "unchecked",
|
|
20
|
+
"aria-checked": checked,
|
|
21
|
+
disabled,
|
|
22
|
+
onClick: () => setChecked(!checked),
|
|
23
|
+
className: cn("inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full px-0.5", "bg-surface data-[state=checked]:bg-accent", "transition-colors duration-200", "focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-background focus-visible:outline-none", "disabled:cursor-not-allowed disabled:opacity-50", className),
|
|
24
|
+
...props,
|
|
25
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
26
|
+
"data-state": checked ? "checked" : "unchecked",
|
|
27
|
+
className: cn("block size-5 shrink-0 rounded-full bg-foreground shadow-sm", "transition-transform duration-200 ease-in-out", "data-[state=unchecked]:translate-x-0", "data-[state=checked]:translate-x-5")
|
|
28
|
+
})
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
//#endregion
|
|
32
|
+
export { Switch };
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=Switch.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Switch.mjs","names":[],"sources":["../../../../src/ui/components/Switch/Switch.tsx"],"sourcesContent":["'use client'\n\nimport { useState } from 'react'\nimport { Primitive } from '@radix-ui/react-primitive'\n\nimport { cn } from '../../utils/cn.js'\n\nimport type { ComponentProps } from 'react'\n\nexport type SwitchProps = Omit<ComponentProps<typeof Primitive.button>, 'onChange'> & {\n checked?: boolean\n defaultChecked?: boolean\n onCheckedChange?: (checked: boolean) => void\n}\n\nfunction Switch({\n className,\n checked: checkedProp,\n defaultChecked = false,\n onCheckedChange,\n disabled,\n ...props\n}: SwitchProps) {\n const isControlled = checkedProp !== undefined\n const [uncontrolled, setUncontrolled] = useState(defaultChecked)\n const checked = isControlled ? Boolean(checkedProp) : uncontrolled\n\n function setChecked(next: boolean) {\n if (!isControlled) setUncontrolled(next)\n onCheckedChange?.(next)\n }\n\n return (\n <Primitive.button\n type=\"button\"\n role=\"switch\"\n data-slot=\"switch\"\n data-state={checked ? 'checked' : 'unchecked'}\n aria-checked={checked}\n disabled={disabled}\n onClick={() => setChecked(!checked)}\n className={cn(\n 'inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full px-0.5',\n 'bg-surface data-[state=checked]:bg-accent',\n 'transition-colors duration-200',\n 'focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-background focus-visible:outline-none',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n className\n )}\n {...props}\n >\n <span\n data-state={checked ? 'checked' : 'unchecked'}\n className={cn(\n 'block size-5 shrink-0 rounded-full bg-foreground shadow-sm',\n 'transition-transform duration-200 ease-in-out',\n 'data-[state=unchecked]:translate-x-0',\n 'data-[state=checked]:translate-x-5'\n )}\n />\n </Primitive.button>\n )\n}\n\nexport { Switch }\n"],"mappings":";;;;;;AAeA,SAAS,OAAO,EACd,WACA,SAAS,aACT,iBAAiB,OACjB,iBACA,UACA,GAAG,SACW;CACd,MAAM,eAAe,gBAAgB;CACrC,MAAM,CAAC,cAAc,mBAAmB,SAAS,cAAc;CAC/D,MAAM,UAAU,eAAe,QAAQ,WAAW,IAAI;CAEtD,SAAS,WAAW,MAAe;EACjC,IAAI,CAAC,cAAc,gBAAgB,IAAI;EACvC,kBAAkB,IAAI;CACxB;CAEA,OACE,oBAAC,UAAU,QAAX;EACE,MAAK;EACL,MAAK;EACL,aAAU;EACV,cAAY,UAAU,YAAY;EAClC,gBAAc;EACJ;EACV,eAAe,WAAW,CAAC,OAAO;EAClC,WAAW,GACT,iFACA,6CACA,kCACA,8IACA,mDACA,SACF;EACA,GAAI;EAEJ,UAAA,oBAAC,QAAD;GACE,cAAY,UAAU,YAAY;GAClC,WAAW,GACT,8DACA,iDACA,wCACA,oCACF;EACD,CAAA;CACe,CAAA;AAEtB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ComponentPropsWithoutRef } from "react";
|
|
2
|
+
//#region src/ui/components/TextButton/TextButton.d.ts
|
|
3
|
+
type TextButtonProps = ComponentPropsWithoutRef<'button'> & {
|
|
4
|
+
asChild?: boolean;
|
|
5
|
+
};
|
|
6
|
+
declare function TextButton({ className, asChild, ...props }: TextButtonProps): import("react").JSX.Element;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { TextButton, TextButtonProps };
|
|
9
|
+
//# sourceMappingURL=TextButton.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextButton.d.mts","names":[],"sources":["../../../../src/ui/components/TextButton/TextButton.tsx"],"mappings":";;KAQY,kBAAkB;EAC5B;;iBAGO,aAAa,WAAW,YAAoB,SAAS,kCAAe,IAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../../utils/cn.mjs";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
5
|
+
//#region src/ui/components/TextButton/TextButton.tsx
|
|
6
|
+
function TextButton({ className, asChild = false, ...props }) {
|
|
7
|
+
return /* @__PURE__ */ jsx(asChild ? Slot : "button", {
|
|
8
|
+
"data-slot": "text-button",
|
|
9
|
+
className: cn("inline-flex h-auto cursor-pointer items-center justify-start rounded-btn bg-transparent px-3 py-2.5 text-sm font-semibold text-foreground transition-colors hover:text-secondary", className),
|
|
10
|
+
...props
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
export { TextButton };
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=TextButton.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextButton.mjs","names":[],"sources":["../../../../src/ui/components/TextButton/TextButton.tsx"],"sourcesContent":["'use client'\n\nimport { Slot } from '@radix-ui/react-slot'\n\nimport { cn } from '../../utils/cn.js'\n\nimport type { ComponentPropsWithoutRef } from 'react'\n\nexport type TextButtonProps = ComponentPropsWithoutRef<'button'> & {\n asChild?: boolean\n}\n\nfunction TextButton({ className, asChild = false, ...props }: TextButtonProps) {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n data-slot=\"text-button\"\n className={cn(\n 'inline-flex h-auto cursor-pointer items-center justify-start rounded-btn bg-transparent px-3 py-2.5 text-sm font-semibold text-foreground transition-colors hover:text-secondary',\n className\n )}\n {...props}\n />\n )\n}\n\nexport { TextButton }\n"],"mappings":";;;;;AAYA,SAAS,WAAW,EAAE,WAAW,UAAU,OAAO,GAAG,SAA0B;CAG7E,OACE,oBAHW,UAAU,OAAO,UAG5B;EACE,aAAU;EACV,WAAW,GACT,oLACA,SACF;EACA,GAAI;CACL,CAAA;AAEL"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ComponentProps } from "react";
|
|
2
|
+
//#region src/ui/components/Textarea/Textarea.d.ts
|
|
3
|
+
type TextareaProps = Omit<ComponentProps<'textarea'>, 'children'> & {
|
|
4
|
+
error?: boolean | string;
|
|
5
|
+
};
|
|
6
|
+
declare function Textarea({ className, error, id, ref, ...props }: TextareaProps): import("react").JSX.Element;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { Textarea, TextareaProps };
|
|
9
|
+
//# sourceMappingURL=Textarea.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Textarea.d.mts","names":[],"sources":["../../../../src/ui/components/Textarea/Textarea.tsx"],"mappings":";;KAIY,gBAAgB,KAAK;EAC/B;;iBAGO,WAAW,WAAW,OAAO,IAAI,QAAQ,SAAS,gCAAa,IAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { cn } from "../../utils/cn.mjs";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
//#region src/ui/components/Textarea/Textarea.tsx
|
|
4
|
+
function Textarea({ className, error, id, ref, ...props }) {
|
|
5
|
+
const errorId = id ? `${id}-error` : void 0;
|
|
6
|
+
const hasError = Boolean(error);
|
|
7
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
8
|
+
className: "flex w-full flex-col gap-1",
|
|
9
|
+
children: [/* @__PURE__ */ jsx("textarea", {
|
|
10
|
+
ref,
|
|
11
|
+
id,
|
|
12
|
+
"data-slot": "textarea",
|
|
13
|
+
"aria-invalid": hasError || void 0,
|
|
14
|
+
"aria-describedby": hasError && errorId ? errorId : void 0,
|
|
15
|
+
className: cn("min-h-24 w-full resize-y rounded-btn border border-border-subtle bg-background px-3.5 py-3 text-sm text-foreground", "placeholder:text-muted", "transition-colors hover:border-border", "focus-visible:border-accent focus-visible:outline-none", "disabled:cursor-not-allowed disabled:opacity-50", hasError && "border-destructive focus-visible:border-destructive", className),
|
|
16
|
+
...props
|
|
17
|
+
}), typeof error === "string" ? /* @__PURE__ */ jsx("p", {
|
|
18
|
+
id: errorId,
|
|
19
|
+
className: "text-xs text-destructive",
|
|
20
|
+
children: error
|
|
21
|
+
}) : null]
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { Textarea };
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=Textarea.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Textarea.mjs","names":[],"sources":["../../../../src/ui/components/Textarea/Textarea.tsx"],"sourcesContent":["import { cn } from '../../utils/cn.js'\n\nimport type { ComponentProps } from 'react'\n\nexport type TextareaProps = Omit<ComponentProps<'textarea'>, 'children'> & {\n error?: boolean | string\n}\n\nfunction Textarea({ className, error, id, ref, ...props }: TextareaProps) {\n const errorId = id ? `${id}-error` : undefined\n const hasError = Boolean(error)\n\n return (\n <div className=\"flex w-full flex-col gap-1\">\n <textarea\n ref={ref}\n id={id}\n data-slot=\"textarea\"\n aria-invalid={hasError || undefined}\n aria-describedby={hasError && errorId ? errorId : undefined}\n className={cn(\n 'min-h-24 w-full resize-y rounded-btn border border-border-subtle bg-background px-3.5 py-3 text-sm text-foreground',\n 'placeholder:text-muted',\n 'transition-colors hover:border-border',\n 'focus-visible:border-accent focus-visible:outline-none',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n hasError && 'border-destructive focus-visible:border-destructive',\n className\n )}\n {...props}\n />\n\n {typeof error === 'string' ? (\n <p id={errorId} className=\"text-xs text-destructive\">\n {error}\n </p>\n ) : null}\n </div>\n )\n}\n\nexport { Textarea }\n"],"mappings":";;;AAQA,SAAS,SAAS,EAAE,WAAW,OAAO,IAAI,KAAK,GAAG,SAAwB;CACxE,MAAM,UAAU,KAAK,GAAG,GAAG,UAAU;CACrC,MAAM,WAAW,QAAQ,KAAK;CAE9B,OACE,qBAAC,OAAD;EAAK,WAAU;EAAf,UAAA,CACE,oBAAC,YAAD;GACO;GACD;GACJ,aAAU;GACV,gBAAc,YAAY;GAC1B,oBAAkB,YAAY,UAAU,UAAU;GAClD,WAAW,GACT,sHACA,0BACA,yCACA,0DACA,mDACA,YAAY,uDACZ,SACF;GACA,GAAI;EACL,CAAA,GAEA,OAAO,UAAU,WAChB,oBAAC,KAAD;GAAG,IAAI;GAAS,WAAU;GACvB,UAAA;EACA,CAAA,IACD,IACD;;AAET"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
//#region src/ui/components/Toast/Toast.d.ts
|
|
3
|
+
type ToastVariant = 'success' | 'error';
|
|
4
|
+
type ShowToastInput = {
|
|
5
|
+
message: string;
|
|
6
|
+
variant?: ToastVariant;
|
|
7
|
+
};
|
|
8
|
+
type ToastContextValue = {
|
|
9
|
+
showToast: (input: ShowToastInput) => void;
|
|
10
|
+
};
|
|
11
|
+
type ToastProviderProps = {
|
|
12
|
+
children: ReactNode;
|
|
13
|
+
/** Accessible label for the dismiss control. Required — apps own i18n. */
|
|
14
|
+
dismissLabel: string;
|
|
15
|
+
};
|
|
16
|
+
declare function ToastProvider({ children, dismissLabel }: ToastProviderProps): import("react").JSX.Element;
|
|
17
|
+
declare function useToast(): ToastContextValue;
|
|
18
|
+
//#endregion
|
|
19
|
+
export { ToastProvider, ToastProviderProps, useToast };
|
|
20
|
+
//# sourceMappingURL=Toast.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toast.d.mts","names":[],"sources":["../../../../src/ui/components/Toast/Toast.tsx"],"mappings":";;KAMK;KAQA;EACH;EACA,UAAU;;KAGP;EACH,YAAY,OAAO;;KAOT;EACV,UAAU;;EAEV;;iBAsDc,gBAAgB,UAAU,gBAAgB,qCAAkB,IAAA;iBA8D5D,YAAQ"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../../utils/cn.mjs";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
import { createContext, useContext, useEffect, useRef, useState } from "react";
|
|
5
|
+
//#region src/ui/components/Toast/Toast.tsx
|
|
6
|
+
const ToastContext = createContext(null);
|
|
7
|
+
const TOAST_DURATION_MS = 4e3;
|
|
8
|
+
function CloseIcon() {
|
|
9
|
+
return /* @__PURE__ */ jsx("svg", {
|
|
10
|
+
"aria-hidden": "true",
|
|
11
|
+
viewBox: "0 0 16 16",
|
|
12
|
+
width: "16",
|
|
13
|
+
height: "16",
|
|
14
|
+
fill: "none",
|
|
15
|
+
children: /* @__PURE__ */ jsx("path", {
|
|
16
|
+
d: "M4 4l8 8M12 4l-8 8",
|
|
17
|
+
stroke: "currentColor",
|
|
18
|
+
strokeWidth: "1.5",
|
|
19
|
+
strokeLinecap: "round"
|
|
20
|
+
})
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
function StatusIcon({ variant }) {
|
|
24
|
+
if (variant === "success") return /* @__PURE__ */ jsxs("svg", {
|
|
25
|
+
"aria-hidden": "true",
|
|
26
|
+
viewBox: "0 0 20 20",
|
|
27
|
+
width: "20",
|
|
28
|
+
height: "20",
|
|
29
|
+
fill: "none",
|
|
30
|
+
className: "shrink-0 text-success",
|
|
31
|
+
children: [/* @__PURE__ */ jsx("circle", {
|
|
32
|
+
cx: "10",
|
|
33
|
+
cy: "10",
|
|
34
|
+
r: "8",
|
|
35
|
+
stroke: "currentColor",
|
|
36
|
+
strokeWidth: "1.5"
|
|
37
|
+
}), /* @__PURE__ */ jsx("path", {
|
|
38
|
+
d: "M6.5 10.2 9 12.5l4.5-5",
|
|
39
|
+
stroke: "currentColor",
|
|
40
|
+
strokeWidth: "1.5",
|
|
41
|
+
strokeLinecap: "round",
|
|
42
|
+
strokeLinejoin: "round"
|
|
43
|
+
})]
|
|
44
|
+
});
|
|
45
|
+
return /* @__PURE__ */ jsxs("svg", {
|
|
46
|
+
"aria-hidden": "true",
|
|
47
|
+
viewBox: "0 0 20 20",
|
|
48
|
+
width: "20",
|
|
49
|
+
height: "20",
|
|
50
|
+
fill: "none",
|
|
51
|
+
className: "shrink-0 text-destructive",
|
|
52
|
+
children: [/* @__PURE__ */ jsx("path", {
|
|
53
|
+
d: "M10 3.5 17.5 16.5H2.5L10 3.5Z",
|
|
54
|
+
stroke: "currentColor",
|
|
55
|
+
strokeWidth: "1.5",
|
|
56
|
+
strokeLinejoin: "round"
|
|
57
|
+
}), /* @__PURE__ */ jsx("path", {
|
|
58
|
+
d: "M10 8v4M10 14.5h.01",
|
|
59
|
+
stroke: "currentColor",
|
|
60
|
+
strokeWidth: "1.5",
|
|
61
|
+
strokeLinecap: "round"
|
|
62
|
+
})]
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
function ToastProvider({ children, dismissLabel }) {
|
|
66
|
+
const [toasts, setToasts] = useState([]);
|
|
67
|
+
const timersRef = useRef(/* @__PURE__ */ new Map());
|
|
68
|
+
function dismissToast(id) {
|
|
69
|
+
const timer = timersRef.current.get(id);
|
|
70
|
+
if (timer) {
|
|
71
|
+
clearTimeout(timer);
|
|
72
|
+
timersRef.current.delete(id);
|
|
73
|
+
}
|
|
74
|
+
setToasts((current) => current.filter((toast) => toast.id !== id));
|
|
75
|
+
}
|
|
76
|
+
function showToast({ message, variant = "success" }) {
|
|
77
|
+
const id = crypto.randomUUID();
|
|
78
|
+
setToasts((current) => [...current, {
|
|
79
|
+
id,
|
|
80
|
+
message,
|
|
81
|
+
variant
|
|
82
|
+
}]);
|
|
83
|
+
const timer = setTimeout(() => dismissToast(id), TOAST_DURATION_MS);
|
|
84
|
+
timersRef.current.set(id, timer);
|
|
85
|
+
}
|
|
86
|
+
useEffect(() => {
|
|
87
|
+
const timers = timersRef.current;
|
|
88
|
+
return () => {
|
|
89
|
+
timers.forEach((timer) => clearTimeout(timer));
|
|
90
|
+
timers.clear();
|
|
91
|
+
};
|
|
92
|
+
}, []);
|
|
93
|
+
return /* @__PURE__ */ jsxs(ToastContext.Provider, {
|
|
94
|
+
value: { showToast },
|
|
95
|
+
children: [children, /* @__PURE__ */ jsx("div", {
|
|
96
|
+
"aria-live": "polite",
|
|
97
|
+
"aria-relevant": "additions",
|
|
98
|
+
className: "pointer-events-none fixed inset-x-4 bottom-4 z-[100] flex flex-col gap-2 sm:inset-x-auto sm:right-4 sm:max-w-sm",
|
|
99
|
+
children: toasts.map((toast) => /* @__PURE__ */ jsxs("div", {
|
|
100
|
+
role: "status",
|
|
101
|
+
className: cn("pointer-events-auto flex items-center gap-3 rounded-card border border-border-subtle", "bg-card-elevated py-3.5 pr-3.5 pl-4 shadow-lg"),
|
|
102
|
+
children: [
|
|
103
|
+
/* @__PURE__ */ jsx(StatusIcon, { variant: toast.variant }),
|
|
104
|
+
/* @__PURE__ */ jsx("p", {
|
|
105
|
+
className: "min-w-0 flex-1 text-sm font-semibold text-foreground",
|
|
106
|
+
children: toast.message
|
|
107
|
+
}),
|
|
108
|
+
/* @__PURE__ */ jsx("button", {
|
|
109
|
+
type: "button",
|
|
110
|
+
onClick: () => dismissToast(toast.id),
|
|
111
|
+
className: "inline-flex shrink-0 cursor-pointer text-muted transition-colors hover:text-secondary",
|
|
112
|
+
"aria-label": dismissLabel,
|
|
113
|
+
children: /* @__PURE__ */ jsx(CloseIcon, {})
|
|
114
|
+
})
|
|
115
|
+
]
|
|
116
|
+
}, toast.id))
|
|
117
|
+
})]
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
function useToast() {
|
|
121
|
+
const context = useContext(ToastContext);
|
|
122
|
+
if (!context) throw new Error("useToast must be used within ToastProvider");
|
|
123
|
+
return context;
|
|
124
|
+
}
|
|
125
|
+
//#endregion
|
|
126
|
+
export { ToastProvider, useToast };
|
|
127
|
+
|
|
128
|
+
//# sourceMappingURL=Toast.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toast.mjs","names":[],"sources":["../../../../src/ui/components/Toast/Toast.tsx"],"sourcesContent":["'use client'\n\nimport { createContext, useContext, useEffect, useRef, useState, type ReactNode } from 'react'\n\nimport { cn } from '../../utils/cn.js'\n\ntype ToastVariant = 'success' | 'error'\n\ntype ToastItem = {\n id: string\n message: string\n variant: ToastVariant\n}\n\ntype ShowToastInput = {\n message: string\n variant?: ToastVariant\n}\n\ntype ToastContextValue = {\n showToast: (input: ShowToastInput) => void\n}\n\nconst ToastContext = createContext<ToastContextValue | null>(null)\n\nconst TOAST_DURATION_MS = 4000\n\nexport type ToastProviderProps = {\n children: ReactNode\n /** Accessible label for the dismiss control. Required — apps own i18n. */\n dismissLabel: string\n}\n\nfunction CloseIcon() {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\" fill=\"none\">\n <path d=\"M4 4l8 8M12 4l-8 8\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n )\n}\n\nfunction StatusIcon({ variant }: { variant: ToastVariant }) {\n if (variant === 'success') {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n className=\"shrink-0 text-success\"\n >\n <circle cx=\"10\" cy=\"10\" r=\"8\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M6.5 10.2 9 12.5l4.5-5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )\n }\n\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n className=\"shrink-0 text-destructive\"\n >\n <path\n d=\"M10 3.5 17.5 16.5H2.5L10 3.5Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinejoin=\"round\"\n />\n <path d=\"M10 8v4M10 14.5h.01\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n )\n}\n\nexport function ToastProvider({ children, dismissLabel }: ToastProviderProps) {\n const [toasts, setToasts] = useState<ToastItem[]>([])\n const timersRef = useRef<Map<string, ReturnType<typeof setTimeout>>>(new Map())\n\n function dismissToast(id: string) {\n const timer = timersRef.current.get(id)\n if (timer) {\n clearTimeout(timer)\n timersRef.current.delete(id)\n }\n setToasts((current) => current.filter((toast) => toast.id !== id))\n }\n\n function showToast({ message, variant = 'success' }: ShowToastInput) {\n const id = crypto.randomUUID()\n setToasts((current) => [...current, { id, message, variant }])\n const timer = setTimeout(() => dismissToast(id), TOAST_DURATION_MS)\n timersRef.current.set(id, timer)\n }\n\n useEffect(() => {\n const timers = timersRef.current\n return () => {\n timers.forEach((timer) => clearTimeout(timer))\n timers.clear()\n }\n }, [])\n\n return (\n <ToastContext.Provider value={{ showToast }}>\n {children}\n <div\n aria-live=\"polite\"\n aria-relevant=\"additions\"\n className=\"pointer-events-none fixed inset-x-4 bottom-4 z-[100] flex flex-col gap-2 sm:inset-x-auto sm:right-4 sm:max-w-sm\"\n >\n {toasts.map((toast) => (\n <div\n key={toast.id}\n role=\"status\"\n className={cn(\n 'pointer-events-auto flex items-center gap-3 rounded-card border border-border-subtle',\n 'bg-card-elevated py-3.5 pr-3.5 pl-4 shadow-lg'\n )}\n >\n <StatusIcon variant={toast.variant} />\n <p className=\"min-w-0 flex-1 text-sm font-semibold text-foreground\">{toast.message}</p>\n <button\n type=\"button\"\n onClick={() => dismissToast(toast.id)}\n className=\"inline-flex shrink-0 cursor-pointer text-muted transition-colors hover:text-secondary\"\n aria-label={dismissLabel}\n >\n <CloseIcon />\n </button>\n </div>\n ))}\n </div>\n </ToastContext.Provider>\n )\n}\n\nexport function useToast() {\n const context = useContext(ToastContext)\n if (!context) {\n throw new Error('useToast must be used within ToastProvider')\n }\n return context\n}\n"],"mappings":";;;;;AAuBA,MAAM,eAAe,cAAwC,IAAI;AAEjE,MAAM,oBAAoB;AAQ1B,SAAS,YAAY;CACnB,OACE,oBAAC,OAAD;EAAK,eAAY;EAAO,SAAQ;EAAY,OAAM;EAAK,QAAO;EAAK,MAAK;EACtE,UAAA,oBAAC,QAAD;GAAM,GAAE;GAAqB,QAAO;GAAe,aAAY;GAAM,eAAc;EAAS,CAAA;CACzF,CAAA;AAET;AAEA,SAAS,WAAW,EAAE,WAAsC;CAC1D,IAAI,YAAY,WACd,OACE,qBAAC,OAAD;EACE,eAAY;EACZ,SAAQ;EACR,OAAM;EACN,QAAO;EACP,MAAK;EACL,WAAU;EANZ,UAAA,CAQE,oBAAC,UAAD;GAAQ,IAAG;GAAK,IAAG;GAAK,GAAE;GAAI,QAAO;GAAe,aAAY;EAAO,CAAA,GACvE,oBAAC,QAAD;GACE,GAAE;GACF,QAAO;GACP,aAAY;GACZ,eAAc;GACd,gBAAe;EAChB,CAAA,CACE;;CAIT,OACE,qBAAC,OAAD;EACE,eAAY;EACZ,SAAQ;EACR,OAAM;EACN,QAAO;EACP,MAAK;EACL,WAAU;EANZ,UAAA,CAQE,oBAAC,QAAD;GACE,GAAE;GACF,QAAO;GACP,aAAY;GACZ,gBAAe;EAChB,CAAA,GACD,oBAAC,QAAD;GAAM,GAAE;GAAsB,QAAO;GAAe,aAAY;GAAM,eAAc;EAAS,CAAA,CAC1F;;AAET;AAEA,SAAgB,cAAc,EAAE,UAAU,gBAAoC;CAC5E,MAAM,CAAC,QAAQ,aAAa,SAAsB,CAAC,CAAC;CACpD,MAAM,YAAY,uBAAmD,IAAI,IAAI,CAAC;CAE9E,SAAS,aAAa,IAAY;EAChC,MAAM,QAAQ,UAAU,QAAQ,IAAI,EAAE;EACtC,IAAI,OAAO;GACT,aAAa,KAAK;GAClB,UAAU,QAAQ,OAAO,EAAE;EAC7B;EACA,WAAW,YAAY,QAAQ,QAAQ,UAAU,MAAM,OAAO,EAAE,CAAC;CACnE;CAEA,SAAS,UAAU,EAAE,SAAS,UAAU,aAA6B;EACnE,MAAM,KAAK,OAAO,WAAW;EAC7B,WAAW,YAAY,CAAC,GAAG,SAAS;GAAE;GAAI;GAAS;EAAQ,CAAC,CAAC;EAC7D,MAAM,QAAQ,iBAAiB,aAAa,EAAE,GAAG,iBAAiB;EAClE,UAAU,QAAQ,IAAI,IAAI,KAAK;CACjC;CAEA,gBAAgB;EACd,MAAM,SAAS,UAAU;EACzB,aAAa;GACX,OAAO,SAAS,UAAU,aAAa,KAAK,CAAC;GAC7C,OAAO,MAAM;EACf;CACF,GAAG,CAAC,CAAC;CAEL,OACE,qBAAC,aAAa,UAAd;EAAuB,OAAO,EAAE,UAAU;EAA1C,UAAA,CACG,UACD,oBAAC,OAAD;GACE,aAAU;GACV,iBAAc;GACd,WAAU;GAET,UAAA,OAAO,KAAK,UACX,qBAAC,OAAD;IAEE,MAAK;IACL,WAAW,GACT,wFACA,+CACF;IANF,UAAA;KAQE,oBAAC,YAAD,EAAY,SAAS,MAAM,QAAU,CAAA;KACrC,oBAAC,KAAD;MAAG,WAAU;MAAwD,UAAA,MAAM;KAAW,CAAA;KACtF,oBAAC,UAAD;MACE,MAAK;MACL,eAAe,aAAa,MAAM,EAAE;MACpC,WAAU;MACV,cAAY;MAEZ,UAAA,oBAAC,WAAD,CAAY,CAAA;KACN,CAAA;IACL;GAjBE,GAAA,MAAM,EAiBR,CACN;EACE,CAAA,CACgB;;AAE3B;AAEA,SAAgB,WAAW;CACzB,MAAM,UAAU,WAAW,YAAY;CACvC,IAAI,CAAC,SACH,MAAM,IAAI,MAAM,4CAA4C;CAE9D,OAAO;AACT"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ComponentProps } from "react";
|
|
2
|
+
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
3
|
+
//#region src/ui/components/Tooltip/Tooltip.d.ts
|
|
4
|
+
declare const TooltipProvider: import("react").FC<TooltipPrimitive.TooltipProviderProps>;
|
|
5
|
+
declare const Tooltip: import("react").FC<TooltipPrimitive.TooltipProps>;
|
|
6
|
+
declare const TooltipTrigger: import("react").ForwardRefExoticComponent<TooltipPrimitive.TooltipTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
7
|
+
type TooltipContentProps = ComponentProps<typeof TooltipPrimitive.Content>;
|
|
8
|
+
declare function TooltipContent({ className, sideOffset, ...props }: TooltipContentProps): import("react").JSX.Element;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { Tooltip, TooltipContent, TooltipContentProps, TooltipProvider, TooltipTrigger };
|
|
11
|
+
//# sourceMappingURL=Tooltip.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tooltip.d.mts","names":[],"sources":["../../../../src/ui/components/Tooltip/Tooltip.tsx"],"mappings":";;;cAQM,iCAAe,GAAA,iBAAA;cACf,yBAAO,GAAA,iBAAA;cACP,gCAAc,0BAAA,iBAAA,sCAAA,cAAA;KAER,sBAAsB,sBAAsB,iBAAiB;iBAEhE,iBAAiB,WAAW,eAAmB,SAAS,sCAAmB,IAAA"}
|