@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
package/dist/table.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ComponentPropsWithRef } from "react";
|
|
2
|
+
//#region src/table.d.ts
|
|
3
|
+
declare const Root: ({ className, ...props }: ComponentPropsWithRef<'table'>) => import("react").JSX.Element;
|
|
4
|
+
declare const Caption: ({ className, ...props }: ComponentPropsWithRef<'caption'>) => import("react").JSX.Element;
|
|
5
|
+
declare const Head: ({ className, ...props }: ComponentPropsWithRef<'thead'>) => import("react").JSX.Element;
|
|
6
|
+
declare const Body: ({ className, ...props }: ComponentPropsWithRef<'tbody'>) => import("react").JSX.Element;
|
|
7
|
+
declare const Row: ({ className, ...props }: ComponentPropsWithRef<'tr'>) => import("react").JSX.Element;
|
|
8
|
+
declare const Header: ({ className, ...props }: ComponentPropsWithRef<'th'>) => import("react").JSX.Element;
|
|
9
|
+
declare const Cell: ({ className, ...props }: ComponentPropsWithRef<'td'>) => import("react").JSX.Element;
|
|
10
|
+
declare const Table: {
|
|
11
|
+
Root: typeof Root;
|
|
12
|
+
Caption: typeof Caption;
|
|
13
|
+
Head: typeof Head;
|
|
14
|
+
Body: typeof Body;
|
|
15
|
+
Row: typeof Row;
|
|
16
|
+
Header: typeof Header;
|
|
17
|
+
Cell: typeof Cell;
|
|
18
|
+
};
|
|
19
|
+
//#endregion
|
|
20
|
+
export { Table };
|
package/dist/table.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { cn } from "./lib/cn.js";
|
|
2
|
+
import { mutedText } from "./lib/text-styles.js";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
import { Table as Table$1 } from "@journ/nude/table";
|
|
5
|
+
//#region src/table.tsx
|
|
6
|
+
const Root = ({ className, ...props }) => /* @__PURE__ */ jsx("div", {
|
|
7
|
+
"data-slot": "table-container",
|
|
8
|
+
className: "scrollbar-bloom w-full overflow-x-auto",
|
|
9
|
+
children: /* @__PURE__ */ jsx(Table$1.Root, {
|
|
10
|
+
...props,
|
|
11
|
+
className: cn("w-full caption-bottom border-collapse text-left text-sm/6", className)
|
|
12
|
+
})
|
|
13
|
+
});
|
|
14
|
+
const Caption = ({ className, ...props }) => /* @__PURE__ */ jsx(Table$1.Caption, {
|
|
15
|
+
...props,
|
|
16
|
+
className: cn("mt-4 text-left", mutedText, className)
|
|
17
|
+
});
|
|
18
|
+
const Head = ({ className, ...props }) => /* @__PURE__ */ jsx(Table$1.Head, {
|
|
19
|
+
...props,
|
|
20
|
+
className: cn("border border-current/10", className)
|
|
21
|
+
});
|
|
22
|
+
const Body = ({ className, ...props }) => /* @__PURE__ */ jsx(Table$1.Body, {
|
|
23
|
+
...props,
|
|
24
|
+
className: cn("border border-current/10 [&>tr:last-child]:border-b-0", className)
|
|
25
|
+
});
|
|
26
|
+
const Row = ({ className, ...props }) => /* @__PURE__ */ jsx(Table$1.Row, {
|
|
27
|
+
...props,
|
|
28
|
+
className: cn("border-b border-current/10 hover:bg-current/5", className)
|
|
29
|
+
});
|
|
30
|
+
const Header = ({ className, ...props }) => /* @__PURE__ */ jsx(Table$1.Header, {
|
|
31
|
+
...props,
|
|
32
|
+
className: cn("h-12 border-r border-b border-current/10 px-4 font-medium text-current/60 last:border-r-0", className)
|
|
33
|
+
});
|
|
34
|
+
const Cell = ({ className, ...props }) => /* @__PURE__ */ jsx(Table$1.Cell, {
|
|
35
|
+
...props,
|
|
36
|
+
className: cn("border-r border-current/10 px-4 py-2 tabular-nums last:border-r-0", className)
|
|
37
|
+
});
|
|
38
|
+
const Table = {
|
|
39
|
+
Root,
|
|
40
|
+
Caption,
|
|
41
|
+
Head,
|
|
42
|
+
Body,
|
|
43
|
+
Row,
|
|
44
|
+
Header,
|
|
45
|
+
Cell
|
|
46
|
+
};
|
|
47
|
+
//#endregion
|
|
48
|
+
export { Table };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ComponentPropsWithRef } from "react";
|
|
2
|
+
import * as Nude from "@journ/nude/tabs-parts";
|
|
3
|
+
//#region src/tabs-parts.d.ts
|
|
4
|
+
declare const Root: ({ className, ...props }: ComponentPropsWithRef<typeof Nude.Root>) => import("react").JSX.Element;
|
|
5
|
+
declare const List: ({ className, ...props }: ComponentPropsWithRef<typeof Nude.List>) => import("react").JSX.Element;
|
|
6
|
+
declare const Trigger: ({ className, ...props }: ComponentPropsWithRef<typeof Nude.Trigger>) => import("react").JSX.Element;
|
|
7
|
+
declare const Content: ({ className, ...props }: ComponentPropsWithRef<typeof Nude.Content>) => import("react").JSX.Element;
|
|
8
|
+
//#endregion
|
|
9
|
+
export { Content, List, Root, Trigger };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "./lib/cn.js";
|
|
3
|
+
import { pressReset } from "./lib/interactive.js";
|
|
4
|
+
import { controlSize, selectedWhenActive } from "./lib/text-styles.js";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
import * as Nude from "@journ/nude/tabs-parts";
|
|
7
|
+
//#region src/tabs-parts.tsx
|
|
8
|
+
const Root = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Root, {
|
|
9
|
+
...props,
|
|
10
|
+
className: cn("flex flex-col gap-4", className)
|
|
11
|
+
});
|
|
12
|
+
const List = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.List, {
|
|
13
|
+
...props,
|
|
14
|
+
className: cn("flex items-center bg-current/8 p-1", className)
|
|
15
|
+
});
|
|
16
|
+
const Trigger = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Trigger, {
|
|
17
|
+
...props,
|
|
18
|
+
className: cn(pressReset, controlSize, "flex-1 cursor-default px-3 font-medium outline-none transition-colors data-[state=inactive]:text-current/60", "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-bloom-sky", selectedWhenActive, "disabled:pointer-events-none disabled:opacity-50", className)
|
|
19
|
+
});
|
|
20
|
+
const Content = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Content, {
|
|
21
|
+
...props,
|
|
22
|
+
className: cn("outline-none focus-visible:outline-2 focus-visible:outline-bloom-sky", className)
|
|
23
|
+
});
|
|
24
|
+
//#endregion
|
|
25
|
+
export { Content, List, Root, Trigger };
|
package/dist/tabs.d.ts
ADDED
package/dist/tabs.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Chip } from "./chip.js";
|
|
2
|
+
import { ComponentPropsWithRef } from "react";
|
|
3
|
+
import * as Nude from "@journ/nude/tag-input-parts";
|
|
4
|
+
//#region src/tag-input-parts.d.ts
|
|
5
|
+
declare const useTagInput: any;
|
|
6
|
+
type RootProps = Nude.RootProps;
|
|
7
|
+
declare const Root: ({ className, ...props }: RootProps) => import("react").JSX.Element;
|
|
8
|
+
type TagProps = Omit<ComponentPropsWithRef<typeof Chip.Tag>, 'children' | 'onRemove'> & {
|
|
9
|
+
value: string;
|
|
10
|
+
};
|
|
11
|
+
declare const Tag: (props: TagProps) => import("react").JSX.Element;
|
|
12
|
+
declare const Tags: () => import("react").JSX.Element;
|
|
13
|
+
declare const Field: ({ className, ...props }: ComponentPropsWithRef<typeof Nude.Field>) => import("react").JSX.Element;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { Field, Root, type RootProps, Tag, Tags, useTagInput };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "./lib/cn.js";
|
|
3
|
+
import { Chip } from "./chip.js";
|
|
4
|
+
import { composerInput, composerRoot } from "./composer.js";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
import * as Nude from "@journ/nude/tag-input-parts";
|
|
7
|
+
//#region src/tag-input-parts.tsx
|
|
8
|
+
const { useTagInput } = Nude;
|
|
9
|
+
const components = { Tag: Chip.Tag };
|
|
10
|
+
const Root = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Root, {
|
|
11
|
+
...props,
|
|
12
|
+
className: composerRoot(cn("flex-wrap", className))
|
|
13
|
+
});
|
|
14
|
+
const Tag = (props) => /* @__PURE__ */ jsx(Nude.Tag, {
|
|
15
|
+
...props,
|
|
16
|
+
components
|
|
17
|
+
});
|
|
18
|
+
const Tags = () => /* @__PURE__ */ jsx(Nude.Tags, { components });
|
|
19
|
+
const Field = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Field, {
|
|
20
|
+
...props,
|
|
21
|
+
className: composerInput(cn("min-w-24", className))
|
|
22
|
+
});
|
|
23
|
+
//#endregion
|
|
24
|
+
export { Field, Root, Tag, Tags, useTagInput };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Field, Root, RootProps, Tag, Tags, useTagInput } from "./tag-input-parts.js";
|
|
2
|
+
//#region src/tag-input.d.ts
|
|
3
|
+
declare const TagInput: {
|
|
4
|
+
Root: typeof Root;
|
|
5
|
+
Tags: typeof Tags;
|
|
6
|
+
Tag: typeof Tag;
|
|
7
|
+
Field: typeof Field;
|
|
8
|
+
};
|
|
9
|
+
//#endregion
|
|
10
|
+
export { TagInput, type RootProps as TagInputProps, useTagInput };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { TextMorphProps as TextMorphProps$1 } from "@journ/nude/text-morph";
|
|
2
|
+
//#region src/text-morph.d.ts
|
|
3
|
+
type TextMorphProps = Omit<TextMorphProps$1, 'classNames'>;
|
|
4
|
+
declare const TextMorph: ({ className, ...props }: TextMorphProps) => import("react").JSX.Element;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { TextMorph, type TextMorphProps };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { cn } from "./lib/cn.js";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { TextMorph as TextMorph$1 } from "@journ/nude/text-morph";
|
|
4
|
+
//#region src/text-morph.tsx
|
|
5
|
+
const TextMorph = ({ className, ...props }) => /* @__PURE__ */ jsx(TextMorph$1, {
|
|
6
|
+
...props,
|
|
7
|
+
className: cn("whitespace-pre", className),
|
|
8
|
+
classNames: {
|
|
9
|
+
label: "sr-only",
|
|
10
|
+
char: "inline-block whitespace-pre"
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
//#endregion
|
|
14
|
+
export { TextMorph };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ComponentPropsWithRef, ElementType } from "react";
|
|
2
|
+
//#region src/text-shimmer.d.ts
|
|
3
|
+
type TextShimmerProps = ComponentPropsWithRef<'span'> & {
|
|
4
|
+
/** The element to render, `span` by default. */
|
|
5
|
+
as?: ElementType;
|
|
6
|
+
};
|
|
7
|
+
declare const TextShimmer: ({ as: Component, className, ...props }: TextShimmerProps) => import("react").JSX.Element;
|
|
8
|
+
//#endregion
|
|
9
|
+
export { TextShimmer, type TextShimmerProps };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { cn } from "./lib/cn.js";
|
|
2
|
+
import { shimmer } from "./lib/theme.js";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
import { TextShimmer as TextShimmer$1 } from "@journ/nude/text-shimmer";
|
|
5
|
+
//#region src/text-shimmer.tsx
|
|
6
|
+
const TextShimmer = ({ as: Component = "span", className, ...props }) => /* @__PURE__ */ jsx(TextShimmer$1, {
|
|
7
|
+
as: Component,
|
|
8
|
+
...props,
|
|
9
|
+
className: cn(shimmer, "animate-bloom-shimmer bg-size-[200%_100%] bg-clip-text text-transparent motion-reduce:animate-none", className)
|
|
10
|
+
});
|
|
11
|
+
//#endregion
|
|
12
|
+
export { TextShimmer };
|
package/dist/text.d.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { VariantProps } from "./lib/tv.js";
|
|
2
|
+
import { ComponentPropsWithRef } from "react";
|
|
3
|
+
//#region src/text.d.ts
|
|
4
|
+
declare const text: import("tailwind-variants").TVReturnType<{
|
|
5
|
+
size: {
|
|
6
|
+
sm: "text-xs/5";
|
|
7
|
+
md: "text-sm/6";
|
|
8
|
+
lg: "text-base/7";
|
|
9
|
+
};
|
|
10
|
+
tone: {
|
|
11
|
+
default: "";
|
|
12
|
+
muted: "opacity-60";
|
|
13
|
+
};
|
|
14
|
+
}, undefined, "text-pretty", {
|
|
15
|
+
size: {
|
|
16
|
+
sm: "text-xs/5";
|
|
17
|
+
md: "text-sm/6";
|
|
18
|
+
lg: "text-base/7";
|
|
19
|
+
};
|
|
20
|
+
tone: {
|
|
21
|
+
default: "";
|
|
22
|
+
muted: "opacity-60";
|
|
23
|
+
};
|
|
24
|
+
}, undefined, import("tailwind-variants").TVReturnTypeLike<{
|
|
25
|
+
size: {
|
|
26
|
+
sm: "text-xs/5";
|
|
27
|
+
md: "text-sm/6";
|
|
28
|
+
lg: "text-base/7";
|
|
29
|
+
};
|
|
30
|
+
tone: {
|
|
31
|
+
default: "";
|
|
32
|
+
muted: "opacity-60";
|
|
33
|
+
};
|
|
34
|
+
}, undefined>>;
|
|
35
|
+
type TextProps = ComponentPropsWithRef<'p'> & VariantProps<typeof text>;
|
|
36
|
+
declare const Text: ({ size, tone, className, ...props }: TextProps) => import("react").JSX.Element;
|
|
37
|
+
//#endregion
|
|
38
|
+
export { Text, type TextProps };
|
package/dist/text.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { tv } from "./lib/tv.js";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { Text as Text$1 } from "@journ/nude/text";
|
|
4
|
+
//#region src/text.tsx
|
|
5
|
+
const text = tv({
|
|
6
|
+
base: "text-pretty",
|
|
7
|
+
variants: {
|
|
8
|
+
size: {
|
|
9
|
+
sm: "text-xs/5",
|
|
10
|
+
md: "text-sm/6",
|
|
11
|
+
lg: "text-base/7"
|
|
12
|
+
},
|
|
13
|
+
tone: {
|
|
14
|
+
default: "",
|
|
15
|
+
muted: "opacity-60"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
defaultVariants: {
|
|
19
|
+
size: "md",
|
|
20
|
+
tone: "default"
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
const Text = ({ size, tone, className, ...props }) => /* @__PURE__ */ jsx(Text$1, {
|
|
24
|
+
...props,
|
|
25
|
+
className: text({
|
|
26
|
+
size,
|
|
27
|
+
tone,
|
|
28
|
+
class: className
|
|
29
|
+
})
|
|
30
|
+
});
|
|
31
|
+
//#endregion
|
|
32
|
+
export { Text };
|
package/dist/textarea.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { cn } from "./lib/cn.js";
|
|
2
|
+
import { field } from "./input.js";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
import { Textarea as Textarea$1 } from "@journ/nude/textarea";
|
|
5
|
+
//#region src/textarea.tsx
|
|
6
|
+
const Textarea = ({ className, rows = 4, ...props }) => /* @__PURE__ */ jsx(Textarea$1, {
|
|
7
|
+
rows,
|
|
8
|
+
...props,
|
|
9
|
+
className: cn(field, "resize-y", className)
|
|
10
|
+
});
|
|
11
|
+
//#endregion
|
|
12
|
+
export { Textarea };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ComponentPropsWithRef } from "react";
|
|
2
|
+
import * as Nude from "@journ/nude/time-range-parts";
|
|
3
|
+
import { RootProps, TimeRangeValue } from "@journ/nude/time-range-parts";
|
|
4
|
+
//#region src/time-range-parts.d.ts
|
|
5
|
+
declare const Root: any;
|
|
6
|
+
declare const Start: ({ className, ...props }: ComponentPropsWithRef<typeof Nude.Start>) => import("react").JSX.Element;
|
|
7
|
+
declare const Stop: ({ className, ...props }: ComponentPropsWithRef<typeof Nude.Stop>) => import("react").JSX.Element;
|
|
8
|
+
declare const Duration: ({ className, ...props }: ComponentPropsWithRef<typeof Nude.Duration>) => import("react").JSX.Element;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { Duration, Root, type RootProps, Start, Stop, type TimeRangeValue };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "./lib/cn.js";
|
|
3
|
+
import { mutedText } from "./lib/text-styles.js";
|
|
4
|
+
import { input } from "./input.js";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
import * as Nude from "@journ/nude/time-range-parts";
|
|
7
|
+
//#region src/time-range-parts.tsx
|
|
8
|
+
const Root = Nude.Root;
|
|
9
|
+
const Start = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Start, {
|
|
10
|
+
...props,
|
|
11
|
+
className: input(cn("tabular-nums", className))
|
|
12
|
+
});
|
|
13
|
+
const Stop = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Stop, {
|
|
14
|
+
...props,
|
|
15
|
+
className: input(cn("tabular-nums", className))
|
|
16
|
+
});
|
|
17
|
+
const Duration = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Duration, {
|
|
18
|
+
...props,
|
|
19
|
+
className: cn(mutedText, "tabular-nums", className)
|
|
20
|
+
});
|
|
21
|
+
//#endregion
|
|
22
|
+
export { Duration, Root, Start, Stop };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Duration, RootProps, Start, Stop, TimeRangeValue } from "./time-range-parts.js";
|
|
2
|
+
//#region src/time-range.d.ts
|
|
3
|
+
declare const TimeRange: {
|
|
4
|
+
Root: any;
|
|
5
|
+
Start: typeof Start;
|
|
6
|
+
Stop: typeof Stop;
|
|
7
|
+
Duration: typeof Duration;
|
|
8
|
+
};
|
|
9
|
+
//#endregion
|
|
10
|
+
export { TimeRange, type RootProps as TimeRangeProps, type TimeRangeValue };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ComponentPropsWithRef } from "react";
|
|
2
|
+
import * as Nude from "@journ/nude/toast-parts";
|
|
3
|
+
//#region src/toast-parts.d.ts
|
|
4
|
+
declare const Provider: (props: ComponentPropsWithRef<typeof Nude.Provider>) => import("react").JSX.Element;
|
|
5
|
+
declare const show: typeof Nude.show;
|
|
6
|
+
declare const Root: ({ className, ...props }: ComponentPropsWithRef<'div'>) => import("react").JSX.Element;
|
|
7
|
+
declare const Title: ({ className, ...props }: ComponentPropsWithRef<'p'>) => import("react").JSX.Element;
|
|
8
|
+
declare const Description: ({ className, ...props }: ComponentPropsWithRef<'p'>) => import("react").JSX.Element;
|
|
9
|
+
declare const Action: ({ className, ...props }: ComponentPropsWithRef<'button'>) => import("react").JSX.Element;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { Action, Description, Provider, Root, Title, show };
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "./lib/cn.js";
|
|
3
|
+
import { displayLabel } from "./lib/text-styles.js";
|
|
4
|
+
import { line, raised } from "./lib/theme.js";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
import * as Nude from "@journ/nude/toast-parts";
|
|
7
|
+
//#region src/toast-parts.tsx
|
|
8
|
+
const outlinedAction = `border ${line} bg-transparent h-8 shrink-0 px-3 text-sm font-medium whitespace-nowrap`;
|
|
9
|
+
const Provider = (props) => /* @__PURE__ */ jsx(Nude.Provider, {
|
|
10
|
+
position: "top-center",
|
|
11
|
+
...props,
|
|
12
|
+
toastOptions: { classNames: {
|
|
13
|
+
toast: `${raised} flex w-full max-w-sm items-center gap-3 rounded-bloom p-5 shadow-md`,
|
|
14
|
+
title: displayLabel,
|
|
15
|
+
description: "text-xs/5 opacity-60",
|
|
16
|
+
actionButton: `${outlinedAction} ml-auto`,
|
|
17
|
+
cancelButton: outlinedAction
|
|
18
|
+
} }
|
|
19
|
+
});
|
|
20
|
+
const show = Nude.show;
|
|
21
|
+
const Root = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Root, {
|
|
22
|
+
...props,
|
|
23
|
+
className: cn(raised, "flex w-full max-w-sm items-center gap-3 rounded-bloom p-5 shadow-md", className)
|
|
24
|
+
});
|
|
25
|
+
const Title = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Title, {
|
|
26
|
+
...props,
|
|
27
|
+
className: cn(displayLabel, className)
|
|
28
|
+
});
|
|
29
|
+
const Description = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Description, {
|
|
30
|
+
...props,
|
|
31
|
+
className: cn("text-xs/5 opacity-60", className)
|
|
32
|
+
});
|
|
33
|
+
const Action = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Action, {
|
|
34
|
+
type: "button",
|
|
35
|
+
...props,
|
|
36
|
+
className: cn(outlinedAction, "ml-auto", className)
|
|
37
|
+
});
|
|
38
|
+
//#endregion
|
|
39
|
+
export { Action, Description, Provider, Root, Title, show };
|
package/dist/toast.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Action, Description, Provider, Root, Title, show } from "./toast-parts.js";
|
|
2
|
+
//#region src/toast.d.ts
|
|
3
|
+
type ToastParts = {
|
|
4
|
+
Provider: typeof Provider;
|
|
5
|
+
show: typeof show;
|
|
6
|
+
Root: typeof Root;
|
|
7
|
+
Title: typeof Title;
|
|
8
|
+
Description: typeof Description;
|
|
9
|
+
Action: typeof Action;
|
|
10
|
+
};
|
|
11
|
+
declare const Toast: ToastParts;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { Toast };
|
package/dist/toast.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ComponentPropsWithRef } from "react";
|
|
2
|
+
import * as Nude from "@journ/nude/toggle-group-parts";
|
|
3
|
+
//#region src/toggle-group-parts.d.ts
|
|
4
|
+
declare const Root: ({ className, ...props }: ComponentPropsWithRef<typeof Nude.Root>) => import("react").JSX.Element;
|
|
5
|
+
declare const Item: ({ className, ...props }: ComponentPropsWithRef<typeof Nude.Item>) => import("react").JSX.Element;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { Item, Root };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "./lib/cn.js";
|
|
3
|
+
import { pressReset } from "./lib/interactive.js";
|
|
4
|
+
import { controlSize, selectedWhenOn } from "./lib/text-styles.js";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
import * as Nude from "@journ/nude/toggle-group-parts";
|
|
7
|
+
//#region src/toggle-group-parts.tsx
|
|
8
|
+
const Root = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Root, {
|
|
9
|
+
...props,
|
|
10
|
+
className: cn("inline-flex items-center bg-current/8 p-1", className)
|
|
11
|
+
});
|
|
12
|
+
const Item = ({ className, ...props }) => /* @__PURE__ */ jsx(Nude.Item, {
|
|
13
|
+
...props,
|
|
14
|
+
className: cn(pressReset, controlSize, "inline-flex cursor-default items-center justify-center gap-1.5 px-3 font-medium outline-none transition-colors data-[state=off]:text-current/60", "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-bloom-sky [&>svg]:size-4", selectedWhenOn, "disabled:pointer-events-none disabled:opacity-50", className)
|
|
15
|
+
});
|
|
16
|
+
//#endregion
|
|
17
|
+
export { Item, Root };
|
package/dist/tokens.css
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Design tokens. Override any of them in your own @theme block, imported after
|
|
3
|
+
* this file. Theme roles come in pairs: `--color-bloom-canvas` is the light
|
|
4
|
+
* value and `--color-bloom-canvas-dark` the dark one. Components pair them with
|
|
5
|
+
* Tailwind's `dark:` variant. Without a class it follows the OS; put `.light`
|
|
6
|
+
* or `.dark` on <html> (or any ancestor) to force a theme.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/* `dark:` follows the OS unless `.light` is set, and always applies under `.dark`. */
|
|
10
|
+
@custom-variant dark {
|
|
11
|
+
&:where(.dark, .dark *) {
|
|
12
|
+
@slot;
|
|
13
|
+
}
|
|
14
|
+
@media (prefers-color-scheme: dark) {
|
|
15
|
+
&:where(:not(.light, .light *)) {
|
|
16
|
+
@slot;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
@theme {
|
|
21
|
+
/* Palette: the same in both themes. Status colors, used as tints far more than as fills. */
|
|
22
|
+
--color-bloom-ink: oklch(16% 0 0);
|
|
23
|
+
--color-bloom-paper: oklch(98.5% 0 0);
|
|
24
|
+
--color-bloom-coral: oklch(65% 0.24 26);
|
|
25
|
+
--color-bloom-yellow: oklch(87% 0.17 92);
|
|
26
|
+
--color-bloom-indigo: oklch(62% 0.19 275);
|
|
27
|
+
--color-bloom-mint: oklch(74% 0.21 152);
|
|
28
|
+
--color-bloom-sky: oklch(70% 0.15 245);
|
|
29
|
+
|
|
30
|
+
/* Roles, light. */
|
|
31
|
+
--color-bloom-canvas: oklch(100% 0 0);
|
|
32
|
+
--color-bloom-surface: oklch(100% 0 0);
|
|
33
|
+
--color-bloom-foreground: oklch(18% 0 0);
|
|
34
|
+
--color-bloom-accent: oklch(52% 0.13 75);
|
|
35
|
+
--color-bloom-line: oklch(88.5% 0.004 95);
|
|
36
|
+
|
|
37
|
+
/* Roles, dark. */
|
|
38
|
+
--color-bloom-canvas-dark: oklch(16% 0 0);
|
|
39
|
+
--color-bloom-surface-dark: oklch(16% 0 0);
|
|
40
|
+
--color-bloom-foreground-dark: oklch(98.5% 0 0);
|
|
41
|
+
--color-bloom-accent-dark: oklch(87% 0.17 92);
|
|
42
|
+
--color-bloom-line-dark: oklch(22.6% 0 0);
|
|
43
|
+
|
|
44
|
+
--font-bloom-display: 'Hedvig Letters Sans', ui-sans-serif, system-ui, sans-serif;
|
|
45
|
+
|
|
46
|
+
--radius-bloom: 0rem;
|
|
47
|
+
|
|
48
|
+
--animate-bloom-shimmer: bloom-shimmer 2.2s linear infinite;
|
|
49
|
+
|
|
50
|
+
@keyframes bloom-shimmer {
|
|
51
|
+
from {
|
|
52
|
+
background-position: 100% 0;
|
|
53
|
+
}
|
|
54
|
+
to {
|
|
55
|
+
background-position: -100% 0;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/* Thin, quiet scrollbar for native scroll containers. Thumb follows the text color. */
|
|
61
|
+
@utility scrollbar-bloom {
|
|
62
|
+
scrollbar-width: thin;
|
|
63
|
+
scrollbar-color: color-mix(in oklab, currentColor 30%, transparent) transparent;
|
|
64
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ComponentPropsWithRef } from "react";
|
|
2
|
+
import * as Nude from "@journ/nude/tooltip-parts";
|
|
3
|
+
//#region src/tooltip-parts.d.ts
|
|
4
|
+
declare const Provider: any;
|
|
5
|
+
declare const Root: any;
|
|
6
|
+
declare const Trigger: any;
|
|
7
|
+
declare const Content: ({ className, ...props }: ComponentPropsWithRef<typeof Nude.Content>) => import("react").JSX.Element;
|
|
8
|
+
//#endregion
|
|
9
|
+
export { Content, Provider, Root, Trigger };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "./lib/cn.js";
|
|
3
|
+
import { useDropEnter } from "./lib/use-enter.js";
|
|
4
|
+
import { raised } from "./lib/theme.js";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
import * as Nude from "@journ/nude/tooltip-parts";
|
|
7
|
+
//#region src/tooltip-parts.tsx
|
|
8
|
+
const Provider = Nude.Provider;
|
|
9
|
+
const Root = Nude.Root;
|
|
10
|
+
const Trigger = Nude.Trigger;
|
|
11
|
+
const Content = ({ className, ...props }) => {
|
|
12
|
+
const panel = useDropEnter();
|
|
13
|
+
return /* @__PURE__ */ jsx(Nude.Content, {
|
|
14
|
+
ref: panel,
|
|
15
|
+
sideOffset: 8,
|
|
16
|
+
...props,
|
|
17
|
+
className: cn(raised, "z-50 max-w-60 px-3 py-1.5 text-sm/5 shadow-md", className)
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
//#endregion
|
|
21
|
+
export { Content, Provider, Root, Trigger };
|
package/dist/tooltip.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
//#region src/touch-target.d.ts
|
|
2
|
+
/** Grows the hit area to at least 44x44px on touch devices without changing layout. */
|
|
3
|
+
declare const TouchTarget: ({ children }: {
|
|
4
|
+
children?: React.ReactNode;
|
|
5
|
+
}) => import("react").JSX.Element;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { TouchTarget };
|