@tosui/react 0.1.1 → 0.1.2
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/dist/components/Accordion/Accordion.d.ts.map +1 -1
- package/dist/components/Accordion/Accordion.js +109 -0
- package/dist/components/Accordion/Accordion.js.map +1 -0
- package/dist/components/Accordion/accordion.module.css +36 -0
- package/dist/components/Accordion/accordion.module.css.js +27 -0
- package/dist/components/Accordion/accordion.module.css.js.map +1 -0
- package/dist/components/Alert/Alert.js +109 -0
- package/dist/components/Alert/Alert.js.map +1 -0
- package/dist/components/Alert/alert.module.css +27 -0
- package/dist/components/Alert/alert.module.css.js +24 -0
- package/dist/components/Alert/alert.module.css.js.map +1 -0
- package/dist/components/Avatar/Avatar.d.ts.map +1 -1
- package/dist/components/Avatar/Avatar.js +72 -0
- package/dist/components/Avatar/Avatar.js.map +1 -0
- package/dist/components/Avatar/avatar.module.css +14 -0
- package/dist/components/Avatar/avatar.module.css.js +15 -0
- package/dist/components/Avatar/avatar.module.css.js.map +1 -0
- package/dist/components/Badge/Badge.js +66 -0
- package/dist/components/Badge/Badge.js.map +1 -0
- package/dist/components/Badge/badge.module.css +3 -0
- package/dist/components/Badge/badge.module.css.js +9 -0
- package/dist/components/Badge/badge.module.css.js.map +1 -0
- package/dist/components/Box/Box.js +217 -0
- package/dist/components/Box/Box.js.map +1 -0
- package/dist/components/Box/borders/borders.js +91 -0
- package/dist/components/Box/borders/borders.js.map +1 -0
- package/dist/components/Box/borders/borders.module.css +49 -0
- package/dist/components/Box/borders/borders.module.css.js +46 -0
- package/dist/components/Box/borders/borders.module.css.js.map +1 -0
- package/dist/components/Box/colors/colors.js +45 -0
- package/dist/components/Box/colors/colors.js.map +1 -0
- package/dist/components/Box/colors/colors.module.css +113 -0
- package/dist/components/Box/colors/colors.module.css.js +114 -0
- package/dist/components/Box/colors/colors.module.css.js.map +1 -0
- package/dist/components/Box/display/display.js +52 -0
- package/dist/components/Box/display/display.js.map +1 -0
- package/dist/components/Box/display/display.module.css +375 -0
- package/dist/components/Box/display/display.module.css.js +318 -0
- package/dist/components/Box/display/display.module.css.js.map +1 -0
- package/dist/components/Box/flexbox/flexbox.js +139 -0
- package/dist/components/Box/flexbox/flexbox.js.map +1 -0
- package/dist/components/Box/flexbox/flexbox.module.css +65 -0
- package/dist/components/Box/flexbox/flexbox.module.css.js +62 -0
- package/dist/components/Box/flexbox/flexbox.module.css.js.map +1 -0
- package/dist/components/Box/grid/grid.js +49 -0
- package/dist/components/Box/grid/grid.js.map +1 -0
- package/dist/components/Box/grid/grid.module.css +19 -0
- package/dist/components/Box/grid/grid.module.css.js +20 -0
- package/dist/components/Box/grid/grid.module.css.js.map +1 -0
- package/dist/components/Box/inset/inset.js +96 -0
- package/dist/components/Box/inset/inset.js.map +1 -0
- package/dist/components/Box/inset/inset.module.css +187 -0
- package/dist/components/Box/inset/inset.module.css.js +174 -0
- package/dist/components/Box/inset/inset.module.css.js.map +1 -0
- package/dist/components/Box/interactions/interactions.js +45 -0
- package/dist/components/Box/interactions/interactions.js.map +1 -0
- package/dist/components/Box/interactions/interactions.module.css +43 -0
- package/dist/components/Box/interactions/interactions.module.css.js +44 -0
- package/dist/components/Box/interactions/interactions.module.css.js.map +1 -0
- package/dist/components/Box/margin/margin.js +96 -0
- package/dist/components/Box/margin/margin.js.map +1 -0
- package/dist/components/Box/margin/margin.module.css +187 -0
- package/dist/components/Box/margin/margin.module.css.js +174 -0
- package/dist/components/Box/margin/margin.module.css.js.map +1 -0
- package/dist/components/Box/opacity/opacity.js +52 -0
- package/dist/components/Box/opacity/opacity.js.map +1 -0
- package/dist/components/Box/opacity/opacity.module.css +51 -0
- package/dist/components/Box/opacity/opacity.module.css.js +174 -0
- package/dist/components/Box/opacity/opacity.module.css.js.map +1 -0
- package/dist/components/Box/overflow/overflow.js +69 -0
- package/dist/components/Box/overflow/overflow.js.map +1 -0
- package/dist/components/Box/overflow/overflow.module.css +155 -0
- package/dist/components/Box/overflow/overflow.module.css.js +510 -0
- package/dist/components/Box/overflow/overflow.module.css.js.map +1 -0
- package/dist/components/Box/padding/padding.js +96 -0
- package/dist/components/Box/padding/padding.js.map +1 -0
- package/dist/components/Box/padding/padding.module.css +187 -0
- package/dist/components/Box/padding/padding.module.css.js +174 -0
- package/dist/components/Box/padding/padding.module.css.js.map +1 -0
- package/dist/components/Box/position/position.js +52 -0
- package/dist/components/Box/position/position.js.map +1 -0
- package/dist/components/Box/position/position.module.css +234 -0
- package/dist/components/Box/position/position.module.css.js +214 -0
- package/dist/components/Box/position/position.module.css.js.map +1 -0
- package/dist/components/Box/reset/reset.js +6 -0
- package/dist/components/Box/reset/reset.js.map +1 -0
- package/dist/components/Box/reset/reset.module.css +23 -0
- package/dist/components/Box/reset/reset.module.css.js +9 -0
- package/dist/components/Box/reset/reset.module.css.js.map +1 -0
- package/dist/components/Box/roundness/roundness.js +92 -0
- package/dist/components/Box/roundness/roundness.js.map +1 -0
- package/dist/components/Box/roundness/roundness.module.css +47 -0
- package/dist/components/Box/roundness/roundness.module.css.js +46 -0
- package/dist/components/Box/roundness/roundness.module.css.js.map +1 -0
- package/dist/components/Box/shadows/shadows.js +52 -0
- package/dist/components/Box/shadows/shadows.js.map +1 -0
- package/dist/components/Box/shadows/shadows.module.css +51 -0
- package/dist/components/Box/shadows/shadows.module.css.js +174 -0
- package/dist/components/Box/shadows/shadows.module.css.js.map +1 -0
- package/dist/components/Box/shared/constants.js +21 -0
- package/dist/components/Box/shared/constants.js.map +1 -0
- package/dist/components/Box/shared/spacing.js +10 -0
- package/dist/components/Box/shared/spacing.js.map +1 -0
- package/dist/components/Box/sizing/sizing.js +75 -0
- package/dist/components/Box/sizing/sizing.js.map +1 -0
- package/dist/components/Box/sizing/sizing.module.css +281 -0
- package/dist/components/Box/sizing/sizing.module.css.js +258 -0
- package/dist/components/Box/sizing/sizing.module.css.js.map +1 -0
- package/dist/components/Box/text/text.js +45 -0
- package/dist/components/Box/text/text.js.map +1 -0
- package/dist/components/Box/text/text.module.css +29 -0
- package/dist/components/Box/text/text.module.css.js +30 -0
- package/dist/components/Box/text/text.module.css.js.map +1 -0
- package/dist/components/Box/typography/typography.js +27 -0
- package/dist/components/Box/typography/typography.js.map +1 -0
- package/dist/components/Box/typography/typography.module.css +26 -0
- package/dist/components/Box/typography/typography.module.css.js +25 -0
- package/dist/components/Box/typography/typography.module.css.js.map +1 -0
- package/dist/components/Box/zIndex/zIndex.js +52 -0
- package/dist/components/Box/zIndex/zIndex.js.map +1 -0
- package/dist/components/Box/zIndex/zIndex.module.css +90 -0
- package/dist/components/Box/zIndex/zIndex.module.css.js +300 -0
- package/dist/components/Box/zIndex/zIndex.module.css.js.map +1 -0
- package/dist/components/Breadcrumb/Breadcrumb.js +78 -0
- package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -0
- package/dist/components/Breadcrumb/breadcrumb.module.css +25 -0
- package/dist/components/Breadcrumb/breadcrumb.module.css.js +21 -0
- package/dist/components/Breadcrumb/breadcrumb.module.css.js.map +1 -0
- package/dist/components/Button/Button.js +129 -0
- package/dist/components/Button/Button.js.map +1 -0
- package/dist/components/Button/button.module.css +17 -0
- package/dist/components/Button/button.module.css.js +18 -0
- package/dist/components/Button/button.module.css.js.map +1 -0
- package/dist/components/Card/Card.js +60 -0
- package/dist/components/Card/Card.js.map +1 -0
- package/dist/components/Card/card.module.css +16 -0
- package/dist/components/Card/card.module.css.js +18 -0
- package/dist/components/Card/card.module.css.js.map +1 -0
- package/dist/components/Checkbox/Checkbox.js +74 -0
- package/dist/components/Checkbox/Checkbox.js.map +1 -0
- package/dist/components/Checkbox/checkbox.module.css +65 -0
- package/dist/components/Checkbox/checkbox.module.css.js +15 -0
- package/dist/components/Checkbox/checkbox.module.css.js.map +1 -0
- package/dist/components/Code/Code.js +32 -0
- package/dist/components/Code/Code.js.map +1 -0
- package/dist/components/Container/Container.js +44 -0
- package/dist/components/Container/Container.js.map +1 -0
- package/dist/components/Divider/Divider.js +48 -0
- package/dist/components/Divider/Divider.js.map +1 -0
- package/dist/components/Flex/Flex.js +48 -0
- package/dist/components/Flex/Flex.js.map +1 -0
- package/dist/components/FormField/FormField.js +52 -0
- package/dist/components/FormField/FormField.js.map +1 -0
- package/dist/components/Grid/Grid.js +41 -0
- package/dist/components/Grid/Grid.js.map +1 -0
- package/dist/components/HStack/HStack.js +17 -0
- package/dist/components/HStack/HStack.js.map +1 -0
- package/dist/components/Heading/Heading.js +42 -0
- package/dist/components/Heading/Heading.js.map +1 -0
- package/dist/components/IconButton/IconButton.js +93 -0
- package/dist/components/IconButton/IconButton.js.map +1 -0
- package/dist/components/IconButton/iconbutton.module.css +18 -0
- package/dist/components/IconButton/iconbutton.module.css.js +18 -0
- package/dist/components/IconButton/iconbutton.module.css.js.map +1 -0
- package/dist/components/Image/Image.d.ts.map +1 -1
- package/dist/components/Image/Image.js +101 -0
- package/dist/components/Image/Image.js.map +1 -0
- package/dist/components/Image/image.module.css +44 -0
- package/dist/components/Image/image.module.css.js +36 -0
- package/dist/components/Image/image.module.css.js.map +1 -0
- package/dist/components/Input/Input.js +57 -0
- package/dist/components/Input/Input.js.map +1 -0
- package/dist/components/Input/input.module.css +29 -0
- package/dist/components/Input/input.module.css.js +12 -0
- package/dist/components/Input/input.module.css.js.map +1 -0
- package/dist/components/Label/Label.js +36 -0
- package/dist/components/Label/Label.js.map +1 -0
- package/dist/components/Link/Link.js +38 -0
- package/dist/components/Link/Link.js.map +1 -0
- package/dist/components/Link/link.module.css +28 -0
- package/dist/components/Link/link.module.css.js +16 -0
- package/dist/components/Link/link.module.css.js.map +1 -0
- package/dist/components/List/List.js +51 -0
- package/dist/components/List/List.js.map +1 -0
- package/dist/components/List/list.module.css +45 -0
- package/dist/components/List/list.module.css.js +24 -0
- package/dist/components/List/list.module.css.js.map +1 -0
- package/dist/components/Menu/Menu.d.ts.map +1 -1
- package/dist/components/Menu/Menu.js +143 -0
- package/dist/components/Menu/Menu.js.map +1 -0
- package/dist/components/Menu/menu.module.css +24 -0
- package/dist/components/Menu/menu.module.css.js +18 -0
- package/dist/components/Menu/menu.module.css.js.map +1 -0
- package/dist/components/Modal/Modal.d.ts.map +1 -1
- package/dist/components/Modal/Modal.js +130 -0
- package/dist/components/Modal/Modal.js.map +1 -0
- package/dist/components/Modal/modal.module.css +26 -0
- package/dist/components/Modal/modal.module.css.js +21 -0
- package/dist/components/Modal/modal.module.css.js.map +1 -0
- package/dist/components/Pagination/Pagination.js +125 -0
- package/dist/components/Pagination/Pagination.js.map +1 -0
- package/dist/components/Pagination/pagination.module.css +3 -0
- package/dist/components/Pagination/pagination.module.css.js +9 -0
- package/dist/components/Pagination/pagination.module.css.js.map +1 -0
- package/dist/components/Popover/Popover.d.ts.map +1 -1
- package/dist/components/Popover/Popover.js +144 -0
- package/dist/components/Popover/Popover.js.map +1 -0
- package/dist/components/Popover/popover.module.css +11 -0
- package/dist/components/Popover/popover.module.css.js +15 -0
- package/dist/components/Popover/popover.module.css.js.map +1 -0
- package/dist/components/Progress/Progress.js +54 -0
- package/dist/components/Progress/Progress.js.map +1 -0
- package/dist/components/Progress/progress.module.css +24 -0
- package/dist/components/Progress/progress.module.css.js +15 -0
- package/dist/components/Progress/progress.module.css.js.map +1 -0
- package/dist/components/Radio/Radio.js +70 -0
- package/dist/components/Radio/Radio.js.map +1 -0
- package/dist/components/Radio/radio.module.css +48 -0
- package/dist/components/Radio/radio.module.css.js +12 -0
- package/dist/components/Radio/radio.module.css.js.map +1 -0
- package/dist/components/Select/Select.js +57 -0
- package/dist/components/Select/Select.js.map +1 -0
- package/dist/components/Select/select.module.css +43 -0
- package/dist/components/Select/select.module.css.js +12 -0
- package/dist/components/Select/select.module.css.js.map +1 -0
- package/dist/components/Skeleton/Skeleton.js +37 -0
- package/dist/components/Skeleton/Skeleton.js.map +1 -0
- package/dist/components/Skeleton/skeleton.module.css +26 -0
- package/dist/components/Skeleton/skeleton.module.css.js +9 -0
- package/dist/components/Skeleton/skeleton.module.css.js.map +1 -0
- package/dist/components/Spacer/Spacer.js +16 -0
- package/dist/components/Spacer/Spacer.js.map +1 -0
- package/dist/components/Spinner/Spinner.js +41 -0
- package/dist/components/Spinner/Spinner.js.map +1 -0
- package/dist/components/Spinner/spinner.module.css +21 -0
- package/dist/components/Spinner/spinner.module.css.js +9 -0
- package/dist/components/Spinner/spinner.module.css.js.map +1 -0
- package/dist/components/Stack/Stack.js +35 -0
- package/dist/components/Stack/Stack.js.map +1 -0
- package/dist/components/Switch/Switch.js +83 -0
- package/dist/components/Switch/Switch.js.map +1 -0
- package/dist/components/Switch/switch.module.css +48 -0
- package/dist/components/Switch/switch.module.css.js +15 -0
- package/dist/components/Switch/switch.module.css.js.map +1 -0
- package/dist/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/components/Tabs/Tabs.js +87 -0
- package/dist/components/Tabs/Tabs.js.map +1 -0
- package/dist/components/Tabs/tabs.module.css +55 -0
- package/dist/components/Tabs/tabs.module.css.js +27 -0
- package/dist/components/Tabs/tabs.module.css.js.map +1 -0
- package/dist/components/Text/Text.js +40 -0
- package/dist/components/Text/Text.js.map +1 -0
- package/dist/components/Text/text.module.css +9 -0
- package/dist/components/Text/text.module.css.js +12 -0
- package/dist/components/Text/text.module.css.js.map +1 -0
- package/dist/components/Textarea/Textarea.js +70 -0
- package/dist/components/Textarea/Textarea.js.map +1 -0
- package/dist/components/Textarea/textarea.module.css +46 -0
- package/dist/components/Textarea/textarea.module.css.js +24 -0
- package/dist/components/Textarea/textarea.module.css.js.map +1 -0
- package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/components/Tooltip/Tooltip.js +135 -0
- package/dist/components/Tooltip/Tooltip.js.map +1 -0
- package/dist/components/Tooltip/tooltip.module.css +4 -0
- package/dist/components/Tooltip/tooltip.module.css.js +9 -0
- package/dist/components/Tooltip/tooltip.module.css.js.map +1 -0
- package/dist/components/VStack/VStack.js +17 -0
- package/dist/components/VStack/VStack.js.map +1 -0
- package/dist/fonts.css +23 -1
- package/dist/index.css +3320 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +99 -5521
- package/dist/index.js.map +1 -1
- package/dist/styles/styles.css +353 -0
- package/package.json +8 -4
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import "react";
|
|
3
|
+
import { Text } from "../Text/Text.js";
|
|
4
|
+
const defaultSizes = {
|
|
5
|
+
1: "3xl",
|
|
6
|
+
2: "2xl",
|
|
7
|
+
3: "xl",
|
|
8
|
+
4: "lg",
|
|
9
|
+
5: "md",
|
|
10
|
+
6: "sm"
|
|
11
|
+
};
|
|
12
|
+
function Heading({
|
|
13
|
+
as,
|
|
14
|
+
level = 1,
|
|
15
|
+
size,
|
|
16
|
+
weight = "bold",
|
|
17
|
+
color,
|
|
18
|
+
children,
|
|
19
|
+
...rest
|
|
20
|
+
}) {
|
|
21
|
+
const headingElement = `h${level}`;
|
|
22
|
+
const defaultSize = defaultSizes[level];
|
|
23
|
+
const element = as ?? headingElement;
|
|
24
|
+
return (
|
|
25
|
+
// @ts-expect-error - Polymorphic component prop forwarding
|
|
26
|
+
/* @__PURE__ */ jsx(
|
|
27
|
+
Text,
|
|
28
|
+
{
|
|
29
|
+
as: element,
|
|
30
|
+
size: size ?? defaultSize,
|
|
31
|
+
weight,
|
|
32
|
+
color,
|
|
33
|
+
...rest,
|
|
34
|
+
children
|
|
35
|
+
}
|
|
36
|
+
)
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
export {
|
|
40
|
+
Heading
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=Heading.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Heading.js","sources":["../../../src/components/Heading/Heading.tsx"],"sourcesContent":["import { type ElementType } from \"react\";\nimport { Text, type TextOwnProps } from \"../Text/Text\";\nimport { type Polymorphic } from \"@/types/Polymorphic\";\n\n// Import types from Box styleParts\ntype FontSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\" | \"4xl\" | \"5xl\";\ntype FontWeight = \"normal\" | \"medium\" | \"semibold\" | \"bold\";\ntype Color =\n | \"foreground\"\n | \"foreground-muted\"\n | \"foreground-subtle\"\n | \"accent\"\n | \"accent-emphasis\"\n | \"primary\"\n | \"primary-emphasis\"\n | \"success\"\n | \"success-emphasis\"\n | \"warning\"\n | \"warning-emphasis\"\n | \"error\"\n | \"error-emphasis\";\n\ntype HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\n\nconst defaultSizes: Record<HeadingLevel, FontSize> = {\n 1: \"3xl\",\n 2: \"2xl\",\n 3: \"xl\",\n 4: \"lg\",\n 5: \"md\",\n 6: \"sm\",\n};\n\ntype HeadingOwnProps = Omit<TextOwnProps, \"size\" | \"weight\" | \"color\"> & {\n level?: HeadingLevel;\n size?: FontSize;\n weight?: FontWeight;\n color?: Color;\n};\n\nexport type HeadingProps<T extends ElementType = \"h1\"> = Polymorphic<\n T,\n HeadingOwnProps\n>;\n\n/**\n * Heading - Semantic heading component with predefined sizes\n *\n * Built on top of Text with heading-specific defaults:\n * - level prop maps to h1-h6 elements (default: h1)\n * - Each level has a default font size\n * - Default font weight: bold\n * - Size can be overridden via size prop\n * - Can be changed to any element via `as` prop\n */\nexport function Heading<T extends ElementType = \"h1\">({\n as,\n level = 1,\n size,\n weight = \"bold\",\n color,\n children,\n ...rest\n}: HeadingProps<T>) {\n const headingElement = `h${level}` as const;\n const defaultSize = defaultSizes[level];\n const element = as ?? headingElement;\n\n return (\n // @ts-expect-error - Polymorphic component prop forwarding\n <Text\n as={element}\n size={size ?? defaultSize}\n weight={weight}\n color={color}\n {...rest}\n >\n {children}\n </Text>\n );\n}\n"],"names":[],"mappings":";;;AAwBA,MAAM,eAA+C;AAAA,EACnD,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL;AAwBO,SAAS,QAAsC;AAAA,EACpD;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAoB;AAClB,QAAM,iBAAiB,IAAI,KAAK;AAChC,QAAM,cAAc,aAAa,KAAK;AACtC,QAAM,UAAU,MAAM;AAEtB;AAAA;AAAA,IAEE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAI;AAAA,QACJ,MAAM,QAAQ;AAAA,QACd;AAAA,QACA;AAAA,QACC,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IAAA;AAAA;AAGP;"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef } from "react";
|
|
3
|
+
import clsx from "clsx";
|
|
4
|
+
import { Box } from "../Box/Box.js";
|
|
5
|
+
import { Spinner } from "../Spinner/Spinner.js";
|
|
6
|
+
import styles from "./iconbutton.module.css.js";
|
|
7
|
+
const sizeConfig = {
|
|
8
|
+
sm: { dimension: "28px", iconSize: "14px", fontSize: "sm" },
|
|
9
|
+
md: { dimension: "36px", iconSize: "18px", fontSize: "md" },
|
|
10
|
+
lg: { dimension: "44px", iconSize: "22px", fontSize: "lg" }
|
|
11
|
+
};
|
|
12
|
+
function getColorConfig(variant, colorScheme) {
|
|
13
|
+
switch (variant) {
|
|
14
|
+
case "solid":
|
|
15
|
+
return {
|
|
16
|
+
bg: `${colorScheme}-default`,
|
|
17
|
+
color: "foreground-inverted",
|
|
18
|
+
borderColor: void 0,
|
|
19
|
+
hoverBg: `var(--t-color-${colorScheme}-emphasis)`
|
|
20
|
+
};
|
|
21
|
+
case "outline":
|
|
22
|
+
return {
|
|
23
|
+
bg: "transparent",
|
|
24
|
+
color: colorScheme,
|
|
25
|
+
borderColor: colorScheme,
|
|
26
|
+
hoverBg: `var(--t-color-${colorScheme}-subtle)`
|
|
27
|
+
};
|
|
28
|
+
case "ghost":
|
|
29
|
+
return {
|
|
30
|
+
bg: "transparent",
|
|
31
|
+
color: colorScheme,
|
|
32
|
+
borderColor: void 0,
|
|
33
|
+
hoverBg: `var(--t-color-${colorScheme}-subtle)`
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const variantBorderConfig = {
|
|
38
|
+
solid: "none",
|
|
39
|
+
outline: "thin",
|
|
40
|
+
ghost: "none"
|
|
41
|
+
};
|
|
42
|
+
const IconButton = forwardRef(
|
|
43
|
+
function IconButton2({
|
|
44
|
+
icon,
|
|
45
|
+
"aria-label": ariaLabel,
|
|
46
|
+
variant = "solid",
|
|
47
|
+
size = "md",
|
|
48
|
+
colorScheme = "primary",
|
|
49
|
+
disabled = false,
|
|
50
|
+
loading = false,
|
|
51
|
+
className,
|
|
52
|
+
onClick,
|
|
53
|
+
...rest
|
|
54
|
+
}, ref) {
|
|
55
|
+
const isDisabled = disabled || loading;
|
|
56
|
+
const colorConfig = getColorConfig(variant, colorScheme);
|
|
57
|
+
const sizeProps = sizeConfig[size];
|
|
58
|
+
return /* @__PURE__ */ jsx(
|
|
59
|
+
Box,
|
|
60
|
+
{
|
|
61
|
+
as: "button",
|
|
62
|
+
ref,
|
|
63
|
+
display: "inline-flex",
|
|
64
|
+
alignItems: "center",
|
|
65
|
+
justifyContent: "center",
|
|
66
|
+
w: sizeProps.dimension,
|
|
67
|
+
h: sizeProps.dimension,
|
|
68
|
+
fontSize: sizeProps.fontSize,
|
|
69
|
+
rounded: "md",
|
|
70
|
+
bg: colorConfig.bg,
|
|
71
|
+
color: colorConfig.color,
|
|
72
|
+
border: variantBorderConfig[variant],
|
|
73
|
+
borderColor: colorConfig.borderColor,
|
|
74
|
+
cursor: isDisabled ? "not-allowed" : "pointer",
|
|
75
|
+
pointerEvents: isDisabled ? "none" : void 0,
|
|
76
|
+
opacity: isDisabled ? "faint" : void 0,
|
|
77
|
+
className: clsx(styles.iconButton, styles[variant], className),
|
|
78
|
+
style: { "--iconbutton-hover-bg": colorConfig.hoverBg },
|
|
79
|
+
"aria-label": ariaLabel,
|
|
80
|
+
disabled: isDisabled,
|
|
81
|
+
"aria-disabled": isDisabled,
|
|
82
|
+
"aria-busy": loading,
|
|
83
|
+
onClick,
|
|
84
|
+
...rest,
|
|
85
|
+
children: loading ? /* @__PURE__ */ jsx(Spinner, { size: "sm", "aria-hidden": "true" }) : /* @__PURE__ */ jsx(Box, { as: "span", display: "inline-flex", alignItems: "center", "aria-hidden": "true", children: icon })
|
|
86
|
+
}
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
);
|
|
90
|
+
export {
|
|
91
|
+
IconButton
|
|
92
|
+
};
|
|
93
|
+
//# sourceMappingURL=IconButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IconButton.js","sources":["../../../src/components/IconButton/IconButton.tsx"],"sourcesContent":["import { forwardRef, type CSSProperties, type ReactNode } from \"react\";\nimport clsx from \"clsx\";\nimport { Box } from \"@/components/Box/Box\";\nimport { Spinner } from \"@/components/Spinner/Spinner\";\nimport styles from \"./iconbutton.module.css\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport type IconButtonVariant = \"solid\" | \"outline\" | \"ghost\";\nexport type IconButtonSize = \"sm\" | \"md\" | \"lg\";\nexport type IconButtonColorScheme =\n | \"primary\"\n | \"accent\"\n | \"success\"\n | \"warning\"\n | \"error\"\n | \"info\";\n\nexport type IconButtonProps = {\n /** The icon to display */\n icon: ReactNode;\n /** Accessible label (required for screen readers) */\n \"aria-label\": string;\n /** Visual variant */\n variant?: IconButtonVariant;\n /** Size of the button */\n size?: IconButtonSize;\n /** Color scheme */\n colorScheme?: IconButtonColorScheme;\n /** Whether the button is disabled */\n disabled?: boolean;\n /** Whether to show loading spinner */\n loading?: boolean;\n /** Additional class name */\n className?: string;\n /** Click handler */\n onClick?: () => void;\n};\n\n// ============================================================================\n// Size configurations\n// ============================================================================\n\nconst sizeConfig = {\n sm: { dimension: \"28px\", iconSize: \"14px\", fontSize: \"sm\" },\n md: { dimension: \"36px\", iconSize: \"18px\", fontSize: \"md\" },\n lg: { dimension: \"44px\", iconSize: \"22px\", fontSize: \"lg\" },\n} as const;\n\n// ============================================================================\n// Color configurations\n// ============================================================================\n\ntype ColorConfig = {\n bg: string;\n color: string;\n borderColor: string | undefined;\n hoverBg: string;\n};\n\nfunction getColorConfig(\n variant: IconButtonVariant,\n colorScheme: IconButtonColorScheme\n): ColorConfig {\n switch (variant) {\n case \"solid\":\n return {\n bg: `${colorScheme}-default`,\n color: \"foreground-inverted\",\n borderColor: undefined,\n hoverBg: `var(--t-color-${colorScheme}-emphasis)`,\n };\n case \"outline\":\n return {\n bg: \"transparent\",\n color: colorScheme,\n borderColor: colorScheme,\n hoverBg: `var(--t-color-${colorScheme}-subtle)`,\n };\n case \"ghost\":\n return {\n bg: \"transparent\",\n color: colorScheme,\n borderColor: undefined,\n hoverBg: `var(--t-color-${colorScheme}-subtle)`,\n };\n }\n}\n\n// ============================================================================\n// Variant border configurations\n// ============================================================================\n\nconst variantBorderConfig = {\n solid: \"none\",\n outline: \"thin\",\n ghost: \"none\",\n} as const;\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * IconButton - Icon-only button component\n *\n * A compact button for icons that provides:\n * - Square sizing for icon-only use\n * - All Button variants (solid, outline, ghost)\n * - All color schemes\n * - Loading state with spinner\n * - Required aria-label for accessibility\n */\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n function IconButton(\n {\n icon,\n \"aria-label\": ariaLabel,\n variant = \"solid\",\n size = \"md\",\n colorScheme = \"primary\",\n disabled = false,\n loading = false,\n className,\n onClick,\n ...rest\n },\n ref\n ) {\n const isDisabled = disabled || loading;\n const colorConfig = getColorConfig(variant, colorScheme);\n const sizeProps = sizeConfig[size];\n\n return (\n <Box\n as=\"button\"\n ref={ref}\n // Layout\n display=\"inline-flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n // Size (square)\n w={sizeProps.dimension}\n h={sizeProps.dimension}\n fontSize={sizeProps.fontSize}\n rounded=\"md\"\n // Colors (type assertions for computed values)\n bg={colorConfig.bg as any}\n color={colorConfig.color as any}\n border={variantBorderConfig[variant]}\n borderColor={colorConfig.borderColor as any}\n // Interaction states\n cursor={isDisabled ? \"not-allowed\" : \"pointer\"}\n pointerEvents={isDisabled ? \"none\" : undefined}\n opacity={isDisabled ? \"faint\" : undefined}\n // CSS module styles\n className={clsx(styles.iconButton, styles[variant], className)}\n // Hover color via CSS variable\n style={{ \"--iconbutton-hover-bg\": colorConfig.hoverBg } as CSSProperties}\n // Accessibility\n aria-label={ariaLabel}\n disabled={isDisabled}\n aria-disabled={isDisabled}\n aria-busy={loading}\n onClick={onClick}\n {...rest}\n >\n {loading ? (\n <Spinner size=\"sm\" aria-hidden=\"true\" />\n ) : (\n <Box as=\"span\" display=\"inline-flex\" alignItems=\"center\" aria-hidden=\"true\">\n {icon}\n </Box>\n )}\n </Box>\n );\n }\n);\n"],"names":["IconButton"],"mappings":";;;;;;AA6CA,MAAM,aAAa;AAAA,EACjB,IAAI,EAAE,WAAW,QAAQ,UAAU,QAAQ,UAAU,KAAA;AAAA,EACrD,IAAI,EAAE,WAAW,QAAQ,UAAU,QAAQ,UAAU,KAAA;AAAA,EACrD,IAAI,EAAE,WAAW,QAAQ,UAAU,QAAQ,UAAU,KAAA;AACvD;AAaA,SAAS,eACP,SACA,aACa;AACb,UAAQ,SAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,QACL,IAAI,GAAG,WAAW;AAAA,QAClB,OAAO;AAAA,QACP,aAAa;AAAA,QACb,SAAS,iBAAiB,WAAW;AAAA,MAAA;AAAA,IAEzC,KAAK;AACH,aAAO;AAAA,QACL,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,aAAa;AAAA,QACb,SAAS,iBAAiB,WAAW;AAAA,MAAA;AAAA,IAEzC,KAAK;AACH,aAAO;AAAA,QACL,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,aAAa;AAAA,QACb,SAAS,iBAAiB,WAAW;AAAA,MAAA;AAAA,EACvC;AAEN;AAMA,MAAM,sBAAsB;AAAA,EAC1B,OAAO;AAAA,EACP,SAAS;AAAA,EACT,OAAO;AACT;AAgBO,MAAM,aAAa;AAAA,EACxB,SAASA,YACP;AAAA,IACE;AAAA,IACA,cAAc;AAAA,IACd,UAAU;AAAA,IACV,OAAO;AAAA,IACP,cAAc;AAAA,IACd,WAAW;AAAA,IACX,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA,GAEL,KACA;AACA,UAAM,aAAa,YAAY;AAC/B,UAAM,cAAc,eAAe,SAAS,WAAW;AACvD,UAAM,YAAY,WAAW,IAAI;AAEjC,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAG;AAAA,QACH;AAAA,QAEA,SAAQ;AAAA,QACR,YAAW;AAAA,QACX,gBAAe;AAAA,QAEf,GAAG,UAAU;AAAA,QACb,GAAG,UAAU;AAAA,QACb,UAAU,UAAU;AAAA,QACpB,SAAQ;AAAA,QAER,IAAI,YAAY;AAAA,QAChB,OAAO,YAAY;AAAA,QACnB,QAAQ,oBAAoB,OAAO;AAAA,QACnC,aAAa,YAAY;AAAA,QAEzB,QAAQ,aAAa,gBAAgB;AAAA,QACrC,eAAe,aAAa,SAAS;AAAA,QACrC,SAAS,aAAa,UAAU;AAAA,QAEhC,WAAW,KAAK,OAAO,YAAY,OAAO,OAAO,GAAG,SAAS;AAAA,QAE7D,OAAO,EAAE,yBAAyB,YAAY,QAAA;AAAA,QAE9C,cAAY;AAAA,QACZ,UAAU;AAAA,QACV,iBAAe;AAAA,QACf,aAAW;AAAA,QACX;AAAA,QACC,GAAG;AAAA,QAEH,oBACC,oBAAC,SAAA,EAAQ,MAAK,MAAK,eAAY,QAAO,IAEtC,oBAAC,KAAA,EAAI,IAAG,QAAO,SAAQ,eAAc,YAAW,UAAS,eAAY,QAClE,UAAA,KAAA,CACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAIR;AACF;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
._iconButton_1xb56_1 {
|
|
2
|
+
transition-duration: 150ms;
|
|
3
|
+
transition-property: background-color, border-color, opacity;
|
|
4
|
+
transition-timing-function: ease-in-out;
|
|
5
|
+
flex-shrink: 0;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
._solid_1xb56_8:hover:not(:disabled) {
|
|
9
|
+
background-color: var(--iconbutton-hover-bg);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
._outline_1xb56_12:hover:not(:disabled) {
|
|
13
|
+
background-color: var(--iconbutton-hover-bg);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
._ghost_1xb56_16:hover:not(:disabled) {
|
|
17
|
+
background-color: var(--iconbutton-hover-bg);
|
|
18
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const iconButton = "_iconButton_1xb56_1";
|
|
2
|
+
const solid = "_solid_1xb56_8";
|
|
3
|
+
const outline = "_outline_1xb56_12";
|
|
4
|
+
const ghost = "_ghost_1xb56_16";
|
|
5
|
+
const styles = {
|
|
6
|
+
iconButton,
|
|
7
|
+
solid,
|
|
8
|
+
outline,
|
|
9
|
+
ghost
|
|
10
|
+
};
|
|
11
|
+
export {
|
|
12
|
+
styles as default,
|
|
13
|
+
ghost,
|
|
14
|
+
iconButton,
|
|
15
|
+
outline,
|
|
16
|
+
solid
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=iconbutton.module.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iconbutton.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Image.d.ts","sourceRoot":"","sources":["../../../src/components/Image/Image.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Image.d.ts","sourceRoot":"","sources":["../../../src/components/Image/Image.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAOzE,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAEnE,MAAM,MAAM,UAAU,GAAG;IACvB,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,4CAA4C;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,wBAAwB;IACxB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,yBAAyB;IACzB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,0BAA0B;IAC1B,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB;IACpB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAMF;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CAAC,EACpB,GAAG,EACH,GAAG,EACH,CAAC,EACD,CAAC,EACD,SAAmB,EACnB,WAAW,EACX,OAAgB,EAChB,SAAS,GACV,EAAE,UAAU,2CA6EZ"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import clsx from "clsx";
|
|
5
|
+
import { Box } from "../Box/Box.js";
|
|
6
|
+
import { Skeleton } from "../Skeleton/Skeleton.js";
|
|
7
|
+
import styles from "./image.module.css.js";
|
|
8
|
+
function Image({
|
|
9
|
+
src,
|
|
10
|
+
alt,
|
|
11
|
+
w,
|
|
12
|
+
h,
|
|
13
|
+
objectFit = "cover",
|
|
14
|
+
fallbackSrc,
|
|
15
|
+
rounded = "none",
|
|
16
|
+
className
|
|
17
|
+
}) {
|
|
18
|
+
const [isLoading, setIsLoading] = useState(true);
|
|
19
|
+
const [hasError, setHasError] = useState(false);
|
|
20
|
+
const [currentSrc, setCurrentSrc] = useState(src);
|
|
21
|
+
const handleLoad = () => {
|
|
22
|
+
setIsLoading(false);
|
|
23
|
+
};
|
|
24
|
+
const handleError = () => {
|
|
25
|
+
if (fallbackSrc && currentSrc !== fallbackSrc) {
|
|
26
|
+
setCurrentSrc(fallbackSrc);
|
|
27
|
+
setIsLoading(true);
|
|
28
|
+
} else {
|
|
29
|
+
setIsLoading(false);
|
|
30
|
+
setHasError(true);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
const style = {
|
|
34
|
+
width: w,
|
|
35
|
+
height: h
|
|
36
|
+
};
|
|
37
|
+
if (hasError) {
|
|
38
|
+
return /* @__PURE__ */ jsx(
|
|
39
|
+
Box,
|
|
40
|
+
{
|
|
41
|
+
display: "flex",
|
|
42
|
+
alignItems: "center",
|
|
43
|
+
justifyContent: "center",
|
|
44
|
+
bg: "surface",
|
|
45
|
+
color: "foreground-muted",
|
|
46
|
+
rounded,
|
|
47
|
+
className: clsx(styles.placeholder, className),
|
|
48
|
+
style,
|
|
49
|
+
children: /* @__PURE__ */ jsx(
|
|
50
|
+
"svg",
|
|
51
|
+
{
|
|
52
|
+
viewBox: "0 0 24 24",
|
|
53
|
+
fill: "currentColor",
|
|
54
|
+
className: styles.placeholderIcon,
|
|
55
|
+
children: /* @__PURE__ */ jsx("path", { d: "M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zM8.5 13.5l2.5 3.01L14.5 12l4.5 6H5l3.5-4.5z" })
|
|
56
|
+
}
|
|
57
|
+
)
|
|
58
|
+
}
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
return /* @__PURE__ */ jsxs(
|
|
62
|
+
Box,
|
|
63
|
+
{
|
|
64
|
+
position: "relative",
|
|
65
|
+
display: "inline-block",
|
|
66
|
+
overflow: "hidden",
|
|
67
|
+
rounded,
|
|
68
|
+
className: clsx(styles.container, className),
|
|
69
|
+
style,
|
|
70
|
+
children: [
|
|
71
|
+
isLoading && /* @__PURE__ */ jsx(
|
|
72
|
+
Skeleton,
|
|
73
|
+
{
|
|
74
|
+
w: "100%",
|
|
75
|
+
h: "100%",
|
|
76
|
+
rounded,
|
|
77
|
+
className: styles.skeleton
|
|
78
|
+
}
|
|
79
|
+
),
|
|
80
|
+
/* @__PURE__ */ jsx(
|
|
81
|
+
"img",
|
|
82
|
+
{
|
|
83
|
+
src: currentSrc,
|
|
84
|
+
alt,
|
|
85
|
+
onLoad: handleLoad,
|
|
86
|
+
onError: handleError,
|
|
87
|
+
className: clsx(
|
|
88
|
+
styles.image,
|
|
89
|
+
styles[objectFit],
|
|
90
|
+
isLoading && styles.hidden
|
|
91
|
+
)
|
|
92
|
+
}
|
|
93
|
+
)
|
|
94
|
+
]
|
|
95
|
+
}
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
export {
|
|
99
|
+
Image
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=Image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Image.js","sources":["../../../src/components/Image/Image.tsx"],"sourcesContent":["\"use client\";\n\nimport { useState, type CSSProperties } from \"react\";\nimport clsx from \"clsx\";\nimport { Box } from \"@/components/Box/Box\";\nimport { Skeleton } from \"@/components/Skeleton/Skeleton\";\nimport type { RoundedValue } from \"@/components/Box/roundness/roundness\";\nimport styles from \"./image.module.css\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport type ImageObjectFit = \"cover\" | \"contain\" | \"fill\" | \"none\";\n\nexport type ImageProps = {\n /** Image source URL */\n src: string;\n /** Alt text (required for accessibility) */\n alt: string;\n /** Width (CSS value) */\n w?: string;\n /** Height (CSS value) */\n h?: string;\n /** Object fit behavior */\n objectFit?: ImageObjectFit;\n /** Fallback source if main image fails */\n fallbackSrc?: string;\n /** Border radius */\n rounded?: RoundedValue;\n /** Additional class name */\n className?: string;\n};\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * Image - Enhanced img element\n *\n * An image component with:\n * - Loading state with Skeleton placeholder\n * - Error fallback support\n * - Object-fit options\n * - Rounded corner variants\n */\nexport function Image({\n src,\n alt,\n w,\n h,\n objectFit = \"cover\",\n fallbackSrc,\n rounded = \"none\",\n className,\n}: ImageProps) {\n const [isLoading, setIsLoading] = useState(true);\n const [hasError, setHasError] = useState(false);\n const [currentSrc, setCurrentSrc] = useState(src);\n\n const handleLoad = () => {\n setIsLoading(false);\n };\n\n const handleError = () => {\n if (fallbackSrc && currentSrc !== fallbackSrc) {\n setCurrentSrc(fallbackSrc);\n setIsLoading(true);\n } else {\n setIsLoading(false);\n setHasError(true);\n }\n };\n\n const style: CSSProperties = {\n width: w,\n height: h,\n };\n\n if (hasError) {\n return (\n <Box\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n bg=\"surface\"\n color=\"foreground-muted\"\n rounded={rounded}\n className={clsx(styles.placeholder, className)}\n style={style}\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={styles.placeholderIcon}\n >\n <path d=\"M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zM8.5 13.5l2.5 3.01L14.5 12l4.5 6H5l3.5-4.5z\" />\n </svg>\n </Box>\n );\n }\n\n return (\n <Box\n position=\"relative\"\n display=\"inline-block\"\n overflow=\"hidden\"\n rounded={rounded}\n className={clsx(styles.container, className)}\n style={style}\n >\n {isLoading && (\n <Skeleton\n w=\"100%\"\n h=\"100%\"\n rounded={rounded}\n className={styles.skeleton}\n />\n )}\n <img\n src={currentSrc}\n alt={alt}\n onLoad={handleLoad}\n onError={handleError}\n className={clsx(\n styles.image,\n styles[objectFit],\n isLoading && styles.hidden\n )}\n />\n </Box>\n );\n}\n"],"names":[],"mappings":";;;;;;;AA+CO,SAAS,MAAM;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA,UAAU;AAAA,EACV;AACF,GAAe;AACb,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,IAAI;AAC/C,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAC9C,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,GAAG;AAEhD,QAAM,aAAa,MAAM;AACvB,iBAAa,KAAK;AAAA,EACpB;AAEA,QAAM,cAAc,MAAM;AACxB,QAAI,eAAe,eAAe,aAAa;AAC7C,oBAAc,WAAW;AACzB,mBAAa,IAAI;AAAA,IACnB,OAAO;AACL,mBAAa,KAAK;AAClB,kBAAY,IAAI;AAAA,IAClB;AAAA,EACF;AAEA,QAAM,QAAuB;AAAA,IAC3B,OAAO;AAAA,IACP,QAAQ;AAAA,EAAA;AAGV,MAAI,UAAU;AACZ,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAAQ;AAAA,QACR,YAAW;AAAA,QACX,gBAAe;AAAA,QACf,IAAG;AAAA,QACH,OAAM;AAAA,QACN;AAAA,QACA,WAAW,KAAK,OAAO,aAAa,SAAS;AAAA,QAC7C;AAAA,QAEA,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,WAAW,OAAO;AAAA,YAElB,UAAA,oBAAC,QAAA,EAAK,GAAE,2HAAA,CAA2H;AAAA,UAAA;AAAA,QAAA;AAAA,MACrI;AAAA,IAAA;AAAA,EAGN;AAEA,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,UAAS;AAAA,MACT,SAAQ;AAAA,MACR,UAAS;AAAA,MACT;AAAA,MACA,WAAW,KAAK,OAAO,WAAW,SAAS;AAAA,MAC3C;AAAA,MAEC,UAAA;AAAA,QAAA,aACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,GAAE;AAAA,YACF,GAAE;AAAA,YACF;AAAA,YACA,WAAW,OAAO;AAAA,UAAA;AAAA,QAAA;AAAA,QAGtB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,KAAK;AAAA,YACL;AAAA,YACA,QAAQ;AAAA,YACR,SAAS;AAAA,YACT,WAAW;AAAA,cACT,OAAO;AAAA,cACP,OAAO,SAAS;AAAA,cAChB,aAAa,OAAO;AAAA,YAAA;AAAA,UACtB;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
._container_ctyvb_1 {
|
|
2
|
+
line-height: 0;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
._skeleton_ctyvb_5 {
|
|
6
|
+
position: absolute;
|
|
7
|
+
inset: 0;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
._image_ctyvb_10 {
|
|
11
|
+
width: 100%;
|
|
12
|
+
height: 100%;
|
|
13
|
+
display: block;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
._hidden_ctyvb_16 {
|
|
17
|
+
opacity: 0;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
._cover_ctyvb_20 {
|
|
21
|
+
object-fit: cover;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
._contain_ctyvb_1 {
|
|
25
|
+
object-fit: contain;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
._fill_ctyvb_28 {
|
|
29
|
+
object-fit: fill;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
._none_ctyvb_32 {
|
|
33
|
+
object-fit: none;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
._placeholder_ctyvb_36 {
|
|
37
|
+
min-height: 100px;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
._placeholderIcon_ctyvb_40 {
|
|
41
|
+
width: 48px;
|
|
42
|
+
height: 48px;
|
|
43
|
+
opacity: 0.5;
|
|
44
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
const container = "_container_ctyvb_1";
|
|
2
|
+
const skeleton = "_skeleton_ctyvb_5";
|
|
3
|
+
const image = "_image_ctyvb_10";
|
|
4
|
+
const hidden = "_hidden_ctyvb_16";
|
|
5
|
+
const cover = "_cover_ctyvb_20";
|
|
6
|
+
const contain = "_contain_ctyvb_1";
|
|
7
|
+
const fill = "_fill_ctyvb_28";
|
|
8
|
+
const none = "_none_ctyvb_32";
|
|
9
|
+
const placeholder = "_placeholder_ctyvb_36";
|
|
10
|
+
const placeholderIcon = "_placeholderIcon_ctyvb_40";
|
|
11
|
+
const styles = {
|
|
12
|
+
container,
|
|
13
|
+
skeleton,
|
|
14
|
+
image,
|
|
15
|
+
hidden,
|
|
16
|
+
cover,
|
|
17
|
+
contain,
|
|
18
|
+
fill,
|
|
19
|
+
none,
|
|
20
|
+
placeholder,
|
|
21
|
+
placeholderIcon
|
|
22
|
+
};
|
|
23
|
+
export {
|
|
24
|
+
contain,
|
|
25
|
+
container,
|
|
26
|
+
cover,
|
|
27
|
+
styles as default,
|
|
28
|
+
fill,
|
|
29
|
+
hidden,
|
|
30
|
+
image,
|
|
31
|
+
none,
|
|
32
|
+
placeholder,
|
|
33
|
+
placeholderIcon,
|
|
34
|
+
skeleton
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=image.module.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import "react";
|
|
3
|
+
import clsx from "clsx";
|
|
4
|
+
import { Box } from "../Box/Box.js";
|
|
5
|
+
import styles from "./input.module.css.js";
|
|
6
|
+
const sizeConfig = {
|
|
7
|
+
sm: { h: 8, px: 2, fontSize: "sm", rounded: "sm" },
|
|
8
|
+
md: { h: 10, px: 3, fontSize: "md", rounded: "md" },
|
|
9
|
+
lg: { h: 12, px: 4, fontSize: "lg", rounded: "md" }
|
|
10
|
+
};
|
|
11
|
+
function Input({
|
|
12
|
+
as,
|
|
13
|
+
size = "md",
|
|
14
|
+
variant = "outline",
|
|
15
|
+
disabled = false,
|
|
16
|
+
isInvalid = false,
|
|
17
|
+
className,
|
|
18
|
+
...rest
|
|
19
|
+
}) {
|
|
20
|
+
const Component = as || "input";
|
|
21
|
+
const sizeProps = sizeConfig[size];
|
|
22
|
+
const variantStyles = variant === "outline" ? {
|
|
23
|
+
bg: "transparent",
|
|
24
|
+
border: "thin",
|
|
25
|
+
borderColor: "border"
|
|
26
|
+
} : {
|
|
27
|
+
bg: "surface",
|
|
28
|
+
border: "thin",
|
|
29
|
+
borderColor: "border-muted"
|
|
30
|
+
};
|
|
31
|
+
return (
|
|
32
|
+
// @ts-expect-error - Polymorphic component type forwarding
|
|
33
|
+
/* @__PURE__ */ jsx(
|
|
34
|
+
Box,
|
|
35
|
+
{
|
|
36
|
+
as: Component,
|
|
37
|
+
h: sizeProps.h,
|
|
38
|
+
px: sizeProps.px,
|
|
39
|
+
fontSize: sizeProps.fontSize,
|
|
40
|
+
rounded: sizeProps.rounded,
|
|
41
|
+
bg: variantStyles.bg,
|
|
42
|
+
border: variantStyles.border,
|
|
43
|
+
borderColor: variantStyles.borderColor,
|
|
44
|
+
w: "100%",
|
|
45
|
+
color: "foreground",
|
|
46
|
+
className: clsx(styles.input, isInvalid && styles.invalid, className),
|
|
47
|
+
disabled,
|
|
48
|
+
"aria-invalid": isInvalid || void 0,
|
|
49
|
+
...rest
|
|
50
|
+
}
|
|
51
|
+
)
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
export {
|
|
55
|
+
Input
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=Input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Input.js","sources":["../../../src/components/Input/Input.tsx"],"sourcesContent":["import { type ElementType } from \"react\";\nimport clsx from \"clsx\";\nimport { type Polymorphic } from \"@/types/Polymorphic\";\nimport { Box, type BoxOwnProps } from \"@/components/Box/Box\";\nimport styles from \"./input.module.css\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport type InputSize = \"sm\" | \"md\" | \"lg\";\nexport type InputVariant = \"outline\" | \"filled\";\n\nexport type InputOwnProps = Omit<\n BoxOwnProps,\n \"as\" | \"h\" | \"fontSize\" | \"rounded\" | \"border\" | \"borderColor\" | \"bg\"\n> & {\n /** Input size affecting height and font size */\n size?: InputSize;\n /** Visual variant: outline (border) or filled (surface background) */\n variant?: InputVariant;\n /** Whether the input is disabled */\n disabled?: boolean;\n /** Whether the input is in an invalid state */\n isInvalid?: boolean;\n};\n\nexport type InputProps<T extends ElementType = \"input\"> = Polymorphic<\n T,\n InputOwnProps\n>;\n\n// ============================================================================\n// Size configurations\n// ============================================================================\n\nconst sizeConfig = {\n sm: { h: 8, px: 2, fontSize: \"sm\", rounded: \"sm\" },\n md: { h: 10, px: 3, fontSize: \"md\", rounded: \"md\" },\n lg: { h: 12, px: 4, fontSize: \"lg\", rounded: \"md\" },\n} as const;\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * Input - Text input field component\n *\n * A polymorphic input component that provides:\n * - Default element: <input>\n * - Sizes: sm, md (default), lg\n * - Variants: outline (default), filled\n * - Disabled and invalid states\n * - Focus ring styling\n */\nexport function Input<T extends ElementType = \"input\">({\n as,\n size = \"md\",\n variant = \"outline\",\n disabled = false,\n isInvalid = false,\n className,\n ...rest\n}: InputProps<T>) {\n const Component = as || \"input\";\n const sizeProps = sizeConfig[size];\n\n // Variant-specific styling\n const variantStyles =\n variant === \"outline\"\n ? {\n bg: \"transparent\" as const,\n border: \"thin\" as const,\n borderColor: \"border\" as const,\n }\n : {\n bg: \"surface\" as const,\n border: \"thin\" as const,\n borderColor: \"border-muted\" as const,\n };\n\n return (\n // @ts-expect-error - Polymorphic component type forwarding\n <Box\n as={Component}\n // Size props\n h={sizeProps.h}\n px={sizeProps.px}\n fontSize={sizeProps.fontSize}\n rounded={sizeProps.rounded}\n // Variant props\n bg={variantStyles.bg}\n border={variantStyles.border}\n borderColor={variantStyles.borderColor}\n // Full width by default\n w=\"100%\"\n // Colors\n color=\"foreground\"\n // CSS module for states\n className={clsx(styles.input, isInvalid && styles.invalid, className)}\n // Native disabled\n disabled={disabled}\n aria-invalid={isInvalid || undefined}\n {...rest}\n />\n );\n}\n"],"names":[],"mappings":";;;;;AAoCA,MAAM,aAAa;AAAA,EACjB,IAAI,EAAE,GAAG,GAAG,IAAI,GAAG,UAAU,MAAM,SAAS,KAAA;AAAA,EAC5C,IAAI,EAAE,GAAG,IAAI,IAAI,GAAG,UAAU,MAAM,SAAS,KAAA;AAAA,EAC7C,IAAI,EAAE,GAAG,IAAI,IAAI,GAAG,UAAU,MAAM,SAAS,KAAA;AAC/C;AAgBO,SAAS,MAAuC;AAAA,EACrD;AAAA,EACA,OAAO;AAAA,EACP,UAAU;AAAA,EACV,WAAW;AAAA,EACX,YAAY;AAAA,EACZ;AAAA,EACA,GAAG;AACL,GAAkB;AAChB,QAAM,YAAY,MAAM;AACxB,QAAM,YAAY,WAAW,IAAI;AAGjC,QAAM,gBACJ,YAAY,YACR;AAAA,IACE,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,aAAa;AAAA,EAAA,IAEf;AAAA,IACE,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,aAAa;AAAA,EAAA;AAGrB;AAAA;AAAA,IAEE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAI;AAAA,QAEJ,GAAG,UAAU;AAAA,QACb,IAAI,UAAU;AAAA,QACd,UAAU,UAAU;AAAA,QACpB,SAAS,UAAU;AAAA,QAEnB,IAAI,cAAc;AAAA,QAClB,QAAQ,cAAc;AAAA,QACtB,aAAa,cAAc;AAAA,QAE3B,GAAE;AAAA,QAEF,OAAM;AAAA,QAEN,WAAW,KAAK,OAAO,OAAO,aAAa,OAAO,SAAS,SAAS;AAAA,QAEpE;AAAA,QACA,gBAAc,aAAa;AAAA,QAC1B,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA;AAGV;"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
._input_72e18_1 {
|
|
2
|
+
transition-duration: 150ms;
|
|
3
|
+
transition-property: border-color, background-color, box-shadow;
|
|
4
|
+
transition-timing-function: ease-in-out;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
._input_72e18_1::placeholder {
|
|
8
|
+
color: var(--t-color-foreground-subtle);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
._input_72e18_1:focus-visible {
|
|
12
|
+
outline: none;
|
|
13
|
+
border-color: var(--t-color-primary-default);
|
|
14
|
+
box-shadow: 0 0 0 3px var(--t-color-primary-subtle);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
._input_72e18_1:disabled {
|
|
18
|
+
cursor: not-allowed;
|
|
19
|
+
opacity: 0.5;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
._input_72e18_1._invalid_72e18_22 {
|
|
23
|
+
border-color: var(--t-color-error-default);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
._input_72e18_1._invalid_72e18_22:focus-visible {
|
|
27
|
+
border-color: var(--t-color-error-default);
|
|
28
|
+
box-shadow: 0 0 0 3px var(--t-color-error-subtle);
|
|
29
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import "react";
|
|
3
|
+
import { Box } from "../Box/Box.js";
|
|
4
|
+
function Label({
|
|
5
|
+
as,
|
|
6
|
+
size = "sm",
|
|
7
|
+
weight = "medium",
|
|
8
|
+
required = false,
|
|
9
|
+
children,
|
|
10
|
+
...rest
|
|
11
|
+
}) {
|
|
12
|
+
const Component = as || "label";
|
|
13
|
+
return (
|
|
14
|
+
// @ts-expect-error - Polymorphic component type forwarding
|
|
15
|
+
/* @__PURE__ */ jsxs(
|
|
16
|
+
Box,
|
|
17
|
+
{
|
|
18
|
+
as: Component,
|
|
19
|
+
fontSize: size,
|
|
20
|
+
fontWeight: weight,
|
|
21
|
+
color: "foreground",
|
|
22
|
+
display: "inline-block",
|
|
23
|
+
mb: 1,
|
|
24
|
+
...rest,
|
|
25
|
+
children: [
|
|
26
|
+
children,
|
|
27
|
+
required && /* @__PURE__ */ jsx(Box, { as: "span", color: "error", ml: 1, "aria-hidden": "true", children: "*" })
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
)
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
export {
|
|
34
|
+
Label
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=Label.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Label.js","sources":["../../../src/components/Label/Label.tsx"],"sourcesContent":["import { type ElementType } from \"react\";\nimport { type Polymorphic } from \"@/types/Polymorphic\";\nimport { Box, type BoxOwnProps } from \"@/components/Box/Box\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype FontSize = \"xs\" | \"sm\" | \"md\" | \"lg\";\ntype FontWeight = \"normal\" | \"medium\" | \"semibold\" | \"bold\";\n\nexport type LabelOwnProps = Omit<\n BoxOwnProps,\n \"as\" | \"fontSize\" | \"fontWeight\"\n> & {\n /** Label text size */\n size?: FontSize;\n /** Label font weight */\n weight?: FontWeight;\n /** Show required asterisk */\n required?: boolean;\n};\n\nexport type LabelProps<T extends ElementType = \"label\"> = Polymorphic<\n T,\n LabelOwnProps\n>;\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * Label - Form label component\n *\n * A polymorphic label component that provides:\n * - Default element: <label>\n * - Size and weight props for typography\n * - Required indicator (red asterisk)\n * - Passes through htmlFor for accessibility\n */\nexport function Label<T extends ElementType = \"label\">({\n as,\n size = \"sm\",\n weight = \"medium\",\n required = false,\n children,\n ...rest\n}: LabelProps<T>) {\n const Component = as || \"label\";\n\n return (\n // @ts-expect-error - Polymorphic component type forwarding\n <Box\n as={Component}\n fontSize={size}\n fontWeight={weight}\n color=\"foreground\"\n display=\"inline-block\"\n mb={1}\n {...rest}\n >\n {children}\n {required && (\n <Box as=\"span\" color=\"error\" ml={1} aria-hidden=\"true\">\n *\n </Box>\n )}\n </Box>\n );\n}\n"],"names":[],"mappings":";;;AAyCO,SAAS,MAAuC;AAAA,EACrD;AAAA,EACA,OAAO;AAAA,EACP,SAAS;AAAA,EACT,WAAW;AAAA,EACX;AAAA,EACA,GAAG;AACL,GAAkB;AAChB,QAAM,YAAY,MAAM;AAExB;AAAA;AAAA,IAEE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAI;AAAA,QACJ,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,OAAM;AAAA,QACN,SAAQ;AAAA,QACR,IAAI;AAAA,QACH,GAAG;AAAA,QAEH,UAAA;AAAA,UAAA;AAAA,UACA,YACC,oBAAC,KAAA,EAAI,IAAG,QAAO,OAAM,SAAQ,IAAI,GAAG,eAAY,QAAO,UAAA,IAAA,CAEvD;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA;AAIR;"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import "react";
|
|
3
|
+
import clsx from "clsx";
|
|
4
|
+
import { Box } from "../Box/Box.js";
|
|
5
|
+
import styles from "./link.module.css.js";
|
|
6
|
+
function Link({
|
|
7
|
+
as,
|
|
8
|
+
variant = "default",
|
|
9
|
+
external = false,
|
|
10
|
+
children,
|
|
11
|
+
className,
|
|
12
|
+
...rest
|
|
13
|
+
}) {
|
|
14
|
+
const Component = as || "a";
|
|
15
|
+
const externalProps = external ? {
|
|
16
|
+
target: "_blank",
|
|
17
|
+
rel: "noopener noreferrer"
|
|
18
|
+
} : {};
|
|
19
|
+
return (
|
|
20
|
+
// @ts-expect-error - Polymorphic component type forwarding
|
|
21
|
+
/* @__PURE__ */ jsx(
|
|
22
|
+
Box,
|
|
23
|
+
{
|
|
24
|
+
as: Component,
|
|
25
|
+
color: variant === "subtle" ? void 0 : "primary",
|
|
26
|
+
cursor: "pointer",
|
|
27
|
+
className: clsx(styles.link, styles[variant], className),
|
|
28
|
+
...externalProps,
|
|
29
|
+
...rest,
|
|
30
|
+
children
|
|
31
|
+
}
|
|
32
|
+
)
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
export {
|
|
36
|
+
Link
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=Link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Link.js","sources":["../../../src/components/Link/Link.tsx"],"sourcesContent":["import { type ElementType, type ReactNode } from \"react\";\nimport clsx from \"clsx\";\nimport { type Polymorphic } from \"@/types/Polymorphic\";\nimport { Box, type BoxOwnProps } from \"@/components/Box/Box\";\nimport styles from \"./link.module.css\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport type LinkVariant = \"default\" | \"underline\" | \"subtle\";\n\nexport type LinkOwnProps = Omit<BoxOwnProps, \"as\"> & {\n /** Visual variant */\n variant?: LinkVariant;\n /** External link (opens in new tab) */\n external?: boolean;\n /** Link content */\n children?: ReactNode;\n};\n\nexport type LinkProps<T extends ElementType = \"a\"> = Polymorphic<T, LinkOwnProps>;\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * Link - Styled anchor element\n *\n * A polymorphic link component that provides:\n * - Default element: <a>\n * - Variants: default (underline on hover), underline (always), subtle (inherits color)\n * - External link support with target=\"_blank\"\n * - Router support via as prop\n */\nexport function Link<T extends ElementType = \"a\">({\n as,\n variant = \"default\",\n external = false,\n children,\n className,\n ...rest\n}: LinkProps<T>) {\n const Component = as || \"a\";\n\n const externalProps = external\n ? {\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n }\n : {};\n\n return (\n // @ts-expect-error - Polymorphic component type forwarding\n <Box\n as={Component}\n color={variant === \"subtle\" ? undefined : \"primary\"}\n cursor=\"pointer\"\n className={clsx(styles.link, styles[variant], className)}\n {...externalProps}\n {...rest}\n >\n {children}\n </Box>\n );\n}\n"],"names":[],"mappings":";;;;;AAoCO,SAAS,KAAkC;AAAA,EAChD;AAAA,EACA,UAAU;AAAA,EACV,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAiB;AACf,QAAM,YAAY,MAAM;AAExB,QAAM,gBAAgB,WAClB;AAAA,IACE,QAAQ;AAAA,IACR,KAAK;AAAA,EAAA,IAEP,CAAA;AAEJ;AAAA;AAAA,IAEE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAI;AAAA,QACJ,OAAO,YAAY,WAAW,SAAY;AAAA,QAC1C,QAAO;AAAA,QACP,WAAW,KAAK,OAAO,MAAM,OAAO,OAAO,GAAG,SAAS;AAAA,QACtD,GAAG;AAAA,QACH,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IAAA;AAAA;AAGP;"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
._link_1xu5z_1 {
|
|
2
|
+
transition: color 0.15s ease, opacity 0.15s ease;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
._link_1xu5z_1:hover {
|
|
6
|
+
opacity: 0.8;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
._default_1xu5z_9 {
|
|
10
|
+
text-decoration: none;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
._default_1xu5z_9:hover {
|
|
14
|
+
text-decoration: underline;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
._underline_1xu5z_17 {
|
|
18
|
+
text-decoration: underline;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
._subtle_1xu5z_21 {
|
|
22
|
+
text-decoration: none;
|
|
23
|
+
color: inherit;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
._subtle_1xu5z_21:hover {
|
|
27
|
+
color: var(--t-color-primary-default);
|
|
28
|
+
}
|