@k8o/arte-odyssey 10.0.1 → 10.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/README.md +3 -3
- package/dist/components/data-display/card/card.d.mts +6 -2
- package/dist/components/data-display/card/card.mjs +2 -2
- package/dist/components/data-display/card/index.d.mts +1 -2
- package/dist/components/data-display/card/index.mjs +1 -2
- package/dist/components/data-display/table/table.mjs +1 -1
- package/dist/components/form/checkbox-group/index.d.mts +3 -3
- package/dist/components/index.d.mts +1 -2
- package/dist/components/index.mjs +1 -2
- package/dist/components/layout/_shared/padding.d.mts +11 -0
- package/dist/components/layout/_shared/padding.mjs +10 -0
- package/dist/components/layout/stack/stack.d.mts +3 -1
- package/dist/components/layout/stack/stack.mjs +3 -2
- package/dist/index.d.mts +1 -2
- package/dist/index.mjs +1 -2
- package/dist/integrations/_shared/renderers.d.mts +2 -3
- package/dist/integrations/_shared/renderers.mjs +12 -10
- package/dist/integrations/_shared/schemas.d.mts +18 -16
- package/dist/integrations/_shared/schemas.mjs +15 -3
- package/dist/integrations/json-render/catalog.d.mts +18 -19
- package/dist/integrations/json-render/catalog.mjs +3 -8
- package/dist/integrations/json-render/registry.mjs +1 -2
- package/dist/integrations/openui/library.mjs +3 -9
- package/dist/styles/index.css +4 -0
- package/dist/styles/tokens.css +2 -2
- package/dist/styles/tokens.generated.d.mts +6 -6
- package/dist/styles/tokens.generated.mjs +6 -6
- package/docs/GUIDE.md +5 -5
- package/docs/references/components.md +6 -6
- package/package.json +1 -1
- package/dist/components/data-display/card/interactive-card.d.mts +0 -7
- package/dist/components/data-display/card/interactive-card.mjs +0 -10
- package/dist/components/data-display/card/type.d.mts +0 -9
- package/dist/components/data-display/card/type.mjs +0 -1
package/README.md
CHANGED
|
@@ -109,7 +109,7 @@ ArteOdyssey includes design system documentation in `docs/` directory. When inst
|
|
|
109
109
|
- **Avatar** - User/entity avatar
|
|
110
110
|
- **Badge** - Status/label indicator
|
|
111
111
|
- **BaselineStatus** - Web standard support indicator
|
|
112
|
-
- **Card**
|
|
112
|
+
- **Card** - Flexible content container (hover interaction via `interactive`)
|
|
113
113
|
- **Code** - Formatted code display
|
|
114
114
|
- **Heading** - Typography heading component
|
|
115
115
|
- **Table** - Tabular data display
|
|
@@ -243,9 +243,9 @@ pnpm add @json-render/core @json-render/react zod
|
|
|
243
243
|
pnpm add @openuidev/react-lang zod
|
|
244
244
|
```
|
|
245
245
|
|
|
246
|
-
Supported components (**all
|
|
246
|
+
Supported components (**all 46**, both frameworks):
|
|
247
247
|
|
|
248
|
-
- **Layout / containers**: `Stack`, `Card`, `
|
|
248
|
+
- **Layout / containers**: `Stack`, `Card`, `Form`
|
|
249
249
|
- **Buttons / nav**: `Button`, `IconButton`, `Anchor`, `Breadcrumb`, `Pagination`
|
|
250
250
|
- **Display**: `Badge`, `Heading`, `Avatar`, `Code`, `Icon`, `Alert`, `Spinner`, `Progress`, `Skeleton`, `Separator`, `Tabs`, `Accordion`, `Table`, `BaselineStatus`, `ScrollLinked`
|
|
251
251
|
- **Overlays (self-contained widgets)**: `Modal`, `Dialog`, `Drawer`, `Popover`, `Tooltip`, `DropdownMenu`, `Toast`
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { FC } from "react";
|
|
1
|
+
import { FC, HTMLAttributes } from "react";
|
|
3
2
|
|
|
4
3
|
//#region src/components/data-display/card/card.d.ts
|
|
4
|
+
type CardProps = {
|
|
5
|
+
width?: 'full' | 'fit';
|
|
6
|
+
appearance?: 'shadow' | 'bordered';
|
|
7
|
+
interactive?: boolean;
|
|
8
|
+
} & Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'style'>;
|
|
5
9
|
declare const Card: FC<CardProps>;
|
|
6
10
|
//#endregion
|
|
7
11
|
export { Card };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { cn } from "../../../helpers/cn.mjs";
|
|
2
2
|
import { jsx } from "react/jsx-runtime";
|
|
3
3
|
//#region src/components/data-display/card/card.tsx
|
|
4
|
-
const Card = ({ children, width = "full", appearance = "shadow", ...rest }) => /* @__PURE__ */ jsx("div", {
|
|
4
|
+
const Card = ({ children, width = "full", appearance = "shadow", interactive = false, ...rest }) => /* @__PURE__ */ jsx("div", {
|
|
5
5
|
...rest,
|
|
6
|
-
className: cn("rounded-xl", appearance === "shadow" && "shadow-sm
|
|
6
|
+
className: cn("rounded-xl", appearance === "shadow" && "shadow-sm", appearance === "bordered" && "border border-border-mute", width === "full" && "w-full", width === "fit" && "w-fit", interactive && "motion-safe:transition-transform hover:motion-safe:scale-[1.02] active:motion-safe:scale-[0.98]", "bg-bg-base"),
|
|
7
7
|
children
|
|
8
8
|
});
|
|
9
9
|
//#endregion
|
|
@@ -2,7 +2,7 @@ import { cn } from "../../../helpers/cn.mjs";
|
|
|
2
2
|
import { jsx } from "react/jsx-runtime";
|
|
3
3
|
//#region src/components/data-display/table/table.tsx
|
|
4
4
|
const Root = ({ children }) => /* @__PURE__ */ jsx("div", {
|
|
5
|
-
className: "border-border-mute bg-bg-base vertical:writing-sideways-rl vertical:
|
|
5
|
+
className: "border-border-mute bg-bg-base vertical:writing-sideways-rl vertical:size-fit w-full overflow-x-auto rounded-lg border",
|
|
6
6
|
children: /* @__PURE__ */ jsx("table", {
|
|
7
7
|
className: "min-w-full border-collapse text-left text-sm",
|
|
8
8
|
children
|
|
@@ -3,7 +3,7 @@ declare const CheckboxGroup: import("react").FC<{
|
|
|
3
3
|
invalid?: boolean;
|
|
4
4
|
required?: boolean;
|
|
5
5
|
name: string;
|
|
6
|
-
} & Omit<import("react").FieldsetHTMLAttributes<HTMLFieldSetElement>, "
|
|
6
|
+
} & Omit<import("react").FieldsetHTMLAttributes<HTMLFieldSetElement>, "className" | "style" | "onChange" | "name" | "defaultValue"> & {
|
|
7
7
|
children?: import("react").ReactNode | undefined;
|
|
8
8
|
} & ({
|
|
9
9
|
value: string[];
|
|
@@ -18,7 +18,7 @@ declare const CheckboxGroup: import("react").FC<{
|
|
|
18
18
|
invalid?: boolean;
|
|
19
19
|
required?: boolean;
|
|
20
20
|
name: string;
|
|
21
|
-
} & Omit<import("react").FieldsetHTMLAttributes<HTMLFieldSetElement>, "
|
|
21
|
+
} & Omit<import("react").FieldsetHTMLAttributes<HTMLFieldSetElement>, "className" | "style" | "onChange" | "name" | "defaultValue"> & {
|
|
22
22
|
children?: import("react").ReactNode | undefined;
|
|
23
23
|
} & ({
|
|
24
24
|
value: string[];
|
|
@@ -33,7 +33,7 @@ declare const CheckboxGroup: import("react").FC<{
|
|
|
33
33
|
Item: import("react").FC<{
|
|
34
34
|
itemValue?: string;
|
|
35
35
|
label: string;
|
|
36
|
-
} & Omit<import("react").InputHTMLAttributes<HTMLInputElement>, "
|
|
36
|
+
} & Omit<import("react").InputHTMLAttributes<HTMLInputElement>, "type" | "className" | "style" | "value" | "onChange" | "defaultChecked" | "checked" | "children"> & ({
|
|
37
37
|
value: boolean;
|
|
38
38
|
onChange: (checked: boolean, event: import("react").ChangeEvent<HTMLInputElement>) => void;
|
|
39
39
|
defaultChecked?: never;
|
|
@@ -6,7 +6,6 @@ import { Avatar } from "./data-display/avatar/avatar.mjs";
|
|
|
6
6
|
import { Badge } from "./data-display/badge/badge.mjs";
|
|
7
7
|
import { BaselineStatus } from "./data-display/baseline-status/baseline-status.mjs";
|
|
8
8
|
import { Card } from "./data-display/card/card.mjs";
|
|
9
|
-
import { InteractiveCard } from "./data-display/card/interactive-card.mjs";
|
|
10
9
|
import { Code } from "./data-display/code/code.mjs";
|
|
11
10
|
import { Heading } from "./data-display/heading/heading.mjs";
|
|
12
11
|
import { Table } from "./data-display/table/table.mjs";
|
|
@@ -56,4 +55,4 @@ import { useOpenContext } from "./overlays/popover/hooks.mjs";
|
|
|
56
55
|
import { Popover } from "./overlays/popover/popover.mjs";
|
|
57
56
|
import { ArteOdysseyProvider } from "./providers/arte-odyssey-provider.mjs";
|
|
58
57
|
import { PortalRootProvider, usePortalRoot } from "./providers/portal-root.mjs";
|
|
59
|
-
export { AIIcon, AccessibilityIcon, Accordion, Alert, AlertIcon, Anchor, ArteOdyssey, ArteOdysseyProvider, AtomIcon, Autocomplete, Avatar, BadIcon, Badge, BaselineStatus, BlogIcon, BoringIcon, Breadcrumb, Button, Card, CheckIcon, Checkbox, CheckboxCard, CheckboxGroup, ChevronIcon, CloseIcon, Code, ColorContrastIcon, ColorInfoIcon, CopyIcon, DarkModeIcon, Dialog, DifficultIcon, Drawer, DropdownMenu, EasyIcon, ExternalLinkIcon, FileField, Form, FormControl, FormIcon, GitHubIcon, GoodIcon, Grid, type GridProps, Heading, HistoryIcon, HorizontalWritingIcon, IconButton, InformativeIcon,
|
|
58
|
+
export { AIIcon, AccessibilityIcon, Accordion, Alert, AlertIcon, Anchor, ArteOdyssey, ArteOdysseyProvider, AtomIcon, Autocomplete, Avatar, BadIcon, Badge, BaselineStatus, BlogIcon, BoringIcon, Breadcrumb, Button, Card, CheckIcon, Checkbox, CheckboxCard, CheckboxGroup, ChevronIcon, CloseIcon, Code, ColorContrastIcon, ColorInfoIcon, CopyIcon, DarkModeIcon, Dialog, DifficultIcon, Drawer, DropdownMenu, EasyIcon, ExternalLinkIcon, FileField, Form, FormControl, FormIcon, GitHubIcon, GoodIcon, Grid, type GridProps, Heading, HistoryIcon, HorizontalWritingIcon, IconButton, InformativeIcon, InterestingIcon, LightModeIcon, LinkIcon, ListBox, ListIcon, LocationIcon, Logo, LogoIcon, MailIcon, MinusIcon, MixedColorIcon, Modal, NavigationMenuIcon, NewsIcon, NumberField, Pagination, PaletteIcon, PasswordInput, PlusIcon, Popover, PortalRootProvider, PrepareIcon, Progress, PublishDateIcon, QiitaIcon, RSSIcon, Radio, RadioCard, ScrollLinked, Select, SendIcon, Separator, ShallowIcon, ShieldCheckIcon, Skeleton, SlideIcon, Slider, SparklesIcon, Spinner, Stack, type StackProps, SubscribeIcon, Switch, Table, TableIcon, Tabs, TagIcon, TextField, Textarea, ToastProvider, Tooltip, TwitterIcon, UpdateDateIcon, VerticalWritingIcon, ViewIcon, ViewOffIcon, useOpenContext, usePortalRoot, useToast };
|
|
@@ -21,7 +21,6 @@ import { Avatar } from "./data-display/avatar/avatar.mjs";
|
|
|
21
21
|
import { Badge } from "./data-display/badge/badge.mjs";
|
|
22
22
|
import { BaselineStatus } from "./data-display/baseline-status/baseline-status.mjs";
|
|
23
23
|
import { Card } from "./data-display/card/card.mjs";
|
|
24
|
-
import { InteractiveCard } from "./data-display/card/interactive-card.mjs";
|
|
25
24
|
import { Code } from "./data-display/code/code.mjs";
|
|
26
25
|
import { Heading } from "./data-display/heading/heading.mjs";
|
|
27
26
|
import { Table } from "./data-display/table/table.mjs";
|
|
@@ -56,4 +55,4 @@ import { Modal } from "./overlays/modal/modal.mjs";
|
|
|
56
55
|
import { Drawer } from "./overlays/drawer/drawer.mjs";
|
|
57
56
|
import { DropdownMenu } from "./overlays/dropdown-menu/dropdown-menu.mjs";
|
|
58
57
|
import { ListBox } from "./overlays/list-box/list-box.mjs";
|
|
59
|
-
export { AIIcon, AccessibilityIcon, Accordion, Alert, AlertIcon, Anchor, ArteOdyssey, ArteOdysseyProvider, AtomIcon, Autocomplete, Avatar, BadIcon, Badge, BaselineStatus, BlogIcon, BoringIcon, Breadcrumb, Button, Card, CheckIcon, Checkbox, CheckboxCard, CheckboxGroup, ChevronIcon, CloseIcon, Code, ColorContrastIcon, ColorInfoIcon, CopyIcon, DarkModeIcon, Dialog, DifficultIcon, Drawer, DropdownMenu, EasyIcon, ExternalLinkIcon, FileField, Form, FormControl, FormIcon, GitHubIcon, GoodIcon, Grid, Heading, HistoryIcon, HorizontalWritingIcon, IconButton, InformativeIcon,
|
|
58
|
+
export { AIIcon, AccessibilityIcon, Accordion, Alert, AlertIcon, Anchor, ArteOdyssey, ArteOdysseyProvider, AtomIcon, Autocomplete, Avatar, BadIcon, Badge, BaselineStatus, BlogIcon, BoringIcon, Breadcrumb, Button, Card, CheckIcon, Checkbox, CheckboxCard, CheckboxGroup, ChevronIcon, CloseIcon, Code, ColorContrastIcon, ColorInfoIcon, CopyIcon, DarkModeIcon, Dialog, DifficultIcon, Drawer, DropdownMenu, EasyIcon, ExternalLinkIcon, FileField, Form, FormControl, FormIcon, GitHubIcon, GoodIcon, Grid, Heading, HistoryIcon, HorizontalWritingIcon, IconButton, InformativeIcon, InterestingIcon, LightModeIcon, LinkIcon, ListBox, ListIcon, LocationIcon, Logo, LogoIcon, MailIcon, MinusIcon, MixedColorIcon, Modal, NavigationMenuIcon, NewsIcon, NumberField, Pagination, PaletteIcon, PasswordInput, PlusIcon, Popover, PortalRootProvider, PrepareIcon, Progress, PublishDateIcon, QiitaIcon, RSSIcon, Radio, RadioCard, ScrollLinked, Select, SendIcon, Separator, ShallowIcon, ShieldCheckIcon, Skeleton, SlideIcon, Slider, SparklesIcon, Spinner, Stack, SubscribeIcon, Switch, Table, TableIcon, Tabs, TagIcon, TextField, Textarea, ToastProvider, Tooltip, TwitterIcon, UpdateDateIcon, VerticalWritingIcon, ViewIcon, ViewOffIcon, useOpenContext, usePortalRoot, useToast };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
//#region src/components/layout/_shared/padding.d.ts
|
|
2
|
+
type PaddingSize = 'none' | 'sm' | 'md' | 'lg' | 'xl';
|
|
3
|
+
declare const PADDING_CLASS: {
|
|
4
|
+
readonly none: "p-0";
|
|
5
|
+
readonly sm: "p-2";
|
|
6
|
+
readonly md: "p-4";
|
|
7
|
+
readonly lg: "p-6";
|
|
8
|
+
readonly xl: "p-8";
|
|
9
|
+
};
|
|
10
|
+
//#endregion
|
|
11
|
+
export { PADDING_CLASS, PaddingSize };
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { GapSize } from "../_shared/gap.mjs";
|
|
2
|
+
import { PaddingSize } from "../_shared/padding.mjs";
|
|
2
3
|
import { FC, HTMLAttributes, PropsWithChildren } from "react";
|
|
3
4
|
|
|
4
5
|
//#region src/components/layout/stack/stack.d.ts
|
|
5
6
|
type StackProps = PropsWithChildren<{
|
|
6
7
|
direction?: 'row' | 'column';
|
|
7
|
-
gap?: GapSize;
|
|
8
|
+
gap?: GapSize; /** Inner padding on all sides. Stack has no padding by default. */
|
|
9
|
+
padding?: PaddingSize;
|
|
8
10
|
align?: 'start' | 'center' | 'end' | 'stretch';
|
|
9
11
|
justify?: 'start' | 'center' | 'end' | 'between';
|
|
10
12
|
} & Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'style'>>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { cn } from "../../../helpers/cn.mjs";
|
|
2
2
|
import { GAP_CLASS } from "../_shared/gap.mjs";
|
|
3
|
+
import { PADDING_CLASS } from "../_shared/padding.mjs";
|
|
3
4
|
import { jsx } from "react/jsx-runtime";
|
|
4
5
|
//#region src/components/layout/stack/stack.tsx
|
|
5
6
|
const ALIGN_CLASS = {
|
|
@@ -14,9 +15,9 @@ const JUSTIFY_CLASS = {
|
|
|
14
15
|
end: "justify-end",
|
|
15
16
|
between: "justify-between"
|
|
16
17
|
};
|
|
17
|
-
const Stack = ({ direction = "column", gap = "md", align, justify, children, ...rest }) => /* @__PURE__ */ jsx("div", {
|
|
18
|
+
const Stack = ({ direction = "column", gap = "md", padding, align, justify, children, ...rest }) => /* @__PURE__ */ jsx("div", {
|
|
18
19
|
...rest,
|
|
19
|
-
className: cn("flex", direction === "row" ? "flex-row" : "flex-col", GAP_CLASS[gap], align && ALIGN_CLASS[align], justify && JUSTIFY_CLASS[justify]),
|
|
20
|
+
className: cn("flex", direction === "row" ? "flex-row" : "flex-col", GAP_CLASS[gap], padding && PADDING_CLASS[padding], align && ALIGN_CLASS[align], justify && JUSTIFY_CLASS[justify]),
|
|
20
21
|
children
|
|
21
22
|
});
|
|
22
23
|
//#endregion
|
package/dist/index.d.mts
CHANGED
|
@@ -6,7 +6,6 @@ import { Avatar } from "./components/data-display/avatar/avatar.mjs";
|
|
|
6
6
|
import { Badge } from "./components/data-display/badge/badge.mjs";
|
|
7
7
|
import { BaselineStatus } from "./components/data-display/baseline-status/baseline-status.mjs";
|
|
8
8
|
import { Card } from "./components/data-display/card/card.mjs";
|
|
9
|
-
import { InteractiveCard } from "./components/data-display/card/interactive-card.mjs";
|
|
10
9
|
import { Code } from "./components/data-display/code/code.mjs";
|
|
11
10
|
import { Heading } from "./components/data-display/heading/heading.mjs";
|
|
12
11
|
import { Table } from "./components/data-display/table/table.mjs";
|
|
@@ -85,4 +84,4 @@ import { useTimeout } from "./hooks/timeout/index.mjs";
|
|
|
85
84
|
import { useWindowResize } from "./hooks/window-resize/index.mjs";
|
|
86
85
|
import { useWindowSize } from "./hooks/window-size/index.mjs";
|
|
87
86
|
import { WritingMode, useWritingMode } from "./hooks/writing-mode/index.mjs";
|
|
88
|
-
export { AIIcon, AccessibilityIcon, Accordion, Alert, AlertIcon, Anchor, ArteOdyssey, ArteOdysseyProvider, AtomIcon, Autocomplete, Avatar, BadIcon, Badge, BaselineStatus, BlogIcon, BoringIcon, Breadcrumb, Button, Card, CheckIcon, Checkbox, CheckboxCard, CheckboxGroup, ChevronIcon, CloseIcon, Code, ColorContrastIcon, ColorInfoIcon, CopyIcon, DarkModeIcon, type DebouncedAction, Dialog, DifficultIcon, type Direction, Drawer, DropdownMenu, EasyIcon, ExternalLinkIcon, FileField, Form, FormControl, FormIcon, GitHubIcon, GoodIcon, Grid, type GridProps, Heading, HistoryIcon, HorizontalWritingIcon, IconButton, InformativeIcon,
|
|
87
|
+
export { AIIcon, AccessibilityIcon, Accordion, Alert, AlertIcon, Anchor, ArteOdyssey, ArteOdysseyProvider, AtomIcon, Autocomplete, Avatar, BadIcon, Badge, BaselineStatus, BlogIcon, BoringIcon, Breadcrumb, Button, Card, CheckIcon, Checkbox, CheckboxCard, CheckboxGroup, ChevronIcon, CloseIcon, Code, ColorContrastIcon, ColorInfoIcon, CopyIcon, DarkModeIcon, type DebouncedAction, Dialog, DifficultIcon, type Direction, Drawer, DropdownMenu, EasyIcon, ExternalLinkIcon, FileField, Form, FormControl, FormIcon, GitHubIcon, GoodIcon, Grid, type GridProps, Heading, HistoryIcon, HorizontalWritingIcon, IconButton, InformativeIcon, InterestingIcon, LightModeIcon, LinkIcon, ListBox, ListIcon, LocationIcon, Logo, LogoIcon, MailIcon, MinusIcon, MixedColorIcon, Modal, NavigationMenuIcon, NewsIcon, NumberField, type Option, Pagination, PaletteIcon, PasswordInput, PlusIcon, Popover, PortalRootProvider, PrepareIcon, Progress, PublishDateIcon, QiitaIcon, RSSIcon, Radio, RadioCard, ScrollLinked, Select, SendIcon, Separator, ShallowIcon, ShieldCheckIcon, Skeleton, SlideIcon, Slider, SparklesIcon, Spinner, Stack, type StackProps, type Status, SubscribeIcon, Switch, Table, TableIcon, Tabs, TagIcon, TextField, Textarea, ToastProvider, Tooltip, TwitterIcon, UpdateDateIcon, VerticalWritingIcon, ViewIcon, ViewOffIcon, type WritingMode, chain, cn, createSafeContext, mergeProps, mergeRefs, useBreakpoint, useClickAway, useClient, useClipboard, useControllableState, useDebouncedTransition, useDeferredDebounce, useDisclosure, useHash, useHover, useInView, useIntersectionObserver, useInterval, useLocalStorage, useOpenContext, usePortalRoot, useResize, useScrollDirection, useScrollLock, useSessionStorage, useStep, useTimeout, useToast, useWindowResize, useWindowSize, useWritingMode };
|
package/dist/index.mjs
CHANGED
|
@@ -31,7 +31,6 @@ import { Badge } from "./components/data-display/badge/badge.mjs";
|
|
|
31
31
|
import { useClient } from "./hooks/client/index.mjs";
|
|
32
32
|
import { BaselineStatus } from "./components/data-display/baseline-status/baseline-status.mjs";
|
|
33
33
|
import { Card } from "./components/data-display/card/card.mjs";
|
|
34
|
-
import { InteractiveCard } from "./components/data-display/card/interactive-card.mjs";
|
|
35
34
|
import { Code } from "./components/data-display/code/code.mjs";
|
|
36
35
|
import { Heading } from "./components/data-display/heading/heading.mjs";
|
|
37
36
|
import { Table } from "./components/data-display/table/table.mjs";
|
|
@@ -84,4 +83,4 @@ import { Drawer } from "./components/overlays/drawer/drawer.mjs";
|
|
|
84
83
|
import { DropdownMenu } from "./components/overlays/dropdown-menu/dropdown-menu.mjs";
|
|
85
84
|
import { ListBox } from "./components/overlays/list-box/list-box.mjs";
|
|
86
85
|
import { mergeProps } from "./helpers/merge-props.mjs";
|
|
87
|
-
export { AIIcon, AccessibilityIcon, Accordion, Alert, AlertIcon, Anchor, ArteOdyssey, ArteOdysseyProvider, AtomIcon, Autocomplete, Avatar, BadIcon, Badge, BaselineStatus, BlogIcon, BoringIcon, Breadcrumb, Button, Card, CheckIcon, Checkbox, CheckboxCard, CheckboxGroup, ChevronIcon, CloseIcon, Code, ColorContrastIcon, ColorInfoIcon, CopyIcon, DarkModeIcon, Dialog, DifficultIcon, Drawer, DropdownMenu, EasyIcon, ExternalLinkIcon, FileField, Form, FormControl, FormIcon, GitHubIcon, GoodIcon, Grid, Heading, HistoryIcon, HorizontalWritingIcon, IconButton, InformativeIcon,
|
|
86
|
+
export { AIIcon, AccessibilityIcon, Accordion, Alert, AlertIcon, Anchor, ArteOdyssey, ArteOdysseyProvider, AtomIcon, Autocomplete, Avatar, BadIcon, Badge, BaselineStatus, BlogIcon, BoringIcon, Breadcrumb, Button, Card, CheckIcon, Checkbox, CheckboxCard, CheckboxGroup, ChevronIcon, CloseIcon, Code, ColorContrastIcon, ColorInfoIcon, CopyIcon, DarkModeIcon, Dialog, DifficultIcon, Drawer, DropdownMenu, EasyIcon, ExternalLinkIcon, FileField, Form, FormControl, FormIcon, GitHubIcon, GoodIcon, Grid, Heading, HistoryIcon, HorizontalWritingIcon, IconButton, InformativeIcon, InterestingIcon, LightModeIcon, LinkIcon, ListBox, ListIcon, LocationIcon, Logo, LogoIcon, MailIcon, MinusIcon, MixedColorIcon, Modal, NavigationMenuIcon, NewsIcon, NumberField, Pagination, PaletteIcon, PasswordInput, PlusIcon, Popover, PortalRootProvider, PrepareIcon, Progress, PublishDateIcon, QiitaIcon, RSSIcon, Radio, RadioCard, ScrollLinked, Select, SendIcon, Separator, ShallowIcon, ShieldCheckIcon, Skeleton, SlideIcon, Slider, SparklesIcon, Spinner, Stack, SubscribeIcon, Switch, Table, TableIcon, Tabs, TagIcon, TextField, Textarea, ToastProvider, Tooltip, TwitterIcon, UpdateDateIcon, VerticalWritingIcon, ViewIcon, ViewOffIcon, chain, cn, createSafeContext, mergeProps, mergeRefs, useBreakpoint, useClickAway, useClient, useClipboard, useControllableState, useDebouncedTransition, useDeferredDebounce, useDisclosure, useHash, useHover, useInView, useIntersectionObserver, useInterval, useLocalStorage, useOpenContext, usePortalRoot, useResize, useScrollDirection, useScrollLock, useSessionStorage, useStep, useTimeout, useToast, useWindowResize, useWindowSize, useWritingMode };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AccordionProps, AlertProps, AnchorProps, AutocompleteProps, AvatarProps, BadgeProps, BaselineStatusProps, BreadcrumbProps, ButtonProps, CardProps, CheckboxCardProps, CheckboxGroupProps, CheckboxProps, ChevronIconProps, CodeProps, DialogProps, DrawerProps, DropdownMenuProps, FileFieldProps, FormControlProps, FormProps, GridProps, HeadingProps, IconButtonProps, IconProps,
|
|
1
|
+
import { AccordionProps, AlertProps, AnchorProps, AutocompleteProps, AvatarProps, BadgeProps, BaselineStatusProps, BreadcrumbProps, ButtonProps, CardProps, CheckboxCardProps, CheckboxGroupProps, CheckboxProps, ChevronIconProps, CodeProps, DialogProps, DrawerProps, DropdownMenuProps, FileFieldProps, FormControlProps, FormProps, GridProps, HeadingProps, IconButtonProps, IconProps, ListBoxProps, ModalProps, NumberFieldProps, PaginationProps, PasswordInputProps, PopoverProps, ProgressProps, RadioCardProps, RadioProps, ScrollLinkedProps, SelectProps, SeparatorProps, SkeletonProps, SliderProps, SpinnerProps, StackProps, StatusIconProps, SwitchProps, TableProps, TabsProps, TextFieldProps, TextareaProps, ToastProps, TooltipProps } from "./schemas.mjs";
|
|
2
2
|
import { FC, ReactNode } from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/integrations/_shared/renderers.d.ts
|
|
@@ -39,7 +39,6 @@ declare function renderSkeleton(props: SkeletonProps): ReactNode;
|
|
|
39
39
|
declare function renderAccordion(props: AccordionProps): ReactNode;
|
|
40
40
|
declare function renderBreadcrumb(props: BreadcrumbProps): ReactNode;
|
|
41
41
|
declare function renderTable(props: TableProps): ReactNode;
|
|
42
|
-
declare function renderInteractiveCard(props: InteractiveCardProps, children: ReactNode): ReactNode;
|
|
43
42
|
declare function renderForm(props: FormProps, children: ReactNode): ReactNode;
|
|
44
43
|
declare const ModalWidget: FC<{
|
|
45
44
|
props: ModalProps;
|
|
@@ -71,4 +70,4 @@ declare const FormControlWidget: FC<{
|
|
|
71
70
|
props: FormControlProps;
|
|
72
71
|
}>;
|
|
73
72
|
//#endregion
|
|
74
|
-
export { DialogWidget, DrawerWidget, FileFieldWidget, FormControlWidget, ModalWidget, TabsView, ToastWidget, renderAccordion, renderAlert, renderAnchor, renderAutocomplete, renderAvatar, renderBadge, renderBaselineStatus, renderBreadcrumb, renderButton, renderCard, renderCheckbox, renderCheckboxCard, renderCheckboxGroup, renderChevronIcon, renderCode, renderDropdownMenu, renderForm, renderGrid, renderHeading, renderIcon, renderIconButton,
|
|
73
|
+
export { DialogWidget, DrawerWidget, FileFieldWidget, FormControlWidget, ModalWidget, TabsView, ToastWidget, renderAccordion, renderAlert, renderAnchor, renderAutocomplete, renderAvatar, renderBadge, renderBaselineStatus, renderBreadcrumb, renderButton, renderCard, renderCheckbox, renderCheckboxCard, renderCheckboxGroup, renderChevronIcon, renderCode, renderDropdownMenu, renderForm, renderGrid, renderHeading, renderIcon, renderIconButton, renderListBox, renderNumberField, renderPagination, renderPasswordInput, renderPopover, renderProgress, renderRadio, renderRadioCard, renderScrollLinked, renderSelect, renderSeparator, renderSkeleton, renderSlider, renderSpinner, renderStack, renderStatusIcon, renderSwitch, renderTable, renderTabs, renderTextField, renderTextarea, renderTooltip };
|
|
@@ -19,7 +19,6 @@ import { Avatar } from "../../components/data-display/avatar/avatar.mjs";
|
|
|
19
19
|
import { Badge } from "../../components/data-display/badge/badge.mjs";
|
|
20
20
|
import { BaselineStatus } from "../../components/data-display/baseline-status/baseline-status.mjs";
|
|
21
21
|
import { Card } from "../../components/data-display/card/card.mjs";
|
|
22
|
-
import { InteractiveCard } from "../../components/data-display/card/interactive-card.mjs";
|
|
23
22
|
import { Code } from "../../components/data-display/code/code.mjs";
|
|
24
23
|
import { Heading } from "../../components/data-display/heading/heading.mjs";
|
|
25
24
|
import { Table } from "../../components/data-display/table/table.mjs";
|
|
@@ -170,11 +169,20 @@ function renderSeparator(props) {
|
|
|
170
169
|
orientation: u(props.orientation)
|
|
171
170
|
});
|
|
172
171
|
}
|
|
172
|
+
const CARD_PADDING_CLASS = {
|
|
173
|
+
sm: "p-4",
|
|
174
|
+
md: "p-6",
|
|
175
|
+
lg: "p-8"
|
|
176
|
+
};
|
|
173
177
|
function renderCard(props, children) {
|
|
174
178
|
return /* @__PURE__ */ jsx(Card, {
|
|
175
179
|
appearance: u(props.appearance),
|
|
180
|
+
interactive: u(props.interactive),
|
|
176
181
|
width: u(props.width),
|
|
177
|
-
children
|
|
182
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
183
|
+
className: CARD_PADDING_CLASS[props.size ?? "md"],
|
|
184
|
+
children
|
|
185
|
+
})
|
|
178
186
|
});
|
|
179
187
|
}
|
|
180
188
|
const TabsView = ({ props }) => {
|
|
@@ -203,6 +211,7 @@ function renderStack(props, children) {
|
|
|
203
211
|
direction: u(props.direction),
|
|
204
212
|
gap: u(props.gap),
|
|
205
213
|
justify: u(props.justify),
|
|
214
|
+
padding: u(props.padding),
|
|
206
215
|
children
|
|
207
216
|
});
|
|
208
217
|
}
|
|
@@ -464,13 +473,6 @@ function renderTable(props) {
|
|
|
464
473
|
}, cellIndex)) }, rowIndex)) })
|
|
465
474
|
] });
|
|
466
475
|
}
|
|
467
|
-
function renderInteractiveCard(props, children) {
|
|
468
|
-
return /* @__PURE__ */ jsx(InteractiveCard, {
|
|
469
|
-
appearance: u(props.appearance),
|
|
470
|
-
width: u(props.width),
|
|
471
|
-
children
|
|
472
|
-
});
|
|
473
|
-
}
|
|
474
476
|
function renderForm(props, children) {
|
|
475
477
|
return /* @__PURE__ */ jsx(Form, {
|
|
476
478
|
action: u(props.action),
|
|
@@ -664,4 +666,4 @@ const FormControlWidget = ({ props }) => {
|
|
|
664
666
|
});
|
|
665
667
|
};
|
|
666
668
|
//#endregion
|
|
667
|
-
export { DialogWidget, DrawerWidget, FileFieldWidget, FormControlWidget, ModalWidget, TabsView, ToastWidget, renderAccordion, renderAlert, renderAnchor, renderAutocomplete, renderAvatar, renderBadge, renderBaselineStatus, renderBreadcrumb, renderButton, renderCard, renderCheckbox, renderCheckboxCard, renderCheckboxGroup, renderChevronIcon, renderCode, renderDropdownMenu, renderForm, renderGrid, renderHeading, renderIcon, renderIconButton,
|
|
669
|
+
export { DialogWidget, DrawerWidget, FileFieldWidget, FormControlWidget, ModalWidget, TabsView, ToastWidget, renderAccordion, renderAlert, renderAnchor, renderAutocomplete, renderAvatar, renderBadge, renderBaselineStatus, renderBreadcrumb, renderButton, renderCard, renderCheckbox, renderCheckboxCard, renderCheckboxGroup, renderChevronIcon, renderCode, renderDropdownMenu, renderForm, renderGrid, renderHeading, renderIcon, renderIconButton, renderListBox, renderNumberField, renderPagination, renderPasswordInput, renderPopover, renderProgress, renderRadio, renderRadioCard, renderScrollLinked, renderSelect, renderSeparator, renderSkeleton, renderSlider, renderSpinner, renderStack, renderStatusIcon, renderSwitch, renderTable, renderTabs, renderTextField, renderTextarea, renderTooltip };
|
|
@@ -237,9 +237,9 @@ declare const chevronIconProps: z.ZodObject<{
|
|
|
237
237
|
declare const statusIconProps: z.ZodObject<{
|
|
238
238
|
status: z.ZodEnum<{
|
|
239
239
|
success: "success";
|
|
240
|
-
error: "error";
|
|
241
240
|
info: "info";
|
|
242
241
|
warning: "warning";
|
|
242
|
+
error: "error";
|
|
243
243
|
}>;
|
|
244
244
|
size: z.ZodOptional<z.ZodEnum<{
|
|
245
245
|
sm: "sm";
|
|
@@ -251,9 +251,9 @@ declare const badgeProps: z.ZodObject<{
|
|
|
251
251
|
text: z.ZodString;
|
|
252
252
|
tone: z.ZodOptional<z.ZodEnum<{
|
|
253
253
|
success: "success";
|
|
254
|
-
error: "error";
|
|
255
254
|
info: "info";
|
|
256
255
|
warning: "warning";
|
|
256
|
+
error: "error";
|
|
257
257
|
neutral: "neutral";
|
|
258
258
|
}>>;
|
|
259
259
|
variant: z.ZodOptional<z.ZodEnum<{
|
|
@@ -320,23 +320,19 @@ declare const cardProps: z.ZodObject<{
|
|
|
320
320
|
shadow: "shadow";
|
|
321
321
|
bordered: "bordered";
|
|
322
322
|
}>>;
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
}>>;
|
|
329
|
-
appearance: z.ZodOptional<z.ZodEnum<{
|
|
330
|
-
shadow: "shadow";
|
|
331
|
-
bordered: "bordered";
|
|
323
|
+
interactive: z.ZodOptional<z.ZodBoolean>;
|
|
324
|
+
size: z.ZodOptional<z.ZodEnum<{
|
|
325
|
+
sm: "sm";
|
|
326
|
+
md: "md";
|
|
327
|
+
lg: "lg";
|
|
332
328
|
}>>;
|
|
333
329
|
}, z.core.$strip>;
|
|
334
330
|
declare const alertProps: z.ZodObject<{
|
|
335
331
|
tone: z.ZodEnum<{
|
|
336
332
|
success: "success";
|
|
337
|
-
error: "error";
|
|
338
333
|
info: "info";
|
|
339
334
|
warning: "warning";
|
|
335
|
+
error: "error";
|
|
340
336
|
}>;
|
|
341
337
|
message: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>;
|
|
342
338
|
}, z.core.$strip>;
|
|
@@ -370,9 +366,9 @@ declare const toastProps: z.ZodObject<{
|
|
|
370
366
|
triggerLabel: z.ZodString;
|
|
371
367
|
tone: z.ZodEnum<{
|
|
372
368
|
success: "success";
|
|
373
|
-
error: "error";
|
|
374
369
|
info: "info";
|
|
375
370
|
warning: "warning";
|
|
371
|
+
error: "error";
|
|
376
372
|
}>;
|
|
377
373
|
message: z.ZodString;
|
|
378
374
|
}, z.core.$strip>;
|
|
@@ -396,8 +392,15 @@ declare const stackProps: z.ZodObject<{
|
|
|
396
392
|
sm: "sm";
|
|
397
393
|
md: "md";
|
|
398
394
|
lg: "lg";
|
|
395
|
+
none: "none";
|
|
399
396
|
xl: "xl";
|
|
397
|
+
}>>;
|
|
398
|
+
padding: z.ZodOptional<z.ZodEnum<{
|
|
399
|
+
sm: "sm";
|
|
400
|
+
md: "md";
|
|
401
|
+
lg: "lg";
|
|
400
402
|
none: "none";
|
|
403
|
+
xl: "xl";
|
|
401
404
|
}>>;
|
|
402
405
|
align: z.ZodOptional<z.ZodEnum<{
|
|
403
406
|
start: "start";
|
|
@@ -419,8 +422,8 @@ declare const gridProps: z.ZodObject<{
|
|
|
419
422
|
sm: "sm";
|
|
420
423
|
md: "md";
|
|
421
424
|
lg: "lg";
|
|
422
|
-
xl: "xl";
|
|
423
425
|
none: "none";
|
|
426
|
+
xl: "xl";
|
|
424
427
|
}>>;
|
|
425
428
|
}, z.core.$strip>;
|
|
426
429
|
declare const scrollLinkedProps: z.ZodObject<{}, z.core.$strip>;
|
|
@@ -679,7 +682,6 @@ type PaginationProps = z.infer<typeof paginationProps>;
|
|
|
679
682
|
type GridProps = z.infer<typeof gridProps>;
|
|
680
683
|
type ChevronIconProps = z.infer<typeof chevronIconProps>;
|
|
681
684
|
type StatusIconProps = z.infer<typeof statusIconProps>;
|
|
682
|
-
type InteractiveCardProps = z.infer<typeof interactiveCardProps>;
|
|
683
685
|
type FormProps = z.infer<typeof formProps>;
|
|
684
686
|
type ModalProps = z.infer<typeof modalProps>;
|
|
685
687
|
type DialogProps = z.infer<typeof dialogProps>;
|
|
@@ -701,4 +703,4 @@ type CoversComponent<Component, Zod> = [Exclude<NonNullable<Component>, Zod>] ex
|
|
|
701
703
|
type AssertCovered<T extends true> = T;
|
|
702
704
|
type _EnumCoverage = [AssertCovered<CoversComponent<ComponentProps<typeof Button>['variant'], ButtonProps['variant']>>, AssertCovered<CoversComponent<ComponentProps<typeof Button>['color'], ButtonProps['color']>>, AssertCovered<CoversComponent<ComponentProps<typeof Button>['size'], ButtonProps['size']>>, AssertCovered<CoversComponent<ComponentProps<typeof Badge>['tone'], BadgeProps['tone']>>, AssertCovered<CoversComponent<ComponentProps<typeof Badge>['variant'], BadgeProps['variant']>>, AssertCovered<CoversComponent<ComponentProps<typeof Badge>['size'], BadgeProps['size']>>, AssertCovered<CoversComponent<ComponentProps<typeof Card>['width'], CardProps['width']>>, AssertCovered<CoversComponent<ComponentProps<typeof Card>['appearance'], CardProps['appearance']>>, AssertCovered<CoversComponent<ComponentProps<typeof Alert>['tone'], AlertProps['tone']>>, AssertCovered<CoversComponent<ComponentProps<typeof Separator>['orientation'], SeparatorProps['orientation']>>, AssertCovered<CoversComponent<ComponentProps<typeof Separator>['color'], SeparatorProps['color']>>, AssertCovered<CoversComponent<ComponentProps<typeof Modal>['type'], ModalProps['type']>>, AssertCovered<CoversComponent<ComponentProps<typeof Drawer>['side'], DrawerProps['side']>>, AssertCovered<CoversComponent<ComponentProps<typeof Heading>['type'], HeadingProps['level']>>, AssertCovered<CoversComponent<ComponentProps<typeof Avatar>['size'], AvatarProps['size']>>, AssertCovered<CoversComponent<ComponentProps<typeof Spinner>['size'], SpinnerProps['size']>>, AssertCovered<CoversComponent<ComponentProps<typeof Skeleton>['shape'], SkeletonProps['shape']>>, AssertCovered<CoversComponent<ComponentProps<typeof Skeleton>['size'], SkeletonProps['size']>>, AssertCovered<CoversComponent<ComponentProps<typeof IconButton>['size'], IconButtonProps['size']>>, AssertCovered<CoversComponent<ComponentProps<typeof IconButton>['color'], IconButtonProps['color']>>, AssertCovered<CoversComponent<ComponentProps<typeof ChevronIcon>['direction'], ChevronIconProps['direction']>>, AssertCovered<CoversComponent<ComponentProps<typeof AlertIcon>['status'], StatusIconProps['status']>>, AssertCovered<CoversComponent<ComponentProps<typeof Stack>['direction'], StackProps['direction']>>, AssertCovered<CoversComponent<ComponentProps<typeof Stack>['gap'], StackProps['gap']>>, AssertCovered<CoversComponent<ComponentProps<typeof Stack>['align'], StackProps['align']>>, AssertCovered<CoversComponent<ComponentProps<typeof Stack>['justify'], StackProps['justify']>>, AssertCovered<CoversComponent<ComponentProps<typeof Grid>['cols'], GridProps['cols']>>, AssertCovered<CoversComponent<ComponentProps<typeof Grid>['minItemSize'], GridProps['minItemSize']>>, AssertCovered<CoversComponent<ComponentProps<typeof Grid>['gap'], GridProps['gap']>>, AssertCovered<CoversComponent<ComponentProps<typeof Breadcrumb.List>['size'], BreadcrumbProps['size']>>];
|
|
703
705
|
//#endregion
|
|
704
|
-
export { AccordionProps, AlertProps, AnchorProps, AutocompleteProps, AvatarProps, BadgeProps, BaselineStatusProps, BreadcrumbProps, ButtonProps, CardProps, CheckboxCardProps, CheckboxGroupProps, CheckboxProps, ChevronIconProps, CodeProps, DialogProps, DrawerProps, DropdownMenuProps, FileFieldProps, FormControlProps, FormProps, GridProps, HeadingProps, IconButtonProps, IconName, IconProps,
|
|
706
|
+
export { AccordionProps, AlertProps, AnchorProps, AutocompleteProps, AvatarProps, BadgeProps, BaselineStatusProps, BreadcrumbProps, ButtonProps, CardProps, CheckboxCardProps, CheckboxGroupProps, CheckboxProps, ChevronIconProps, CodeProps, DialogProps, DrawerProps, DropdownMenuProps, FileFieldProps, FormControlProps, FormProps, GridProps, HeadingProps, IconButtonProps, IconName, IconProps, ListBoxProps, ModalProps, NumberFieldProps, PaginationProps, PasswordInputProps, PopoverProps, ProgressProps, RadioCardProps, RadioProps, ScrollLinkedProps, SelectProps, SeparatorProps, SkeletonProps, SliderProps, SpinnerProps, StackProps, StatusIconProps, SwitchProps, TableProps, TabsProps, TextFieldProps, TextareaProps, ToastProps, TooltipProps, _EnumCoverage, accordionProps, alertProps, anchorProps, autocompleteProps, avatarProps, badgeProps, baselineStatusProps, breadcrumbProps, buttonProps, cardProps, checkboxCardProps, checkboxGroupProps, checkboxProps, chevronIconProps, codeProps, dialogProps, drawerProps, dropdownMenuProps, fileFieldProps, formControlProps, formProps, gridProps, headingProps, iconButtonProps, iconName, iconProps, listBoxProps, modalProps, numberFieldProps, paginationProps, passwordInputProps, popoverProps, progressProps, radioCardProps, radioProps, scrollLinkedProps, selectProps, separatorProps, skeletonProps, sliderProps, spinnerProps, stackProps, statusIconProps, switchProps, tableProps, tabsProps, textFieldProps, textareaProps, toastProps, tooltipProps };
|
|
@@ -212,9 +212,14 @@ const tableProps = z.object({
|
|
|
212
212
|
});
|
|
213
213
|
const cardProps = z.object({
|
|
214
214
|
width: z.enum(["full", "fit"]).optional(),
|
|
215
|
-
appearance: z.enum(["shadow", "bordered"]).optional()
|
|
215
|
+
appearance: z.enum(["shadow", "bordered"]).optional(),
|
|
216
|
+
interactive: z.boolean().optional(),
|
|
217
|
+
size: z.enum([
|
|
218
|
+
"sm",
|
|
219
|
+
"md",
|
|
220
|
+
"lg"
|
|
221
|
+
]).optional()
|
|
216
222
|
});
|
|
217
|
-
const interactiveCardProps = cardProps;
|
|
218
223
|
const alertProps = z.object({
|
|
219
224
|
tone: z.enum([
|
|
220
225
|
"success",
|
|
@@ -274,6 +279,13 @@ const stackProps = z.object({
|
|
|
274
279
|
"lg",
|
|
275
280
|
"xl"
|
|
276
281
|
]).optional(),
|
|
282
|
+
padding: z.enum([
|
|
283
|
+
"none",
|
|
284
|
+
"sm",
|
|
285
|
+
"md",
|
|
286
|
+
"lg",
|
|
287
|
+
"xl"
|
|
288
|
+
]).optional(),
|
|
277
289
|
align: z.enum([
|
|
278
290
|
"start",
|
|
279
291
|
"center",
|
|
@@ -493,4 +505,4 @@ const dropdownMenuProps = z.object({
|
|
|
493
505
|
items: z.array(z.object({ label: z.string() })).min(1).describe("メニュー項目")
|
|
494
506
|
});
|
|
495
507
|
//#endregion
|
|
496
|
-
export { accordionProps, alertProps, anchorProps, autocompleteProps, avatarProps, badgeProps, baselineStatusProps, breadcrumbProps, buttonProps, cardProps, checkboxCardProps, checkboxGroupProps, checkboxProps, chevronIconProps, codeProps, dialogProps, drawerProps, dropdownMenuProps, fileFieldProps, formControlProps, formProps, gridProps, headingProps, iconButtonProps, iconName, iconProps,
|
|
508
|
+
export { accordionProps, alertProps, anchorProps, autocompleteProps, avatarProps, badgeProps, baselineStatusProps, breadcrumbProps, buttonProps, cardProps, checkboxCardProps, checkboxGroupProps, checkboxProps, chevronIconProps, codeProps, dialogProps, drawerProps, dropdownMenuProps, fileFieldProps, formControlProps, formProps, gridProps, headingProps, iconButtonProps, iconName, iconProps, listBoxProps, modalProps, numberFieldProps, paginationProps, passwordInputProps, popoverProps, progressProps, radioCardProps, radioProps, scrollLinkedProps, selectProps, separatorProps, skeletonProps, sliderProps, spinnerProps, stackProps, statusIconProps, switchProps, tableProps, tabsProps, textFieldProps, textareaProps, toastProps, tooltipProps };
|
|
@@ -42,8 +42,15 @@ declare const catalog: import("@json-render/core").Catalog<{
|
|
|
42
42
|
sm: "sm";
|
|
43
43
|
md: "md";
|
|
44
44
|
lg: "lg";
|
|
45
|
+
none: "none";
|
|
45
46
|
xl: "xl";
|
|
47
|
+
}>>;
|
|
48
|
+
padding: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
49
|
+
sm: "sm";
|
|
50
|
+
md: "md";
|
|
51
|
+
lg: "lg";
|
|
46
52
|
none: "none";
|
|
53
|
+
xl: "xl";
|
|
47
54
|
}>>;
|
|
48
55
|
align: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
49
56
|
start: "start";
|
|
@@ -69,8 +76,8 @@ declare const catalog: import("@json-render/core").Catalog<{
|
|
|
69
76
|
sm: "sm";
|
|
70
77
|
md: "md";
|
|
71
78
|
lg: "lg";
|
|
72
|
-
xl: "xl";
|
|
73
79
|
none: "none";
|
|
80
|
+
xl: "xl";
|
|
74
81
|
}>>;
|
|
75
82
|
}, import("zod/v4/core").$strip>;
|
|
76
83
|
slots: string[];
|
|
@@ -109,6 +116,12 @@ declare const catalog: import("@json-render/core").Catalog<{
|
|
|
109
116
|
shadow: "shadow";
|
|
110
117
|
bordered: "bordered";
|
|
111
118
|
}>>;
|
|
119
|
+
interactive: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
120
|
+
size: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
121
|
+
sm: "sm";
|
|
122
|
+
md: "md";
|
|
123
|
+
lg: "lg";
|
|
124
|
+
}>>;
|
|
112
125
|
}, import("zod/v4/core").$strip>;
|
|
113
126
|
slots: string[];
|
|
114
127
|
description: string;
|
|
@@ -118,9 +131,9 @@ declare const catalog: import("@json-render/core").Catalog<{
|
|
|
118
131
|
text: import("zod").ZodString;
|
|
119
132
|
tone: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
120
133
|
success: "success";
|
|
121
|
-
error: "error";
|
|
122
134
|
info: "info";
|
|
123
135
|
warning: "warning";
|
|
136
|
+
error: "error";
|
|
124
137
|
neutral: "neutral";
|
|
125
138
|
}>>;
|
|
126
139
|
variant: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
@@ -154,9 +167,9 @@ declare const catalog: import("@json-render/core").Catalog<{
|
|
|
154
167
|
props: import("zod").ZodObject<{
|
|
155
168
|
tone: import("zod").ZodEnum<{
|
|
156
169
|
success: "success";
|
|
157
|
-
error: "error";
|
|
158
170
|
info: "info";
|
|
159
171
|
warning: "warning";
|
|
172
|
+
error: "error";
|
|
160
173
|
}>;
|
|
161
174
|
message: import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodArray<import("zod").ZodString>]>;
|
|
162
175
|
}, import("zod/v4/core").$strip>;
|
|
@@ -417,9 +430,9 @@ declare const catalog: import("@json-render/core").Catalog<{
|
|
|
417
430
|
props: import("zod").ZodObject<{
|
|
418
431
|
status: import("zod").ZodEnum<{
|
|
419
432
|
success: "success";
|
|
420
|
-
error: "error";
|
|
421
433
|
info: "info";
|
|
422
434
|
warning: "warning";
|
|
435
|
+
error: "error";
|
|
423
436
|
}>;
|
|
424
437
|
size: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
425
438
|
sm: "sm";
|
|
@@ -600,20 +613,6 @@ declare const catalog: import("@json-render/core").Catalog<{
|
|
|
600
613
|
}, import("zod/v4/core").$strip>;
|
|
601
614
|
description: string;
|
|
602
615
|
};
|
|
603
|
-
InteractiveCard: {
|
|
604
|
-
props: import("zod").ZodObject<{
|
|
605
|
-
width: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
606
|
-
full: "full";
|
|
607
|
-
fit: "fit";
|
|
608
|
-
}>>;
|
|
609
|
-
appearance: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
610
|
-
shadow: "shadow";
|
|
611
|
-
bordered: "bordered";
|
|
612
|
-
}>>;
|
|
613
|
-
}, import("zod/v4/core").$strip>;
|
|
614
|
-
slots: string[];
|
|
615
|
-
description: string;
|
|
616
|
-
};
|
|
617
616
|
Form: {
|
|
618
617
|
props: import("zod").ZodObject<{
|
|
619
618
|
action: import("zod").ZodOptional<import("zod").ZodString>;
|
|
@@ -683,9 +682,9 @@ declare const catalog: import("@json-render/core").Catalog<{
|
|
|
683
682
|
triggerLabel: import("zod").ZodString;
|
|
684
683
|
tone: import("zod").ZodEnum<{
|
|
685
684
|
success: "success";
|
|
686
|
-
error: "error";
|
|
687
685
|
info: "info";
|
|
688
686
|
warning: "warning";
|
|
687
|
+
error: "error";
|
|
689
688
|
}>;
|
|
690
689
|
message: import("zod").ZodString;
|
|
691
690
|
}, import("zod/v4/core").$strip>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { accordionProps, alertProps, anchorProps, autocompleteProps, avatarProps, badgeProps, baselineStatusProps, breadcrumbProps, buttonProps, cardProps, checkboxCardProps, checkboxGroupProps, checkboxProps, chevronIconProps, codeProps, dialogProps, drawerProps, dropdownMenuProps, fileFieldProps, formControlProps, formProps, gridProps, headingProps, iconButtonProps, iconProps,
|
|
1
|
+
import { accordionProps, alertProps, anchorProps, autocompleteProps, avatarProps, badgeProps, baselineStatusProps, breadcrumbProps, buttonProps, cardProps, checkboxCardProps, checkboxGroupProps, checkboxProps, chevronIconProps, codeProps, dialogProps, drawerProps, dropdownMenuProps, fileFieldProps, formControlProps, formProps, gridProps, headingProps, iconButtonProps, iconProps, listBoxProps, modalProps, numberFieldProps, paginationProps, passwordInputProps, popoverProps, progressProps, radioCardProps, radioProps, scrollLinkedProps, selectProps, separatorProps, skeletonProps, sliderProps, spinnerProps, stackProps, statusIconProps, switchProps, tableProps, tabsProps, textFieldProps, textareaProps, toastProps, tooltipProps } from "../_shared/schemas.mjs";
|
|
2
2
|
import { defineCatalog } from "@json-render/core";
|
|
3
3
|
import { schema } from "@json-render/react/schema";
|
|
4
4
|
//#region src/integrations/json-render/catalog.ts
|
|
@@ -16,7 +16,7 @@ const catalog = defineCatalog(schema, {
|
|
|
16
16
|
Stack: {
|
|
17
17
|
props: stackProps,
|
|
18
18
|
slots: ["default"],
|
|
19
|
-
description: "子要素を縦/横に等間隔で並べるレイアウトコンテナ。"
|
|
19
|
+
description: "子要素を縦/横に等間隔で並べるレイアウトコンテナ。gap で子要素間の間隔、padding(none〜xl)で内側の余白を付ける。セクションに余白が欲しいときは padding を指定する。"
|
|
20
20
|
},
|
|
21
21
|
Grid: {
|
|
22
22
|
props: gridProps,
|
|
@@ -30,7 +30,7 @@ const catalog = defineCatalog(schema, {
|
|
|
30
30
|
Card: {
|
|
31
31
|
props: cardProps,
|
|
32
32
|
slots: ["default"],
|
|
33
|
-
description: "
|
|
33
|
+
description: "コンテンツをまとめるカード(コンテナ)。内側 padding は size(sm/md/lg、デフォルト md)で決まる。中身を Stack で囲む場合に重ねて padding を指定する必要はない。interactive を付けるとホバー時にスケールする。"
|
|
34
34
|
},
|
|
35
35
|
Badge: {
|
|
36
36
|
props: badgeProps,
|
|
@@ -152,11 +152,6 @@ const catalog = defineCatalog(schema, {
|
|
|
152
152
|
props: paginationProps,
|
|
153
153
|
description: "ページネーション。defaultPage を $bindState で束縛できる。"
|
|
154
154
|
},
|
|
155
|
-
InteractiveCard: {
|
|
156
|
-
props: interactiveCardProps,
|
|
157
|
-
slots: ["default"],
|
|
158
|
-
description: "ホバーアニメーション付きのカード。"
|
|
159
|
-
},
|
|
160
155
|
Form: {
|
|
161
156
|
props: formProps,
|
|
162
157
|
slots: ["default"],
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { DialogWidget, DrawerWidget, FileFieldWidget, FormControlWidget, ModalWidget, ToastWidget, renderAccordion, renderAlert, renderAnchor, renderAutocomplete, renderAvatar, renderBadge, renderBaselineStatus, renderBreadcrumb, renderButton, renderCard, renderCheckbox, renderCheckboxCard, renderCheckboxGroup, renderChevronIcon, renderCode, renderDropdownMenu, renderForm, renderGrid, renderHeading, renderIcon, renderIconButton,
|
|
2
|
+
import { DialogWidget, DrawerWidget, FileFieldWidget, FormControlWidget, ModalWidget, ToastWidget, renderAccordion, renderAlert, renderAnchor, renderAutocomplete, renderAvatar, renderBadge, renderBaselineStatus, renderBreadcrumb, renderButton, renderCard, renderCheckbox, renderCheckboxCard, renderCheckboxGroup, renderChevronIcon, renderCode, renderDropdownMenu, renderForm, renderGrid, renderHeading, renderIcon, renderIconButton, renderListBox, renderNumberField, renderPagination, renderPasswordInput, renderPopover, renderProgress, renderRadio, renderRadioCard, renderScrollLinked, renderSelect, renderSeparator, renderSkeleton, renderSlider, renderSpinner, renderStack, renderStatusIcon, renderSwitch, renderTable, renderTabs, renderTextField, renderTextarea, renderTooltip } from "../_shared/renderers.mjs";
|
|
3
3
|
import { catalog } from "./catalog.mjs";
|
|
4
4
|
import { useState } from "react";
|
|
5
5
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -89,7 +89,6 @@ const { registry } = defineRegistry(catalog, { components: {
|
|
|
89
89
|
const [page, setPage] = useBoundOrLocal(props.defaultPage, bindings?.defaultPage, 1);
|
|
90
90
|
return renderPagination(props, page, setPage);
|
|
91
91
|
},
|
|
92
|
-
InteractiveCard: ({ props, children }) => renderInteractiveCard(props, children),
|
|
93
92
|
Form: ({ props, children }) => renderForm(props, children),
|
|
94
93
|
Modal: ({ props, children }) => /* @__PURE__ */ jsx(ModalWidget, {
|
|
95
94
|
props,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { DialogWidget, DrawerWidget, FileFieldWidget, FormControlWidget, ModalWidget, ToastWidget, renderAccordion, renderAlert, renderAnchor, renderAvatar, renderBadge, renderBaselineStatus, renderBreadcrumb, renderButton, renderCard, renderChevronIcon, renderCode, renderDropdownMenu, renderForm, renderGrid, renderHeading, renderIcon, renderIconButton,
|
|
3
|
-
import { accordionProps, alertProps, anchorProps, autocompleteProps, avatarProps, badgeProps, baselineStatusProps, breadcrumbProps, buttonProps, cardProps, checkboxCardProps, checkboxGroupProps, checkboxProps, chevronIconProps, codeProps, dialogProps, drawerProps, dropdownMenuProps, fileFieldProps, formControlProps, formProps, gridProps, headingProps, iconButtonProps, iconProps,
|
|
2
|
+
import { DialogWidget, DrawerWidget, FileFieldWidget, FormControlWidget, ModalWidget, ToastWidget, renderAccordion, renderAlert, renderAnchor, renderAvatar, renderBadge, renderBaselineStatus, renderBreadcrumb, renderButton, renderCard, renderChevronIcon, renderCode, renderDropdownMenu, renderForm, renderGrid, renderHeading, renderIcon, renderIconButton, renderPopover, renderProgress, renderScrollLinked, renderSeparator, renderSkeleton, renderSpinner, renderStack, renderStatusIcon, renderTable, renderTabs, renderTooltip } from "../_shared/renderers.mjs";
|
|
3
|
+
import { accordionProps, alertProps, anchorProps, autocompleteProps, avatarProps, badgeProps, baselineStatusProps, breadcrumbProps, buttonProps, cardProps, checkboxCardProps, checkboxGroupProps, checkboxProps, chevronIconProps, codeProps, dialogProps, drawerProps, dropdownMenuProps, fileFieldProps, formControlProps, formProps, gridProps, headingProps, iconButtonProps, iconProps, listBoxProps, modalProps, numberFieldProps, paginationProps, passwordInputProps, popoverProps, progressProps, radioCardProps, radioProps, scrollLinkedProps, selectProps, separatorProps, skeletonProps, sliderProps, spinnerProps, stackProps, statusIconProps, switchProps, tableProps, tabsProps, textFieldProps, textareaProps, toastProps, tooltipProps } from "../_shared/schemas.mjs";
|
|
4
4
|
import { AutocompleteView, CheckboxCardView, CheckboxGroupView, CheckboxView, ListBoxView, NumberFieldView, PaginationView, PasswordInputView, RadioCardView, RadioView, SelectView, SliderView, SwitchView, TextFieldView, TextareaView } from "./form-views.mjs";
|
|
5
5
|
import { Fragment } from "react";
|
|
6
6
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -335,16 +335,10 @@ const library = createLibrary({
|
|
|
335
335
|
Grid,
|
|
336
336
|
defineComponent({
|
|
337
337
|
name: "Card",
|
|
338
|
-
description: "コンテンツをまとめるカード(コンテナ)。Stack も入れられる。",
|
|
338
|
+
description: "コンテンツをまとめるカード(コンテナ)。Stack も入れられる。interactive を付けるとホバー時にスケールする。",
|
|
339
339
|
props: cardProps.extend({ children: z.array(z.union(containerChildRefs)).describe("カード内の子要素") }),
|
|
340
340
|
component: ({ props, renderNode }) => renderCard(props, renderChildren(props.children, renderNode))
|
|
341
341
|
}),
|
|
342
|
-
defineComponent({
|
|
343
|
-
name: "InteractiveCard",
|
|
344
|
-
description: "ホバーアニメーション付きのカード。",
|
|
345
|
-
props: interactiveCardProps.extend({ children: z.array(z.union(containerChildRefs)).describe("カード内の子要素") }),
|
|
346
|
-
component: ({ props, renderNode }) => renderInteractiveCard(props, renderChildren(props.children, renderNode))
|
|
347
|
-
}),
|
|
348
342
|
defineComponent({
|
|
349
343
|
name: "Form",
|
|
350
344
|
description: "フォーム要素のラッパー(縦並びレイアウト)。",
|
package/dist/styles/index.css
CHANGED
|
@@ -16,3 +16,7 @@
|
|
|
16
16
|
@import './tokens.css';
|
|
17
17
|
@import './utilities.css';
|
|
18
18
|
@source '../components';
|
|
19
|
+
/* The json-render / openui integrations' renderers emit utility classes too
|
|
20
|
+
(e.g. card padding), so they must be scanned alongside components — else a
|
|
21
|
+
class only used in a renderer (not in any component) is never generated. */
|
|
22
|
+
@source '../integrations';
|
package/dist/styles/tokens.css
CHANGED
|
@@ -208,8 +208,8 @@
|
|
|
208
208
|
|
|
209
209
|
--bg-base: var(--gray-800);
|
|
210
210
|
--bg-raised: var(--gray-700);
|
|
211
|
-
--bg-surface: var(--gray-
|
|
212
|
-
--bg-subtle: var(--gray-
|
|
211
|
+
--bg-surface: var(--gray-950);
|
|
212
|
+
--bg-subtle: var(--gray-900);
|
|
213
213
|
--bg-mute: var(--gray-700);
|
|
214
214
|
--bg-emphasize: var(--gray-600);
|
|
215
215
|
--bg-inverse: var(--white);
|
|
@@ -70,11 +70,11 @@ declare const tokens: {
|
|
|
70
70
|
};
|
|
71
71
|
readonly 'bg-surface': {
|
|
72
72
|
readonly light: "oklch(0.975 0.001 235)";
|
|
73
|
-
readonly dark: "oklch(0.
|
|
73
|
+
readonly dark: "oklch(0.18 0.001 235)";
|
|
74
74
|
};
|
|
75
75
|
readonly 'bg-subtle': {
|
|
76
76
|
readonly light: "oklch(0.945 0.0015 235)";
|
|
77
|
-
readonly dark: "oklch(0.
|
|
77
|
+
readonly dark: "oklch(0.25 0.0015 235)";
|
|
78
78
|
};
|
|
79
79
|
readonly 'bg-mute': {
|
|
80
80
|
readonly light: "oklch(0.9 0.003 235)";
|
|
@@ -498,11 +498,11 @@ declare const tokens: {
|
|
|
498
498
|
};
|
|
499
499
|
readonly 'bg-surface': {
|
|
500
500
|
readonly light: "oklch(0.975 0.001 235)";
|
|
501
|
-
readonly dark: "oklch(0.
|
|
501
|
+
readonly dark: "oklch(0.18 0.001 235)";
|
|
502
502
|
};
|
|
503
503
|
readonly 'bg-subtle': {
|
|
504
504
|
readonly light: "oklch(0.945 0.0015 235)";
|
|
505
|
-
readonly dark: "oklch(0.
|
|
505
|
+
readonly dark: "oklch(0.25 0.0015 235)";
|
|
506
506
|
};
|
|
507
507
|
readonly 'bg-mute': {
|
|
508
508
|
readonly light: "oklch(0.9 0.003 235)";
|
|
@@ -671,11 +671,11 @@ declare const tokens: {
|
|
|
671
671
|
};
|
|
672
672
|
readonly 'bg-surface': {
|
|
673
673
|
readonly light: "gray-50";
|
|
674
|
-
readonly dark: "gray-
|
|
674
|
+
readonly dark: "gray-950";
|
|
675
675
|
};
|
|
676
676
|
readonly 'bg-subtle': {
|
|
677
677
|
readonly light: "gray-100";
|
|
678
|
-
readonly dark: "gray-
|
|
678
|
+
readonly dark: "gray-900";
|
|
679
679
|
};
|
|
680
680
|
readonly 'bg-mute': {
|
|
681
681
|
readonly light: "gray-200";
|
|
@@ -68,11 +68,11 @@ const tokens = {
|
|
|
68
68
|
},
|
|
69
69
|
"bg-surface": {
|
|
70
70
|
light: "oklch(0.975 0.001 235)",
|
|
71
|
-
dark: "oklch(0.
|
|
71
|
+
dark: "oklch(0.18 0.001 235)"
|
|
72
72
|
},
|
|
73
73
|
"bg-subtle": {
|
|
74
74
|
light: "oklch(0.945 0.0015 235)",
|
|
75
|
-
dark: "oklch(0.
|
|
75
|
+
dark: "oklch(0.25 0.0015 235)"
|
|
76
76
|
},
|
|
77
77
|
"bg-mute": {
|
|
78
78
|
light: "oklch(0.9 0.003 235)",
|
|
@@ -494,11 +494,11 @@ const tokens = {
|
|
|
494
494
|
},
|
|
495
495
|
"bg-surface": {
|
|
496
496
|
light: "oklch(0.975 0.001 235)",
|
|
497
|
-
dark: "oklch(0.
|
|
497
|
+
dark: "oklch(0.18 0.001 235)"
|
|
498
498
|
},
|
|
499
499
|
"bg-subtle": {
|
|
500
500
|
light: "oklch(0.945 0.0015 235)",
|
|
501
|
-
dark: "oklch(0.
|
|
501
|
+
dark: "oklch(0.25 0.0015 235)"
|
|
502
502
|
},
|
|
503
503
|
"bg-mute": {
|
|
504
504
|
light: "oklch(0.9 0.003 235)",
|
|
@@ -667,11 +667,11 @@ const tokens = {
|
|
|
667
667
|
},
|
|
668
668
|
"bg-surface": {
|
|
669
669
|
light: "gray-50",
|
|
670
|
-
dark: "gray-
|
|
670
|
+
dark: "gray-950"
|
|
671
671
|
},
|
|
672
672
|
"bg-subtle": {
|
|
673
673
|
light: "gray-100",
|
|
674
|
-
dark: "gray-
|
|
674
|
+
dark: "gray-900"
|
|
675
675
|
},
|
|
676
676
|
"bg-mute": {
|
|
677
677
|
light: "gray-200",
|
package/docs/GUIDE.md
CHANGED
|
@@ -188,22 +188,22 @@ import { IconButton } from '@k8o/arte-odyssey';
|
|
|
188
188
|
</IconButton>
|
|
189
189
|
```
|
|
190
190
|
|
|
191
|
-
### Card
|
|
191
|
+
### Card
|
|
192
192
|
|
|
193
193
|
シャドウで浮かせるのが基本。ページ背景 `bg-subtle` の上に白カード。
|
|
194
194
|
|
|
195
195
|
```tsx
|
|
196
|
-
import { Card
|
|
196
|
+
import { Card } from '@k8o/arte-odyssey';
|
|
197
197
|
|
|
198
198
|
// 静的カード(シャドウで浮かせる)
|
|
199
199
|
<Card appearance="shadow">
|
|
200
200
|
<div className="p-8">カードのコンテンツ</div>
|
|
201
201
|
</Card>
|
|
202
202
|
|
|
203
|
-
//
|
|
204
|
-
<
|
|
203
|
+
// クリック可能なカード(interactive でホバー時にスケールアップ)
|
|
204
|
+
<Card appearance="shadow" interactive>
|
|
205
205
|
<div className="p-8">コンテンツ</div>
|
|
206
|
-
</
|
|
206
|
+
</Card>
|
|
207
207
|
```
|
|
208
208
|
|
|
209
209
|
### フォーム
|
|
@@ -185,29 +185,29 @@ Props (Tabs.Root):
|
|
|
185
185
|
- `ids`: `[string, ...string[]]`(必須)
|
|
186
186
|
- `defaultSelectedId`: string | null
|
|
187
187
|
|
|
188
|
-
### Card
|
|
188
|
+
### Card
|
|
189
189
|
|
|
190
190
|
コンテンツをグループ化するカード。
|
|
191
191
|
|
|
192
192
|
```tsx
|
|
193
|
-
import { Card
|
|
193
|
+
import { Card } from '@k8o/arte-odyssey';
|
|
194
194
|
|
|
195
195
|
// 静的カード
|
|
196
|
-
<Card
|
|
196
|
+
<Card width="full" appearance="shadow">
|
|
197
197
|
<div className="p-6">コンテンツ</div>
|
|
198
198
|
</Card>
|
|
199
199
|
|
|
200
200
|
// クリック可能なカード(hover:scale-[1.02], active:scale-[0.98])
|
|
201
|
-
<
|
|
201
|
+
<Card appearance="bordered" interactive>
|
|
202
202
|
<div className="p-6">コンテンツ</div>
|
|
203
|
-
</
|
|
203
|
+
</Card>
|
|
204
204
|
```
|
|
205
205
|
|
|
206
206
|
Props:
|
|
207
207
|
|
|
208
|
-
- `variant`: `'primary'` | `'secondary'`
|
|
209
208
|
- `width`: `'full'` | `'fit'`
|
|
210
209
|
- `appearance`: `'shadow'` | `'bordered'`
|
|
210
|
+
- `interactive`: boolean
|
|
211
211
|
|
|
212
212
|
### Separator
|
|
213
213
|
|
package/package.json
CHANGED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { cn } from "../../../helpers/cn.mjs";
|
|
2
|
-
import { jsx } from "react/jsx-runtime";
|
|
3
|
-
//#region src/components/data-display/card/interactive-card.tsx
|
|
4
|
-
const InteractiveCard = ({ children, width = "full", appearance = "shadow", ...rest }) => /* @__PURE__ */ jsx("div", {
|
|
5
|
-
...rest,
|
|
6
|
-
className: cn("rounded-xl transition-transform hover:scale-[1.02] active:scale-[0.98]", appearance === "shadow" && "shadow-sm border border-transparent dark:border-border-subtle", appearance === "bordered" && "border border-border-mute", width === "full" && "w-full", width === "fit" && "w-fit", "bg-bg-base"),
|
|
7
|
-
children
|
|
8
|
-
});
|
|
9
|
-
//#endregion
|
|
10
|
-
export { InteractiveCard };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { HTMLAttributes } from "react";
|
|
2
|
-
|
|
3
|
-
//#region src/components/data-display/card/type.d.ts
|
|
4
|
-
type CardProps = {
|
|
5
|
-
width?: 'full' | 'fit';
|
|
6
|
-
appearance?: 'shadow' | 'bordered';
|
|
7
|
-
} & Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'style'>;
|
|
8
|
-
//#endregion
|
|
9
|
-
export { CardProps };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|