@journ/bloom 0.1.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/DESIGN.md +287 -0
- package/LICENSE +21 -0
- package/README.md +59 -0
- package/dist/accordion-parts.d.ts +9 -0
- package/dist/accordion-parts.js +37 -0
- package/dist/accordion.d.ts +10 -0
- package/dist/accordion.js +10 -0
- package/dist/alert-dialog-parts.d.ts +16 -0
- package/dist/alert-dialog-parts.js +33 -0
- package/dist/alert-dialog.d.ts +15 -0
- package/dist/alert-dialog.js +15 -0
- package/dist/alert.d.ts +48 -0
- package/dist/alert.js +51 -0
- package/dist/animated-size.d.ts +6 -0
- package/dist/animated-size.js +12 -0
- package/dist/avatar-parts.d.ts +10 -0
- package/dist/avatar-parts.js +20 -0
- package/dist/avatar.d.ts +9 -0
- package/dist/avatar.js +9 -0
- package/dist/badge.d.ts +38 -0
- package/dist/badge.js +22 -0
- package/dist/breadcrumbs.d.ts +18 -0
- package/dist/breadcrumbs.js +44 -0
- package/dist/bulk-bar.d.ts +13 -0
- package/dist/bulk-bar.js +27 -0
- package/dist/button.d.ts +40 -0
- package/dist/button.js +41 -0
- package/dist/calendar-parts.d.ts +17 -0
- package/dist/calendar-parts.js +90 -0
- package/dist/calendar.d.ts +17 -0
- package/dist/calendar.js +17 -0
- package/dist/card.d.ts +51 -0
- package/dist/card.js +63 -0
- package/dist/carousel-parts.d.ts +13 -0
- package/dist/carousel-parts.js +53 -0
- package/dist/carousel.d.ts +11 -0
- package/dist/carousel.js +11 -0
- package/dist/checkbox-parts.d.ts +8 -0
- package/dist/checkbox-parts.js +21 -0
- package/dist/checkbox.d.ts +8 -0
- package/dist/checkbox.js +8 -0
- package/dist/chip.d.ts +45 -0
- package/dist/chip.js +55 -0
- package/dist/collapsible-parts.d.ts +8 -0
- package/dist/collapsible-parts.js +22 -0
- package/dist/collapsible.d.ts +9 -0
- package/dist/collapsible.js +9 -0
- package/dist/combobox-parts.d.ts +22 -0
- package/dist/combobox-parts.js +54 -0
- package/dist/combobox.d.ts +26 -0
- package/dist/combobox.js +21 -0
- package/dist/command-palette-parts.d.ts +13 -0
- package/dist/command-palette-parts.js +19 -0
- package/dist/command-palette.d.ts +17 -0
- package/dist/command-palette.js +17 -0
- package/dist/composer.d.ts +12 -0
- package/dist/composer.js +21 -0
- package/dist/context-menu-parts.d.ts +15 -0
- package/dist/context-menu-parts.js +10 -0
- package/dist/context-menu.d.ts +20 -0
- package/dist/context-menu.js +13 -0
- package/dist/currency-input-parts.d.ts +8 -0
- package/dist/currency-input-parts.js +13 -0
- package/dist/currency-input.d.ts +8 -0
- package/dist/currency-input.js +8 -0
- package/dist/data-table-parts.d.ts +10 -0
- package/dist/data-table-parts.js +65 -0
- package/dist/data-table.d.ts +12 -0
- package/dist/data-table.js +12 -0
- package/dist/date-input-parts.d.ts +7 -0
- package/dist/date-input-parts.js +12 -0
- package/dist/date-input.d.ts +8 -0
- package/dist/date-input.js +8 -0
- package/dist/date-picker-parts.d.ts +11 -0
- package/dist/date-picker-parts.js +8 -0
- package/dist/date-picker.d.ts +20 -0
- package/dist/date-picker.js +15 -0
- package/dist/date-range-picker-parts.d.ts +11 -0
- package/dist/date-range-picker-parts.js +8 -0
- package/dist/date-range-picker.d.ts +20 -0
- package/dist/date-range-picker.js +15 -0
- package/dist/description-list.d.ts +12 -0
- package/dist/description-list.js +23 -0
- package/dist/dialog-parts.d.ts +15 -0
- package/dist/dialog-parts.js +32 -0
- package/dist/dialog.d.ts +15 -0
- package/dist/dialog.js +15 -0
- package/dist/divider.d.ts +6 -0
- package/dist/divider.js +12 -0
- package/dist/drawer-parts.d.ts +13 -0
- package/dist/drawer-parts.js +31 -0
- package/dist/drawer.d.ts +15 -0
- package/dist/drawer.js +15 -0
- package/dist/dropdown-menu-parts.d.ts +15 -0
- package/dist/dropdown-menu-parts.js +10 -0
- package/dist/dropdown-menu.d.ts +20 -0
- package/dist/dropdown-menu.js +13 -0
- package/dist/empty-state.d.ts +16 -0
- package/dist/empty-state.js +40 -0
- package/dist/field-parts.d.ts +10 -0
- package/dist/field-parts.js +25 -0
- package/dist/field.d.ts +11 -0
- package/dist/field.js +11 -0
- package/dist/file-dropzone-parts.d.ts +12 -0
- package/dist/file-dropzone-parts.js +32 -0
- package/dist/file-dropzone.d.ts +10 -0
- package/dist/file-dropzone.js +10 -0
- package/dist/heading.d.ts +31 -0
- package/dist/heading.js +26 -0
- package/dist/hover-card-parts.d.ts +8 -0
- package/dist/hover-card-parts.js +20 -0
- package/dist/hover-card.d.ts +9 -0
- package/dist/hover-card.js +9 -0
- package/dist/icon-button.d.ts +44 -0
- package/dist/icon-button.js +39 -0
- package/dist/icon.d.ts +30 -0
- package/dist/icon.js +27 -0
- package/dist/index.d.ts +96 -0
- package/dist/index.js +89 -0
- package/dist/input.d.ts +7 -0
- package/dist/input.js +14 -0
- package/dist/lib/cn.d.ts +6 -0
- package/dist/lib/cn.js +7 -0
- package/dist/lib/icon-tile.d.ts +32 -0
- package/dist/lib/icon-tile.js +23 -0
- package/dist/lib/interactive.d.ts +11 -0
- package/dist/lib/interactive.js +19 -0
- package/dist/lib/menu-parts.d.ts +25 -0
- package/dist/lib/menu-parts.js +41 -0
- package/dist/lib/modal-content.d.ts +10 -0
- package/dist/lib/modal-content.js +17 -0
- package/dist/lib/modal-parts.d.ts +7 -0
- package/dist/lib/modal-parts.js +15 -0
- package/dist/lib/overlay.d.ts +41 -0
- package/dist/lib/overlay.js +22 -0
- package/dist/lib/picker.d.ts +18 -0
- package/dist/lib/picker.js +25 -0
- package/dist/lib/text-styles.d.ts +25 -0
- package/dist/lib/text-styles.js +25 -0
- package/dist/lib/theme.d.ts +43 -0
- package/dist/lib/theme.js +45 -0
- package/dist/lib/tones.d.ts +52 -0
- package/dist/lib/tones.js +55 -0
- package/dist/lib/tv.d.ts +2 -0
- package/dist/lib/tv.js +2 -0
- package/dist/lib/use-enter.d.ts +15 -0
- package/dist/lib/use-enter.js +54 -0
- package/dist/link.d.ts +8 -0
- package/dist/link.js +13 -0
- package/dist/markdown.d.ts +10 -0
- package/dist/markdown.js +70 -0
- package/dist/message.d.ts +15 -0
- package/dist/message.js +25 -0
- package/dist/month-picker-parts.d.ts +2 -0
- package/dist/month-picker-parts.js +3 -0
- package/dist/month-picker.d.ts +15 -0
- package/dist/month-picker.js +15 -0
- package/dist/month-stepper-parts.d.ts +11 -0
- package/dist/month-stepper-parts.js +37 -0
- package/dist/month-stepper.d.ts +10 -0
- package/dist/month-stepper.js +10 -0
- package/dist/multiple-selector-parts.d.ts +18 -0
- package/dist/multiple-selector-parts.js +28 -0
- package/dist/multiple-selector.d.ts +28 -0
- package/dist/multiple-selector.js +23 -0
- package/dist/nav-bar.d.ts +10 -0
- package/dist/nav-bar.js +23 -0
- package/dist/navigation-menu-parts.d.ts +12 -0
- package/dist/navigation-menu-parts.js +47 -0
- package/dist/navigation-menu.d.ts +12 -0
- package/dist/navigation-menu.js +12 -0
- package/dist/otp-input-parts.d.ts +8 -0
- package/dist/otp-input-parts.js +17 -0
- package/dist/otp-input.d.ts +9 -0
- package/dist/otp-input.js +9 -0
- package/dist/page-header.d.ts +12 -0
- package/dist/page-header.js +23 -0
- package/dist/page.d.ts +45 -0
- package/dist/page.js +41 -0
- package/dist/pagination.d.ts +18 -0
- package/dist/pagination.js +49 -0
- package/dist/pill-select.d.ts +5 -0
- package/dist/pill-select.js +21 -0
- package/dist/popover-parts.d.ts +9 -0
- package/dist/popover-parts.js +21 -0
- package/dist/popover.d.ts +10 -0
- package/dist/popover.js +10 -0
- package/dist/portal.d.ts +2 -0
- package/dist/portal.js +2 -0
- package/dist/progress-parts.d.ts +38 -0
- package/dist/progress-parts.js +25 -0
- package/dist/progress.d.ts +8 -0
- package/dist/progress.js +8 -0
- package/dist/quantity-input-parts.d.ts +11 -0
- package/dist/quantity-input-parts.js +36 -0
- package/dist/quantity-input.d.ts +10 -0
- package/dist/quantity-input.js +10 -0
- package/dist/radio-parts.d.ts +7 -0
- package/dist/radio-parts.js +19 -0
- package/dist/radio.d.ts +8 -0
- package/dist/radio.js +8 -0
- package/dist/scroll-area-parts.d.ts +9 -0
- package/dist/scroll-area-parts.js +23 -0
- package/dist/scroll-area.d.ts +10 -0
- package/dist/scroll-area.js +10 -0
- package/dist/select-parts.d.ts +13 -0
- package/dist/select-parts.js +46 -0
- package/dist/select.d.ts +14 -0
- package/dist/select.js +14 -0
- package/dist/sheet-parts.d.ts +33 -0
- package/dist/sheet-parts.js +41 -0
- package/dist/sheet.d.ts +16 -0
- package/dist/sheet.js +16 -0
- package/dist/sidebar.d.ts +24 -0
- package/dist/sidebar.js +58 -0
- package/dist/skeleton.d.ts +5 -0
- package/dist/skeleton.js +11 -0
- package/dist/slider-parts.d.ts +9 -0
- package/dist/slider-parts.js +26 -0
- package/dist/slider.d.ts +10 -0
- package/dist/slider.js +10 -0
- package/dist/spinner.d.ts +5 -0
- package/dist/spinner.js +10 -0
- package/dist/stack-parts.d.ts +39 -0
- package/dist/stack-parts.js +35 -0
- package/dist/stack.d.ts +10 -0
- package/dist/stack.js +10 -0
- package/dist/stat.d.ts +14 -0
- package/dist/stat.js +29 -0
- package/dist/step-button.d.ts +10 -0
- package/dist/step-button.js +14 -0
- package/dist/stepper-parts.d.ts +10 -0
- package/dist/stepper-parts.js +33 -0
- package/dist/stepper.d.ts +11 -0
- package/dist/stepper.js +11 -0
- package/dist/styles.css +2 -0
- package/dist/switch-parts.d.ts +7 -0
- package/dist/switch-parts.js +19 -0
- package/dist/switch.d.ts +8 -0
- package/dist/switch.js +8 -0
- package/dist/table.d.ts +20 -0
- package/dist/table.js +48 -0
- package/dist/tabs-parts.d.ts +9 -0
- package/dist/tabs-parts.js +25 -0
- package/dist/tabs.d.ts +10 -0
- package/dist/tabs.js +10 -0
- package/dist/tag-input-parts.d.ts +15 -0
- package/dist/tag-input-parts.js +24 -0
- package/dist/tag-input.d.ts +10 -0
- package/dist/tag-input.js +10 -0
- package/dist/text-morph.d.ts +6 -0
- package/dist/text-morph.js +14 -0
- package/dist/text-shimmer.d.ts +9 -0
- package/dist/text-shimmer.js +12 -0
- package/dist/text.d.ts +38 -0
- package/dist/text.js +32 -0
- package/dist/textarea.d.ts +5 -0
- package/dist/textarea.js +12 -0
- package/dist/time-range-parts.d.ts +10 -0
- package/dist/time-range-parts.js +22 -0
- package/dist/time-range.d.ts +10 -0
- package/dist/time-range.js +10 -0
- package/dist/toast-parts.d.ts +11 -0
- package/dist/toast-parts.js +39 -0
- package/dist/toast.d.ts +13 -0
- package/dist/toast.js +12 -0
- package/dist/toggle-group-parts.d.ts +7 -0
- package/dist/toggle-group-parts.js +17 -0
- package/dist/toggle-group.d.ts +8 -0
- package/dist/toggle-group.js +8 -0
- package/dist/tokens.css +64 -0
- package/dist/tooltip-parts.d.ts +9 -0
- package/dist/tooltip-parts.js +21 -0
- package/dist/tooltip.d.ts +10 -0
- package/dist/tooltip.js +10 -0
- package/dist/touch-target.d.ts +7 -0
- package/dist/touch-target.js +10 -0
- package/package.json +71 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ComponentPropsWithRef } from "react";
|
|
2
|
+
//#region src/pagination.d.ts
|
|
3
|
+
declare const Root: ({ className, ...props }: ComponentPropsWithRef<'nav'>) => import("react").JSX.Element;
|
|
4
|
+
declare const List: ({ className, ...props }: ComponentPropsWithRef<'div'>) => import("react").JSX.Element;
|
|
5
|
+
declare const Previous: ({ className, children, ...props }: ComponentPropsWithRef<'a'>) => import("react").JSX.Element;
|
|
6
|
+
declare const Next: ({ className, children, ...props }: ComponentPropsWithRef<'a'>) => import("react").JSX.Element;
|
|
7
|
+
declare const Page: ({ className, children, ...props }: ComponentPropsWithRef<'a'>) => import("react").JSX.Element;
|
|
8
|
+
declare const Gap: ({ className, ...props }: ComponentPropsWithRef<'span'>) => import("react").JSX.Element;
|
|
9
|
+
declare const Pagination: {
|
|
10
|
+
Root: typeof Root;
|
|
11
|
+
Previous: typeof Previous;
|
|
12
|
+
List: typeof List;
|
|
13
|
+
Page: typeof Page;
|
|
14
|
+
Gap: typeof Gap;
|
|
15
|
+
Next: typeof Next;
|
|
16
|
+
};
|
|
17
|
+
//#endregion
|
|
18
|
+
export { Pagination };
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { cn } from "./lib/cn.js";
|
|
2
|
+
import { interactive } from "./lib/interactive.js";
|
|
3
|
+
import { selectedWhenCurrent } from "./lib/text-styles.js";
|
|
4
|
+
import { TouchTarget } from "./touch-target.js";
|
|
5
|
+
import { ChevronLeft, ChevronRight } from "lucide-react";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
import { Pagination as Pagination$1 } from "@journ/nude/pagination";
|
|
8
|
+
//#region src/pagination.tsx
|
|
9
|
+
const control = cn(interactive, "inline-flex min-w-10 items-center justify-center gap-1.5 px-3 py-1.5 text-sm/6 font-medium tabular-nums");
|
|
10
|
+
const Root = ({ className, ...props }) => /* @__PURE__ */ jsx(Pagination$1.Root, {
|
|
11
|
+
"aria-label": "Pagination",
|
|
12
|
+
...props,
|
|
13
|
+
className: cn("flex items-center justify-between gap-3", className)
|
|
14
|
+
});
|
|
15
|
+
const List = ({ className, ...props }) => /* @__PURE__ */ jsx(Pagination$1.List, {
|
|
16
|
+
...props,
|
|
17
|
+
className: cn("flex items-center gap-1", className)
|
|
18
|
+
});
|
|
19
|
+
const Previous = ({ className, children = "Previous", ...props }) => /* @__PURE__ */ jsx(Pagination$1.Previous, {
|
|
20
|
+
...props,
|
|
21
|
+
className: cn(control, className),
|
|
22
|
+
children: /* @__PURE__ */ jsxs(TouchTarget, { children: [/* @__PURE__ */ jsx(ChevronLeft, { className: "size-4" }), children] })
|
|
23
|
+
});
|
|
24
|
+
const Next = ({ className, children = "Next", ...props }) => /* @__PURE__ */ jsx(Pagination$1.Next, {
|
|
25
|
+
...props,
|
|
26
|
+
className: cn(control, className),
|
|
27
|
+
children: /* @__PURE__ */ jsxs(TouchTarget, { children: [children, /* @__PURE__ */ jsx(ChevronRight, { className: "size-4" })] })
|
|
28
|
+
});
|
|
29
|
+
const Page = ({ className, children, ...props }) => /* @__PURE__ */ jsx(Pagination$1.Page, {
|
|
30
|
+
...props,
|
|
31
|
+
className: cn(control, selectedWhenCurrent, className),
|
|
32
|
+
children: /* @__PURE__ */ jsx(TouchTarget, { children })
|
|
33
|
+
});
|
|
34
|
+
const Gap = ({ className, ...props }) => /* @__PURE__ */ jsx(Pagination$1.Gap, {
|
|
35
|
+
"aria-hidden": true,
|
|
36
|
+
...props,
|
|
37
|
+
className: cn("px-2 opacity-60", className),
|
|
38
|
+
children: "…"
|
|
39
|
+
});
|
|
40
|
+
const Pagination = {
|
|
41
|
+
Root,
|
|
42
|
+
Previous,
|
|
43
|
+
List,
|
|
44
|
+
Page,
|
|
45
|
+
Gap,
|
|
46
|
+
Next
|
|
47
|
+
};
|
|
48
|
+
//#endregion
|
|
49
|
+
export { Pagination };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { cn } from "./lib/cn.js";
|
|
2
|
+
import { control, controlText } from "./lib/theme.js";
|
|
3
|
+
import { ChevronDown } from "lucide-react";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import { PillSelect as PillSelect$1 } from "@journ/nude/pill-select";
|
|
6
|
+
//#region src/pill-select.tsx
|
|
7
|
+
const PillSelect = ({ className, children, ...props }) => /* @__PURE__ */ jsxs("span", {
|
|
8
|
+
"data-slot": "pill-select",
|
|
9
|
+
className: "relative inline-block",
|
|
10
|
+
children: [/* @__PURE__ */ jsx(PillSelect$1, {
|
|
11
|
+
"data-slot": "pill-select-control",
|
|
12
|
+
...props,
|
|
13
|
+
className: cn(control, "appearance-none rounded-bloom py-2.5 pr-9 pl-3 text-base/6 outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-bloom-sky disabled:opacity-50 sm:py-1.5 sm:text-sm/6", className),
|
|
14
|
+
children
|
|
15
|
+
}), /* @__PURE__ */ jsx(ChevronDown, {
|
|
16
|
+
"aria-hidden": true,
|
|
17
|
+
className: cn(controlText, "pointer-events-none absolute top-1/2 right-3 size-4 -translate-y-1/2")
|
|
18
|
+
})]
|
|
19
|
+
});
|
|
20
|
+
//#endregion
|
|
21
|
+
export { PillSelect };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ComponentPropsWithRef } from "react";
|
|
2
|
+
import * as Nude from "@journ/nude/popover-parts";
|
|
3
|
+
//#region src/popover-parts.d.ts
|
|
4
|
+
declare const Root: any;
|
|
5
|
+
declare const Trigger: any;
|
|
6
|
+
declare const Close: any;
|
|
7
|
+
declare const Content: ({ className, ...props }: ComponentPropsWithRef<typeof Nude.Content>) => import("react").JSX.Element;
|
|
8
|
+
//#endregion
|
|
9
|
+
export { Close, Content, Root, Trigger };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "./lib/cn.js";
|
|
3
|
+
import { usePopEnter } from "./lib/use-enter.js";
|
|
4
|
+
import { floatingCard } from "./lib/overlay.js";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
import * as Nude from "@journ/nude/popover-parts";
|
|
7
|
+
//#region src/popover-parts.tsx
|
|
8
|
+
const Root = Nude.Root;
|
|
9
|
+
const Trigger = Nude.Trigger;
|
|
10
|
+
const Close = Nude.Close;
|
|
11
|
+
const Content = ({ className, ...props }) => {
|
|
12
|
+
const panel = usePopEnter();
|
|
13
|
+
return /* @__PURE__ */ jsx(Nude.Content, {
|
|
14
|
+
ref: panel,
|
|
15
|
+
sideOffset: 8,
|
|
16
|
+
...props,
|
|
17
|
+
className: cn(floatingCard, className)
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
//#endregion
|
|
21
|
+
export { Close, Content, Root, Trigger };
|
package/dist/popover.js
ADDED
package/dist/portal.d.ts
ADDED
package/dist/portal.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { VariantProps } from "./lib/tv.js";
|
|
2
|
+
import { ComponentPropsWithRef } from "react";
|
|
3
|
+
import * as Nude from "@journ/nude/progress-parts";
|
|
4
|
+
//#region src/progress-parts.d.ts
|
|
5
|
+
type RootProps = Nude.ProgressProps;
|
|
6
|
+
declare const Root: ({ className, ...props }: RootProps) => import("react").JSX.Element;
|
|
7
|
+
declare const indicator: import("tailwind-variants").TVReturnType<{
|
|
8
|
+
tone: {
|
|
9
|
+
readonly neutral: "bg-bloom-foreground dark:bg-bloom-foreground-dark";
|
|
10
|
+
readonly coral: 'bg-bloom-coral';
|
|
11
|
+
readonly yellow: 'bg-bloom-yellow';
|
|
12
|
+
readonly indigo: 'bg-bloom-indigo';
|
|
13
|
+
readonly mint: 'bg-bloom-mint';
|
|
14
|
+
readonly sky: 'bg-bloom-sky';
|
|
15
|
+
};
|
|
16
|
+
}, undefined, "size-full transition-transform duration-300 ease-out", {
|
|
17
|
+
tone: {
|
|
18
|
+
readonly neutral: "bg-bloom-foreground dark:bg-bloom-foreground-dark";
|
|
19
|
+
readonly coral: 'bg-bloom-coral';
|
|
20
|
+
readonly yellow: 'bg-bloom-yellow';
|
|
21
|
+
readonly indigo: 'bg-bloom-indigo';
|
|
22
|
+
readonly mint: 'bg-bloom-mint';
|
|
23
|
+
readonly sky: 'bg-bloom-sky';
|
|
24
|
+
};
|
|
25
|
+
}, undefined, import("tailwind-variants").TVReturnTypeLike<{
|
|
26
|
+
tone: {
|
|
27
|
+
readonly neutral: "bg-bloom-foreground dark:bg-bloom-foreground-dark";
|
|
28
|
+
readonly coral: 'bg-bloom-coral';
|
|
29
|
+
readonly yellow: 'bg-bloom-yellow';
|
|
30
|
+
readonly indigo: 'bg-bloom-indigo';
|
|
31
|
+
readonly mint: 'bg-bloom-mint';
|
|
32
|
+
readonly sky: 'bg-bloom-sky';
|
|
33
|
+
};
|
|
34
|
+
}, undefined>>;
|
|
35
|
+
type IndicatorProps = ComponentPropsWithRef<typeof Nude.Indicator> & VariantProps<typeof indicator>;
|
|
36
|
+
declare const Indicator: ({ tone, className, ...props }: IndicatorProps) => import("react").JSX.Element;
|
|
37
|
+
//#endregion
|
|
38
|
+
export { Indicator, type RootProps as ProgressProps, Root };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { tv } from "./lib/tv.js";
|
|
3
|
+
import { cn } from "./lib/cn.js";
|
|
4
|
+
import { fills } from "./lib/tones.js";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
import * as Nude from "@journ/nude/progress-parts";
|
|
7
|
+
//#region src/progress-parts.tsx
|
|
8
|
+
const Root = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Root, {
|
|
9
|
+
...props,
|
|
10
|
+
className: cn("relative h-4 w-full overflow-hidden bg-current/10", className)
|
|
11
|
+
});
|
|
12
|
+
const indicator = tv({
|
|
13
|
+
base: "size-full transition-transform duration-300 ease-out",
|
|
14
|
+
variants: { tone: fills },
|
|
15
|
+
defaultVariants: { tone: "neutral" }
|
|
16
|
+
});
|
|
17
|
+
const Indicator = ({ tone, className, ...props }) => /* @__PURE__ */ jsx(Nude.Indicator, {
|
|
18
|
+
...props,
|
|
19
|
+
className: indicator({
|
|
20
|
+
tone,
|
|
21
|
+
class: className
|
|
22
|
+
})
|
|
23
|
+
});
|
|
24
|
+
//#endregion
|
|
25
|
+
export { Indicator, Root };
|
package/dist/progress.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IconButtonProps } from "./icon-button.js";
|
|
2
|
+
import { ComponentPropsWithRef } from "react";
|
|
3
|
+
import * as Nude from "@journ/nude/quantity-input-parts";
|
|
4
|
+
//#region src/quantity-input-parts.d.ts
|
|
5
|
+
type RootProps = Nude.RootProps;
|
|
6
|
+
declare const Root: ({ className, ...props }: RootProps) => import("react").JSX.Element;
|
|
7
|
+
declare const Decrement: ({ tone, size, className, children, ...props }: IconButtonProps) => import("react").JSX.Element;
|
|
8
|
+
declare const Increment: ({ tone, size, className, children, ...props }: IconButtonProps) => import("react").JSX.Element;
|
|
9
|
+
declare const Field: ({ className, ...props }: ComponentPropsWithRef<typeof Nude.Field>) => import("react").JSX.Element;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { Decrement, Field, Increment, Root, type RootProps };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "./lib/cn.js";
|
|
3
|
+
import { stepButton } from "./step-button.js";
|
|
4
|
+
import { composerInput, composerRoot } from "./composer.js";
|
|
5
|
+
import { Minus, Plus } from "lucide-react";
|
|
6
|
+
import { jsx } from "react/jsx-runtime";
|
|
7
|
+
import * as Nude from "@journ/nude/quantity-input-parts";
|
|
8
|
+
//#region src/quantity-input-parts.tsx
|
|
9
|
+
const Root = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Root, {
|
|
10
|
+
...props,
|
|
11
|
+
className: composerRoot(className)
|
|
12
|
+
});
|
|
13
|
+
const Decrement = ({ tone, size, className, children, ...props }) => /* @__PURE__ */ jsx(Nude.Decrement, {
|
|
14
|
+
...props,
|
|
15
|
+
...stepButton(Minus, {
|
|
16
|
+
tone,
|
|
17
|
+
size,
|
|
18
|
+
className,
|
|
19
|
+
children
|
|
20
|
+
})
|
|
21
|
+
});
|
|
22
|
+
const Increment = ({ tone, size, className, children, ...props }) => /* @__PURE__ */ jsx(Nude.Increment, {
|
|
23
|
+
...props,
|
|
24
|
+
...stepButton(Plus, {
|
|
25
|
+
tone,
|
|
26
|
+
size,
|
|
27
|
+
className,
|
|
28
|
+
children
|
|
29
|
+
})
|
|
30
|
+
});
|
|
31
|
+
const Field = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Field, {
|
|
32
|
+
...props,
|
|
33
|
+
className: composerInput(cn("text-center font-mono tabular-nums", className))
|
|
34
|
+
});
|
|
35
|
+
//#endregion
|
|
36
|
+
export { Decrement, Field, Increment, Root };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Decrement, Field, Increment, Root, RootProps } from "./quantity-input-parts.js";
|
|
2
|
+
//#region src/quantity-input.d.ts
|
|
3
|
+
declare const QuantityInput: {
|
|
4
|
+
Root: typeof Root;
|
|
5
|
+
Decrement: typeof Decrement;
|
|
6
|
+
Field: typeof Field;
|
|
7
|
+
Increment: typeof Increment;
|
|
8
|
+
};
|
|
9
|
+
//#endregion
|
|
10
|
+
export { QuantityInput, type RootProps as QuantityInputProps };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ComponentPropsWithRef } from "react";
|
|
2
|
+
import * as Nude from "@journ/nude/radio-parts";
|
|
3
|
+
//#region src/radio-parts.d.ts
|
|
4
|
+
declare const Group: ({ className, ...props }: ComponentPropsWithRef<typeof Nude.Group>) => import("react").JSX.Element;
|
|
5
|
+
declare const Item: ({ className, ...props }: Omit<ComponentPropsWithRef<typeof Nude.Item>, 'classNames' | 'children'>) => import("react").JSX.Element;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { Group, Item };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "./lib/cn.js";
|
|
3
|
+
import { pressReset } from "./lib/interactive.js";
|
|
4
|
+
import { TouchTarget } from "./touch-target.js";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
import * as Nude from "@journ/nude/radio-parts";
|
|
7
|
+
//#region src/radio-parts.tsx
|
|
8
|
+
const Group = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Group, {
|
|
9
|
+
...props,
|
|
10
|
+
className: cn("flex flex-col gap-3", className)
|
|
11
|
+
});
|
|
12
|
+
const Item = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Item, {
|
|
13
|
+
...props,
|
|
14
|
+
classNames: { indicator: "bg-current block size-2 rounded-full" },
|
|
15
|
+
className: cn(pressReset, "relative grid size-4 shrink-0 cursor-default place-items-center rounded-full border border-current outline-none transition-colors", "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-bloom-sky", "disabled:pointer-events-none disabled:opacity-50", className),
|
|
16
|
+
children: /* @__PURE__ */ jsx(TouchTarget, {})
|
|
17
|
+
});
|
|
18
|
+
//#endregion
|
|
19
|
+
export { Group, Item };
|
package/dist/radio.d.ts
ADDED
package/dist/radio.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ComponentPropsWithRef } from "react";
|
|
2
|
+
import * as Nude from "@journ/nude/scroll-area-parts";
|
|
3
|
+
//#region src/scroll-area-parts.d.ts
|
|
4
|
+
declare const Root: ({ className, ...props }: ComponentPropsWithRef<typeof Nude.Root>) => import("react").JSX.Element;
|
|
5
|
+
declare const Viewport: ({ className, ...props }: ComponentPropsWithRef<typeof Nude.Viewport>) => import("react").JSX.Element;
|
|
6
|
+
declare const Scrollbar: ({ className, ...props }: Omit<ComponentPropsWithRef<typeof Nude.Scrollbar>, 'classNames' | 'children'>) => import("react").JSX.Element;
|
|
7
|
+
declare const Corner: any;
|
|
8
|
+
//#endregion
|
|
9
|
+
export { Corner, Root, Scrollbar, Viewport };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "./lib/cn.js";
|
|
3
|
+
import { TouchTarget } from "./touch-target.js";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
import * as Nude from "@journ/nude/scroll-area-parts";
|
|
6
|
+
//#region src/scroll-area-parts.tsx
|
|
7
|
+
const Root = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Root, {
|
|
8
|
+
...props,
|
|
9
|
+
className: cn("relative overflow-hidden", className)
|
|
10
|
+
});
|
|
11
|
+
const Viewport = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Viewport, {
|
|
12
|
+
...props,
|
|
13
|
+
className: cn("size-full rounded-[inherit] outline-none focus-visible:outline-2 focus-visible:outline-bloom-sky", className)
|
|
14
|
+
});
|
|
15
|
+
const Scrollbar = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Scrollbar, {
|
|
16
|
+
...props,
|
|
17
|
+
classNames: { thumb: "relative flex-1 bg-current/20 transition-colors hover:bg-current/40" },
|
|
18
|
+
className: cn("flex touch-none p-0.5 transition-opacity select-none data-[state=hidden]:opacity-0 data-[state=visible]:opacity-100", "data-[orientation=horizontal]:h-2.5 data-[orientation=horizontal]:flex-col data-[orientation=vertical]:w-2.5", className),
|
|
19
|
+
children: /* @__PURE__ */ jsx(TouchTarget, {})
|
|
20
|
+
});
|
|
21
|
+
const Corner = Nude.Corner;
|
|
22
|
+
//#endregion
|
|
23
|
+
export { Corner, Root, Scrollbar, Viewport };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Root, Scrollbar, Viewport } from "./scroll-area-parts.js";
|
|
2
|
+
//#region src/scroll-area.d.ts
|
|
3
|
+
declare const ScrollArea: {
|
|
4
|
+
Root: typeof Root;
|
|
5
|
+
Viewport: typeof Viewport;
|
|
6
|
+
Scrollbar: typeof Scrollbar;
|
|
7
|
+
Corner: any;
|
|
8
|
+
};
|
|
9
|
+
//#endregion
|
|
10
|
+
export { ScrollArea };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ComponentPropsWithRef } from "react";
|
|
2
|
+
import * as Nude from "@journ/nude/select-parts";
|
|
3
|
+
//#region src/select-parts.d.ts
|
|
4
|
+
declare const Root: any;
|
|
5
|
+
declare const Group: any;
|
|
6
|
+
declare const Value: any;
|
|
7
|
+
declare const Trigger: ({ className, ...props }: Omit<ComponentPropsWithRef<typeof Nude.Trigger>, 'icon'>) => import("react").JSX.Element;
|
|
8
|
+
declare const Content: ({ className, ...props }: Omit<ComponentPropsWithRef<typeof Nude.Content>, 'classNames'>) => import("react").JSX.Element;
|
|
9
|
+
declare const Item: ({ className, ...props }: Omit<ComponentPropsWithRef<typeof Nude.Item>, 'indicator'>) => import("react").JSX.Element;
|
|
10
|
+
declare const Label: ({ className, ...props }: ComponentPropsWithRef<typeof Nude.Label>) => import("react").JSX.Element;
|
|
11
|
+
declare const Separator: ({ className, ...props }: ComponentPropsWithRef<typeof Nude.Separator>) => import("react").JSX.Element;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { Content, Group, Item, Label, Root, Separator, Trigger, Value };
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "./lib/cn.js";
|
|
3
|
+
import { pressReset } from "./lib/interactive.js";
|
|
4
|
+
import { usePopEnter } from "./lib/use-enter.js";
|
|
5
|
+
import { control } from "./lib/theme.js";
|
|
6
|
+
import { floatingItem, floatingLabel, floatingSeparator, floatingSurface } from "./lib/overlay.js";
|
|
7
|
+
import { Check, ChevronDown } from "lucide-react";
|
|
8
|
+
import { jsx } from "react/jsx-runtime";
|
|
9
|
+
import * as Nude from "@journ/nude/select-parts";
|
|
10
|
+
//#region src/select-parts.tsx
|
|
11
|
+
const Root = Nude.Root;
|
|
12
|
+
const Group = Nude.Group;
|
|
13
|
+
const Value = Nude.Value;
|
|
14
|
+
const Trigger = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Trigger, {
|
|
15
|
+
...props,
|
|
16
|
+
icon: /* @__PURE__ */ jsx(ChevronDown, {
|
|
17
|
+
"aria-hidden": true,
|
|
18
|
+
className: "size-4"
|
|
19
|
+
}),
|
|
20
|
+
className: cn(pressReset, control, "inline-flex items-center justify-between gap-3 rounded-bloom py-2.5 pr-3 pl-3 text-base/6 outline-none sm:py-1.5 sm:text-sm/6", "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-bloom-sky data-disabled:opacity-50 data-placeholder:opacity-60", className)
|
|
21
|
+
});
|
|
22
|
+
const Content = ({ className, ...props }) => {
|
|
23
|
+
const panel = usePopEnter();
|
|
24
|
+
return /* @__PURE__ */ jsx(Nude.Content, {
|
|
25
|
+
ref: panel,
|
|
26
|
+
sideOffset: 6,
|
|
27
|
+
...props,
|
|
28
|
+
classNames: { viewport: "scrollbar-bloom max-h-(--radix-select-content-available-height)" },
|
|
29
|
+
className: cn(floatingSurface, "min-w-(--radix-select-trigger-width)", className)
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
const Item = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Item, {
|
|
33
|
+
...props,
|
|
34
|
+
indicator: /* @__PURE__ */ jsx(Check, {}),
|
|
35
|
+
className: cn(floatingItem, "justify-between", className)
|
|
36
|
+
});
|
|
37
|
+
const Label = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Label, {
|
|
38
|
+
...props,
|
|
39
|
+
className: cn(floatingLabel, className)
|
|
40
|
+
});
|
|
41
|
+
const Separator = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Separator, {
|
|
42
|
+
...props,
|
|
43
|
+
className: cn(floatingSeparator, className)
|
|
44
|
+
});
|
|
45
|
+
//#endregion
|
|
46
|
+
export { Content, Group, Item, Label, Root, Separator, Trigger, Value };
|
package/dist/select.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Content, Item, Label, Separator, Trigger } from "./select-parts.js";
|
|
2
|
+
//#region src/select.d.ts
|
|
3
|
+
declare const Select: {
|
|
4
|
+
Root: any;
|
|
5
|
+
Trigger: typeof Trigger;
|
|
6
|
+
Value: any;
|
|
7
|
+
Content: typeof Content;
|
|
8
|
+
Group: any;
|
|
9
|
+
Label: typeof Label;
|
|
10
|
+
Item: typeof Item;
|
|
11
|
+
Separator: typeof Separator;
|
|
12
|
+
};
|
|
13
|
+
//#endregion
|
|
14
|
+
export { Select };
|
package/dist/select.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Content, Group, Item, Label, Root, Separator, Trigger, Value } from "./select-parts.js";
|
|
2
|
+
//#region src/select.tsx
|
|
3
|
+
const Select = {
|
|
4
|
+
Root,
|
|
5
|
+
Trigger,
|
|
6
|
+
Value,
|
|
7
|
+
Content,
|
|
8
|
+
Group,
|
|
9
|
+
Label,
|
|
10
|
+
Item,
|
|
11
|
+
Separator
|
|
12
|
+
};
|
|
13
|
+
//#endregion
|
|
14
|
+
export { Select };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Actions, Body } from "./lib/modal-parts.js";
|
|
2
|
+
import { VariantProps } from "./lib/tv.js";
|
|
3
|
+
import { Close, Description, Root, Title, Trigger } from "./dialog-parts.js";
|
|
4
|
+
import { ComponentPropsWithRef } from "react";
|
|
5
|
+
import * as Nude from "@journ/nude/sheet-parts";
|
|
6
|
+
//#region src/sheet-parts.d.ts
|
|
7
|
+
type Side = Nude.SheetSide;
|
|
8
|
+
declare const sheetContent: import("tailwind-variants").TVReturnType<{
|
|
9
|
+
side: {
|
|
10
|
+
right: "inset-y-0 right-0 w-full max-w-lg md:inset-y-4 md:right-4";
|
|
11
|
+
left: "inset-y-0 left-0 w-full max-w-lg md:inset-y-4 md:left-4";
|
|
12
|
+
top: "inset-x-0 top-0 max-h-[85dvh] md:inset-x-4 md:top-4";
|
|
13
|
+
bottom: "inset-x-0 bottom-0 max-h-[85dvh] md:inset-x-4 md:bottom-4";
|
|
14
|
+
};
|
|
15
|
+
}, undefined, string[], {
|
|
16
|
+
side: {
|
|
17
|
+
right: "inset-y-0 right-0 w-full max-w-lg md:inset-y-4 md:right-4";
|
|
18
|
+
left: "inset-y-0 left-0 w-full max-w-lg md:inset-y-4 md:left-4";
|
|
19
|
+
top: "inset-x-0 top-0 max-h-[85dvh] md:inset-x-4 md:top-4";
|
|
20
|
+
bottom: "inset-x-0 bottom-0 max-h-[85dvh] md:inset-x-4 md:bottom-4";
|
|
21
|
+
};
|
|
22
|
+
}, undefined, import("tailwind-variants").TVReturnTypeLike<{
|
|
23
|
+
side: {
|
|
24
|
+
right: "inset-y-0 right-0 w-full max-w-lg md:inset-y-4 md:right-4";
|
|
25
|
+
left: "inset-y-0 left-0 w-full max-w-lg md:inset-y-4 md:left-4";
|
|
26
|
+
top: "inset-x-0 top-0 max-h-[85dvh] md:inset-x-4 md:top-4";
|
|
27
|
+
bottom: "inset-x-0 bottom-0 max-h-[85dvh] md:inset-x-4 md:bottom-4";
|
|
28
|
+
};
|
|
29
|
+
}, undefined>>;
|
|
30
|
+
type ContentProps = Omit<ComponentPropsWithRef<typeof Nude.Content>, 'classNames' | 'overlayRef' | 'side'> & VariantProps<typeof sheetContent>;
|
|
31
|
+
declare const Content: ({ side, className, ...props }: ContentProps) => import("react").JSX.Element;
|
|
32
|
+
//#endregion
|
|
33
|
+
export { Actions, Body, Close, Content, Description, Root, type ContentProps as SheetContentProps, type Side as SheetSide, Title, Trigger };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { tv } from "./lib/tv.js";
|
|
3
|
+
import { Actions, Body } from "./lib/modal-parts.js";
|
|
4
|
+
import { surface } from "./lib/theme.js";
|
|
5
|
+
import { ModalContent } from "./lib/modal-content.js";
|
|
6
|
+
import { Close, Description, Root, Title, Trigger } from "./dialog-parts.js";
|
|
7
|
+
import { jsx } from "react/jsx-runtime";
|
|
8
|
+
import * as Nude from "@journ/nude/sheet-parts";
|
|
9
|
+
//#region src/sheet-parts.tsx
|
|
10
|
+
const sheetContent = tv({
|
|
11
|
+
base: [surface, "rounded-bloom fixed flex flex-col gap-4 p-6 outline-none"],
|
|
12
|
+
variants: { side: {
|
|
13
|
+
right: "inset-y-0 right-0 w-full max-w-lg md:inset-y-4 md:right-4",
|
|
14
|
+
left: "inset-y-0 left-0 w-full max-w-lg md:inset-y-4 md:left-4",
|
|
15
|
+
top: "inset-x-0 top-0 max-h-[85dvh] md:inset-x-4 md:top-4",
|
|
16
|
+
bottom: "inset-x-0 bottom-0 max-h-[85dvh] md:inset-x-4 md:bottom-4"
|
|
17
|
+
} },
|
|
18
|
+
defaultVariants: { side: "right" }
|
|
19
|
+
});
|
|
20
|
+
const slideFrom = {
|
|
21
|
+
right: { translateX: ["100%", "0%"] },
|
|
22
|
+
left: { translateX: ["-100%", "0%"] },
|
|
23
|
+
top: { translateY: ["-100%", "0%"] },
|
|
24
|
+
bottom: { translateY: ["100%", "0%"] }
|
|
25
|
+
};
|
|
26
|
+
const Content = ({ side = "right", className, ...props }) => /* @__PURE__ */ jsx(ModalContent, {
|
|
27
|
+
content: Nude.Content,
|
|
28
|
+
enter: {
|
|
29
|
+
...slideFrom[side ?? "right"],
|
|
30
|
+
duration: 300,
|
|
31
|
+
ease: "outExpo"
|
|
32
|
+
},
|
|
33
|
+
side: side ?? "right",
|
|
34
|
+
...props,
|
|
35
|
+
className: sheetContent({
|
|
36
|
+
side,
|
|
37
|
+
class: className
|
|
38
|
+
})
|
|
39
|
+
});
|
|
40
|
+
//#endregion
|
|
41
|
+
export { Actions, Body, Close, Content, Description, Root, Title, Trigger };
|
package/dist/sheet.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Actions, Body } from "./lib/modal-parts.js";
|
|
2
|
+
import { Description, Title } from "./dialog-parts.js";
|
|
3
|
+
import { Content, SheetContentProps as ContentProps, SheetSide as Side } from "./sheet-parts.js";
|
|
4
|
+
//#region src/sheet.d.ts
|
|
5
|
+
declare const Sheet: {
|
|
6
|
+
Root: any;
|
|
7
|
+
Trigger: any;
|
|
8
|
+
Close: any;
|
|
9
|
+
Content: typeof Content;
|
|
10
|
+
Title: typeof Title;
|
|
11
|
+
Description: typeof Description;
|
|
12
|
+
Body: typeof Body;
|
|
13
|
+
Actions: typeof Actions;
|
|
14
|
+
};
|
|
15
|
+
//#endregion
|
|
16
|
+
export { Sheet, type ContentProps as SheetContentProps, type Side as SheetSide };
|
package/dist/sheet.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Actions, Body } from "./lib/modal-parts.js";
|
|
2
|
+
import { Close, Description, Root, Title, Trigger } from "./dialog-parts.js";
|
|
3
|
+
import { Content } from "./sheet-parts.js";
|
|
4
|
+
//#region src/sheet.tsx
|
|
5
|
+
const Sheet = {
|
|
6
|
+
Root,
|
|
7
|
+
Trigger,
|
|
8
|
+
Close,
|
|
9
|
+
Content,
|
|
10
|
+
Title,
|
|
11
|
+
Description,
|
|
12
|
+
Body,
|
|
13
|
+
Actions
|
|
14
|
+
};
|
|
15
|
+
//#endregion
|
|
16
|
+
export { Sheet };
|