@hjmds/react 1.26.0 → 1.27.0
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/THIRD_PARTY_NOTICES.md +7 -0
- package/dist/advanced-display.d.ts +1 -0
- package/dist/advanced-display.d.ts.map +1 -1
- package/dist/advanced-display.js +3 -2
- package/dist/advanced-display.js.map +1 -1
- package/dist/agreement.d.ts.map +1 -1
- package/dist/agreement.js +2 -1
- package/dist/agreement.js.map +1 -1
- package/dist/bottom-cta.d.ts.map +1 -1
- package/dist/bottom-cta.js +5 -2
- package/dist/bottom-cta.js.map +1 -1
- package/dist/bottom-navigation.d.ts.map +1 -1
- package/dist/bottom-navigation.js +3 -0
- package/dist/bottom-navigation.js.map +1 -1
- package/dist/calendar.js +1 -1
- package/dist/calendar.js.map +1 -1
- package/dist/carousel-motion.d.ts.map +1 -1
- package/dist/carousel-motion.js +4 -3
- package/dist/carousel-motion.js.map +1 -1
- package/dist/carousel.d.ts.map +1 -1
- package/dist/carousel.js +3 -2
- package/dist/carousel.js.map +1 -1
- package/dist/chart.d.ts +3 -1
- package/dist/chart.d.ts.map +1 -1
- package/dist/chart.js +9 -4
- package/dist/chart.js.map +1 -1
- package/dist/clipboard.d.ts +27 -1
- package/dist/clipboard.d.ts.map +1 -1
- package/dist/clipboard.js +26 -12
- package/dist/clipboard.js.map +1 -1
- package/dist/collapsible.d.ts +9 -0
- package/dist/collapsible.d.ts.map +1 -1
- package/dist/collapsible.js +9 -2
- package/dist/collapsible.js.map +1 -1
- package/dist/collection-editing.d.ts.map +1 -1
- package/dist/collection-editing.js +15 -10
- package/dist/collection-editing.js.map +1 -1
- package/dist/collection-rail.d.ts.map +1 -1
- package/dist/collection-rail.js +3 -2
- package/dist/collection-rail.js.map +1 -1
- package/dist/communication.d.ts.map +1 -1
- package/dist/communication.js +5 -2
- package/dist/communication.js.map +1 -1
- package/dist/context-menu.d.ts +9 -1
- package/dist/context-menu.d.ts.map +1 -1
- package/dist/context-menu.js +1 -1
- package/dist/context-menu.js.map +1 -1
- package/dist/conversation-row.js +1 -1
- package/dist/conversation-row.js.map +1 -1
- package/dist/data-workflows.d.ts.map +1 -1
- package/dist/data-workflows.js +4 -3
- package/dist/data-workflows.js.map +1 -1
- package/dist/date-picker.d.ts.map +1 -1
- package/dist/date-picker.js +5 -3
- package/dist/date-picker.js.map +1 -1
- package/dist/design-profile.d.ts.map +1 -1
- package/dist/design-profile.js +4 -2
- package/dist/design-profile.js.map +1 -1
- package/dist/effect-surface.d.ts +9 -3
- package/dist/effect-surface.d.ts.map +1 -1
- package/dist/effect-surface.js +3 -2
- package/dist/effect-surface.js.map +1 -1
- package/dist/evidence.d.ts +1 -1
- package/dist/evidence.js +1 -1
- package/dist/evidence.js.map +1 -1
- package/dist/feedback.d.ts +8 -19
- package/dist/feedback.d.ts.map +1 -1
- package/dist/feedback.js +7 -3
- package/dist/feedback.js.map +1 -1
- package/dist/field-group.d.ts.map +1 -1
- package/dist/field-group.js +15 -8
- package/dist/field-group.js.map +1 -1
- package/dist/file-picker.d.ts +14 -2
- package/dist/file-picker.d.ts.map +1 -1
- package/dist/file-picker.js +5 -2
- package/dist/file-picker.js.map +1 -1
- package/dist/folder-preview.d.ts.map +1 -1
- package/dist/folder-preview.js +2 -2
- package/dist/folder-preview.js.map +1 -1
- package/dist/forms.d.ts.map +1 -1
- package/dist/forms.js +2 -1
- package/dist/forms.js.map +1 -1
- package/dist/image-choice.d.ts +30 -0
- package/dist/image-choice.d.ts.map +1 -0
- package/dist/image-choice.js +24 -0
- package/dist/image-choice.js.map +1 -0
- package/dist/image-comparison.d.ts.map +1 -1
- package/dist/image-comparison.js +2 -1
- package/dist/image-comparison.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/internal/message-reactions.d.ts +28 -2
- package/dist/internal/message-reactions.d.ts.map +1 -1
- package/dist/internal/message-reactions.js +11 -4
- package/dist/internal/message-reactions.js.map +1 -1
- package/dist/internal/screen-exit.d.ts +11 -0
- package/dist/internal/screen-exit.d.ts.map +1 -0
- package/dist/internal/screen-exit.js +10 -0
- package/dist/internal/screen-exit.js.map +1 -0
- package/dist/internal/screen-footer.d.ts +7 -0
- package/dist/internal/screen-footer.d.ts.map +1 -0
- package/dist/internal/screen-footer.js +8 -0
- package/dist/internal/screen-footer.js.map +1 -0
- package/dist/layout.d.ts.map +1 -1
- package/dist/layout.js +8 -4
- package/dist/layout.js.map +1 -1
- package/dist/masonry.d.ts +5 -3
- package/dist/masonry.d.ts.map +1 -1
- package/dist/masonry.js +25 -3
- package/dist/masonry.js.map +1 -1
- package/dist/menu-morph.d.ts.map +1 -1
- package/dist/menu-morph.js +30 -7
- package/dist/menu-morph.js.map +1 -1
- package/dist/overlays.d.ts +2 -0
- package/dist/overlays.d.ts.map +1 -1
- package/dist/overlays.js +48 -11
- package/dist/overlays.js.map +1 -1
- package/dist/popover.d.ts +6 -0
- package/dist/popover.d.ts.map +1 -1
- package/dist/popover.js +3 -3
- package/dist/popover.js.map +1 -1
- package/dist/qr-code.js +1 -1
- package/dist/qr-code.js.map +1 -1
- package/dist/reaction-picker.d.ts.map +1 -1
- package/dist/reaction-picker.js +14 -1
- package/dist/reaction-picker.js.map +1 -1
- package/dist/saved-items.d.ts +8 -2
- package/dist/saved-items.d.ts.map +1 -1
- package/dist/saved-items.js +4 -4
- package/dist/saved-items.js.map +1 -1
- package/dist/screen-flows.d.ts +52 -6
- package/dist/screen-flows.d.ts.map +1 -1
- package/dist/screen-flows.js +50 -22
- package/dist/screen-flows.js.map +1 -1
- package/dist/screens.d.ts +56 -8
- package/dist/screens.d.ts.map +1 -1
- package/dist/screens.js +41 -15
- package/dist/screens.js.map +1 -1
- package/dist/selection.d.ts.map +1 -1
- package/dist/selection.js +4 -4
- package/dist/selection.js.map +1 -1
- package/dist/social-compositions.d.ts.map +1 -1
- package/dist/social-compositions.js +3 -2
- package/dist/social-compositions.js.map +1 -1
- package/dist/sortable.d.ts.map +1 -1
- package/dist/sortable.js +9 -3
- package/dist/sortable.js.map +1 -1
- package/dist/status-text.d.ts.map +1 -1
- package/dist/status-text.js +5 -2
- package/dist/status-text.js.map +1 -1
- package/dist/styles.css +219 -126
- package/dist/styles.layered.css +219 -126
- package/dist/table-family.d.ts +1 -1
- package/dist/table-family.d.ts.map +1 -1
- package/dist/table-family.js +24 -7
- package/dist/table-family.js.map +1 -1
- package/dist/task-controls.d.ts.map +1 -1
- package/dist/task-controls.js +9 -4
- package/dist/task-controls.js.map +1 -1
- package/dist/task-list.d.ts +1 -1
- package/dist/task-list.d.ts.map +1 -1
- package/dist/task-list.js +4 -3
- package/dist/task-list.js.map +1 -1
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +4 -0
- package/dist/theme.js.map +1 -1
- package/dist/top-bar.d.ts +5 -0
- package/dist/top-bar.d.ts.map +1 -1
- package/dist/top-bar.js +6 -1
- package/dist/top-bar.js.map +1 -1
- package/dist/transfer-list.d.ts.map +1 -1
- package/dist/transfer-list.js +13 -3
- package/dist/transfer-list.js.map +1 -1
- package/dist/upload-item.d.ts.map +1 -1
- package/dist/upload-item.js +3 -1
- package/dist/upload-item.js.map +1 -1
- package/fonts/pretendard/LICENSE.txt +94 -0
- package/fonts/pretendard/pretendard.css +927 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.0.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.1.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.10.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.11.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.12.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.13.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.14.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.15.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.16.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.17.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.18.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.19.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.2.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.20.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.21.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.22.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.23.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.24.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.25.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.26.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.27.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.28.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.29.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.3.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.30.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.31.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.32.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.33.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.34.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.35.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.36.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.37.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.38.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.39.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.4.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.40.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.41.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.42.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.43.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.44.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.45.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.46.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.47.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.48.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.49.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.5.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.50.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.51.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.52.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.53.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.54.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.55.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.56.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.57.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.58.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.59.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.6.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.60.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.61.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.62.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.63.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.64.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.65.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.66.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.67.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.68.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.69.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.7.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.70.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.71.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.72.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.73.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.74.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.75.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.76.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.77.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.78.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.79.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.8.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.80.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.81.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.82.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.83.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.84.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.85.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.86.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.87.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.88.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.89.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.9.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.90.woff2 +0 -0
- package/fonts/pretendard/woff2-dynamic-subset/PretendardVariable.subset.91.woff2 +0 -0
- package/package.json +10 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design-profile.js","sourceRoot":"","sources":["../src/design-profile.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,YAAY,EAA0B,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,8BAA8B,EAAE,MAAM,+CAA+C,CAAC;
|
|
1
|
+
{"version":3,"file":"design-profile.js","sourceRoot":"","sources":["../src/design-profile.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useState, type ReactNode } from \"react\";\nimport { ScreenLayout, type ScreenLayoutProps } from \"./screens.js\";\nimport { Collapsible } from \"./collapsible.js\";\nimport { EffectSurface } from \"./effect-surface.js\";\nimport { Grid, Stack, Surface } from \"./layout.js\";\nimport { useHjmTheme } from \"./provider.js\";\nimport { resolveDesignProfileCollection, resolveDesignProfileCollectionItem, overviewContentLayout } from \"@hjmds/design-contracts/design-profile-layout\";\nimport { Divider } from \"./advanced-display.js\";\nimport type { HjmDesignProfile } from \"@hjmds/design-contracts/design-profile\";\n\nexport type OverviewScreenProps = Omit<ScreenLayoutProps, \"children\"> & Readonly<{\n items: readonly Readonly<{ id: string; children: ReactNode }>[];\n toolbar?: ReactNode;\n toolbarLabel: string;\n collection?: HjmDesignProfile[\"compositions\"][\"collection\"];\n toolbarPresentation?: HjmDesignProfile[\"compositions\"][\"toolbar\"];\n}>;\n\n/** Optional collection screen; ScreenLayout still owns loading/error/scrolling.\n * Unlike settings/inbox it owns a profile-selected collection and persistent tools.\n * It never owns product mutations or chooses a different component for each theme. */\nexport function OverviewScreen({ items, toolbar, toolbarLabel, collection: suppliedCollection, toolbarPresentation: suppliedToolbarPresentation, ...screen }: OverviewScreenProps) {\n const { designProfile } = useHjmTheme();\n const collection = suppliedCollection ?? designProfile?.compositions.collection ?? \"rows\";\n const toolbarPresentation = suppliedToolbarPresentation ?? designProfile?.compositions.toolbar ?? \"inline\";\n const [toolsOpen, setToolsOpen] = useState(true);\n if (!toolbarLabel.trim()) throw new TypeError(\"Overview tools need a localized label\");\n const ids = new Set(items.map(item => item.id));\n if (ids.size !== items.length || items.some(item => !item.id.trim())) throw new TypeError(\"Overview items need unique stable ids\");\n // Retain the same effect/grid/surface subtree when the profile changes: optional\n // decoration can disappear without remounting fields, focus or local state.\n const itemLayout = resolveDesignProfileCollectionItem(collection);\n const canvas = designProfile?.material.canvas ?? { layers: [\"mesh\"] as const, intensity: 0, active: false };\n return <EffectSurface descriptor={canvas} radius=\"none\" layoutStyle={{ width: \"100%\" }}>\n <ScreenLayout {...screen}>\n {/* Tools and collection share one bounded column, so card edges line up with the field above them. The screen\n body is a block box on Web (scroll=\"screen\"), where alignSelf has no effect, so auto inline margins center it. */}\n <Stack gap=\"xl\" layoutStyle={{ ...overviewContentLayout, marginInline: \"auto\" }}>\n {toolbar ? <Collapsible trigger={toolbarLabel} open={toolsOpen} onOpenChange={setToolsOpen} presentation={toolbarPresentation === \"inline\" ? \"inline\" : \"disclosure\"} keepMounted>{toolbar}</Collapsible> : null}\n <Grid {...resolveDesignProfileCollection(collection)}>\n {/* The card Surface owns the rounded frame; the material layer sits in its padded content box, so a rounded\n effect clipped the first glyph of edge-aligned text (clay/glass, 2026-10-17 after EffectSurface radius default lg).\n The rule slot stays in place (null when unused) so switching collections never remounts item content. */}\n {items.map((item, index) => <Surface key={item.id} padding={itemLayout.padding} tone={itemLayout.tone} bordered={itemLayout.bordered} radius=\"lg\">\n {itemLayout.ruled && index > 0 ? <Divider decorative layoutStyle={{ marginBottom: itemLayout.ruleGap }} /> : null}\n <EffectSurface radius=\"none\" descriptor={designProfile?.material.card ?? { layers: [\"mesh\"], intensity: 0, active: false }} className=\"hjm-profile-card-effect\">{item.children}</EffectSurface>\n </Surface>)}\n </Grid>\n </Stack>\n </ScreenLayout>\n </EffectSurface>;\n}\n"]}
|
package/dist/effect-surface.d.ts
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
import { type ReactNode } from "react";
|
|
2
2
|
import { type EffectSurfaceDescriptor } from "@hjmds/design-contracts/effect-surface";
|
|
3
|
+
import { type SurfacePadding, type SurfaceRadius } from "@hjmds/design-contracts/recipes/base";
|
|
3
4
|
import type { HjmCompositionStyleProp } from "./composition-style.js";
|
|
4
5
|
export type EffectSurfaceProps = Readonly<{
|
|
5
6
|
descriptor?: EffectSurfaceDescriptor;
|
|
6
7
|
children: ReactNode;
|
|
7
|
-
className?: string;
|
|
8
|
-
|
|
8
|
+
className?: string;
|
|
9
|
+
/** Content inset inside the decorated area (Surface padding scale). Consumers otherwise wrapped children in raw padded elements. */
|
|
10
|
+
padding?: SurfacePadding;
|
|
11
|
+
/** Corner radius of the decorated area. Defaults to the Surface radius so a framed hero clips its
|
|
12
|
+
* decoration to the same corners as the Surface it wraps; full-bleed canvases pass `"none"`. */
|
|
13
|
+
radius?: SurfaceRadius | "none";
|
|
14
|
+
/** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */ layoutStyle?: HjmCompositionStyleProp;
|
|
9
15
|
}>;
|
|
10
16
|
/** Decorative layers never receive pointer events or own the content's name. */
|
|
11
|
-
export declare function EffectSurface({ descriptor, children, className, layoutStyle }: EffectSurfaceProps): import("react").JSX.Element;
|
|
17
|
+
export declare function EffectSurface({ descriptor, children, className, padding, radius, layoutStyle }: EffectSurfaceProps): import("react").JSX.Element;
|
|
12
18
|
//# sourceMappingURL=effect-surface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effect-surface.d.ts","sourceRoot":"","sources":["../src/effect-surface.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC3E,OAAO,EAAwB,KAAK,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAE5G,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEtE,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IAAE,UAAU,CAAC,EAAE,uBAAuB,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"effect-surface.d.ts","sourceRoot":"","sources":["../src/effect-surface.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC3E,OAAO,EAAwB,KAAK,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAE5G,OAAO,EAAoC,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACjI,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEtE,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IAAE,UAAU,CAAC,EAAE,uBAAuB,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IACxH,oIAAoI;IACpI,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB;oGACgG;IAChG,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC;IAChC,gGAAgG,CAAC,WAAW,CAAC,EAAE,uBAAuB,CAAC;CAAE,CAAC,CAAC;AAC7I,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,EAAE,UAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAgB,EAAE,MAA+B,EAAE,WAAW,EAAE,EAAE,kBAAkB,+BAsDzJ"}
|
package/dist/effect-surface.js
CHANGED
|
@@ -2,9 +2,10 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
|
|
|
2
2
|
import { useEffect, useId, useRef, useState } from "react";
|
|
3
3
|
import { resolveEffectSurface } from "@hjmds/design-contracts/effect-surface";
|
|
4
4
|
import { resolveColorReference } from "@hjmds/design-contracts/color-references";
|
|
5
|
+
import { surfaceDefaults, surfaceGeometry } from "@hjmds/design-contracts/recipes/base";
|
|
5
6
|
import { useHjmTheme } from "./provider.js";
|
|
6
7
|
/** Decorative layers never receive pointer events or own the content's name. */
|
|
7
|
-
export function EffectSurface({ descriptor = {}, children, className, layoutStyle }) {
|
|
8
|
+
export function EffectSurface({ descriptor = {}, children, className, padding = "none", radius = surfaceDefaults.radius, layoutStyle }) {
|
|
8
9
|
const { palette, environment } = useHjmTheme();
|
|
9
10
|
const effect = resolveEffectSurface(descriptor);
|
|
10
11
|
const id = useId().replace(/:/g, "");
|
|
@@ -53,6 +54,6 @@ export function EffectSurface({ descriptor = {}, children, className, layoutStyl
|
|
|
53
54
|
return () => { animation?.cancel(); document.removeEventListener("visibilitychange", sync); };
|
|
54
55
|
}, [hasAtmosphere, effect.active, effect.period, environment.reducedMotion, visible]);
|
|
55
56
|
const colors = effect.colors.map(color => resolveColorReference(color, palette));
|
|
56
|
-
return _jsxs("div", { ref: host, className: className, "data-hjm-effect-surface": "", style: { ...layoutStyle, position: "relative", isolation: "isolate", overflow: "hidden", background: palette.theme.bg }, children: [_jsxs("svg", { ref: layer, "aria-hidden": "true", focusable: "false", style: { position: "absolute", inset: 0, width: "100%", height: "100%", pointerEvents: "none", opacity: effect.intensity }, children: [_jsx("defs", { children: effect.noise && _jsxs(_Fragment, { children: [_jsx("pattern", { id: `${id}-noise-tile`, width: effect.noise.size, height: effect.noise.size, x: effect.noise.offset, patternUnits: "userSpaceOnUse", children: _jsx("image", { href: effect.noise.uri, width: effect.noise.size, height: effect.noise.size }) }), _jsx("mask", { id: `${id}-noise-mask`, x: 0, y: 0, width: "100%", height: "100%", maskUnits: "userSpaceOnUse", children: _jsx("rect", { width: "100%", height: "100%", fill: `url(#${id}-noise-tile)` }) })] }) }), effect.noise && _jsx("rect", { width: "100%", height: "100%", fill: palette.theme.text, mask: `url(#${id}-noise-mask)` }), _jsxs("svg", { width: "100%", height: "100%", viewBox: "0 0 100 100", preserveAspectRatio: "none", children: [_jsxs("defs", { children: [colors.map((color, index) => _jsxs("radialGradient", { id: `${id}-${index}`, children: [_jsx("stop", { offset: "0%", stopColor: color }), _jsx("stop", { offset: "100%", stopColor: color, stopOpacity: 0 })] }, index)), _jsx("pattern", { id: `${id}-grain`, width: 4, height: 4, patternUnits: "userSpaceOnUse", children: effect.points.map((point, index) => _jsx("circle", { cx: point.x / 25, cy: point.y / 25, r: point.radius / 10, fill: palette.theme.text, opacity: 0.28 }, index)) })] }), effect.layers.includes("mesh") && effect.anchors.map((anchor, index) => _jsx("ellipse", { cx: anchor.x, cy: anchor.y, rx: 65, ry: 70, fill: `url(#${id}-${index})` }, index)), effect.layers.includes("glow") && _jsx("ellipse", { cx: 50, cy: 10, rx: 70, ry: 95, fill: `url(#${id}-0)` }), effect.layers.includes("grain") && _jsx("rect", { width: 100, height: 100, fill: `url(#${id}-grain)` })] })] }), effect.ruled && _jsxs("svg", { "data-hjm-effect-layer": "ruled", "aria-hidden": "true", focusable: "false", style: { position: "absolute", inset: 0, width: "100%", height: "100%", pointerEvents: "none", opacity: effect.intensity }, children: [_jsx("defs", { children: _jsx("pattern", { id: `${id}-ruled`, width: 1, height: effect.ruled.spacing, patternUnits: "userSpaceOnUse", children: _jsx("rect", { y: effect.ruled.spacing - effect.ruled.thickness, width: "100%", height: effect.ruled.thickness, fill: palette.theme.text }) }) }), _jsx("rect", { width: "100%", height: "100%", fill: `url(#${id}-ruled)` })] }), _jsx("div", { style: { position: "relative" }, children: children })] });
|
|
57
|
+
return _jsxs("div", { ref: host, className: className, "data-hjm-effect-surface": "", style: { ...layoutStyle, position: "relative", isolation: "isolate", overflow: "hidden", borderRadius: radius === "none" ? 0 : `var(--hjm-radius-${radius})`, background: palette.theme.bg }, children: [_jsxs("svg", { ref: layer, "aria-hidden": "true", focusable: "false", style: { position: "absolute", inset: 0, width: "100%", height: "100%", pointerEvents: "none", opacity: effect.intensity }, children: [_jsx("defs", { children: effect.noise && _jsxs(_Fragment, { children: [_jsx("pattern", { id: `${id}-noise-tile`, width: effect.noise.size, height: effect.noise.size, x: effect.noise.offset, patternUnits: "userSpaceOnUse", children: _jsx("image", { href: effect.noise.uri, width: effect.noise.size, height: effect.noise.size }) }), _jsx("mask", { id: `${id}-noise-mask`, x: 0, y: 0, width: "100%", height: "100%", maskUnits: "userSpaceOnUse", children: _jsx("rect", { width: "100%", height: "100%", fill: `url(#${id}-noise-tile)` }) })] }) }), effect.noise && _jsx("rect", { width: "100%", height: "100%", fill: palette.theme.text, mask: `url(#${id}-noise-mask)` }), _jsxs("svg", { width: "100%", height: "100%", viewBox: "0 0 100 100", preserveAspectRatio: "none", children: [_jsxs("defs", { children: [colors.map((color, index) => _jsxs("radialGradient", { id: `${id}-${index}`, children: [_jsx("stop", { offset: "0%", stopColor: color }), _jsx("stop", { offset: "100%", stopColor: color, stopOpacity: 0 })] }, index)), _jsx("pattern", { id: `${id}-grain`, width: 4, height: 4, patternUnits: "userSpaceOnUse", children: effect.points.map((point, index) => _jsx("circle", { cx: point.x / 25, cy: point.y / 25, r: point.radius / 10, fill: palette.theme.text, opacity: 0.28 }, index)) })] }), effect.layers.includes("mesh") && effect.anchors.map((anchor, index) => _jsx("ellipse", { cx: anchor.x, cy: anchor.y, rx: 65, ry: 70, fill: `url(#${id}-${index})` }, index)), effect.layers.includes("glow") && _jsx("ellipse", { cx: 50, cy: 10, rx: 70, ry: 95, fill: `url(#${id}-0)` }), effect.layers.includes("grain") && _jsx("rect", { width: 100, height: 100, fill: `url(#${id}-grain)` })] })] }), effect.ruled && _jsxs("svg", { "data-hjm-effect-layer": "ruled", "aria-hidden": "true", focusable: "false", style: { position: "absolute", inset: 0, width: "100%", height: "100%", pointerEvents: "none", opacity: effect.intensity }, children: [_jsx("defs", { children: _jsx("pattern", { id: `${id}-ruled`, width: 1, height: effect.ruled.spacing, patternUnits: "userSpaceOnUse", children: _jsx("rect", { y: effect.ruled.spacing - effect.ruled.thickness, width: "100%", height: effect.ruled.thickness, fill: palette.theme.text }) }) }), _jsx("rect", { width: "100%", height: "100%", fill: `url(#${id}-ruled)` })] }), _jsx("div", { style: { position: "relative", padding: surfaceGeometry.paddings[padding] }, children: children })] });
|
|
57
58
|
}
|
|
58
59
|
//# sourceMappingURL=effect-surface.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effect-surface.js","sourceRoot":"","sources":["../src/effect-surface.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useId, useRef, useState, type ReactNode } from \"react\";\nimport { resolveEffectSurface, type EffectSurfaceDescriptor } from \"@hjmds/design-contracts/effect-surface\";\nimport { resolveColorReference } from \"@hjmds/design-contracts/color-references\";\nimport type { HjmCompositionStyleProp } from \"./composition-style.js\";\nimport { useHjmTheme } from \"./provider.js\";\nexport type EffectSurfaceProps = Readonly<{ descriptor?: EffectSurfaceDescriptor; children: ReactNode; className?: string; /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */ layoutStyle?: HjmCompositionStyleProp; }>;\n/** Decorative layers never receive pointer events or own the content's name. */\nexport function EffectSurface({ descriptor = {}, children, className, layoutStyle }: EffectSurfaceProps) {\n const { palette, environment } = useHjmTheme();\n const effect = resolveEffectSurface(descriptor);\n const id = useId().replace(/:/g, \"\");\n const host = useRef<HTMLDivElement>(null);\n const layer = useRef<SVGSVGElement>(null);\n const [visible, setVisible] = useState(false);\n const hasAtmosphere = effect.layers.some(value => value !== \"ruled\");\n useEffect(() => {\n if (!host.current) return;\n if (typeof IntersectionObserver === \"undefined\") { setVisible(true); return; }\n const observer = new IntersectionObserver(([entry]) => setVisible(entry?.isIntersecting ?? false));\n observer.observe(host.current); return () => observer.disconnect();\n }, []);\n useEffect(() => {\n const node = layer.current;\n if (!node || !hasAtmosphere || !effect.active || environment.reducedMotion || !visible || typeof node.animate !== \"function\") return;\n // WAAPI stays outside React renders; visibility changes cancel the loop and\n // expose its static composition rather than scheduling invisible frames.\n let animation: Animation | undefined;\n let failed = false;\n const sync = () => { animation?.cancel(); if (document.hidden || failed) return;\n // A host may expose WAAPI but reject animation creation. Keep the static SVG\n // and content instead of propagating a decorative failure to the application.\n try { animation = node.animate([\n { transform: \"scale(1.08) translate(-1%, 0%)\" },\n { transform: \"scale(1.12) translate(1%, 1%)\" },\n { transform: \"scale(1.08) translate(-1%, 0%)\" },\n ], { duration: effect.period * 1000, iterations: Infinity, easing: \"ease-in-out\" }); } catch { failed = true; } };\n sync(); document.addEventListener(\"visibilitychange\", sync);\n return () => { animation?.cancel(); document.removeEventListener(\"visibilitychange\", sync); };\n }, [hasAtmosphere, effect.active, effect.period, environment.reducedMotion, visible]);\n const colors = effect.colors.map(color => resolveColorReference(color, palette));\n return <div ref={host} className={className} data-hjm-effect-surface=\"\" style={{ ...layoutStyle, position: \"relative\", isolation: \"isolate\", overflow: \"hidden\", background: palette.theme.bg }}>\n <svg ref={layer} aria-hidden=\"true\" focusable=\"false\" style={{ position: \"absolute\", inset: 0, width: \"100%\", height: \"100%\", pointerEvents: \"none\", opacity: effect.intensity }}>\n {/* Keep noise in CSS-pixel units; the existing geometric layers retain their viewBox. */}\n <defs>{effect.noise && <><pattern id={`${id}-noise-tile`} width={effect.noise.size} height={effect.noise.size} x={effect.noise.offset} patternUnits=\"userSpaceOnUse\"><image href={effect.noise.uri} width={effect.noise.size} height={effect.noise.size} /></pattern><mask id={`${id}-noise-mask`} x={0} y={0} width=\"100%\" height=\"100%\" maskUnits=\"userSpaceOnUse\"><rect width=\"100%\" height=\"100%\" fill={`url(#${id}-noise-tile)`} /></mask></>}</defs>\n {effect.noise && <rect width=\"100%\" height=\"100%\" fill={palette.theme.text} mask={`url(#${id}-noise-mask)`} />}\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 100 100\" preserveAspectRatio=\"none\">\n <defs>{colors.map((color, index) => <radialGradient id={`${id}-${index}`} key={index}><stop offset=\"0%\" stopColor={color} /><stop offset=\"100%\" stopColor={color} stopOpacity={0} /></radialGradient>)}\n <pattern id={`${id}-grain`} width={4} height={4} patternUnits=\"userSpaceOnUse\">{effect.points.map((point, index) => <circle key={index} cx={point.x / 25} cy={point.y / 25} r={point.radius / 10} fill={palette.theme.text} opacity={0.28} />)}</pattern>\n </defs>\n {effect.layers.includes(\"mesh\") && effect.anchors.map((anchor, index) => <ellipse key={index} cx={anchor.x} cy={anchor.y} rx={65} ry={70} fill={`url(#${id}-${index})`} />)}\n {effect.layers.includes(\"glow\") && <ellipse cx={50} cy={10} rx={70} ry={95} fill={`url(#${id}-0)`} />}\n {effect.layers.includes(\"grain\") && <rect width={100} height={100} fill={`url(#${id}-grain)`} />}\n </svg>\n </svg>\n {/* Notebook ruling must not stretch or drift with the atmospheric layers. */}\n {effect.ruled && <svg data-hjm-effect-layer=\"ruled\" aria-hidden=\"true\" focusable=\"false\" style={{ position: \"absolute\", inset: 0, width: \"100%\", height: \"100%\", pointerEvents: \"none\", opacity: effect.intensity }}>\n <defs><pattern id={`${id}-ruled`} width={1} height={effect.ruled.spacing} patternUnits=\"userSpaceOnUse\"><rect y={effect.ruled.spacing - effect.ruled.thickness} width=\"100%\" height={effect.ruled.thickness} fill={palette.theme.text} /></pattern></defs>\n <rect width=\"100%\" height=\"100%\" fill={`url(#${id}-ruled)`} />\n </svg>}\n <div style={{ position: \"relative\" }}>{children}</div>\n </div>;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"effect-surface.js","sourceRoot":"","sources":["../src/effect-surface.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useId, useRef, useState, type ReactNode } from \"react\";\nimport { resolveEffectSurface, type EffectSurfaceDescriptor } from \"@hjmds/design-contracts/effect-surface\";\nimport { resolveColorReference } from \"@hjmds/design-contracts/color-references\";\nimport { surfaceDefaults, surfaceGeometry, type SurfacePadding, type SurfaceRadius } from \"@hjmds/design-contracts/recipes/base\";\nimport type { HjmCompositionStyleProp } from \"./composition-style.js\";\nimport { useHjmTheme } from \"./provider.js\";\nexport type EffectSurfaceProps = Readonly<{ descriptor?: EffectSurfaceDescriptor; children: ReactNode; className?: string;\n /** Content inset inside the decorated area (Surface padding scale). Consumers otherwise wrapped children in raw padded elements. */\n padding?: SurfacePadding;\n /** Corner radius of the decorated area. Defaults to the Surface radius so a framed hero clips its\n * decoration to the same corners as the Surface it wraps; full-bleed canvases pass `\"none\"`. */\n radius?: SurfaceRadius | \"none\";\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */ layoutStyle?: HjmCompositionStyleProp; }>;\n/** Decorative layers never receive pointer events or own the content's name. */\nexport function EffectSurface({ descriptor = {}, children, className, padding = \"none\", radius = surfaceDefaults.radius, layoutStyle }: EffectSurfaceProps) {\n const { palette, environment } = useHjmTheme();\n const effect = resolveEffectSurface(descriptor);\n const id = useId().replace(/:/g, \"\");\n const host = useRef<HTMLDivElement>(null);\n const layer = useRef<SVGSVGElement>(null);\n const [visible, setVisible] = useState(false);\n const hasAtmosphere = effect.layers.some(value => value !== \"ruled\");\n useEffect(() => {\n if (!host.current) return;\n if (typeof IntersectionObserver === \"undefined\") { setVisible(true); return; }\n const observer = new IntersectionObserver(([entry]) => setVisible(entry?.isIntersecting ?? false));\n observer.observe(host.current); return () => observer.disconnect();\n }, []);\n useEffect(() => {\n const node = layer.current;\n if (!node || !hasAtmosphere || !effect.active || environment.reducedMotion || !visible || typeof node.animate !== \"function\") return;\n // WAAPI stays outside React renders; visibility changes cancel the loop and\n // expose its static composition rather than scheduling invisible frames.\n let animation: Animation | undefined;\n let failed = false;\n const sync = () => { animation?.cancel(); if (document.hidden || failed) return;\n // A host may expose WAAPI but reject animation creation. Keep the static SVG\n // and content instead of propagating a decorative failure to the application.\n try { animation = node.animate([\n { transform: \"scale(1.08) translate(-1%, 0%)\" },\n { transform: \"scale(1.12) translate(1%, 1%)\" },\n { transform: \"scale(1.08) translate(-1%, 0%)\" },\n ], { duration: effect.period * 1000, iterations: Infinity, easing: \"ease-in-out\" }); } catch { failed = true; } };\n sync(); document.addEventListener(\"visibilitychange\", sync);\n return () => { animation?.cancel(); document.removeEventListener(\"visibilitychange\", sync); };\n }, [hasAtmosphere, effect.active, effect.period, environment.reducedMotion, visible]);\n const colors = effect.colors.map(color => resolveColorReference(color, palette));\n return <div ref={host} className={className} data-hjm-effect-surface=\"\" style={{ ...layoutStyle, position: \"relative\", isolation: \"isolate\", overflow: \"hidden\", borderRadius: radius === \"none\" ? 0 : `var(--hjm-radius-${radius})`, background: palette.theme.bg }}>\n <svg ref={layer} aria-hidden=\"true\" focusable=\"false\" style={{ position: \"absolute\", inset: 0, width: \"100%\", height: \"100%\", pointerEvents: \"none\", opacity: effect.intensity }}>\n {/* Keep noise in CSS-pixel units; the existing geometric layers retain their viewBox. */}\n <defs>{effect.noise && <><pattern id={`${id}-noise-tile`} width={effect.noise.size} height={effect.noise.size} x={effect.noise.offset} patternUnits=\"userSpaceOnUse\"><image href={effect.noise.uri} width={effect.noise.size} height={effect.noise.size} /></pattern><mask id={`${id}-noise-mask`} x={0} y={0} width=\"100%\" height=\"100%\" maskUnits=\"userSpaceOnUse\"><rect width=\"100%\" height=\"100%\" fill={`url(#${id}-noise-tile)`} /></mask></>}</defs>\n {effect.noise && <rect width=\"100%\" height=\"100%\" fill={palette.theme.text} mask={`url(#${id}-noise-mask)`} />}\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 100 100\" preserveAspectRatio=\"none\">\n <defs>{colors.map((color, index) => <radialGradient id={`${id}-${index}`} key={index}><stop offset=\"0%\" stopColor={color} /><stop offset=\"100%\" stopColor={color} stopOpacity={0} /></radialGradient>)}\n <pattern id={`${id}-grain`} width={4} height={4} patternUnits=\"userSpaceOnUse\">{effect.points.map((point, index) => <circle key={index} cx={point.x / 25} cy={point.y / 25} r={point.radius / 10} fill={palette.theme.text} opacity={0.28} />)}</pattern>\n </defs>\n {effect.layers.includes(\"mesh\") && effect.anchors.map((anchor, index) => <ellipse key={index} cx={anchor.x} cy={anchor.y} rx={65} ry={70} fill={`url(#${id}-${index})`} />)}\n {effect.layers.includes(\"glow\") && <ellipse cx={50} cy={10} rx={70} ry={95} fill={`url(#${id}-0)`} />}\n {effect.layers.includes(\"grain\") && <rect width={100} height={100} fill={`url(#${id}-grain)`} />}\n </svg>\n </svg>\n {/* Notebook ruling must not stretch or drift with the atmospheric layers. */}\n {effect.ruled && <svg data-hjm-effect-layer=\"ruled\" aria-hidden=\"true\" focusable=\"false\" style={{ position: \"absolute\", inset: 0, width: \"100%\", height: \"100%\", pointerEvents: \"none\", opacity: effect.intensity }}>\n <defs><pattern id={`${id}-ruled`} width={1} height={effect.ruled.spacing} patternUnits=\"userSpaceOnUse\"><rect y={effect.ruled.spacing - effect.ruled.thickness} width=\"100%\" height={effect.ruled.thickness} fill={palette.theme.text} /></pattern></defs>\n <rect width=\"100%\" height=\"100%\" fill={`url(#${id}-ruled)`} />\n </svg>}\n <div style={{ position: \"relative\", padding: surfaceGeometry.paddings[padding] }}>{children}</div>\n </div>;\n}\n"]}
|
package/dist/evidence.d.ts
CHANGED
|
@@ -34,7 +34,7 @@ export type ReactRendererEvidenceManifest = Readonly<{
|
|
|
34
34
|
export declare const reactRendererEvidence: {
|
|
35
35
|
readonly schemaVersion: 2;
|
|
36
36
|
readonly packageName: "@hjmds/react";
|
|
37
|
-
readonly packageVersion: "1.
|
|
37
|
+
readonly packageVersion: "1.27.0";
|
|
38
38
|
readonly surface: "web";
|
|
39
39
|
readonly components: readonly [Readonly<{
|
|
40
40
|
/** Canonical component id from the design-contracts catalog. */
|
package/dist/evidence.js
CHANGED
|
@@ -155,7 +155,7 @@ function toastClaim() {
|
|
|
155
155
|
export const reactRendererEvidence = {
|
|
156
156
|
schemaVersion: reactRendererEvidenceSchemaVersion,
|
|
157
157
|
packageName: "@hjmds/react",
|
|
158
|
-
packageVersion: "1.
|
|
158
|
+
packageVersion: "1.27.0",
|
|
159
159
|
surface: "web",
|
|
160
160
|
components: [
|
|
161
161
|
defaultClaim("top-bar", ["TopBar"], "./top-bar"),
|
package/dist/evidence.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ShowcaseScenarioId } from \"@hjmds/design-contracts/showcase\";\n\nexport const reactRendererEvidenceSchemaVersion = 2 as const;\n\nexport type ReactRendererEvidenceScenario = Exclude<ShowcaseScenarioId, \"contract\" | \"native-actions\">;\n\nexport type ReactRendererEvidenceComponent = Readonly<{\n /** Canonical component id from the design-contracts catalog. */\n componentId: string;\n /** Public symbols that implement this contract on the declared subpath. */\n exportNames: readonly string[];\n /** Granular @hjmds/react export used by consumers. */\n subpath: `./${string}`;\n /** Scenarios supported by automated first-party renderer evidence. */\n scenarios: readonly ReactRendererEvidenceScenario[];\n /** Repository-local executable proof for every claimed scenario. */\n proofs: readonly Readonly<{\n scenarios: readonly ReactRendererEvidenceScenario[];\n file: `test/${string}.test.tsx`;\n caseId: string;\n }>[];\n}>;\n\nexport type ReactRendererEvidenceManifest = Readonly<{\n schemaVersion: typeof reactRendererEvidenceSchemaVersion;\n packageName: \"@hjmds/react\";\n packageVersion: string;\n surface: \"web\";\n components: readonly ReactRendererEvidenceComponent[];\n}>;\n\nconst defaultProofFile = \"test/default-render.ssr.test.tsx\" as const;\nconst matrixProofFile = \"test/scenario-matrix.browser.test.tsx\" as const;\n\n/**\n * Environment scenarios proven in a real browser by scenario-matrix.browser.\n * Until 1.5.0 every component claimed all seven scenarios from one SSR test\n * that only checked the provider wrapper's attributes. A component now claims\n * a matrix scenario only if the matrix assertion for it passes.\n */\nconst matrixScenarios = [\"accessibility\", \"dark\", \"large-text\", \"rtl\", \"reduced-motion\"] as const;\n\n/**\n * Scenarios a component does not pass yet. Each entry is promotion debt that\n * the generated evidence projection reports; remove it when the component is\n * fixed and the matrix case passes.\n */\nconst webScenarioGaps: Readonly<Record<string, readonly ReactRendererEvidenceScenario[]>> = {};\n\n/** Fixtures that render long copy inside the component (renderLongCopy). */\nconst webLongCopyFixtures: ReadonlySet<string> = new Set<string>([\n \"masonry\", \"virtual-list\", \"qr-code\", \"color-picker\", \"watermark\", \"affix\",\n \"design-system-provider\",\n \"text-format\",\n \"aspect-ratio\",\n \"grid\",\n \"splitter\",\n \"layout\",\n \"steps\",\n \"breadcrumb\",\n \"auth-screen\",\n \"radio\",\n \"list\",\n \"timeline\",\n \"bottom-info\",\n \"stack\",\n \"container\",\n \"text\",\n \"surface\",\n \"button\",\n \"field\",\n \"text-area\",\n \"card\",\n \"notice\",\n \"list-row\",\n \"tag\",\n \"accordion\",\n \"file-picker\",\n \"agreement\",\n \"bottom-navigation\",\n \"load-more\",\n \"tabs\",\n \"badge\",\n \"chip\",\n \"link\",\n \"select\",\n \"combobox\",\n \"heading\",\n \"empty-state\",\n \"top\",\n \"section\",\n \"segmented-control\",\n \"top-bar\",\n \"mentions\",\n \"bottom-cta\",\n \"result\",\n \"progress\",\n \"description-list\",\n \"toast\",\n \"statistic\",\n \"radio-group\",\n \"checkbox-group\",\n \"auth-provider-button\",\n \"password-field\",\n \"search-field\",\n \"number-field\",\n \"floating-action-button\",\n \"checkbox\",\n \"switch\",\n \"toggle-group\",\n \"slider\",\n \"otp-field\",\n \"date-picker\",\n \"menubar\",\n \"sidebar\",\n \"transfer-list\",\n \"upload-item\",\n \"tags-input\",\n \"data-table\",\n \"collapsible\",\n \"anchor\",\n \"tree\",\n \"carousel\",\n \"calendar\",\n \"dialog\",\n \"tooltip\",\n]);\n\nfunction defaultClaim(\n componentId: string,\n exportNames: readonly string[],\n subpath: `./${string}`,\n): ReactRendererEvidenceComponent {\n const gaps = webScenarioGaps[componentId] ?? [];\n const matrix: ReactRendererEvidenceScenario[] = [\n ...matrixScenarios.filter((scenario) => !gaps.includes(scenario)),\n ...(webLongCopyFixtures.has(componentId) && !gaps.includes(\"long-copy\") ? [\"long-copy\" as const] : []),\n ];\n return {\n componentId,\n exportNames,\n subpath,\n scenarios: [\"default\", ...matrix],\n proofs: [\n { scenarios: [\"default\"], file: defaultProofFile, caseId: componentId },\n ...(matrix.length === 0 ? [] : [{ scenarios: matrix, file: matrixProofFile, caseId: componentId }]),\n ],\n };\n}\n\nfunction keyboardClaim(\n componentId: string,\n exportNames: readonly string[],\n subpath: `./${string}`,\n proofFile: `test/${string}.test.tsx` = \"test/stable-core.browser.test.tsx\",\n): ReactRendererEvidenceComponent {\n const base = defaultClaim(componentId, exportNames, subpath);\n return {\n ...base,\n scenarios: [...base.scenarios, \"keyboard\"],\n proofs: [\n ...base.proofs,\n {\n scenarios: [\"keyboard\"],\n file: proofFile,\n caseId: componentId,\n },\n ],\n };\n}\n\nfunction keyboardAndLongCopyClaim(\n componentId: string,\n exportNames: readonly string[],\n subpath: `./${string}`,\n proofFile: `test/${string}.test.tsx`,\n): ReactRendererEvidenceComponent {\n const base = defaultClaim(componentId, exportNames, subpath);\n return {\n ...base,\n scenarios: [...base.scenarios, \"keyboard\", \"long-copy\"],\n proofs: [...base.proofs, { scenarios: [\"keyboard\", \"long-copy\"], file: proofFile, caseId: componentId }],\n };\n}\n\nfunction toastClaim(): ReactRendererEvidenceComponent {\n const base = defaultClaim(\"toast\", [\"Toast\", \"ToastProvider\", \"useToast\"], \"./toast\");\n return {\n ...base,\n scenarios: [...base.scenarios, \"keyboard\"],\n // SSR proves semantics but cannot catch the close-only row seen in BurnTok.\n // Keep real geometry evidence attached without promoting catalog maturity.\n proofs: [...base.proofs,\n { scenarios: [\"keyboard\"], file: \"test/stable-core.browser.test.tsx\", caseId: \"toast\" },\n { scenarios: [\"dark\", \"long-copy\", \"large-text\", \"rtl\"], file: \"test/toast-layout.browser.test.tsx\", caseId: \"toast\" },\n ],\n };\n}\n\n/**\n * First-party Web renderer claims. Scenario axes remain fail-closed: the\n * default scenario is an SSR render, the environment and accessibility\n * scenarios are computed-style assertions in scenario-matrix.browser.\n * Keyboard and cross-platform parity remain fail-closed until dedicated\n * interaction or paired-renderer proofs are mapped one-to-one.\n */\nexport const reactRendererEvidence = {\n schemaVersion: reactRendererEvidenceSchemaVersion,\n packageName: \"@hjmds/react\",\n packageVersion: \"1.26.0\",\n surface: \"web\",\n components: [\n defaultClaim(\"top-bar\", [\"TopBar\"], \"./top-bar\"),\n defaultClaim(\"bottom-cta\", [\"BottomCTA\"], \"./bottom-cta\"),\n defaultClaim(\"design-system-provider\", [\"HjmProvider\", \"useHjmTheme\"], \"./provider\"),\n defaultClaim(\"text\", [\"Text\"], \"./layout\"),\n defaultClaim(\"surface\", [\"Surface\"], \"./layout\"),\n defaultClaim(\"icon\", [\"Icon\"], \"./display\"),\n defaultClaim(\"stack\", [\"Stack\"], \"./layout\"),\n defaultClaim(\"container\", [\"Container\"], \"./layout\"),\n defaultClaim(\"aspect-ratio\", [\"AspectRatio\"], \"./layout\"),\n defaultClaim(\"grid\", [\"Grid\"], \"./layout\"),\n keyboardClaim(\"layout\", [\"Layout\"], \"./layout\"),\n defaultClaim(\"button\", [\"Button\"], \"./actions\"),\n defaultClaim(\"icon-button\", [\"IconButton\"], \"./actions\"),\n keyboardClaim(\"link\", [\"Link\"], \"./actions\"),\n keyboardClaim(\"field\", [\"Field\", \"TextField\"], \"./forms\"),\n keyboardClaim(\"search-field\", [\"SearchField\"], \"./forms\"),\n defaultClaim(\"text-area\", [\"TextArea\"], \"./forms\"),\n keyboardClaim(\"password-field\", [\"PasswordField\"], \"./password-field\"),\n keyboardClaim(\"otp-field\", [\"OtpField\"], \"./otp-field\"),\n keyboardClaim(\"number-field\", [\"NumberField\"], \"./number-field\"),\n keyboardClaim(\"slider\", [\"Slider\"], \"./slider\"),\n keyboardClaim(\"form\", [\"Form\"], \"./forms\", \"test/form.keyboard.browser.test.tsx\"),\n keyboardClaim(\"date-picker\", [\"DatePicker\"], \"./date-picker\"),\n keyboardClaim(\"calendar\", [\"Calendar\"], \"./calendar\", \"test/calendar.browser.test.tsx\"),\n keyboardClaim(\"file-picker\", [\"FilePicker\"], \"./file-picker\", \"test/file-picker.keyboard.browser.test.tsx\"),\n keyboardClaim(\"checkbox\", [\"Checkbox\"], \"./selection\"),\n defaultClaim(\"radio\", [\"Radio\"], \"./selection\"),\n keyboardClaim(\"checkbox-group\", [\"CheckboxGroup\"], \"./selection\"),\n keyboardClaim(\"radio-group\", [\"RadioGroup\"], \"./selection\"),\n keyboardClaim(\"switch\", [\"Switch\"], \"./selection\"),\n keyboardClaim(\"segmented-control\", [\"SegmentedControl\"], \"./selection\"),\n keyboardClaim(\"chip\", [\"Chip\"], \"./selection\"),\n keyboardClaim(\"tabs\", [\"Tabs\"], \"./navigation\", \"test/tabs.keyboard.browser.test.tsx\"),\n keyboardClaim(\"breadcrumb\", [\"Breadcrumb\"], \"./breadcrumb\", \"test/page-navigation.browser.test.tsx\"),\n keyboardClaim(\"pagination\", [\"Pagination\"], \"./pagination\", \"test/pagination.keyboard.browser.test.tsx\"),\n keyboardAndLongCopyClaim(\"popover\", [\"Popover\"], \"./popover\", \"test/popover.browser.test.tsx\"),\n keyboardAndLongCopyClaim(\"side-panel\", [\"SidePanel\"], \"./side-panel\", \"test/side-panel.browser.test.tsx\"),\n keyboardClaim(\"splitter\", [\"Splitter\"], \"./splitter\", \"test/splitter.browser.test.tsx\"),\n keyboardAndLongCopyClaim(\"tour\", [\"Tour\"], \"./tour\", \"test/tour.browser.test.tsx\"),\n keyboardClaim(\"tree\", [\"Tree\"], \"./tree\", \"test/tree.browser.test.tsx\"),\n keyboardClaim(\"transfer-list\", [\"TransferList\"], \"./transfer-list\", \"test/transfer-list.browser.test.tsx\"),\n keyboardClaim(\"mentions\", [\"Mentions\"], \"./mentions\", \"test/mentions.browser.test.tsx\"),\n keyboardAndLongCopyClaim(\"command-palette\", [\"CommandPalette\"], \"./command-palette\", \"test/command-palette.browser.test.tsx\"),\n keyboardClaim(\"agreement\", [\"Agreement\"], \"./agreement\", \"test/agreement.keyboard.browser.test.tsx\"),\n defaultClaim(\"top\", [\"Top\"], \"./top\"),\n defaultClaim(\"heading\", [\"Heading\"], \"./heading\"),\n defaultClaim(\"text-format\", [\"TextFormat\"], \"./text-formats\"),\n keyboardClaim(\"toggle-group\", [\"ToggleGroup\"], \"./toggle-group\"),\n keyboardClaim(\"tags-input\", [\"TagsInput\"], \"./tags-input\"),\n keyboardAndLongCopyClaim(\"skip-nav\", [\"SkipNav\"], \"./skip-nav\", \"test/skip-nav.browser.test.tsx\"),\n defaultClaim(\"bottom-info\", [\"BottomInfo\"], \"./bottom-info\"),\n keyboardClaim(\"sidebar\", [\"Sidebar\"], \"./sidebar\", \"test/sidebar.browser.test.tsx\"),\n keyboardClaim(\"date-range-picker\", [\"DateRangePicker\"], \"./date-range\", \"test/date-range.keyboard.browser.test.tsx\"),\n keyboardClaim(\"auth-provider-button\", [\"AuthProviderButton\"], \"./provider-button\"),\n defaultClaim(\"auth-screen\", [\"AuthScreenLayout\"], \"./auth-screen\"),\n keyboardClaim(\"data-table\", [\"DataTable\"], \"./data-table\", \"test/data-table.keyboard.browser.test.tsx\"),\n keyboardClaim(\"collapsible\", [\"Collapsible\"], \"./collapsible\", \"test/collapsible.keyboard.browser.test.tsx\"),\n keyboardAndLongCopyClaim(\"context-menu\", [\"ContextMenu\"], \"./context-menu\", \"test/context-menu.interactions.browser.test.tsx\"),\n keyboardClaim(\"menubar\", [\"Menubar\"], \"./menubar\", \"test/menubar.keyboard.browser.test.tsx\"),\n defaultClaim(\"asset\", [\"Asset\", \"AssetGroup\"], \"./asset\"),\n keyboardClaim(\"anchor\", [\"Anchor\"], \"./anchor\", \"test/anchor.browser.test.tsx\"),\n keyboardClaim(\"bottom-navigation\", [\"BottomNavigation\"], \"./navigation\", \"test/bottom-navigation.keyboard.browser.test.tsx\"),\n keyboardClaim(\"load-more\", [\"LoadMore\"], \"./navigation\", \"test/load-more.interactions.browser.test.tsx\"),\n keyboardClaim(\"carousel\", [\"Carousel\"], \"./carousel\", \"test/carousel.browser.test.tsx\"),\n keyboardClaim(\"floating-action-button\", [\"FloatingActionButton\"], \"./floating-action-button\"),\n defaultClaim(\"steps\", [\"Steps\"], \"./steps\"),\n defaultClaim(\"badge\", [\"Badge\"], \"./display\"),\n defaultClaim(\"avatar\", [\"Avatar\"], \"./display\"),\n defaultClaim(\"counter-badge\", [\"CounterBadge\"], \"./display\"),\n defaultClaim(\"card\", [\"Card\"], \"./display\"),\n defaultClaim(\"list\", [\"List\"], \"./display\"),\n defaultClaim(\"list-row\", [\"ListRow\"], \"./display\"),\n defaultClaim(\"tag\", [\"Tag\"], \"./display\"),\n keyboardClaim(\"accordion\", [\"Accordion\"], \"./display\", \"test/accordion.keyboard.browser.test.tsx\"),\n defaultClaim(\"divider\", [\"Divider\"], \"./display\"),\n defaultClaim(\"statistic\", [\"Statistic\", \"StatisticGroup\"], \"./display\"),\n defaultClaim(\"section\", [\"Section\"], \"./layout\"),\n keyboardClaim(\"upload-item\", [\"UploadItem\"], \"./upload-item\", \"test/upload-item.browser.test.tsx\"),\n defaultClaim(\"timeline\", [\"Timeline\"], \"./display\"),\n defaultClaim(\"description-list\", [\"DescriptionList\"], \"./display\"),\n defaultClaim(\"image\", [\"Image\"], \"./display\"),\n defaultClaim(\"empty-state\", [\"EmptyState\"], \"./feedback\"),\n defaultClaim(\"notice\", [\"Notice\"], \"./feedback\"),\n defaultClaim(\"progress\", [\"Progress\"], \"./feedback\"),\n {\n componentId: \"thinking-orb\",\n exportNames: [\"ThinkingOrb\"],\n subpath: \"./thinking-orb\",\n scenarios: [\"default\", \"dark\", \"large-text\", \"rtl\", \"reduced-motion\", \"accessibility\"],\n proofs: [\n { scenarios: [\"default\"], file: defaultProofFile, caseId: \"thinking-orb\" },\n {\n scenarios: [\"dark\", \"large-text\", \"rtl\", \"reduced-motion\", \"accessibility\"],\n file: \"test/thinking-orb.browser.test.tsx\",\n caseId: \"thinking-orb\",\n },\n ],\n },\n keyboardClaim(\"color-picker\", [\"ColorPicker\"], \"./color-picker\", \"test/web-additions.browser.test.tsx\"),\n defaultClaim(\"watermark\", [\"Watermark\"], \"./watermark\"),\n defaultClaim(\"affix\", [\"Affix\"], \"./affix\"),\n defaultClaim(\"masonry\", [\"Masonry\"], \"./masonry\"),\n defaultClaim(\"virtual-list\", [\"VirtualList\"], \"./virtual-list\"),\n defaultClaim(\"qr-code\", [\"QRCode\"], \"./qr-code\"),\n defaultClaim(\"spinner\", [\"Spinner\"], \"./feedback\"),\n defaultClaim(\"skeleton\", [\"Skeleton\"], \"./feedback\"),\n defaultClaim(\"result\", [\"Result\"], \"./feedback\"),\n toastClaim(),\n keyboardClaim(\"select\", [\"Select\"], \"./forms\"),\n keyboardClaim(\"combobox\", [\"Combobox\"], \"./forms\"),\n keyboardClaim(\"dialog\", [\"Dialog\"], \"./overlays\", \"test/advanced.browser.test.tsx\"),\n keyboardAndLongCopyClaim(\"alert-dialog\", [\"AlertDialog\"], \"./overlays\", \"test/alert-dialog.keyboard.browser.test.tsx\"),\n keyboardAndLongCopyClaim(\"sheet\", [\"Sheet\"], \"./overlays\", \"test/sheet-layout.browser.test.tsx\"),\n keyboardClaim(\"tooltip\", [\"Tooltip\"], \"./overlays\", \"test/tooltip.browser.test.tsx\"),\n defaultClaim(\"visually-hidden\", [\"VisuallyHidden\"], \"./layout\"),\n keyboardAndLongCopyClaim(\"menu\", [\"Menu\"], \"./overlays\", \"test/menu.keyboard.browser.test.tsx\"),\n ],\n} as const satisfies ReactRendererEvidenceManifest;\n"]}
|
|
1
|
+
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ShowcaseScenarioId } from \"@hjmds/design-contracts/showcase\";\n\nexport const reactRendererEvidenceSchemaVersion = 2 as const;\n\nexport type ReactRendererEvidenceScenario = Exclude<ShowcaseScenarioId, \"contract\" | \"native-actions\">;\n\nexport type ReactRendererEvidenceComponent = Readonly<{\n /** Canonical component id from the design-contracts catalog. */\n componentId: string;\n /** Public symbols that implement this contract on the declared subpath. */\n exportNames: readonly string[];\n /** Granular @hjmds/react export used by consumers. */\n subpath: `./${string}`;\n /** Scenarios supported by automated first-party renderer evidence. */\n scenarios: readonly ReactRendererEvidenceScenario[];\n /** Repository-local executable proof for every claimed scenario. */\n proofs: readonly Readonly<{\n scenarios: readonly ReactRendererEvidenceScenario[];\n file: `test/${string}.test.tsx`;\n caseId: string;\n }>[];\n}>;\n\nexport type ReactRendererEvidenceManifest = Readonly<{\n schemaVersion: typeof reactRendererEvidenceSchemaVersion;\n packageName: \"@hjmds/react\";\n packageVersion: string;\n surface: \"web\";\n components: readonly ReactRendererEvidenceComponent[];\n}>;\n\nconst defaultProofFile = \"test/default-render.ssr.test.tsx\" as const;\nconst matrixProofFile = \"test/scenario-matrix.browser.test.tsx\" as const;\n\n/**\n * Environment scenarios proven in a real browser by scenario-matrix.browser.\n * Until 1.5.0 every component claimed all seven scenarios from one SSR test\n * that only checked the provider wrapper's attributes. A component now claims\n * a matrix scenario only if the matrix assertion for it passes.\n */\nconst matrixScenarios = [\"accessibility\", \"dark\", \"large-text\", \"rtl\", \"reduced-motion\"] as const;\n\n/**\n * Scenarios a component does not pass yet. Each entry is promotion debt that\n * the generated evidence projection reports; remove it when the component is\n * fixed and the matrix case passes.\n */\nconst webScenarioGaps: Readonly<Record<string, readonly ReactRendererEvidenceScenario[]>> = {};\n\n/** Fixtures that render long copy inside the component (renderLongCopy). */\nconst webLongCopyFixtures: ReadonlySet<string> = new Set<string>([\n \"masonry\", \"virtual-list\", \"qr-code\", \"color-picker\", \"watermark\", \"affix\",\n \"design-system-provider\",\n \"text-format\",\n \"aspect-ratio\",\n \"grid\",\n \"splitter\",\n \"layout\",\n \"steps\",\n \"breadcrumb\",\n \"auth-screen\",\n \"radio\",\n \"list\",\n \"timeline\",\n \"bottom-info\",\n \"stack\",\n \"container\",\n \"text\",\n \"surface\",\n \"button\",\n \"field\",\n \"text-area\",\n \"card\",\n \"notice\",\n \"list-row\",\n \"tag\",\n \"accordion\",\n \"file-picker\",\n \"agreement\",\n \"bottom-navigation\",\n \"load-more\",\n \"tabs\",\n \"badge\",\n \"chip\",\n \"link\",\n \"select\",\n \"combobox\",\n \"heading\",\n \"empty-state\",\n \"top\",\n \"section\",\n \"segmented-control\",\n \"top-bar\",\n \"mentions\",\n \"bottom-cta\",\n \"result\",\n \"progress\",\n \"description-list\",\n \"toast\",\n \"statistic\",\n \"radio-group\",\n \"checkbox-group\",\n \"auth-provider-button\",\n \"password-field\",\n \"search-field\",\n \"number-field\",\n \"floating-action-button\",\n \"checkbox\",\n \"switch\",\n \"toggle-group\",\n \"slider\",\n \"otp-field\",\n \"date-picker\",\n \"menubar\",\n \"sidebar\",\n \"transfer-list\",\n \"upload-item\",\n \"tags-input\",\n \"data-table\",\n \"collapsible\",\n \"anchor\",\n \"tree\",\n \"carousel\",\n \"calendar\",\n \"dialog\",\n \"tooltip\",\n]);\n\nfunction defaultClaim(\n componentId: string,\n exportNames: readonly string[],\n subpath: `./${string}`,\n): ReactRendererEvidenceComponent {\n const gaps = webScenarioGaps[componentId] ?? [];\n const matrix: ReactRendererEvidenceScenario[] = [\n ...matrixScenarios.filter((scenario) => !gaps.includes(scenario)),\n ...(webLongCopyFixtures.has(componentId) && !gaps.includes(\"long-copy\") ? [\"long-copy\" as const] : []),\n ];\n return {\n componentId,\n exportNames,\n subpath,\n scenarios: [\"default\", ...matrix],\n proofs: [\n { scenarios: [\"default\"], file: defaultProofFile, caseId: componentId },\n ...(matrix.length === 0 ? [] : [{ scenarios: matrix, file: matrixProofFile, caseId: componentId }]),\n ],\n };\n}\n\nfunction keyboardClaim(\n componentId: string,\n exportNames: readonly string[],\n subpath: `./${string}`,\n proofFile: `test/${string}.test.tsx` = \"test/stable-core.browser.test.tsx\",\n): ReactRendererEvidenceComponent {\n const base = defaultClaim(componentId, exportNames, subpath);\n return {\n ...base,\n scenarios: [...base.scenarios, \"keyboard\"],\n proofs: [\n ...base.proofs,\n {\n scenarios: [\"keyboard\"],\n file: proofFile,\n caseId: componentId,\n },\n ],\n };\n}\n\nfunction keyboardAndLongCopyClaim(\n componentId: string,\n exportNames: readonly string[],\n subpath: `./${string}`,\n proofFile: `test/${string}.test.tsx`,\n): ReactRendererEvidenceComponent {\n const base = defaultClaim(componentId, exportNames, subpath);\n return {\n ...base,\n scenarios: [...base.scenarios, \"keyboard\", \"long-copy\"],\n proofs: [...base.proofs, { scenarios: [\"keyboard\", \"long-copy\"], file: proofFile, caseId: componentId }],\n };\n}\n\nfunction toastClaim(): ReactRendererEvidenceComponent {\n const base = defaultClaim(\"toast\", [\"Toast\", \"ToastProvider\", \"useToast\"], \"./toast\");\n return {\n ...base,\n scenarios: [...base.scenarios, \"keyboard\"],\n // SSR proves semantics but cannot catch the close-only row seen in BurnTok.\n // Keep real geometry evidence attached without promoting catalog maturity.\n proofs: [...base.proofs,\n { scenarios: [\"keyboard\"], file: \"test/stable-core.browser.test.tsx\", caseId: \"toast\" },\n { scenarios: [\"dark\", \"long-copy\", \"large-text\", \"rtl\"], file: \"test/toast-layout.browser.test.tsx\", caseId: \"toast\" },\n ],\n };\n}\n\n/**\n * First-party Web renderer claims. Scenario axes remain fail-closed: the\n * default scenario is an SSR render, the environment and accessibility\n * scenarios are computed-style assertions in scenario-matrix.browser.\n * Keyboard and cross-platform parity remain fail-closed until dedicated\n * interaction or paired-renderer proofs are mapped one-to-one.\n */\nexport const reactRendererEvidence = {\n schemaVersion: reactRendererEvidenceSchemaVersion,\n packageName: \"@hjmds/react\",\n packageVersion: \"1.27.0\",\n surface: \"web\",\n components: [\n defaultClaim(\"top-bar\", [\"TopBar\"], \"./top-bar\"),\n defaultClaim(\"bottom-cta\", [\"BottomCTA\"], \"./bottom-cta\"),\n defaultClaim(\"design-system-provider\", [\"HjmProvider\", \"useHjmTheme\"], \"./provider\"),\n defaultClaim(\"text\", [\"Text\"], \"./layout\"),\n defaultClaim(\"surface\", [\"Surface\"], \"./layout\"),\n defaultClaim(\"icon\", [\"Icon\"], \"./display\"),\n defaultClaim(\"stack\", [\"Stack\"], \"./layout\"),\n defaultClaim(\"container\", [\"Container\"], \"./layout\"),\n defaultClaim(\"aspect-ratio\", [\"AspectRatio\"], \"./layout\"),\n defaultClaim(\"grid\", [\"Grid\"], \"./layout\"),\n keyboardClaim(\"layout\", [\"Layout\"], \"./layout\"),\n defaultClaim(\"button\", [\"Button\"], \"./actions\"),\n defaultClaim(\"icon-button\", [\"IconButton\"], \"./actions\"),\n keyboardClaim(\"link\", [\"Link\"], \"./actions\"),\n keyboardClaim(\"field\", [\"Field\", \"TextField\"], \"./forms\"),\n keyboardClaim(\"search-field\", [\"SearchField\"], \"./forms\"),\n defaultClaim(\"text-area\", [\"TextArea\"], \"./forms\"),\n keyboardClaim(\"password-field\", [\"PasswordField\"], \"./password-field\"),\n keyboardClaim(\"otp-field\", [\"OtpField\"], \"./otp-field\"),\n keyboardClaim(\"number-field\", [\"NumberField\"], \"./number-field\"),\n keyboardClaim(\"slider\", [\"Slider\"], \"./slider\"),\n keyboardClaim(\"form\", [\"Form\"], \"./forms\", \"test/form.keyboard.browser.test.tsx\"),\n keyboardClaim(\"date-picker\", [\"DatePicker\"], \"./date-picker\"),\n keyboardClaim(\"calendar\", [\"Calendar\"], \"./calendar\", \"test/calendar.browser.test.tsx\"),\n keyboardClaim(\"file-picker\", [\"FilePicker\"], \"./file-picker\", \"test/file-picker.keyboard.browser.test.tsx\"),\n keyboardClaim(\"checkbox\", [\"Checkbox\"], \"./selection\"),\n defaultClaim(\"radio\", [\"Radio\"], \"./selection\"),\n keyboardClaim(\"checkbox-group\", [\"CheckboxGroup\"], \"./selection\"),\n keyboardClaim(\"radio-group\", [\"RadioGroup\"], \"./selection\"),\n keyboardClaim(\"switch\", [\"Switch\"], \"./selection\"),\n keyboardClaim(\"segmented-control\", [\"SegmentedControl\"], \"./selection\"),\n keyboardClaim(\"chip\", [\"Chip\"], \"./selection\"),\n keyboardClaim(\"tabs\", [\"Tabs\"], \"./navigation\", \"test/tabs.keyboard.browser.test.tsx\"),\n keyboardClaim(\"breadcrumb\", [\"Breadcrumb\"], \"./breadcrumb\", \"test/page-navigation.browser.test.tsx\"),\n keyboardClaim(\"pagination\", [\"Pagination\"], \"./pagination\", \"test/pagination.keyboard.browser.test.tsx\"),\n keyboardAndLongCopyClaim(\"popover\", [\"Popover\"], \"./popover\", \"test/popover.browser.test.tsx\"),\n keyboardAndLongCopyClaim(\"side-panel\", [\"SidePanel\"], \"./side-panel\", \"test/side-panel.browser.test.tsx\"),\n keyboardClaim(\"splitter\", [\"Splitter\"], \"./splitter\", \"test/splitter.browser.test.tsx\"),\n keyboardAndLongCopyClaim(\"tour\", [\"Tour\"], \"./tour\", \"test/tour.browser.test.tsx\"),\n keyboardClaim(\"tree\", [\"Tree\"], \"./tree\", \"test/tree.browser.test.tsx\"),\n keyboardClaim(\"transfer-list\", [\"TransferList\"], \"./transfer-list\", \"test/transfer-list.browser.test.tsx\"),\n keyboardClaim(\"mentions\", [\"Mentions\"], \"./mentions\", \"test/mentions.browser.test.tsx\"),\n keyboardAndLongCopyClaim(\"command-palette\", [\"CommandPalette\"], \"./command-palette\", \"test/command-palette.browser.test.tsx\"),\n keyboardClaim(\"agreement\", [\"Agreement\"], \"./agreement\", \"test/agreement.keyboard.browser.test.tsx\"),\n defaultClaim(\"top\", [\"Top\"], \"./top\"),\n defaultClaim(\"heading\", [\"Heading\"], \"./heading\"),\n defaultClaim(\"text-format\", [\"TextFormat\"], \"./text-formats\"),\n keyboardClaim(\"toggle-group\", [\"ToggleGroup\"], \"./toggle-group\"),\n keyboardClaim(\"tags-input\", [\"TagsInput\"], \"./tags-input\"),\n keyboardAndLongCopyClaim(\"skip-nav\", [\"SkipNav\"], \"./skip-nav\", \"test/skip-nav.browser.test.tsx\"),\n defaultClaim(\"bottom-info\", [\"BottomInfo\"], \"./bottom-info\"),\n keyboardClaim(\"sidebar\", [\"Sidebar\"], \"./sidebar\", \"test/sidebar.browser.test.tsx\"),\n keyboardClaim(\"date-range-picker\", [\"DateRangePicker\"], \"./date-range\", \"test/date-range.keyboard.browser.test.tsx\"),\n keyboardClaim(\"auth-provider-button\", [\"AuthProviderButton\"], \"./provider-button\"),\n defaultClaim(\"auth-screen\", [\"AuthScreenLayout\"], \"./auth-screen\"),\n keyboardClaim(\"data-table\", [\"DataTable\"], \"./data-table\", \"test/data-table.keyboard.browser.test.tsx\"),\n keyboardClaim(\"collapsible\", [\"Collapsible\"], \"./collapsible\", \"test/collapsible.keyboard.browser.test.tsx\"),\n keyboardAndLongCopyClaim(\"context-menu\", [\"ContextMenu\"], \"./context-menu\", \"test/context-menu.interactions.browser.test.tsx\"),\n keyboardClaim(\"menubar\", [\"Menubar\"], \"./menubar\", \"test/menubar.keyboard.browser.test.tsx\"),\n defaultClaim(\"asset\", [\"Asset\", \"AssetGroup\"], \"./asset\"),\n keyboardClaim(\"anchor\", [\"Anchor\"], \"./anchor\", \"test/anchor.browser.test.tsx\"),\n keyboardClaim(\"bottom-navigation\", [\"BottomNavigation\"], \"./navigation\", \"test/bottom-navigation.keyboard.browser.test.tsx\"),\n keyboardClaim(\"load-more\", [\"LoadMore\"], \"./navigation\", \"test/load-more.interactions.browser.test.tsx\"),\n keyboardClaim(\"carousel\", [\"Carousel\"], \"./carousel\", \"test/carousel.browser.test.tsx\"),\n keyboardClaim(\"floating-action-button\", [\"FloatingActionButton\"], \"./floating-action-button\"),\n defaultClaim(\"steps\", [\"Steps\"], \"./steps\"),\n defaultClaim(\"badge\", [\"Badge\"], \"./display\"),\n defaultClaim(\"avatar\", [\"Avatar\"], \"./display\"),\n defaultClaim(\"counter-badge\", [\"CounterBadge\"], \"./display\"),\n defaultClaim(\"card\", [\"Card\"], \"./display\"),\n defaultClaim(\"list\", [\"List\"], \"./display\"),\n defaultClaim(\"list-row\", [\"ListRow\"], \"./display\"),\n defaultClaim(\"tag\", [\"Tag\"], \"./display\"),\n keyboardClaim(\"accordion\", [\"Accordion\"], \"./display\", \"test/accordion.keyboard.browser.test.tsx\"),\n defaultClaim(\"divider\", [\"Divider\"], \"./display\"),\n defaultClaim(\"statistic\", [\"Statistic\", \"StatisticGroup\"], \"./display\"),\n defaultClaim(\"section\", [\"Section\"], \"./layout\"),\n keyboardClaim(\"upload-item\", [\"UploadItem\"], \"./upload-item\", \"test/upload-item.browser.test.tsx\"),\n defaultClaim(\"timeline\", [\"Timeline\"], \"./display\"),\n defaultClaim(\"description-list\", [\"DescriptionList\"], \"./display\"),\n defaultClaim(\"image\", [\"Image\"], \"./display\"),\n defaultClaim(\"empty-state\", [\"EmptyState\"], \"./feedback\"),\n defaultClaim(\"notice\", [\"Notice\"], \"./feedback\"),\n defaultClaim(\"progress\", [\"Progress\"], \"./feedback\"),\n {\n componentId: \"thinking-orb\",\n exportNames: [\"ThinkingOrb\"],\n subpath: \"./thinking-orb\",\n scenarios: [\"default\", \"dark\", \"large-text\", \"rtl\", \"reduced-motion\", \"accessibility\"],\n proofs: [\n { scenarios: [\"default\"], file: defaultProofFile, caseId: \"thinking-orb\" },\n {\n scenarios: [\"dark\", \"large-text\", \"rtl\", \"reduced-motion\", \"accessibility\"],\n file: \"test/thinking-orb.browser.test.tsx\",\n caseId: \"thinking-orb\",\n },\n ],\n },\n keyboardClaim(\"color-picker\", [\"ColorPicker\"], \"./color-picker\", \"test/web-additions.browser.test.tsx\"),\n defaultClaim(\"watermark\", [\"Watermark\"], \"./watermark\"),\n defaultClaim(\"affix\", [\"Affix\"], \"./affix\"),\n defaultClaim(\"masonry\", [\"Masonry\"], \"./masonry\"),\n defaultClaim(\"virtual-list\", [\"VirtualList\"], \"./virtual-list\"),\n defaultClaim(\"qr-code\", [\"QRCode\"], \"./qr-code\"),\n defaultClaim(\"spinner\", [\"Spinner\"], \"./feedback\"),\n defaultClaim(\"skeleton\", [\"Skeleton\"], \"./feedback\"),\n defaultClaim(\"result\", [\"Result\"], \"./feedback\"),\n toastClaim(),\n keyboardClaim(\"select\", [\"Select\"], \"./forms\"),\n keyboardClaim(\"combobox\", [\"Combobox\"], \"./forms\"),\n keyboardClaim(\"dialog\", [\"Dialog\"], \"./overlays\", \"test/advanced.browser.test.tsx\"),\n keyboardAndLongCopyClaim(\"alert-dialog\", [\"AlertDialog\"], \"./overlays\", \"test/alert-dialog.keyboard.browser.test.tsx\"),\n keyboardAndLongCopyClaim(\"sheet\", [\"Sheet\"], \"./overlays\", \"test/sheet-layout.browser.test.tsx\"),\n keyboardClaim(\"tooltip\", [\"Tooltip\"], \"./overlays\", \"test/tooltip.browser.test.tsx\"),\n defaultClaim(\"visually-hidden\", [\"VisuallyHidden\"], \"./layout\"),\n keyboardAndLongCopyClaim(\"menu\", [\"Menu\"], \"./overlays\", \"test/menu.keyboard.browser.test.tsx\"),\n ],\n} as const satisfies ReactRendererEvidenceManifest;\n"]}
|
package/dist/feedback.d.ts
CHANGED
|
@@ -59,26 +59,14 @@ export declare const Result: import("react").ForwardRefExoticComponent<Omit<HTML
|
|
|
59
59
|
/** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */
|
|
60
60
|
layoutStyle?: HjmCompositionStyleProp;
|
|
61
61
|
}> & import("react").RefAttributes<HTMLDivElement>>;
|
|
62
|
-
|
|
62
|
+
type ProgressName = Readonly<{
|
|
63
63
|
label: ReactNode;
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
tone?: ProgressTone;
|
|
69
|
-
/**
|
|
70
|
-
* `circular` draws the same value as a ring. It is a shape, not a second
|
|
71
|
-
* component: min/max/now, the indeterminate case and the announcement are
|
|
72
|
-
* identical, so the accessibility contract stays in one place.
|
|
73
|
-
*/
|
|
74
|
-
shape?: ProgressShape;
|
|
75
|
-
/** Content inside the ring — a percentage, a count, an icon. Ignored when linear. */
|
|
76
|
-
children?: ReactNode;
|
|
77
|
-
/** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */
|
|
78
|
-
layoutStyle?: HjmCompositionStyleProp;
|
|
64
|
+
"aria-label"?: string;
|
|
65
|
+
}> | Readonly<{
|
|
66
|
+
label?: never;
|
|
67
|
+
"aria-label": string;
|
|
79
68
|
}>;
|
|
80
|
-
export
|
|
81
|
-
label: ReactNode;
|
|
69
|
+
export type ProgressProps = Omit<ProgressHTMLAttributes<HTMLProgressElement>, "children" | "max" | "size" | "value" | "aria-label"> & ProgressName & Readonly<{
|
|
82
70
|
value?: number;
|
|
83
71
|
max?: number;
|
|
84
72
|
valueText?: string;
|
|
@@ -94,7 +82,8 @@ export declare const Progress: import("react").ForwardRefExoticComponent<Omit<Pr
|
|
|
94
82
|
children?: ReactNode;
|
|
95
83
|
/** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */
|
|
96
84
|
layoutStyle?: HjmCompositionStyleProp;
|
|
97
|
-
}
|
|
85
|
+
}>;
|
|
86
|
+
export declare const Progress: import("react").ForwardRefExoticComponent<ProgressProps & import("react").RefAttributes<HTMLProgressElement>>;
|
|
98
87
|
export { Spinner, type SpinnerProps } from "./internal/spinner.js";
|
|
99
88
|
type SkeletonShape = keyof typeof skeletonRecipe.shapes;
|
|
100
89
|
export type SkeletonProps = Omit<HTMLAttributes<HTMLSpanElement>, "children"> & Readonly<{
|
package/dist/feedback.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../src/feedback.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAGhB,cAAc,EACd,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,YAAY,EAClB,MAAM,iCAAiC,CAAC;AACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../src/feedback.tsx"],"names":[],"mappings":"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"}
|
package/dist/feedback.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { emptyStateRecipe, noticeRecipe, progressRecipe, skeletonRecipe, } from "@hjmds/design-contracts/recipes";
|
|
3
|
-
import { resolveResultDescriptor, } from "@hjmds/design-contracts/components/result";
|
|
3
|
+
import { resolveResultDescriptor, resultRecipe, } from "@hjmds/design-contracts/components/result";
|
|
4
4
|
import { forwardRef, useId, } from "react";
|
|
5
5
|
import { classNames } from "./internal.js";
|
|
6
6
|
import { Button } from "./actions.js";
|
|
7
|
+
import { Text } from "./layout.js";
|
|
7
8
|
export const Notice = forwardRef(function Notice({ title, description, action, icon, tone = noticeRecipe.defaults.tone, className, layoutStyle, ...props }, ref) {
|
|
8
9
|
const urgent = tone === "danger";
|
|
9
10
|
return (_jsxs("section", { ...props, style: { ...props.style, ...layoutStyle }, ref: ref, className: classNames("hjm-notice", className), "data-tone": tone, role: urgent ? "alert" : "status", "aria-live": urgent ? "assertive" : "polite", children: [icon ? _jsx("div", { className: "hjm-notice__icon", "aria-hidden": "true", children: icon }) : null, _jsxs("div", { className: "hjm-notice__content", children: [_jsx("strong", { className: "hjm-notice__title", children: title }), description ? _jsx("div", { className: "hjm-notice__description", children: description }) : null] }), action ? _jsx("div", { className: "hjm-notice__action", children: action }) : null] }));
|
|
@@ -20,7 +21,7 @@ export const Result = forwardRef(function Result({ status, title, description, a
|
|
|
20
21
|
...(actions === undefined ? {} : { actions }),
|
|
21
22
|
});
|
|
22
23
|
const Heading = headingLevel === 1 ? "h1" : "h2";
|
|
23
|
-
return (_jsxs("div", { ...props, style: { ...props.style, ...layoutStyle }, ref: ref, className: classNames("hjm-result", className), "data-status": result.status, role: role ?? (result.status === "failure" ? "alert" : "status"), children: [_jsx("span", { className: "hjm-result__icon", "aria-hidden": "true", children: icon }), _jsx(Heading, { className: "hjm-result__title", children: result.title }), result.description ? (_jsx("p", { className: "hjm-result__description", children: result.description })) : null, result.primaryAction || result.secondaryAction ? (_jsxs("div", { className: "hjm-result__actions", children: [result.secondaryAction ? (_jsx(Button, { "aria-label": result.secondaryAction.accessibilityLabel, onClick: result.secondaryAction.onAction, tone: "secondary", children: result.secondaryAction.label })) : null, result.primaryAction ? (_jsx(Button, { "aria-label": result.primaryAction.accessibilityLabel, onClick: result.primaryAction.onAction, children: result.primaryAction.label })) : null] })) : null] }));
|
|
24
|
+
return (_jsxs("div", { ...props, style: { ...props.style, ...layoutStyle }, ref: ref, className: classNames("hjm-result", className), "data-status": result.status, role: role ?? (result.status === "failure" ? "alert" : "status"), children: [_jsx("span", { className: "hjm-result__icon", "aria-hidden": "true", children: icon ?? resultRecipe.glyphs[result.status] }), _jsx(Heading, { className: "hjm-result__title", children: result.title }), result.description ? (_jsx("p", { className: "hjm-result__description", children: result.description })) : null, result.primaryAction || result.secondaryAction ? (_jsxs("div", { className: "hjm-result__actions", children: [result.secondaryAction ? (_jsx(Button, { "aria-label": result.secondaryAction.accessibilityLabel, onClick: result.secondaryAction.onAction, tone: "secondary", children: result.secondaryAction.label })) : null, result.primaryAction ? (_jsx(Button, { "aria-label": result.primaryAction.accessibilityLabel, onClick: result.primaryAction.onAction, children: result.primaryAction.label })) : null] })) : null] }));
|
|
24
25
|
});
|
|
25
26
|
export const Progress = forwardRef(function Progress({ label, value, valueText, max = progressRecipe.defaults.max, size = progressRecipe.defaults.size, tone = progressRecipe.defaults.tone, shape = progressRecipe.defaults.shape, children, className, layoutStyle, ...props }, ref) {
|
|
26
27
|
if (typeof max !== "number" || !Number.isFinite(max) || max <= 0) {
|
|
@@ -31,6 +32,9 @@ export const Progress = forwardRef(function Progress({ label, value, valueText,
|
|
|
31
32
|
throw new RangeError("Progress value must be between zero and max");
|
|
32
33
|
}
|
|
33
34
|
const labelId = useId();
|
|
35
|
+
// usage/components/progress.md: valueText defaults to the percentage. Only Native applied it, so the same
|
|
36
|
+
// StepPlayer/ScrollProgress inputs showed "0%" on Native and nothing on Web (2026-10-17 review F N4).
|
|
37
|
+
const resolvedValueText = valueText ?? (value === undefined ? undefined : `${Math.round((value / max) * 100)}%`);
|
|
34
38
|
const diameter = progressRecipe.circular.sizes[size];
|
|
35
39
|
const strokeWidth = progressRecipe.circular.strokeWidth[size];
|
|
36
40
|
return (_jsxs("div", { className: classNames("hjm-progress", className), "data-size": size, "data-tone": tone, "data-shape": shape, "data-state": value === undefined ? "indeterminate" : "determinate",
|
|
@@ -43,7 +47,7 @@ export const Progress = forwardRef(function Progress({ label, value, valueText,
|
|
|
43
47
|
// Conic sweep instead of an SVG arc: the same token drives both
|
|
44
48
|
// shapes and no second color pipeline appears.
|
|
45
49
|
"--hjm-progress-sweep": value === undefined ? "25%" : `${(value / max) * 100}%`,
|
|
46
|
-
} : layoutStyle, children: [_jsxs("span", { className: "hjm-progress__copy", children: [_jsx(
|
|
50
|
+
} : layoutStyle, children: [label === undefined ? null : (_jsxs("span", { className: "hjm-progress__copy", children: [_jsx(Text, { id: labelId, variant: "label", children: label }), resolvedValueText ? _jsx(Text, { variant: "caption", tone: "muted", children: resolvedValueText }) : null] })), shape === "circular" ? (_jsx("span", { className: "hjm-progress__ring", "aria-hidden": "true", children: children ? _jsx("span", { className: "hjm-progress__ring-content", children: children }) : null })) : null, _jsx("progress", { ...props, ref: ref, className: "hjm-progress__native", max: max, ...(value === undefined ? {} : { value }), "aria-labelledby": props["aria-labelledby"] ?? (props["aria-label"] === undefined ? labelId : undefined), "aria-valuetext": resolvedValueText })] }));
|
|
47
51
|
});
|
|
48
52
|
export { Spinner } from "./internal/spinner.js";
|
|
49
53
|
export const Skeleton = forwardRef(function Skeleton({ shape = skeletonRecipe.defaults.shape, animated = skeletonRecipe.defaults.animated, width, height, className, style, layoutStyle, ...props }, ref) {
|
package/dist/feedback.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedback.js","sourceRoot":"","sources":["../src/feedback.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n emptyStateRecipe,\n noticeRecipe,\n progressRecipe,\n skeletonRecipe,\n type NoticeTone,\n type ProgressShape,\n type ProgressSize,\n type ProgressTone,\n} from \"@hjmds/design-contracts/recipes\";\nimport {\n resolveResultDescriptor,\n type ResultDescriptor,\n} from \"@hjmds/design-contracts/components/result\";\nimport {\n forwardRef,\n useId,\n type HTMLAttributes,\n type ProgressHTMLAttributes,\n type ReactNode,\n type CSSProperties,\n} from \"react\";\nimport { classNames } from \"./internal.js\";\nimport { Button } from \"./actions.js\";\nimport type { HjmCompositionStyleProp } from \"./composition-style.js\";\n\n// The HTML `title` attribute (tooltip string) shares its name with the heading slot.\n// Left in the intersection, `string & ReactNode` collapses the slot to `string`, so\n// consumers had to cast heading elements (BurnTok, 2026-09-27 audit). Omit it like\n// Result/Card/Section already do.\nexport type NoticeProps = Omit<HTMLAttributes<HTMLElement>, \"title\"> &\n Readonly<{\n title: ReactNode;\n description?: ReactNode;\n action?: ReactNode;\n icon?: ReactNode;\n tone?: NoticeTone;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\nexport const Notice = forwardRef<HTMLElement, NoticeProps>(function Notice(\n {\n title,\n description,\n action,\n icon,\n tone = noticeRecipe.defaults.tone,\n className,\n layoutStyle,\n ...props\n },\n ref,\n) {\n const urgent = tone === \"danger\";\n return (\n <section\n {...props}\n style={{ ...props.style, ...layoutStyle }}\n ref={ref}\n className={classNames(\"hjm-notice\", className)}\n data-tone={tone}\n role={urgent ? \"alert\" : \"status\"}\n aria-live={urgent ? \"assertive\" : \"polite\"}\n >\n {icon ? <div className=\"hjm-notice__icon\" aria-hidden=\"true\">{icon}</div> : null}\n <div className=\"hjm-notice__content\">\n <strong className=\"hjm-notice__title\">{title}</strong>\n {description ? <div className=\"hjm-notice__description\">{description}</div> : null}\n </div>\n {action ? <div className=\"hjm-notice__action\">{action}</div> : null}\n </section>\n );\n});\n\ntype EmptyStateDensity = keyof typeof emptyStateRecipe.density;\n\nexport type EmptyStateProps = Omit<HTMLAttributes<HTMLDivElement>, \"title\"> &\n Readonly<{\n title: ReactNode;\n description?: ReactNode;\n action?: ReactNode;\n icon?: ReactNode;\n density?: EmptyStateDensity;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\nexport const EmptyState = forwardRef<HTMLDivElement, EmptyStateProps>(\n function EmptyState(\n {\n title,\n description,\n action,\n icon,\n density = emptyStateRecipe.defaults.density,\n className,\n layoutStyle,\n ...props\n },\n ref,\n ) {\n return (\n <div\n {...props}\n style={{ ...props.style, ...layoutStyle }}\n ref={ref}\n className={classNames(\"hjm-empty-state\", className)}\n data-density={density}\n role=\"status\"\n >\n {icon ? <div className=\"hjm-empty-state__icon\" aria-hidden=\"true\">{icon}</div> : null}\n <strong className=\"hjm-empty-state__title\">{title}</strong>\n {description ? <div className=\"hjm-empty-state__description\">{description}</div> : null}\n {action ? <div className=\"hjm-empty-state__action\">{action}</div> : null}\n </div>\n );\n },\n);\n\nexport type ResultProps = Omit<\n HTMLAttributes<HTMLDivElement>,\n \"children\" | \"title\"\n> &\n ResultDescriptor &\n Readonly<{\n headingLevel?: 1 | 2;\n /** Optional product glyph; its meaning is already carried by title/status. */\n icon?: ReactNode;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\n/** A terminal flow outcome. EmptyState remains reserved for fillable content. */\nexport const Result = forwardRef<HTMLDivElement, ResultProps>(function Result(\n {\n status,\n title,\n description,\n actions,\n headingLevel = 2,\n icon,\n className,\n role,\n layoutStyle,\n ...props\n },\n ref,\n) {\n const result = resolveResultDescriptor({\n status,\n title,\n ...(description === undefined ? {} : { description }),\n ...(actions === undefined ? {} : { actions }),\n });\n const Heading = headingLevel === 1 ? \"h1\" : \"h2\";\n\n return (\n <div\n {...props}\n style={{ ...props.style, ...layoutStyle }}\n ref={ref}\n className={classNames(\"hjm-result\", className)}\n data-status={result.status}\n role={role ?? (result.status === \"failure\" ? \"alert\" : \"status\")}\n >\n <span className=\"hjm-result__icon\" aria-hidden=\"true\">\n {icon}\n </span>\n <Heading className=\"hjm-result__title\">{result.title}</Heading>\n {result.description ? (\n <p className=\"hjm-result__description\">{result.description}</p>\n ) : null}\n {result.primaryAction || result.secondaryAction ? (\n <div className=\"hjm-result__actions\">\n {/* Button row rule (usage/components/button.md): secondary → primary, so the main action ends the row\n like Dialog footers. Until 2026-10-06 Result drew primary first, the reverse of every other action row. */}\n {result.secondaryAction ? (\n <Button\n aria-label={result.secondaryAction.accessibilityLabel}\n onClick={result.secondaryAction.onAction}\n tone=\"secondary\"\n >\n {result.secondaryAction.label}\n </Button>\n ) : null}\n {result.primaryAction ? (\n <Button\n aria-label={result.primaryAction.accessibilityLabel}\n onClick={result.primaryAction.onAction}\n >\n {result.primaryAction.label}\n </Button>\n ) : null}\n </div>\n ) : null}\n </div>\n );\n});\n\nexport type ProgressProps = Omit<\n ProgressHTMLAttributes<HTMLProgressElement>,\n \"children\" | \"max\" | \"size\" | \"value\"\n> &\n Readonly<{\n label: ReactNode;\n value?: number;\n max?: number;\n valueText?: string;\n size?: ProgressSize;\n tone?: ProgressTone;\n /**\n * `circular` draws the same value as a ring. It is a shape, not a second\n * component: min/max/now, the indeterminate case and the announcement are\n * identical, so the accessibility contract stays in one place.\n */\n shape?: ProgressShape;\n /** Content inside the ring — a percentage, a count, an icon. Ignored when linear. */\n children?: ReactNode;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\nexport const Progress = forwardRef<HTMLProgressElement, ProgressProps>(\n function Progress(\n {\n label,\n value,\n valueText,\n max = progressRecipe.defaults.max,\n size = progressRecipe.defaults.size,\n tone = progressRecipe.defaults.tone,\n shape = progressRecipe.defaults.shape,\n children,\n className,\n layoutStyle,\n ...props\n },\n ref,\n ) {\n if (typeof max !== \"number\" || !Number.isFinite(max) || max <= 0) {\n throw new RangeError(\"Progress max must be a positive finite number\");\n }\n if (\n value !== undefined &&\n (!Number.isFinite(value) || value < 0 || value > max)\n ) {\n throw new RangeError(\"Progress value must be between zero and max\");\n }\n const labelId = useId();\n const diameter = progressRecipe.circular.sizes[size];\n const strokeWidth = progressRecipe.circular.strokeWidth[size];\n return (\n <div\n className={classNames(\"hjm-progress\", className)}\n data-size={size}\n data-tone={tone}\n data-shape={shape}\n data-state={value === undefined ? \"indeterminate\" : \"determinate\"}\n // `layoutStyle` lands on this frame, not on the native <progress> that\n // receives the rest props, so placement moves the label and bar together.\n style={shape === \"circular\" ? ({\n ...layoutStyle,\n \"--hjm-progress-diameter\": `${diameter}px`,\n \"--hjm-progress-stroke\": `${strokeWidth}px`,\n // Conic sweep instead of an SVG arc: the same token drives both\n // shapes and no second color pipeline appears.\n \"--hjm-progress-sweep\": value === undefined ? \"25%\" : `${(value / max) * 100}%`,\n } as CSSProperties) : layoutStyle}\n >\n <span className=\"hjm-progress__copy\">\n <span id={labelId}>{label}</span>\n {valueText ? <span>{valueText}</span> : null}\n </span>\n {shape === \"circular\" ? (\n <span className=\"hjm-progress__ring\" aria-hidden=\"true\">\n {children ? <span className=\"hjm-progress__ring-content\">{children}</span> : null}\n </span>\n ) : null}\n <progress\n {...props}\n ref={ref}\n className=\"hjm-progress__native\"\n max={max}\n {...(value === undefined ? {} : { value })}\n aria-labelledby={props[\"aria-labelledby\"] ?? (props[\"aria-label\"] === undefined ? labelId : undefined)}\n aria-valuetext={typeof valueText === \"string\" ? valueText : undefined}\n />\n </div>\n );\n },\n);\n\nexport { Spinner, type SpinnerProps } from \"./internal/spinner.js\";\n\ntype SkeletonShape = keyof typeof skeletonRecipe.shapes;\n\nexport type SkeletonProps = Omit<HTMLAttributes<HTMLSpanElement>, \"children\"> &\n Readonly<{\n shape?: SkeletonShape;\n animated?: boolean;\n width?: string | number;\n height?: string | number;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\nexport const Skeleton = forwardRef<HTMLSpanElement, SkeletonProps>(\n function Skeleton(\n {\n shape = skeletonRecipe.defaults.shape,\n animated = skeletonRecipe.defaults.animated,\n width,\n height,\n className,\n style,\n layoutStyle,\n ...props\n },\n ref,\n ) {\n return (\n <span\n {...props}\n ref={ref}\n className={classNames(\"hjm-skeleton\", className)}\n data-shape={shape}\n data-animated={animated}\n aria-hidden=\"true\"\n style={{ width, height, ...style, ...layoutStyle }}\n />\n );\n },\n);\n\n// ActivityChip is a feedback-category status trigger (its panel is the Toast in this module). Also exported here so\n// apps can import it from an existing subpath: Next dev with HJM_LOCAL_SOURCE rejected the new ./activity-chip\n// subpath before aliasing because the installed release lacks it (BurnTok 2026-10-10).\nexport { ActivityChip, type ActivityChipProps } from \"./activity-chip.js\";\n"]}
|
|
1
|
+
{"version":3,"file":"feedback.js","sourceRoot":"","sources":["../src/feedback.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n emptyStateRecipe,\n noticeRecipe,\n progressRecipe,\n skeletonRecipe,\n type NoticeTone,\n type ProgressShape,\n type ProgressSize,\n type ProgressTone,\n} from \"@hjmds/design-contracts/recipes\";\nimport {\n resolveResultDescriptor,\n resultRecipe,\n type ResultDescriptor,\n} from \"@hjmds/design-contracts/components/result\";\nimport {\n forwardRef,\n useId,\n type HTMLAttributes,\n type ProgressHTMLAttributes,\n type ReactNode,\n type CSSProperties,\n} from \"react\";\nimport { classNames } from \"./internal.js\";\nimport { Button } from \"./actions.js\";\nimport { Text } from \"./layout.js\";\nimport type { HjmCompositionStyleProp } from \"./composition-style.js\";\n\n// The HTML `title` attribute (tooltip string) shares its name with the heading slot.\n// Left in the intersection, `string & ReactNode` collapses the slot to `string`, so\n// consumers had to cast heading elements (BurnTok, 2026-09-27 audit). Omit it like\n// Result/Card/Section already do.\nexport type NoticeProps = Omit<HTMLAttributes<HTMLElement>, \"title\"> &\n Readonly<{\n title: ReactNode;\n description?: ReactNode;\n action?: ReactNode;\n icon?: ReactNode;\n tone?: NoticeTone;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\nexport const Notice = forwardRef<HTMLElement, NoticeProps>(function Notice(\n {\n title,\n description,\n action,\n icon,\n tone = noticeRecipe.defaults.tone,\n className,\n layoutStyle,\n ...props\n },\n ref,\n) {\n const urgent = tone === \"danger\";\n return (\n <section\n {...props}\n style={{ ...props.style, ...layoutStyle }}\n ref={ref}\n className={classNames(\"hjm-notice\", className)}\n data-tone={tone}\n role={urgent ? \"alert\" : \"status\"}\n aria-live={urgent ? \"assertive\" : \"polite\"}\n >\n {icon ? <div className=\"hjm-notice__icon\" aria-hidden=\"true\">{icon}</div> : null}\n <div className=\"hjm-notice__content\">\n <strong className=\"hjm-notice__title\">{title}</strong>\n {description ? <div className=\"hjm-notice__description\">{description}</div> : null}\n </div>\n {action ? <div className=\"hjm-notice__action\">{action}</div> : null}\n </section>\n );\n});\n\ntype EmptyStateDensity = keyof typeof emptyStateRecipe.density;\n\nexport type EmptyStateProps = Omit<HTMLAttributes<HTMLDivElement>, \"title\"> &\n Readonly<{\n title: ReactNode;\n description?: ReactNode;\n action?: ReactNode;\n icon?: ReactNode;\n density?: EmptyStateDensity;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\nexport const EmptyState = forwardRef<HTMLDivElement, EmptyStateProps>(\n function EmptyState(\n {\n title,\n description,\n action,\n icon,\n density = emptyStateRecipe.defaults.density,\n className,\n layoutStyle,\n ...props\n },\n ref,\n ) {\n return (\n <div\n {...props}\n style={{ ...props.style, ...layoutStyle }}\n ref={ref}\n className={classNames(\"hjm-empty-state\", className)}\n data-density={density}\n role=\"status\"\n >\n {icon ? <div className=\"hjm-empty-state__icon\" aria-hidden=\"true\">{icon}</div> : null}\n <strong className=\"hjm-empty-state__title\">{title}</strong>\n {description ? <div className=\"hjm-empty-state__description\">{description}</div> : null}\n {action ? <div className=\"hjm-empty-state__action\">{action}</div> : null}\n </div>\n );\n },\n);\n\nexport type ResultProps = Omit<\n HTMLAttributes<HTMLDivElement>,\n \"children\" | \"title\"\n> &\n ResultDescriptor &\n Readonly<{\n headingLevel?: 1 | 2;\n /** Optional product glyph; its meaning is already carried by title/status. */\n icon?: ReactNode;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\n/** A terminal flow outcome. EmptyState remains reserved for fillable content. */\nexport const Result = forwardRef<HTMLDivElement, ResultProps>(function Result(\n {\n status,\n title,\n description,\n actions,\n headingLevel = 2,\n icon,\n className,\n role,\n layoutStyle,\n ...props\n },\n ref,\n) {\n const result = resolveResultDescriptor({\n status,\n title,\n ...(description === undefined ? {} : { description }),\n ...(actions === undefined ? {} : { actions }),\n });\n const Heading = headingLevel === 1 ? \"h1\" : \"h2\";\n\n return (\n <div\n {...props}\n style={{ ...props.style, ...layoutStyle }}\n ref={ref}\n className={classNames(\"hjm-result\", className)}\n data-status={result.status}\n role={role ?? (result.status === \"failure\" ? \"alert\" : \"status\")}\n >\n <span className=\"hjm-result__icon\" aria-hidden=\"true\">\n {icon ?? resultRecipe.glyphs[result.status]}\n </span>\n <Heading className=\"hjm-result__title\">{result.title}</Heading>\n {result.description ? (\n <p className=\"hjm-result__description\">{result.description}</p>\n ) : null}\n {result.primaryAction || result.secondaryAction ? (\n <div className=\"hjm-result__actions\">\n {/* Button row rule (usage/components/button.md): secondary → primary, so the main action ends the row\n like Dialog footers. Until 2026-10-06 Result drew primary first, the reverse of every other action row. */}\n {result.secondaryAction ? (\n <Button\n aria-label={result.secondaryAction.accessibilityLabel}\n onClick={result.secondaryAction.onAction}\n tone=\"secondary\"\n >\n {result.secondaryAction.label}\n </Button>\n ) : null}\n {result.primaryAction ? (\n <Button\n aria-label={result.primaryAction.accessibilityLabel}\n onClick={result.primaryAction.onAction}\n >\n {result.primaryAction.label}\n </Button>\n ) : null}\n </div>\n ) : null}\n </div>\n );\n});\n\n// Same naming contract as Native: a composition that already shows the label and value elsewhere (TargetSummary's\n// Statistic) names the bar with `aria-label` alone instead of printing the copy twice (2026-10-17 composition review).\ntype ProgressName =\n | Readonly<{ label: ReactNode; \"aria-label\"?: string }>\n | Readonly<{ label?: never; \"aria-label\": string }>;\n\nexport type ProgressProps = Omit<\n ProgressHTMLAttributes<HTMLProgressElement>,\n \"children\" | \"max\" | \"size\" | \"value\" | \"aria-label\"\n> &\n ProgressName &\n Readonly<{\n value?: number;\n max?: number;\n valueText?: string;\n size?: ProgressSize;\n tone?: ProgressTone;\n /**\n * `circular` draws the same value as a ring. It is a shape, not a second\n * component: min/max/now, the indeterminate case and the announcement are\n * identical, so the accessibility contract stays in one place.\n */\n shape?: ProgressShape;\n /** Content inside the ring — a percentage, a count, an icon. Ignored when linear. */\n children?: ReactNode;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\nexport const Progress = forwardRef<HTMLProgressElement, ProgressProps>(\n function Progress(\n {\n label,\n value,\n valueText,\n max = progressRecipe.defaults.max,\n size = progressRecipe.defaults.size,\n tone = progressRecipe.defaults.tone,\n shape = progressRecipe.defaults.shape,\n children,\n className,\n layoutStyle,\n ...props\n },\n ref,\n ) {\n if (typeof max !== \"number\" || !Number.isFinite(max) || max <= 0) {\n throw new RangeError(\"Progress max must be a positive finite number\");\n }\n if (\n value !== undefined &&\n (!Number.isFinite(value) || value < 0 || value > max)\n ) {\n throw new RangeError(\"Progress value must be between zero and max\");\n }\n const labelId = useId();\n // usage/components/progress.md: valueText defaults to the percentage. Only Native applied it, so the same\n // StepPlayer/ScrollProgress inputs showed \"0%\" on Native and nothing on Web (2026-10-17 review F N4).\n const resolvedValueText = valueText ?? (value === undefined ? undefined : `${Math.round((value / max) * 100)}%`);\n const diameter = progressRecipe.circular.sizes[size];\n const strokeWidth = progressRecipe.circular.strokeWidth[size];\n return (\n <div\n className={classNames(\"hjm-progress\", className)}\n data-size={size}\n data-tone={tone}\n data-shape={shape}\n data-state={value === undefined ? \"indeterminate\" : \"determinate\"}\n // `layoutStyle` lands on this frame, not on the native <progress> that\n // receives the rest props, so placement moves the label and bar together.\n style={shape === \"circular\" ? ({\n ...layoutStyle,\n \"--hjm-progress-diameter\": `${diameter}px`,\n \"--hjm-progress-stroke\": `${strokeWidth}px`,\n // Conic sweep instead of an SVG arc: the same token drives both\n // shapes and no second color pipeline appears.\n \"--hjm-progress-sweep\": value === undefined ? \"25%\" : `${(value / max) * 100}%`,\n } as CSSProperties) : layoutStyle}\n >\n {label === undefined ? null : (\n <span className=\"hjm-progress__copy\">\n {/* Label and value use the label/caption roles, as Native Progress does; both inherited body 16 before (2026-10-17 review). */}\n <Text id={labelId} variant=\"label\">{label}</Text>\n {resolvedValueText ? <Text variant=\"caption\" tone=\"muted\">{resolvedValueText}</Text> : null}\n </span>\n )}\n {shape === \"circular\" ? (\n <span className=\"hjm-progress__ring\" aria-hidden=\"true\">\n {children ? <span className=\"hjm-progress__ring-content\">{children}</span> : null}\n </span>\n ) : null}\n <progress\n {...props}\n ref={ref}\n className=\"hjm-progress__native\"\n max={max}\n {...(value === undefined ? {} : { value })}\n aria-labelledby={props[\"aria-labelledby\"] ?? (props[\"aria-label\"] === undefined ? labelId : undefined)}\n aria-valuetext={resolvedValueText}\n />\n </div>\n );\n },\n);\n\nexport { Spinner, type SpinnerProps } from \"./internal/spinner.js\";\n\ntype SkeletonShape = keyof typeof skeletonRecipe.shapes;\n\nexport type SkeletonProps = Omit<HTMLAttributes<HTMLSpanElement>, \"children\"> &\n Readonly<{\n shape?: SkeletonShape;\n animated?: boolean;\n width?: string | number;\n height?: string | number;\n /** Canonical layout-only placement on the root element. Controlled visual keys are excluded. */\n layoutStyle?: HjmCompositionStyleProp;\n }>;\n\nexport const Skeleton = forwardRef<HTMLSpanElement, SkeletonProps>(\n function Skeleton(\n {\n shape = skeletonRecipe.defaults.shape,\n animated = skeletonRecipe.defaults.animated,\n width,\n height,\n className,\n style,\n layoutStyle,\n ...props\n },\n ref,\n ) {\n return (\n <span\n {...props}\n ref={ref}\n className={classNames(\"hjm-skeleton\", className)}\n data-shape={shape}\n data-animated={animated}\n aria-hidden=\"true\"\n style={{ width, height, ...style, ...layoutStyle }}\n />\n );\n },\n);\n\n// ActivityChip is a feedback-category status trigger (its panel is the Toast in this module). Also exported here so\n// apps can import it from an existing subpath: Next dev with HJM_LOCAL_SOURCE rejected the new ./activity-chip\n// subpath before aliasing because the installed release lacks it (BurnTok 2026-10-10).\nexport { ActivityChip, type ActivityChipProps } from \"./activity-chip.js\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-group.d.ts","sourceRoot":"","sources":["../src/field-group.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACvE,OAAO,EAAoE,KAAK,gBAAgB,EAAE,KAAK,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AACzK,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"field-group.d.ts","sourceRoot":"","sources":["../src/field-group.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACvE,OAAO,EAAoE,KAAK,gBAAgB,EAAE,KAAK,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AACzK,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAGtE,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,QAAQ,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,cAAc,EAAE,OAAO,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/H,WAAW,EAAE,CAAC,IAAI,SAAS,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;CACrG,CAAC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACrC,UAAU,EAAE,oBAAoB,CAAC;IACjC,WAAW,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,SAAS,CAAC;IACrD,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,CAAC,CAAC;AAEH,yFAAyF;AACzF,wBAAgB,UAAU,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,MAAyC,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,eAAe,+BAqCzI"}
|