@starci/grammar 0.2.0 → 0.4.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 +54 -30
- package/dist/common/conformance.d.ts +31 -0
- package/dist/common/conformance.d.ts.map +1 -0
- package/dist/common/conformance.js +33 -0
- package/dist/common/conformance.js.map +1 -0
- package/dist/common/index.d.ts +5 -73
- package/dist/common/index.d.ts.map +1 -1
- package/dist/common/index.js +5 -202
- package/dist/common/index.js.map +1 -1
- package/dist/common/registry.d.ts +79 -0
- package/dist/common/registry.d.ts.map +1 -0
- package/dist/common/registry.js +34 -0
- package/dist/common/registry.js.map +1 -0
- package/dist/common/renderers.d.ts +41 -0
- package/dist/common/renderers.d.ts.map +1 -0
- package/dist/common/renderers.js +44 -0
- package/dist/common/renderers.js.map +1 -0
- package/dist/common/rule-catalog.generated.d.ts +40 -0
- package/dist/common/rule-catalog.generated.d.ts.map +1 -0
- package/dist/common/rule-catalog.generated.js +230 -0
- package/dist/common/rule-catalog.generated.js.map +1 -0
- package/dist/common/spacing.d.ts +20 -0
- package/dist/common/spacing.d.ts.map +1 -0
- package/dist/common/spacing.js +18 -0
- package/dist/common/spacing.js.map +1 -0
- package/dist/common/state.d.ts +6 -0
- package/dist/common/state.d.ts.map +1 -0
- package/dist/common/state.js +11 -0
- package/dist/common/state.js.map +1 -0
- package/dist/common/styles.css +1566 -2
- package/dist/core/LeadingNumber.d.ts +12 -0
- package/dist/core/LeadingNumber.d.ts.map +1 -0
- package/dist/core/LeadingNumber.js +10 -0
- package/dist/core/LeadingNumber.js.map +1 -0
- package/dist/core/OtpInput.d.ts +12 -0
- package/dist/core/OtpInput.d.ts.map +1 -0
- package/dist/core/OtpInput.js +22 -0
- package/dist/core/OtpInput.js.map +1 -0
- package/dist/core/StateMark.d.ts +3 -5
- package/dist/core/StateMark.d.ts.map +1 -1
- package/dist/core/StateMark.js +3 -3
- package/dist/core/StateMark.js.map +1 -1
- package/dist/core/branch/MarkdownArticle/classNames.d.ts +9 -0
- package/dist/core/branch/MarkdownArticle/classNames.d.ts.map +1 -0
- package/dist/core/branch/MarkdownArticle/classNames.js +10 -0
- package/dist/core/branch/MarkdownArticle/classNames.js.map +1 -0
- package/dist/core/branch/MarkdownArticle/index.d.ts +30 -0
- package/dist/core/branch/MarkdownArticle/index.d.ts.map +1 -0
- package/dist/core/branch/MarkdownArticle/index.js +12 -0
- package/dist/core/branch/MarkdownArticle/index.js.map +1 -0
- package/dist/core/branch/Rail/classNames.d.ts +9 -0
- package/dist/core/branch/Rail/classNames.d.ts.map +1 -0
- package/dist/core/branch/Rail/classNames.js +10 -0
- package/dist/core/branch/Rail/classNames.js.map +1 -0
- package/dist/core/branch/Rail/index.d.ts +7 -6
- package/dist/core/branch/Rail/index.d.ts.map +1 -1
- package/dist/core/branch/Rail/index.js +16 -5
- package/dist/core/branch/Rail/index.js.map +1 -1
- package/dist/core/branch/Subnav/classNames.d.ts +8 -0
- package/dist/core/branch/Subnav/classNames.d.ts.map +1 -0
- package/dist/core/branch/Subnav/classNames.js +9 -0
- package/dist/core/branch/Subnav/classNames.js.map +1 -0
- package/dist/core/branch/Subnav/index.d.ts +17 -0
- package/dist/core/branch/Subnav/index.d.ts.map +1 -0
- package/dist/core/branch/Subnav/index.js +6 -0
- package/dist/core/branch/Subnav/index.js.map +1 -0
- package/dist/core/branch/SurfaceAccordionCard/classNames.d.ts +19 -0
- package/dist/core/branch/SurfaceAccordionCard/classNames.d.ts.map +1 -0
- package/dist/core/branch/SurfaceAccordionCard/classNames.js +21 -0
- package/dist/core/branch/SurfaceAccordionCard/classNames.js.map +1 -0
- package/dist/core/branch/SurfaceAccordionCard/index.d.ts +44 -0
- package/dist/core/branch/SurfaceAccordionCard/index.d.ts.map +1 -0
- package/dist/core/branch/SurfaceAccordionCard/index.js +42 -0
- package/dist/core/branch/SurfaceAccordionCard/index.js.map +1 -0
- package/dist/core/branch/SurfaceCard/classNames.d.ts +23 -0
- package/dist/core/branch/SurfaceCard/classNames.d.ts.map +1 -0
- package/dist/core/branch/SurfaceCard/classNames.js +23 -0
- package/dist/core/branch/SurfaceCard/classNames.js.map +1 -0
- package/dist/core/branch/SurfaceCard/index.d.ts +14 -7
- package/dist/core/branch/SurfaceCard/index.d.ts.map +1 -1
- package/dist/core/branch/SurfaceCard/index.js +18 -4
- package/dist/core/branch/SurfaceCard/index.js.map +1 -1
- package/dist/core/branch/SurfaceListCard/classNames.d.ts +13 -0
- package/dist/core/branch/SurfaceListCard/classNames.d.ts.map +1 -0
- package/dist/core/branch/SurfaceListCard/classNames.js +14 -0
- package/dist/core/branch/SurfaceListCard/classNames.js.map +1 -0
- package/dist/core/branch/SurfaceListCard/index.d.ts +5 -19
- package/dist/core/branch/SurfaceListCard/index.d.ts.map +1 -1
- package/dist/core/branch/SurfaceListCard/index.js +6 -8
- package/dist/core/branch/SurfaceListCard/index.js.map +1 -1
- package/dist/core/branch/Tabs/classNames.d.ts +11 -0
- package/dist/core/branch/Tabs/classNames.d.ts.map +1 -0
- package/dist/core/branch/Tabs/classNames.js +13 -0
- package/dist/core/branch/Tabs/classNames.js.map +1 -0
- package/dist/core/branch/Tabs/index.d.ts +22 -0
- package/dist/core/branch/Tabs/index.d.ts.map +1 -0
- package/dist/core/branch/Tabs/index.js +28 -0
- package/dist/core/branch/Tabs/index.js.map +1 -0
- package/dist/core/branch/Tooltip/classNames.d.ts +3 -0
- package/dist/core/branch/Tooltip/classNames.d.ts.map +1 -0
- package/dist/core/branch/Tooltip/classNames.js +4 -0
- package/dist/core/branch/Tooltip/classNames.js.map +1 -0
- package/dist/core/branch/Tooltip/index.d.ts +18 -0
- package/dist/core/branch/Tooltip/index.d.ts.map +1 -0
- package/dist/core/branch/Tooltip/index.js +14 -0
- package/dist/core/branch/Tooltip/index.js.map +1 -0
- package/dist/core/classNames.d.ts +23 -0
- package/dist/core/classNames.d.ts.map +1 -0
- package/dist/core/classNames.js +24 -0
- package/dist/core/classNames.js.map +1 -0
- package/dist/core/composite/EmptyNotice/index.d.ts +17 -0
- package/dist/core/composite/EmptyNotice/index.d.ts.map +1 -0
- package/dist/core/composite/EmptyNotice/index.js +7 -0
- package/dist/core/composite/EmptyNotice/index.js.map +1 -0
- package/dist/core/composite/HorizontalScrollRegion/index.d.ts +9 -0
- package/dist/core/composite/HorizontalScrollRegion/index.d.ts.map +1 -0
- package/dist/core/composite/HorizontalScrollRegion/index.js +10 -0
- package/dist/core/composite/HorizontalScrollRegion/index.js.map +1 -0
- package/dist/core/composite/StaticStateRow/index.d.ts +1 -5
- package/dist/core/composite/StaticStateRow/index.d.ts.map +1 -1
- package/dist/core/composite/StaticStateRow/index.js +4 -3
- package/dist/core/composite/StaticStateRow/index.js.map +1 -1
- package/dist/core/composite/VerticalScrollRegion/index.d.ts +10 -0
- package/dist/core/composite/VerticalScrollRegion/index.d.ts.map +1 -0
- package/dist/core/composite/VerticalScrollRegion/index.js +10 -0
- package/dist/core/composite/VerticalScrollRegion/index.js.map +1 -0
- package/dist/core/composition/ChatWorkspace/classNames.d.ts +30 -0
- package/dist/core/composition/ChatWorkspace/classNames.d.ts.map +1 -0
- package/dist/core/composition/ChatWorkspace/classNames.js +31 -0
- package/dist/core/composition/ChatWorkspace/classNames.js.map +1 -0
- package/dist/core/composition/ChatWorkspace/index.d.ts +48 -0
- package/dist/core/composition/ChatWorkspace/index.d.ts.map +1 -0
- package/dist/core/composition/ChatWorkspace/index.js +40 -0
- package/dist/core/composition/ChatWorkspace/index.js.map +1 -0
- package/dist/core/composition/NavigationFeatureNav/classNames.d.ts +9 -0
- package/dist/core/composition/NavigationFeatureNav/classNames.d.ts.map +1 -0
- package/dist/core/composition/NavigationFeatureNav/classNames.js +10 -0
- package/dist/core/composition/NavigationFeatureNav/classNames.js.map +1 -0
- package/dist/core/composition/NavigationFeatureNav/index.d.ts +26 -0
- package/dist/core/composition/NavigationFeatureNav/index.d.ts.map +1 -0
- package/dist/core/composition/NavigationFeatureNav/index.js +13 -0
- package/dist/core/composition/NavigationFeatureNav/index.js.map +1 -0
- package/dist/core/composition/PrimaryRailLayout/index.d.ts +14 -0
- package/dist/core/composition/PrimaryRailLayout/index.d.ts.map +1 -0
- package/dist/core/composition/PrimaryRailLayout/index.js +8 -0
- package/dist/core/composition/PrimaryRailLayout/index.js.map +1 -0
- package/dist/core/composition/Sidebar/index.d.ts +31 -0
- package/dist/core/composition/Sidebar/index.d.ts.map +1 -0
- package/dist/core/composition/Sidebar/index.js +40 -0
- package/dist/core/composition/Sidebar/index.js.map +1 -0
- package/dist/core/composition/WorkspaceShell/classNames.d.ts +11 -0
- package/dist/core/composition/WorkspaceShell/classNames.d.ts.map +1 -0
- package/dist/core/composition/WorkspaceShell/classNames.js +12 -0
- package/dist/core/composition/WorkspaceShell/classNames.js.map +1 -0
- package/dist/core/composition/WorkspaceShell/index.d.ts +67 -0
- package/dist/core/composition/WorkspaceShell/index.d.ts.map +1 -0
- package/dist/core/composition/WorkspaceShell/index.js +20 -0
- package/dist/core/composition/WorkspaceShell/index.js.map +1 -0
- package/dist/core/dna.d.ts +180 -0
- package/dist/core/dna.d.ts.map +1 -0
- package/dist/core/dna.js +175 -0
- package/dist/core/dna.js.map +1 -0
- package/dist/core/index.d.ts +59 -10
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +27 -10
- package/dist/core/index.js.map +1 -1
- package/dist/core/primitive/Badge/index.d.ts +12 -0
- package/dist/core/primitive/Badge/index.d.ts.map +1 -0
- package/dist/core/primitive/Badge/index.js +15 -0
- package/dist/core/primitive/Badge/index.js.map +1 -0
- package/dist/core/primitive/Button/index.d.ts +52 -0
- package/dist/core/primitive/Button/index.d.ts.map +1 -0
- package/dist/core/primitive/Button/index.js +26 -0
- package/dist/core/primitive/Button/index.js.map +1 -0
- package/dist/core/primitive/Divider/index.d.ts +7 -0
- package/dist/core/primitive/Divider/index.d.ts.map +1 -0
- package/dist/core/primitive/Divider/index.js +5 -0
- package/dist/core/primitive/Divider/index.js.map +1 -0
- package/dist/core/primitive/GrammarRoot/index.d.ts +10 -0
- package/dist/core/primitive/GrammarRoot/index.d.ts.map +1 -0
- package/dist/core/primitive/GrammarRoot/index.js +5 -0
- package/dist/core/primitive/GrammarRoot/index.js.map +1 -0
- package/dist/core/primitive/Heading/index.d.ts +15 -0
- package/dist/core/primitive/Heading/index.d.ts.map +1 -0
- package/dist/core/primitive/Heading/index.js +26 -0
- package/dist/core/primitive/Heading/index.js.map +1 -0
- package/dist/core/primitive/Icon/index.d.ts +31 -0
- package/dist/core/primitive/Icon/index.d.ts.map +1 -0
- package/dist/core/primitive/Icon/index.js +23 -0
- package/dist/core/primitive/Icon/index.js.map +1 -0
- package/dist/core/primitive/IconButton/index.d.ts +13 -0
- package/dist/core/primitive/IconButton/index.d.ts.map +1 -0
- package/dist/core/primitive/IconButton/index.js +9 -0
- package/dist/core/primitive/IconButton/index.js.map +1 -0
- package/dist/core/primitive/IconTile/index.d.ts +17 -0
- package/dist/core/primitive/IconTile/index.d.ts.map +1 -0
- package/dist/core/primitive/IconTile/index.js +32 -0
- package/dist/core/primitive/IconTile/index.js.map +1 -0
- package/dist/core/primitive/IncludedMark/index.d.ts +10 -0
- package/dist/core/primitive/IncludedMark/index.d.ts.map +1 -0
- package/dist/core/primitive/IncludedMark/index.js +8 -0
- package/dist/core/primitive/IncludedMark/index.js.map +1 -0
- package/dist/core/primitive/Input/index.d.ts +31 -0
- package/dist/core/primitive/Input/index.d.ts.map +1 -0
- package/dist/core/primitive/Input/index.js +27 -0
- package/dist/core/primitive/Input/index.js.map +1 -0
- package/dist/core/primitive/Label/classNames.d.ts +12 -0
- package/dist/core/primitive/Label/classNames.d.ts.map +1 -0
- package/dist/core/primitive/Label/classNames.js +13 -0
- package/dist/core/primitive/Label/classNames.js.map +1 -0
- package/dist/core/primitive/Label/index.d.ts +11 -0
- package/dist/core/primitive/Label/index.d.ts.map +1 -0
- package/dist/core/primitive/Label/index.js +14 -0
- package/dist/core/primitive/Label/index.js.map +1 -0
- package/dist/core/primitive/MediaFrame/index.d.ts +15 -0
- package/dist/core/primitive/MediaFrame/index.d.ts.map +1 -0
- package/dist/core/primitive/MediaFrame/index.js +8 -0
- package/dist/core/primitive/MediaFrame/index.js.map +1 -0
- package/dist/core/primitive/PageContainer/index.d.ts +9 -0
- package/dist/core/primitive/PageContainer/index.d.ts.map +1 -0
- package/dist/core/primitive/PageContainer/index.js +8 -0
- package/dist/core/primitive/PageContainer/index.js.map +1 -0
- package/dist/core/primitive/Progress/index.d.ts +11 -0
- package/dist/core/primitive/Progress/index.d.ts.map +1 -0
- package/dist/core/primitive/Progress/index.js +13 -0
- package/dist/core/primitive/Progress/index.js.map +1 -0
- package/dist/core/primitive/RankArtwork/index.d.ts +12 -0
- package/dist/core/primitive/RankArtwork/index.d.ts.map +1 -0
- package/dist/core/primitive/RankArtwork/index.js +14 -0
- package/dist/core/primitive/RankArtwork/index.js.map +1 -0
- package/dist/core/primitive/SectionHeader/index.d.ts +15 -0
- package/dist/core/primitive/SectionHeader/index.d.ts.map +1 -0
- package/dist/core/primitive/SectionHeader/index.js +6 -0
- package/dist/core/primitive/SectionHeader/index.js.map +1 -0
- package/dist/core/primitive/SurfaceCopyGroup/index.d.ts +7 -0
- package/dist/core/primitive/SurfaceCopyGroup/index.d.ts.map +1 -0
- package/dist/core/primitive/SurfaceCopyGroup/index.js +5 -0
- package/dist/core/primitive/SurfaceCopyGroup/index.js.map +1 -0
- package/dist/core/primitive/Text/index.d.ts +25 -0
- package/dist/core/primitive/Text/index.d.ts.map +1 -0
- package/dist/core/primitive/Text/index.js +57 -0
- package/dist/core/primitive/Text/index.js.map +1 -0
- package/dist/core/primitive/TextAction/index.d.ts +45 -0
- package/dist/core/primitive/TextAction/index.d.ts.map +1 -0
- package/dist/core/primitive/TextAction/index.js +112 -0
- package/dist/core/primitive/TextAction/index.js.map +1 -0
- package/dist/core/primitive/actionStyles.d.ts +5 -0
- package/dist/core/primitive/actionStyles.d.ts.map +1 -0
- package/dist/core/primitive/actionStyles.js +19 -0
- package/dist/core/primitive/actionStyles.js.map +1 -0
- package/dist/core/state.d.ts +4 -4
- package/dist/core/state.d.ts.map +1 -1
- package/dist/core/state.js +4 -4
- package/dist/core/state.js.map +1 -1
- package/dist/core/styles.css +152 -225
- package/dist/heritage/index.d.ts +27 -0
- package/dist/heritage/index.d.ts.map +1 -0
- package/dist/heritage/index.js +44 -0
- package/dist/heritage/index.js.map +1 -0
- package/dist/heritage/styles.css +165 -0
- package/dist/offset-pop/index.d.ts +9 -263
- package/dist/offset-pop/index.d.ts.map +1 -1
- package/dist/offset-pop/index.js +35 -63
- package/dist/offset-pop/index.js.map +1 -1
- package/dist/offset-pop/styles.css +292 -393
- package/package.json +78 -72
- package/dist/core/contracts.d.ts +0 -190
- package/dist/core/contracts.d.ts.map +0 -1
- package/dist/core/contracts.js +0 -145
- package/dist/core/contracts.js.map +0 -1
- package/dist/core/grammar.d.ts +0 -18
- package/dist/core/grammar.d.ts.map +0 -1
- package/dist/core/grammar.js +0 -27
- package/dist/core/grammar.js.map +0 -1
- package/dist/core/layout.d.ts +0 -9
- package/dist/core/layout.d.ts.map +0 -1
- package/dist/core/layout.js +0 -43
- package/dist/core/layout.js.map +0 -1
- package/dist/core/rules.d.ts +0 -63
- package/dist/core/rules.d.ts.map +0 -1
- package/dist/core/rules.js +0 -66
- package/dist/core/rules.js.map +0 -1
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export type BadgeTone = "neutral" | "accent" | "success" | "warning" | "danger";
|
|
3
|
+
export type BadgeProps = {
|
|
4
|
+
readonly children?: ReactNode;
|
|
5
|
+
/** App-owned status glyph or artwork. */
|
|
6
|
+
readonly startContent?: ReactNode;
|
|
7
|
+
readonly tone?: BadgeTone;
|
|
8
|
+
readonly isSkeleton?: boolean;
|
|
9
|
+
};
|
|
10
|
+
/** Compact semantic status or figure; product glyph identity remains app-owned. */
|
|
11
|
+
export declare const Badge: ({ children, startContent, tone, isSkeleton }: BadgeProps) => import("react").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/Badge/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAA;AAE/E,MAAM,MAAM,UAAU,GAAG;IACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;IAC7B,yCAAyC;IACzC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAA;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAA;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAChC,CAAA;AAcD,mFAAmF;AACnF,eAAO,MAAM,KAAK,GAAI,8CAAkE,UAAU,gCAcjG,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Chip, skeletonVariants } from "@heroui/react";
|
|
3
|
+
const TONE_COLORS = {
|
|
4
|
+
neutral: "default",
|
|
5
|
+
accent: "accent",
|
|
6
|
+
success: "success",
|
|
7
|
+
warning: "warning",
|
|
8
|
+
danger: "danger",
|
|
9
|
+
};
|
|
10
|
+
const SKELETON_CLASS_NAME = skeletonVariants({ animationType: "shimmer" }).base({
|
|
11
|
+
className: "select-none text-transparent",
|
|
12
|
+
});
|
|
13
|
+
/** Compact semantic status or figure; product glyph identity remains app-owned. */
|
|
14
|
+
export const Badge = ({ children, startContent, tone = "neutral", isSkeleton = false }) => (_jsxs(Chip, { "data-tier": "atom", "data-component": "Badge", "data-tone": tone, "data-loading": isSkeleton ? "true" : "false", color: TONE_COLORS[tone], variant: "soft", size: "sm", ...(isSkeleton ? { "aria-hidden": true, className: SKELETON_CLASS_NAME } : {}), children: [isSkeleton ? null : startContent, children ?? "\u00a0"] }));
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/Badge/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAatD,MAAM,WAAW,GAAG;IAChB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;CACV,CAAA;AAEV,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC;IAC5E,SAAS,EAAE,8BAA8B;CAC5C,CAAC,CAAA;AAEF,mFAAmF;AACnF,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,GAAG,SAAS,EAAE,UAAU,GAAG,KAAK,EAAc,EAAE,EAAE,CAAC,CACnG,MAAC,IAAI,iBACS,MAAM,oBACD,OAAO,eACX,IAAI,kBACD,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAC3C,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,EACxB,OAAO,EAAC,MAAM,EACd,IAAI,EAAC,IAAI,KACL,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAE9E,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,EAChC,QAAQ,IAAI,QAAQ,IAClB,CACV,CAAA"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export type ButtonVariant = "primary" | "secondary" | "tertiary" | "outline" | "ghost";
|
|
3
|
+
export type ButtonSize = "sm" | "md" | "lg";
|
|
4
|
+
export type ButtonType = "button" | "submit" | "reset";
|
|
5
|
+
type ButtonBase = {
|
|
6
|
+
/** The visible action label. It remains present while the action is pending. */
|
|
7
|
+
readonly children: ReactNode;
|
|
8
|
+
readonly variant?: ButtonVariant;
|
|
9
|
+
readonly size?: ButtonSize;
|
|
10
|
+
/** Decorative or explanatory content before the label. Product icon identity stays with the app. */
|
|
11
|
+
readonly startContent?: ReactNode;
|
|
12
|
+
/** Directional or explanatory content after the label. */
|
|
13
|
+
readonly endContent?: ReactNode;
|
|
14
|
+
readonly isDisabled?: boolean;
|
|
15
|
+
/** Initial unresolved-content geometry. It is distinct from action-owned pending. */
|
|
16
|
+
readonly isSkeleton?: boolean;
|
|
17
|
+
/** Pending belongs to the action that started the work and blocks duplicate presses. */
|
|
18
|
+
readonly isPending?: boolean;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* A real browser destination wearing the button appearance. It renders an anchor, so the platform
|
|
22
|
+
* supplies middle-click, copy-link, and the `link` role. Pending or disabled withholds the href.
|
|
23
|
+
*/
|
|
24
|
+
type DestinationButton = {
|
|
25
|
+
readonly href: string;
|
|
26
|
+
readonly target?: "_blank" | "_self";
|
|
27
|
+
readonly rel?: string;
|
|
28
|
+
readonly download?: boolean | string;
|
|
29
|
+
/** Runs alongside navigation. It cannot cancel the destination. */
|
|
30
|
+
readonly onFollow?: () => void;
|
|
31
|
+
readonly onPress?: never;
|
|
32
|
+
readonly type?: never;
|
|
33
|
+
};
|
|
34
|
+
/** A same-document command. It renders the vendor button and may submit or reset a form. */
|
|
35
|
+
type CommandButton = {
|
|
36
|
+
readonly onPress?: () => void;
|
|
37
|
+
readonly type?: ButtonType;
|
|
38
|
+
readonly href?: never;
|
|
39
|
+
readonly target?: never;
|
|
40
|
+
readonly rel?: never;
|
|
41
|
+
readonly download?: never;
|
|
42
|
+
readonly onFollow?: never;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* The button-shaped action. The element is decided by which of `href` or `onPress` is present, and
|
|
46
|
+
* the type forbids both, so a destination cannot be written as a button by choosing the wrong leaf.
|
|
47
|
+
*/
|
|
48
|
+
export type ButtonProps = ButtonBase & (DestinationButton | CommandButton);
|
|
49
|
+
/** Button-shaped action: an anchor for a destination, the vendor button for a command. */
|
|
50
|
+
export declare const Button: (props: ButtonProps) => import("react").JSX.Element;
|
|
51
|
+
export {};
|
|
52
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/Button/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAA;AACtF,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAC3C,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAA;AAEtD,KAAK,UAAU,GAAG;IACd,gFAAgF;IAChF,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAA;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAA;IAC1B,oGAAoG;IACpG,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAA;IACjC,0DAA0D;IAC1D,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,CAAA;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,qFAAqF;IACrF,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,wFAAwF;IACxF,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAC/B,CAAA;AAED;;;GAGG;AACH,KAAK,iBAAiB,GAAG;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAA;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IACpC,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,CAAA;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAA;CACxB,CAAA;AAED,4FAA4F;AAC5F,KAAK,aAAa,GAAG;IACjB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAA;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAA;IACvB,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,CAAA;IACpB,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAA;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAA;CAC5B,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,CAAC,iBAAiB,GAAG,aAAa,CAAC,CAAA;AAe1E,0FAA0F;AAC1F,eAAO,MAAM,MAAM,GAAI,OAAO,WAAW,gCAgExC,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Button as HeroButton, Spinner as HeroSpinner, buttonVariants, skeletonVariants } from "@heroui/react";
|
|
3
|
+
const VARIANTS = {
|
|
4
|
+
primary: "primary",
|
|
5
|
+
secondary: "secondary",
|
|
6
|
+
tertiary: "tertiary",
|
|
7
|
+
outline: "outline",
|
|
8
|
+
ghost: "ghost",
|
|
9
|
+
};
|
|
10
|
+
const SIZES = { sm: "sm", md: "md", lg: "lg" };
|
|
11
|
+
const SKELETON_CLASS_NAME = skeletonVariants({ animationType: "shimmer" }).base({
|
|
12
|
+
className: "select-none text-transparent",
|
|
13
|
+
});
|
|
14
|
+
/** Button-shaped action: an anchor for a destination, the vendor button for a command. */
|
|
15
|
+
export const Button = (props) => {
|
|
16
|
+
const { children, variant = "secondary", size = "md", startContent, endContent, isDisabled = false, isSkeleton = false, isPending = false, } = props;
|
|
17
|
+
const unavailable = isDisabled || isPending || isSkeleton;
|
|
18
|
+
const content = (_jsxs(_Fragment, { children: [isSkeleton ? null : isPending ? _jsx(HeroSpinner, { size: "sm", color: "current", "aria-hidden": "true" }) : startContent, _jsx("span", { "aria-busy": isPending || undefined, children: children }), isPending || isSkeleton ? null : endContent] }));
|
|
19
|
+
if (props.href !== undefined) {
|
|
20
|
+
const { href, target, rel, download, onFollow } = props;
|
|
21
|
+
return (_jsx("a", { "data-tier": "atom", "data-component": "Button", "data-element": "a", "data-loading": isSkeleton ? "true" : "false", "data-action-pending": isPending ? "true" : "false", role: unavailable ? "link" : undefined, "aria-disabled": unavailable || undefined, "aria-busy": isPending || undefined, "aria-hidden": isSkeleton || undefined, className: buttonVariants({ variant: VARIANTS[variant], size: SIZES[size], className: isSkeleton ? SKELETON_CLASS_NAME : undefined }), ...(unavailable ? {} : { href }), ...(target === undefined ? {} : { target }), ...(rel === undefined ? target === "_blank" ? { rel: "noopener noreferrer" } : {} : { rel }), ...(download === undefined ? {} : { download }), ...(onFollow === undefined || unavailable ? {} : { onClick: onFollow }), children: content }));
|
|
22
|
+
}
|
|
23
|
+
const { onPress, type = "button" } = props;
|
|
24
|
+
return (_jsx(HeroButton, { "data-tier": "atom", "data-component": "Button", "data-element": "button", "data-loading": isSkeleton ? "true" : "false", "data-action-pending": isPending ? "true" : "false", type: type, variant: VARIANTS[variant], size: SIZES[size], isDisabled: unavailable, isPending: isPending, ...(isSkeleton ? { className: SKELETON_CLASS_NAME } : {}), ...(unavailable || onPress === undefined ? {} : { onPress }), children: content }));
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/Button/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type DividerProps = {
|
|
2
|
+
/** Visible, localized word naming the alternative boundary. */
|
|
3
|
+
readonly label: string;
|
|
4
|
+
};
|
|
5
|
+
/** Labelled alternative boundary with intrinsic separator semantics. */
|
|
6
|
+
export declare const Divider: ({ label }: DividerProps) => import("react").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/Divider/index.tsx"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG;IACvB,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,wEAAwE;AACxE,eAAO,MAAM,OAAO,GAAI,WAAW,YAAY,gCAa9C,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Text } from "../Text/index.js";
|
|
3
|
+
/** Labelled alternative boundary with intrinsic separator semantics. */
|
|
4
|
+
export const Divider = ({ label }) => (_jsxs("div", { "data-tier": "atom", "data-component": "Divider", role: "separator", "aria-label": label, "data-contract": "GAP-3", className: "flex flex-row items-center gap-3", children: [_jsx("span", { "aria-hidden": "true", "data-contract": "BOUNDARY-5", className: "h-px grow bg-border" }), _jsx(Text, { as: "span", size: "sm", tone: "muted", children: label }), _jsx("span", { "aria-hidden": "true", "data-contract": "BOUNDARY-5", className: "h-px grow bg-border" })] }));
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/Divider/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAOvC,wEAAwE;AACxE,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EAAE,KAAK,EAAgB,EAAE,EAAE,CAAC,CAChD,4BACc,MAAM,oBACD,SAAS,EACxB,IAAI,EAAC,WAAW,gBACJ,KAAK,mBACH,OAAO,EACrB,SAAS,EAAC,kCAAkC,aAE5C,8BAAkB,MAAM,mBAAe,YAAY,EAAC,SAAS,EAAC,qBAAqB,GAAG,EACtF,KAAC,IAAI,IAAC,EAAE,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,YAAE,KAAK,GAAQ,EACrD,8BAAkB,MAAM,mBAAe,YAAY,EAAC,SAAS,EAAC,qBAAqB,GAAG,IACpF,CACT,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ComponentPropsWithoutRef } from "react";
|
|
2
|
+
export type GrammarRootProps = Omit<ComponentPropsWithoutRef<"div">, "color"> & {
|
|
3
|
+
/** `system` follows the reader unless an explicit light or dark scope is requested. */
|
|
4
|
+
readonly theme?: "system" | "light" | "dark";
|
|
5
|
+
/** Visual families install their scoped material contract on this neutral root. */
|
|
6
|
+
readonly "data-grammar-family"?: string;
|
|
7
|
+
};
|
|
8
|
+
/** Neutral Common boundary. Select a visual family with its `scopeProps`. */
|
|
9
|
+
export declare const GrammarRoot: ({ className, theme, ...props }: GrammarRootProps) => import("react").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/GrammarRoot/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,OAAO,CAAA;AAErD,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG;IAC5E,uFAAuF;IACvF,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;IAC5C,mFAAmF;IACnF,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAA;CAC1C,CAAA;AAED,6EAA6E;AAC7E,eAAO,MAAM,WAAW,GAAI,gCAA2C,gBAAgB,gCAOtF,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "@heroui/react";
|
|
3
|
+
/** Neutral Common boundary. Select a visual family with its `scopeProps`. */
|
|
4
|
+
export const GrammarRoot = ({ className, theme = "system", ...props }) => (_jsx("div", { ...props, className: cn("grammar-common-root", className), "data-grammar": "common", "data-grammar-theme": theme }));
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/GrammarRoot/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAA;AAUlC,6EAA6E;AAC7E,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,GAAG,QAAQ,EAAE,GAAG,KAAK,EAAoB,EAAE,EAAE,CAAC,CACxF,iBACQ,KAAK,EACT,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,kBAClC,QAAQ,wBACD,KAAK,GAC3B,CACL,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export type HeadingLevel = 1 | 2 | 3 | 4;
|
|
3
|
+
export type HeadingScale = "standard" | "display";
|
|
4
|
+
export type HeadingProps = {
|
|
5
|
+
readonly children: ReactNode;
|
|
6
|
+
/** Outline semantics and the standard visual recipe move together. */
|
|
7
|
+
readonly level?: HeadingLevel;
|
|
8
|
+
/** Display changes emphasis without changing the document outline. */
|
|
9
|
+
readonly scale?: HeadingScale;
|
|
10
|
+
readonly isSkeleton?: boolean;
|
|
11
|
+
readonly isVisuallyHidden?: boolean;
|
|
12
|
+
};
|
|
13
|
+
/** Semantic heading whose outline level never changes merely to obtain a visual size. */
|
|
14
|
+
export declare const Heading: ({ children, level, scale, isSkeleton, isVisuallyHidden, }: HeadingProps) => import("react").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/Heading/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AACxC,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,SAAS,CAAA;AAEjD,MAAM,MAAM,YAAY,GAAG;IACvB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B,sEAAsE;IACtE,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAA;IAC7B,sEAAsE;IACtE,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAA;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CACtC,CAAA;AAqBD,yFAAyF;AACzF,eAAO,MAAM,OAAO,GAAI,2DAMrB,YAAY,gCAwBd,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Typography, cn, skeletonVariants } from "@heroui/react";
|
|
3
|
+
const LEVEL_CLASS_NAMES = {
|
|
4
|
+
1: "text-xl font-semibold tracking-tight",
|
|
5
|
+
2: "text-base font-semibold",
|
|
6
|
+
3: "text-sm font-medium",
|
|
7
|
+
4: "text-xs font-medium text-muted",
|
|
8
|
+
};
|
|
9
|
+
const DISPLAY_CLASS_NAME = "text-4xl font-semibold leading-tight tracking-tight";
|
|
10
|
+
/** font.md Scale: FONT-4/FONT-3/FONT-2/FONT-1 for level 1..4; level 4 also matches tone.md TONE-2 via its `text-muted`. */
|
|
11
|
+
const FONT_RULE_BY_LEVEL = {
|
|
12
|
+
1: "FONT-4",
|
|
13
|
+
2: "FONT-3",
|
|
14
|
+
3: "FONT-2",
|
|
15
|
+
4: "FONT-1",
|
|
16
|
+
};
|
|
17
|
+
const SKELETON_CLASS_NAME = skeletonVariants({ animationType: "shimmer" }).base({
|
|
18
|
+
className: "select-none text-transparent",
|
|
19
|
+
});
|
|
20
|
+
/** Semantic heading whose outline level never changes merely to obtain a visual size. */
|
|
21
|
+
export const Heading = ({ children, level = 2, scale = "standard", isSkeleton = false, isVisuallyHidden = false, }) => (_jsx(Typography.Heading, { "data-tier": "atom", "data-component": "Heading", "data-level": level, "data-scale": scale, "data-loading": isSkeleton ? "true" : "false", "aria-hidden": isSkeleton || undefined, "data-contract": scale === "display"
|
|
22
|
+
? "FONT-6"
|
|
23
|
+
: level === 4
|
|
24
|
+
? `${FONT_RULE_BY_LEVEL[4]} TONE-2`
|
|
25
|
+
: FONT_RULE_BY_LEVEL[level], level: level, className: cn(scale === "display" ? DISPLAY_CLASS_NAME : LEVEL_CLASS_NAMES[level], isSkeleton ? SKELETON_CLASS_NAME : undefined, isVisuallyHidden ? "sr-only" : undefined) ?? "", children: children }));
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/Heading/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAgBhE,MAAM,iBAAiB,GAAG;IACtB,CAAC,EAAE,sCAAsC;IACzC,CAAC,EAAE,yBAAyB;IAC5B,CAAC,EAAE,qBAAqB;IACxB,CAAC,EAAE,gCAAgC;CAC7B,CAAA;AAEV,MAAM,kBAAkB,GAAG,qDAAqD,CAAA;AAChF,2HAA2H;AAC3H,MAAM,kBAAkB,GAAG;IACvB,CAAC,EAAE,QAAQ;IACX,CAAC,EAAE,QAAQ;IACX,CAAC,EAAE,QAAQ;IACX,CAAC,EAAE,QAAQ;CACL,CAAA;AACV,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC;IAC5E,SAAS,EAAE,8BAA8B;CAC5C,CAAC,CAAA;AAEF,yFAAyF;AACzF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EACpB,QAAQ,EACR,KAAK,GAAG,CAAC,EACT,KAAK,GAAG,UAAU,EAClB,UAAU,GAAG,KAAK,EAClB,gBAAgB,GAAG,KAAK,GACb,EAAE,EAAE,CAAC,CAChB,KAAC,UAAU,CAAC,OAAO,iBACL,MAAM,oBACD,SAAS,gBACZ,KAAK,gBACL,KAAK,kBACH,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,iBAC9B,UAAU,IAAI,SAAS,mBAEhC,KAAK,KAAK,SAAS;QACf,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,KAAK,KAAK,CAAC;YACT,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,SAAS;YACnC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAEvC,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,EAAE,CACT,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,EACnE,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,EAC5C,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAC3C,IAAI,EAAE,YAEN,QAAQ,GACQ,CACxB,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export type IconUsage = "heading" | "leading" | "chip";
|
|
2
|
+
/**
|
|
3
|
+
* Minimal structural contract passed to an app-owned SVG glyph.
|
|
4
|
+
*
|
|
5
|
+
* This deliberately does not expose React's SVGProps in the public declaration. File-linked
|
|
6
|
+
* consumers can carry a different compatible @types/react installation, whose private ref symbol
|
|
7
|
+
* must not become part of Grammar's package boundary.
|
|
8
|
+
*/
|
|
9
|
+
export type IconSourceProps = {
|
|
10
|
+
readonly className?: string;
|
|
11
|
+
readonly focusable?: "false";
|
|
12
|
+
readonly role?: "img";
|
|
13
|
+
readonly "aria-hidden"?: boolean;
|
|
14
|
+
readonly "aria-label"?: string;
|
|
15
|
+
readonly "data-tier"?: string;
|
|
16
|
+
readonly "data-component"?: string;
|
|
17
|
+
readonly "data-usage"?: string;
|
|
18
|
+
};
|
|
19
|
+
/** Function or class SVG glyph selected by the consuming app's icon registry. */
|
|
20
|
+
export type IconSource = ((props: IconSourceProps) => unknown) | (new (props: IconSourceProps) => unknown);
|
|
21
|
+
export type IconProps = {
|
|
22
|
+
/** App-owned glyph identity. Grammar owns only its usage geometry and accessibility. */
|
|
23
|
+
readonly source: IconSource;
|
|
24
|
+
readonly usage?: IconUsage;
|
|
25
|
+
/** Omit for a decorative glyph; provide when the icon itself carries meaning. */
|
|
26
|
+
readonly ariaLabel?: string;
|
|
27
|
+
readonly isSkeleton?: boolean;
|
|
28
|
+
};
|
|
29
|
+
/** Product-neutral icon carrier; semantic glyph names and libraries remain app authority. */
|
|
30
|
+
export declare const Icon: ({ source: Source, usage, ariaLabel, isSkeleton }: IconProps) => import("react").JSX.Element;
|
|
31
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/Icon/index.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAA;AACtD;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CACjC,CAAA;AAED,iFAAiF;AACjF,MAAM,MAAM,UAAU,GAChB,CAAC,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,GACrC,CAAC,KAAK,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,CAAA;AAE/C,MAAM,MAAM,SAAS,GAAG;IACpB,wFAAwF;IACxF,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAA;IAC1B,iFAAiF;IACjF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAChC,CAAA;AAYD,6FAA6F;AAC7F,eAAO,MAAM,IAAI,GAAI,kDAAmE,SAAS,gCAoBhG,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { skeletonVariants } from "@heroui/react";
|
|
3
|
+
const USAGE_CLASS_NAMES = {
|
|
4
|
+
heading: "size-6 shrink-0",
|
|
5
|
+
leading: "size-5 shrink-0",
|
|
6
|
+
chip: "size-4 shrink-0",
|
|
7
|
+
};
|
|
8
|
+
const SKELETON_CLASS_NAME = skeletonVariants({ animationType: "shimmer" }).base({
|
|
9
|
+
className: "size-5 shrink-0 rounded-full",
|
|
10
|
+
});
|
|
11
|
+
/** Product-neutral icon carrier; semantic glyph names and libraries remain app authority. */
|
|
12
|
+
export const Icon = ({ source: Source, usage = "chip", ariaLabel, isSkeleton = false }) => {
|
|
13
|
+
if (isSkeleton) {
|
|
14
|
+
return _jsx("span", { "data-tier": "atom", "data-component": "Icon", "data-loading": "true", "aria-hidden": true, className: SKELETON_CLASS_NAME });
|
|
15
|
+
}
|
|
16
|
+
// The private cast is the only React-type identity boundary. Consumers see the structural
|
|
17
|
+
// IconSource contract above, while JSX still receives the local React component type.
|
|
18
|
+
const SourceComponent = Source;
|
|
19
|
+
return (_jsx(SourceComponent, { "data-tier": "atom", "data-component": "Icon", "data-usage": usage, focusable: "false", className: USAGE_CLASS_NAMES[usage], ...(ariaLabel === undefined
|
|
20
|
+
? { "aria-hidden": true }
|
|
21
|
+
: { "aria-label": ariaLabel, role: "img" }) }));
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/Icon/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAoChD,MAAM,iBAAiB,GAAG;IACtB,OAAO,EAAE,iBAAiB;IAC1B,OAAO,EAAE,iBAAiB;IAC1B,IAAI,EAAE,iBAAiB;CACjB,CAAA;AAEV,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC;IAC5E,SAAS,EAAE,8BAA8B;CAC5C,CAAC,CAAA;AAEF,6FAA6F;AAC7F,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,SAAS,EAAE,UAAU,GAAG,KAAK,EAAa,EAAE,EAAE;IACjG,IAAI,UAAU,EAAE,CAAC;QACb,OAAO,4BAAgB,MAAM,oBAAgB,MAAM,kBAAc,MAAM,uBAAa,SAAS,EAAE,mBAAmB,GAAI,CAAA;IAC1H,CAAC;IAED,0FAA0F;IAC1F,sFAAsF;IACtF,MAAM,eAAe,GAAG,MAAgD,CAAA;IACxE,OAAO,CACH,KAAC,eAAe,iBACF,MAAM,oBACD,MAAM,gBACT,KAAK,EACjB,SAAS,EAAC,OAAO,EACjB,SAAS,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAC/B,CAAC,SAAS,KAAK,SAAS;YACxB,CAAC,CAAC,EAAE,aAAa,EAAE,IAAa,EAAE;YAClC,CAAC,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,KAAc,EAAE,CAAC,GAC1D,CACL,CAAA;AACL,CAAC,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type IconSource } from "../Icon/index.js";
|
|
2
|
+
export type IconButtonProps = {
|
|
3
|
+
readonly source: IconSource;
|
|
4
|
+
/** Required accessible name for the glyph-only action. */
|
|
5
|
+
readonly label: string;
|
|
6
|
+
readonly isActive?: boolean;
|
|
7
|
+
readonly isDisabled?: boolean;
|
|
8
|
+
readonly isSkeleton?: boolean;
|
|
9
|
+
readonly onPress?: () => void;
|
|
10
|
+
};
|
|
11
|
+
/** Circular glyph-only action with a mandatory accessible name. */
|
|
12
|
+
export declare const IconButton: ({ source, label, isActive, isDisabled, isSkeleton, onPress, }: IconButtonProps) => import("react").JSX.Element;
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/IconButton/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAExD,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CAChC,CAAA;AAMD,mEAAmE;AACnE,eAAO,MAAM,UAAU,GAAI,+DAOxB,eAAe,gCAgBjB,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Button as HeroButton, skeletonVariants } from "@heroui/react";
|
|
3
|
+
import { Icon } from "../Icon/index.js";
|
|
4
|
+
const SKELETON_CLASS_NAME = skeletonVariants({ animationType: "shimmer" }).base({
|
|
5
|
+
className: "rounded-full",
|
|
6
|
+
});
|
|
7
|
+
/** Circular glyph-only action with a mandatory accessible name. */
|
|
8
|
+
export const IconButton = ({ source, label, isActive = false, isDisabled = false, isSkeleton = false, onPress, }) => (_jsx(HeroButton, { "data-tier": "atom", "data-component": "IconButton", "data-active": isActive ? "true" : "false", "data-loading": isSkeleton ? "true" : "false", type: "button", variant: "tertiary", className: isSkeleton ? SKELETON_CLASS_NAME : "rounded-full", isIconOnly: true, isDisabled: isDisabled || isSkeleton, "aria-label": label, ...(isDisabled || isSkeleton || onPress === undefined ? {} : { onPress }), children: isSkeleton ? null : _jsx(Icon, { source: source, usage: "leading" }) }));
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/IconButton/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACtE,OAAO,EAAE,IAAI,EAAmB,MAAM,kBAAkB,CAAA;AAYxD,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC;IAC5E,SAAS,EAAE,cAAc;CAC5B,CAAC,CAAA;AAEF,mEAAmE;AACnE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EACvB,MAAM,EACN,KAAK,EACL,QAAQ,GAAG,KAAK,EAChB,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,KAAK,EAClB,OAAO,GACO,EAAE,EAAE,CAAC,CACnB,KAAC,UAAU,iBACG,MAAM,oBACD,YAAY,iBACd,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,kBAC1B,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAC3C,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,UAAU,EAClB,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,cAAc,EAC5D,UAAU,QACV,UAAU,EAAE,UAAU,IAAI,UAAU,gBACxB,KAAK,KACb,CAAC,UAAU,IAAI,UAAU,IAAI,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,YAEzE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAC,SAAS,GAAG,GACpD,CAChB,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import { type IconSource } from "../Icon/index.js";
|
|
3
|
+
export type IconTileTone = "neutral" | "accent" | "success" | "warning" | "danger";
|
|
4
|
+
export type IconTileSize = "sm" | "md";
|
|
5
|
+
export type IconTileProps = {
|
|
6
|
+
/** Fallback glyph selected by the app's semantic icon map. */
|
|
7
|
+
readonly source: IconSource;
|
|
8
|
+
/** Optional app-owned artwork replaces the fallback glyph without changing plate geometry. */
|
|
9
|
+
readonly artwork?: ReactNode;
|
|
10
|
+
readonly ariaLabel?: string;
|
|
11
|
+
readonly tone?: IconTileTone;
|
|
12
|
+
readonly size?: IconTileSize;
|
|
13
|
+
readonly isSkeleton?: boolean;
|
|
14
|
+
};
|
|
15
|
+
/** Filled icon plate with one owned size, radius, tone pair, and loading geometry. */
|
|
16
|
+
export declare const IconTile: ({ source, artwork, ariaLabel, tone, size, isSkeleton, }: IconTileProps) => import("react").JSX.Element;
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/IconTile/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAExD,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAA;AAClF,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,CAAA;AAEtC,MAAM,MAAM,aAAa,GAAG;IACxB,8DAA8D;IAC9D,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B,8FAA8F;IAC9F,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAA;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAA;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAA;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAChC,CAAA;AA4BD,sFAAsF;AACtF,eAAO,MAAM,QAAQ,GAAI,yDAOtB,aAAa,gCAwBf,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn, skeletonVariants } from "@heroui/react";
|
|
3
|
+
import { Icon } from "../Icon/index.js";
|
|
4
|
+
const SIZE_CLASS_NAMES = {
|
|
5
|
+
sm: "size-8 rounded-lg",
|
|
6
|
+
md: "size-10 rounded-xl",
|
|
7
|
+
};
|
|
8
|
+
const TONE_CLASS_NAMES = {
|
|
9
|
+
neutral: "bg-default text-muted",
|
|
10
|
+
accent: "bg-accent-soft text-accent-soft-foreground",
|
|
11
|
+
success: "bg-success-soft text-success-soft-foreground",
|
|
12
|
+
warning: "bg-warning-soft text-warning-soft-foreground",
|
|
13
|
+
danger: "bg-danger-soft text-danger-soft-foreground",
|
|
14
|
+
};
|
|
15
|
+
const SKELETON_CLASS_NAME = skeletonVariants({ animationType: "shimmer" }).base();
|
|
16
|
+
/**
|
|
17
|
+
* surface.md Catalog / tone.md Scale: only these tone classes have a published rule for their exact
|
|
18
|
+
* pairing. `bg-default` (neutral) and the warning/danger soft pairs are not catalogued, so they are
|
|
19
|
+
* left unclaimed.
|
|
20
|
+
*/
|
|
21
|
+
const TONE_CONTRACT = {
|
|
22
|
+
neutral: "TONE-2",
|
|
23
|
+
accent: "SURFACE-4",
|
|
24
|
+
success: "SURFACE-5",
|
|
25
|
+
};
|
|
26
|
+
/** Filled icon plate with one owned size, radius, tone pair, and loading geometry. */
|
|
27
|
+
export const IconTile = ({ source, artwork, ariaLabel, tone = "neutral", size = "sm", isSkeleton = false, }) => {
|
|
28
|
+
const showsArtwork = !isSkeleton && artwork != null;
|
|
29
|
+
const toneRule = isSkeleton || showsArtwork ? undefined : TONE_CONTRACT[tone];
|
|
30
|
+
return (_jsx("span", { "data-tier": "atom", "data-component": "IconTile", "data-tone": tone, "data-size": size, "data-artwork": showsArtwork ? "true" : "false", "data-loading": isSkeleton ? "true" : "false", "aria-hidden": isSkeleton || undefined, "data-contract": ["OVERFLOW-2", toneRule].filter(Boolean).join(" "), className: cn("inline-flex shrink-0 items-center justify-center overflow-hidden", SIZE_CLASS_NAMES[size], isSkeleton ? SKELETON_CLASS_NAME : showsArtwork ? undefined : TONE_CLASS_NAMES[tone]), children: isSkeleton ? null : showsArtwork ? artwork : (_jsx(Icon, { source: source, usage: "leading", ...(ariaLabel === undefined ? {} : { ariaLabel }) })) }));
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/IconTile/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAEpD,OAAO,EAAE,IAAI,EAAmB,MAAM,kBAAkB,CAAA;AAgBxD,MAAM,gBAAgB,GAAG;IACrB,EAAE,EAAE,mBAAmB;IACvB,EAAE,EAAE,oBAAoB;CAClB,CAAA;AAEV,MAAM,gBAAgB,GAAG;IACrB,OAAO,EAAE,uBAAuB;IAChC,MAAM,EAAE,4CAA4C;IACpD,OAAO,EAAE,8CAA8C;IACvD,OAAO,EAAE,8CAA8C;IACvD,MAAM,EAAE,4CAA4C;CAC9C,CAAA;AAEV,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;AAEjF;;;;GAIG;AACH,MAAM,aAAa,GAA0C;IACzD,OAAO,EAAE,QAAQ;IACjB,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,WAAW;CACvB,CAAA;AAED,sFAAsF;AACtF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EACrB,MAAM,EACN,OAAO,EACP,SAAS,EACT,IAAI,GAAG,SAAS,EAChB,IAAI,GAAG,IAAI,EACX,UAAU,GAAG,KAAK,GACN,EAAE,EAAE;IAChB,MAAM,YAAY,GAAG,CAAC,UAAU,IAAI,OAAO,IAAI,IAAI,CAAA;IACnD,MAAM,QAAQ,GAAG,UAAU,IAAI,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;IAC7E,OAAO,CACH,4BACc,MAAM,oBACD,UAAU,eACd,IAAI,eACJ,IAAI,kBACD,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,kBAC/B,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,iBAC9B,UAAU,IAAI,SAAS,mBACrB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EACjE,SAAS,EAAE,EAAE,CACT,kEAAkE,EAClE,gBAAgB,CAAC,IAAI,CAAC,EACtB,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CACvF,YAEA,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAC1C,KAAC,IAAI,IAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAC,SAAS,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAI,CAC/F,GACE,CACV,CAAA;AACL,CAAC,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ComponentPropsWithoutRef } from "react";
|
|
2
|
+
export type IncludedMarkProps = Omit<ComponentPropsWithoutRef<"svg">, "children"> & {
|
|
3
|
+
readonly label?: string;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Purpose-named offering marker: an outlined 20px circle-check in inherited
|
|
7
|
+
* foreground. It deliberately does not reuse affirmative/completion state.
|
|
8
|
+
*/
|
|
9
|
+
export declare const IncludedMark: ({ className, label, ...props }: IncludedMarkProps) => import("react").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/IncludedMark/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,OAAO,CAAA;AAGrD,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,GAAG;IAChF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,gCAAgC,iBAAiB,gCAc7E,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "@heroui/react";
|
|
3
|
+
/**
|
|
4
|
+
* Purpose-named offering marker: an outlined 20px circle-check in inherited
|
|
5
|
+
* foreground. It deliberately does not reuse affirmative/completion state.
|
|
6
|
+
*/
|
|
7
|
+
export const IncludedMark = ({ className, label, ...props }) => (_jsxs("svg", { ...props, "aria-hidden": label === undefined ? "true" : undefined, "aria-label": label, className: cn("starci-core-included-mark", className), "data-grammar-included-mark": "true", focusable: "false", role: label === undefined ? undefined : "img", viewBox: "0 0 20 20", children: [_jsx("circle", { cx: "10", cy: "10", fill: "none", r: "8", stroke: "currentColor", strokeWidth: "1.5" }), _jsx("path", { d: "m6.5 10.25 2.2 2.2 4.8-5", fill: "none", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "1.75" })] }));
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/IncludedMark/index.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAA;AAMlC;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAqB,EAAE,EAAE,CAAC,CAC/E,kBACQ,KAAK,iBACI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,gBACzC,KAAK,EACjB,SAAS,EAAE,EAAE,CAAC,2BAA2B,EAAE,SAAS,CAAC,gCAC1B,MAAM,EACjC,SAAS,EAAC,OAAO,EACjB,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAC7C,OAAO,EAAC,WAAW,aAEnB,iBAAQ,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,MAAM,EAAC,CAAC,EAAC,GAAG,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,KAAK,GAAG,EACpF,eAAM,CAAC,EAAC,0BAA0B,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAC,MAAM,GAAG,IACrI,CACT,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type ComponentType, type ReactNode } from "react";
|
|
2
|
+
export type InputKind = "email" | "password" | "newPassword" | "code" | "text";
|
|
3
|
+
export type InputVariant = "primary" | "secondary";
|
|
4
|
+
type InputIcon = ComponentType<{
|
|
5
|
+
readonly className?: string;
|
|
6
|
+
}>;
|
|
7
|
+
export type InputProps = {
|
|
8
|
+
readonly id: string;
|
|
9
|
+
readonly name: string;
|
|
10
|
+
readonly label: ReactNode;
|
|
11
|
+
readonly kind?: InputKind;
|
|
12
|
+
readonly variant?: InputVariant;
|
|
13
|
+
readonly placeholder?: string;
|
|
14
|
+
readonly defaultValue?: string;
|
|
15
|
+
readonly value?: string;
|
|
16
|
+
readonly hint?: ReactNode;
|
|
17
|
+
readonly errorMessage?: ReactNode;
|
|
18
|
+
readonly isError?: boolean;
|
|
19
|
+
readonly isDisabled?: boolean;
|
|
20
|
+
readonly isRequired?: boolean;
|
|
21
|
+
readonly isSkeleton?: boolean;
|
|
22
|
+
readonly revealLabel?: string;
|
|
23
|
+
readonly hideLabel?: string;
|
|
24
|
+
readonly revealIcon?: InputIcon;
|
|
25
|
+
readonly hideIcon?: InputIcon;
|
|
26
|
+
readonly onValueChange?: (value: string) => void;
|
|
27
|
+
};
|
|
28
|
+
/** Core ownership boundary for label, guidance, control state, and validation copy. */
|
|
29
|
+
export declare const Input: ({ id, name, label, kind: kindName, variant, placeholder, defaultValue, value, hint, errorMessage, isError, isDisabled, isRequired, isSkeleton, revealLabel, hideLabel, revealIcon: RevealIcon, hideIcon: HideIcon, onValueChange, }: InputProps) => import("react").JSX.Element;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/Input/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAWpE,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,UAAU,GAAG,aAAa,GAAG,MAAM,GAAG,MAAM,CAAA;AAC9E,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,WAAW,CAAA;AAElD,KAAK,SAAS,GAAG,aAAa,CAAC;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAE/D,MAAM,MAAM,UAAU,GAAG;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAA;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAA;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAA;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAA;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,CAAA;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACnD,CAAA;AAUD,uFAAuF;AACvF,eAAO,MAAM,KAAK,GAAI,qOAoBnB,UAAU,gCA8DZ,CAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import { Description as HeroDescription, ErrorMessage as HeroErrorMessage, Input as HeroInput, Label as HeroLabel, Skeleton as HeroSkeleton, TextField as HeroTextField, cn, } from "@heroui/react";
|
|
5
|
+
const KINDS = {
|
|
6
|
+
email: { type: "email", autoComplete: "email", inputMode: "email" },
|
|
7
|
+
password: { type: "password", autoComplete: "current-password", inputMode: "text" },
|
|
8
|
+
newPassword: { type: "password", autoComplete: "new-password", inputMode: "text" },
|
|
9
|
+
code: { type: "text", autoComplete: "one-time-code", inputMode: "numeric" },
|
|
10
|
+
text: { type: "text", autoComplete: "off", inputMode: "text" },
|
|
11
|
+
};
|
|
12
|
+
/** Core ownership boundary for label, guidance, control state, and validation copy. */
|
|
13
|
+
export const Input = ({ id, name, label, kind: kindName = "text", variant = "primary", placeholder, defaultValue, value, hint, errorMessage, isError = false, isDisabled = false, isRequired = false, isSkeleton = false, revealLabel, hideLabel, revealIcon: RevealIcon, hideIcon: HideIcon, onValueChange, }) => {
|
|
14
|
+
const [isRevealed, setIsRevealed] = useState(false);
|
|
15
|
+
const kind = KINDS[kindName];
|
|
16
|
+
const isSecret = kindName === "password" || kindName === "newPassword";
|
|
17
|
+
const invalid = isError || errorMessage != null;
|
|
18
|
+
const toggleLabel = isRevealed ? hideLabel : revealLabel;
|
|
19
|
+
const ToggleIcon = isRevealed ? HideIcon : RevealIcon;
|
|
20
|
+
if (isSkeleton) {
|
|
21
|
+
return (_jsxs("div", { "data-tier": "atom", "data-component": "Input", "data-state": "skeleton", "data-contract": "GAP-2", className: "grid gap-2", children: [_jsx(HeroSkeleton, { className: "h-4 w-1/3 rounded-md" }), _jsx(HeroSkeleton, { className: "h-10 w-full rounded-field" })] }));
|
|
22
|
+
}
|
|
23
|
+
return (_jsxs(HeroTextField, { "data-tier": "atom", "data-component": "Input", fullWidth: true, variant: variant, isInvalid: invalid, isDisabled: isDisabled, isRequired: isRequired, "data-contract": "GAP-2", className: "grid gap-2", children: [_jsx(HeroLabel, { children: label }), hint == null ? null : _jsx(HeroDescription, { children: hint }), _jsxs("div", { className: "relative flex items-center", children: [_jsx(HeroInput, { id: id, name: name, type: isSecret && isRevealed ? "text" : kind.type, autoComplete: kind.autoComplete, inputMode: kind.inputMode, ...(placeholder === undefined ? {} : { placeholder }), ...(value === undefined
|
|
24
|
+
? defaultValue === undefined ? {} : { defaultValue }
|
|
25
|
+
: { value }), fullWidth: true, className: cn(isSecret && toggleLabel !== undefined ? "pr-9" : undefined) ?? "", onChange: (event) => onValueChange?.(event.target.value) }), !isSecret || toggleLabel === undefined ? null : (_jsx("button", { type: "button", "aria-label": toggleLabel, disabled: isDisabled, "data-contract": "TONE-2", className: "text-muted absolute right-2 top-1/2 -translate-y-1/2 cursor-pointer disabled:cursor-default [&_svg]:size-4", onClick: () => setIsRevealed((current) => !current), children: ToggleIcon === undefined ? _jsx("span", { "data-contract": "FONT-1", className: "text-xs", children: toggleLabel }) : _jsx(ToggleIcon, { className: "size-4" }) }))] }), errorMessage == null ? null : _jsx(HeroErrorMessage, { children: errorMessage })] }));
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/Input/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Select surface label copy that recedes when the owner is nested. */
|
|
2
|
+
export declare const getLabelClassName: (depth: "top" | "nested") => import("tailwind-variants").CnReturn;
|
|
3
|
+
/**
|
|
4
|
+
* Rule ids this element can claim for the presentation classes above.
|
|
5
|
+
* `text-xs`/`leading-4` and `text-sm`/`leading-5` match FONT-1 and FONT-2 on the
|
|
6
|
+
* closed type scale (font.md `## Scale`). `font-semibold` (weight) and `min-w-0`
|
|
7
|
+
* (measure) carry no rule id in their topic files and stay unclaimed.
|
|
8
|
+
* `.starci-core-label { margin: 0 }` (common/styles.css) is unconditional across both
|
|
9
|
+
* depths and matches margin.md's "Label | 0 | MARGIN-0" row.
|
|
10
|
+
*/
|
|
11
|
+
export declare const getLabelContract: (depth: "top" | "nested") => "FONT-1 MARGIN-0" | "FONT-2 MARGIN-0";
|
|
12
|
+
//# sourceMappingURL=classNames.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classNames.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/Label/classNames.ts"],"names":[],"mappings":"AAEA,uEAAuE;AACvE,eAAO,MAAM,iBAAiB,GAAI,OAAO,KAAK,GAAG,QAAQ,yCAKxD,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO,KAAK,GAAG,QAAQ,0CAA+D,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { cn } from "@heroui/react";
|
|
2
|
+
/** Select surface label copy that recedes when the owner is nested. */
|
|
3
|
+
export const getLabelClassName = (depth) => cn("starci-core-label", "min-w-0", "font-semibold", depth === "nested" ? "text-xs leading-4" : "text-sm leading-5");
|
|
4
|
+
/**
|
|
5
|
+
* Rule ids this element can claim for the presentation classes above.
|
|
6
|
+
* `text-xs`/`leading-4` and `text-sm`/`leading-5` match FONT-1 and FONT-2 on the
|
|
7
|
+
* closed type scale (font.md `## Scale`). `font-semibold` (weight) and `min-w-0`
|
|
8
|
+
* (measure) carry no rule id in their topic files and stay unclaimed.
|
|
9
|
+
* `.starci-core-label { margin: 0 }` (common/styles.css) is unconditional across both
|
|
10
|
+
* depths and matches margin.md's "Label | 0 | MARGIN-0" row.
|
|
11
|
+
*/
|
|
12
|
+
export const getLabelContract = (depth) => depth === "nested" ? "FONT-1 MARGIN-0" : "FONT-2 MARGIN-0";
|
|
13
|
+
//# sourceMappingURL=classNames.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classNames.js","sourceRoot":"","sources":["../../../../src/core/primitive/Label/classNames.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAA;AAElC,uEAAuE;AACvE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAuB,EAAE,EAAE,CAAC,EAAE,CAC5D,mBAAmB,EACnB,SAAS,EACT,eAAe,EACf,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,CACjE,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAuB,EAAE,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export type LabelProps = {
|
|
3
|
+
readonly id?: string;
|
|
4
|
+
readonly children: ReactNode;
|
|
5
|
+
readonly depth?: "top" | "nested";
|
|
6
|
+
/** A surface branch may promote its visible name into the document outline. */
|
|
7
|
+
readonly as?: "span" | "h3";
|
|
8
|
+
};
|
|
9
|
+
/** Names a bounded surface region without claiming document-outline heading rank. */
|
|
10
|
+
export declare const Label: ({ id, children, depth, as }: LabelProps) => import("react").JSX.Element;
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/primitive/Label/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,MAAM,MAAM,UAAU,GAAG;IACrB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAA;IACjC,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B,CAAA;AAED,qFAAqF;AACrF,eAAO,MAAM,KAAK,GAAI,6BAA8C,UAAU,gCAU7E,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { getLabelClassName, getLabelContract } from "./classNames.js";
|
|
3
|
+
/** Names a bounded surface region without claiming document-outline heading rank. */
|
|
4
|
+
export const Label = ({ id, children, depth = "top", as = "span" }) => {
|
|
5
|
+
const shared = {
|
|
6
|
+
id,
|
|
7
|
+
className: getLabelClassName(depth),
|
|
8
|
+
"data-grammar-label": "true",
|
|
9
|
+
"data-grammar-label-depth": depth,
|
|
10
|
+
"data-contract": getLabelContract(depth),
|
|
11
|
+
};
|
|
12
|
+
return as === "h3" ? _jsx("h3", { ...shared, children: children }) : _jsx("span", { ...shared, children: children });
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/primitive/Label/index.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAUrE,qFAAqF;AACrF,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,GAAG,KAAK,EAAE,EAAE,GAAG,MAAM,EAAc,EAAE,EAAE;IAC9E,MAAM,MAAM,GAAG;QACX,EAAE;QACF,SAAS,EAAE,iBAAiB,CAAC,KAAK,CAAC;QACnC,oBAAoB,EAAE,MAAM;QAC5B,0BAA0B,EAAE,KAAK;QACjC,eAAe,EAAE,gBAAgB,CAAC,KAAK,CAAC;KAClC,CAAA;IAEV,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,gBAAQ,MAAM,YAAG,QAAQ,GAAM,CAAC,CAAC,CAAC,kBAAU,MAAM,YAAG,QAAQ,GAAQ,CAAA;AAC9F,CAAC,CAAA"}
|