@hjmds/react 1.19.0 → 1.21.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/dist/actions.d.ts +10 -0
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +9 -3
- package/dist/actions.js.map +1 -1
- package/dist/authoring-tools.d.ts +38 -0
- package/dist/authoring-tools.d.ts.map +1 -0
- package/dist/authoring-tools.js +65 -0
- package/dist/authoring-tools.js.map +1 -0
- package/dist/bottom-navigation.d.ts.map +1 -1
- package/dist/bottom-navigation.js +1 -1
- package/dist/bottom-navigation.js.map +1 -1
- package/dist/calendar.d.ts.map +1 -1
- package/dist/calendar.js +1 -0
- package/dist/calendar.js.map +1 -1
- package/dist/chart.d.ts +157 -0
- package/dist/chart.d.ts.map +1 -0
- package/dist/chart.js +467 -0
- package/dist/chart.js.map +1 -0
- package/dist/collection-editing.d.ts +66 -0
- package/dist/collection-editing.d.ts.map +1 -0
- package/dist/collection-editing.js +126 -0
- package/dist/collection-editing.js.map +1 -0
- package/dist/communication.d.ts +51 -0
- package/dist/communication.d.ts.map +1 -0
- package/dist/communication.js +71 -0
- package/dist/communication.js.map +1 -0
- package/dist/data-table.d.ts +21 -1
- package/dist/data-table.d.ts.map +1 -1
- package/dist/data-table.js +105 -10
- package/dist/data-table.js.map +1 -1
- package/dist/data-workflows.d.ts +67 -0
- package/dist/data-workflows.d.ts.map +1 -0
- package/dist/data-workflows.js +60 -0
- package/dist/data-workflows.js.map +1 -0
- package/dist/evidence.d.ts +1 -1
- package/dist/evidence.js +1 -1
- package/dist/evidence.js.map +1 -1
- package/dist/internal/use-composition-action.d.ts +17 -0
- package/dist/internal/use-composition-action.d.ts.map +1 -0
- package/dist/internal/use-composition-action.js +18 -0
- package/dist/internal/use-composition-action.js.map +1 -0
- package/dist/media-transport.d.ts +22 -0
- package/dist/media-transport.d.ts.map +1 -0
- package/dist/media-transport.js +50 -0
- package/dist/media-transport.js.map +1 -0
- package/dist/navigation.d.ts +3 -1
- package/dist/navigation.d.ts.map +1 -1
- package/dist/navigation.js +29 -5
- package/dist/navigation.js.map +1 -1
- package/dist/screen-flows.d.ts +1 -1
- package/dist/screen-flows.d.ts.map +1 -1
- package/dist/screen-flows.js +1 -1
- package/dist/screen-flows.js.map +1 -1
- package/dist/screens.d.ts +8 -2
- package/dist/screens.d.ts.map +1 -1
- package/dist/screens.js +11 -5
- package/dist/screens.js.map +1 -1
- package/dist/social-compositions.d.ts +52 -0
- package/dist/social-compositions.d.ts.map +1 -0
- package/dist/social-compositions.js +41 -0
- package/dist/social-compositions.js.map +1 -0
- package/dist/streaming-answer.d.ts +24 -0
- package/dist/streaming-answer.d.ts.map +1 -0
- package/dist/streaming-answer.js +57 -0
- package/dist/streaming-answer.js.map +1 -0
- package/dist/styles.css +149 -1
- package/dist/styles.layered.css +149 -1
- package/dist/table-family.d.ts +66 -0
- package/dist/table-family.d.ts.map +1 -0
- package/dist/table-family.js +75 -0
- package/dist/table-family.js.map +1 -0
- package/dist/task-controls.d.ts +47 -0
- package/dist/task-controls.d.ts.map +1 -0
- package/dist/task-controls.js +46 -0
- package/dist/task-controls.js.map +1 -0
- package/dist/toggle-feedback.d.ts +26 -0
- package/dist/toggle-feedback.d.ts.map +1 -0
- package/dist/toggle-feedback.js +47 -0
- package/dist/toggle-feedback.js.map +1 -0
- package/dist/transfer-task.d.ts +18 -0
- package/dist/transfer-task.d.ts.map +1 -0
- package/dist/transfer-task.js +56 -0
- package/dist/transfer-task.js.map +1 -0
- package/package.json +58 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-workflows.js","sourceRoot":"","sources":["../src/data-workflows.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\nimport { useState } from \"react\";\nimport { binHistogram, resolveCohorts, resolveFunnel, resolveImportMapping, resolveTarget, validateCorrelation, type Cohort, type CorrelationData, type FunnelStage, type HistogramBin, type ImportMapping, type WorkflowField } from \"@hjmds/design-contracts/data-workflows\";\nimport { assertDistinctIds } from \"@hjmds/design-contracts/collection-editing\";\nimport { resolveDatavizSeriesColor } from \"@hjmds/design-contracts/dataviz\";\nimport { Button } from \"./actions.js\";\nimport { Select } from \"./select.js\";\nimport { Stack, Text } from \"./layout.js\";\nimport { DataTable } from \"./data-table.js\";\nimport { BarChart } from \"./chart.js\";\nimport { Statistic } from \"./advanced-display.js\";\nimport { Progress } from \"./feedback.js\";\nimport { useHjmTheme } from \"./provider.js\";\nimport { useCompositionAction } from \"./internal/use-composition-action.js\";\n\n// These read-only tables expose neither sort controls nor row selection.\nconst labelsFor = (label: string) => ({ table: label, selectAll: label, selectRow: (id: string) => id, sortColumn: (header: string) => header });\n\nexport type ImportFieldMappingProps = Readonly<{\n label: string; sources: readonly WorkflowField[]; targets: readonly WorkflowField[]; mapping: ImportMapping;\n onMappingChange: (mapping: ImportMapping) => void; onImport: (mapping: ImportMapping) => void | Promise<void>;\n importLabel: string; skipLabel: string; errorLabel: string; disabled?: boolean;\n validationLabel: (state: ReturnType<typeof resolveImportMapping>) => string;\n previewRows?: readonly Readonly<{ id: string; values: Readonly<Record<string, string>> }>[];\n}>;\nexport function ImportFieldMapping(props: ImportFieldMappingProps) {\n const action = useCompositionAction(props.disabled), resolved = resolveImportMapping(props.sources, props.targets, props.mapping);\n const locked = props.disabled === true || action.pending, rows = props.previewRows ?? [];\n assertDistinctIds(rows);\n const pairs = props.targets.flatMap(target => { const source = props.sources.find(source => props.mapping[source.id] === target.id); return source ? [{ source, target }] : []; });\n return <Stack gap=\"md\"><Text emphasis=\"strong\">{props.label}</Text>\n {props.sources.map(source => <Select key={source.id} label={source.label} placeholder={props.skipLabel} emptySelectionLabel={props.skipLabel} disabled={locked}\n items={[{ id: resolved.skipKey, label: props.skipLabel, textValue: props.skipLabel }, ...props.targets.map(target => ({ id: target.id, label: target.label, textValue: target.label }))]} selectedKey={props.mapping[source.id] ?? resolved.skipKey}\n onSelectionChange={key => { if (!locked) props.onMappingChange({ ...props.mapping, [source.id]: key === resolved.skipKey ? null : key }); }} />)}\n {!resolved.valid ? <Text role=\"status\" style={{ textAlign: \"center\" }}>{props.validationLabel(resolved)}</Text> : null}\n {resolved.valid && rows.length ? <DataTable columns={pairs.map(pair => ({ id: pair.target.id, header: pair.target.label }))} rows={rows.map(row => ({ id: row.id }))}\n labels={labelsFor(props.label)} renderCell={(id, column) => rows.find(row => row.id === id)?.values[pairs.find(pair => pair.target.id === column)!.source.id] ?? \"\"} /> : null}\n <Button loading={action.pending} disabled={props.disabled === true || !resolved.valid} onClick={() => { if (resolved.valid) void action.run(\"import\", () => props.onImport(resolved.mapping)); }}>{props.importLabel}</Button>\n {action.failed ? <Text role=\"alert\" tone=\"danger\" style={{ textAlign: \"center\" }}>{props.errorLabel}</Text> : null}\n </Stack>;\n}\n\nexport type ConversionFunnelProps = Readonly<{\n label: string; stages: readonly FunnelStage[]; formatCount: (count: number) => string; missingLabel: string;\n detailLabel: (stage: ReturnType<typeof resolveFunnel>[number]) => string;\n}>;\nexport function ConversionFunnel(props: ConversionFunnelProps) {\n const stages = resolveFunnel(props.stages), [chosen, setChosen] = useState<string | null>(null);\n const selected = Math.max(0, stages.findIndex(stage => stage.id === chosen));\n return <Stack gap=\"md\"><Text emphasis=\"strong\">{props.label}</Text>\n {stages.length ? <><BarChart categories={stages.map(stage => stage.label)} series={[{ id: \"count\", label: props.label, values: stages.map(stage => stage.count) }]}\n accessibilityLabel={props.label} formatValue={props.formatCount} missingLabel={props.missingLabel} orientation=\"horizontal\" focusIndex={selected}\n onFocusChange={index => { if (index !== null && stages[index]) setChosen(stages[index]!.id); }} />\n <Stack axis=\"inline\" gap=\"sm\" wrap>{stages.map(stage => <Button key={stage.id} tone=\"ghost\" selected={stages[selected]!.id === stage.id} onClick={() => setChosen(stage.id)}>{stage.label}</Button>)}</Stack>\n <Text role=\"status\">{props.detailLabel(stages[selected]!)}</Text></> : <Text style={{ textAlign: \"center\" }}>{props.missingLabel}</Text>}\n </Stack>;\n}\n\nexport type CohortRetentionTableProps = Readonly<{\n label: string; cohorts: readonly Cohort[]; periods: readonly string[]; cohortColumnLabel: string;\n formatRate: (rate: number, retained: number, size: number) => string; missingLabel: string;\n}>;\nexport function CohortRetentionTable(props: CohortRetentionTableProps) {\n const rows = resolveCohorts(props.cohorts, props.periods.length);\n const color = useHjmTheme().environment.theme;\n // MatrixTable intentionally suppresses its diagonal for head-to-head teams. Cohort data is rectangular.\n return <DataTable columns={[{ id: \"label\", header: props.cohortColumnLabel, pinned: \"start\" as const }, ...props.periods.map((header, index) => ({ id: `p-${index}`, header }))]}\n rows={rows.map(row => ({ id: row.id }))} labels={labelsFor(props.label)}\n heatColors={{ high: resolveDatavizSeriesColor(color, 0), low: resolveDatavizSeriesColor(color, 1) }}\n cellStyle={(rowId, column) => { const rate = rows.find(row => row.id === rowId)!.rates[Number(column.slice(2))]; return typeof rate === \"number\" && rate > 0 ? { heat: { side: \"high\", strength: rate >= .7 ? 3 : rate >= .35 ? 2 : 1 } } : null; }}\n renderCell={(rowId, column) => { const row = rows.find(row => row.id === rowId)!; if (column === \"label\") return row.label; const index = Number(column.slice(2)), rate = row.rates[index]; return rate === null || rate === undefined ? props.missingLabel : props.formatRate(rate, row.retained[index]!, row.size); }} />;\n}\n\nexport type CorrelationMatrixProps = Readonly<{ label: string; data: CorrelationData; variableColumnLabel: string; formatValue: (value: number) => string; missingLabel: string }>;\nexport function CorrelationMatrix(props: CorrelationMatrixProps) {\n validateCorrelation(props.data);\n const color = useHjmTheme().environment.theme;\n const valueOf = (row: string, column: string) => props.data.values[props.data.variables.findIndex(variable => variable.id === row)]![Number(column.slice(2))];\n return <DataTable columns={[{ id: \"label\", header: props.variableColumnLabel, pinned: \"start\" as const }, ...props.data.variables.map((variable, index) => ({ id: `v-${index}`, header: variable.label }))]}\n rows={props.data.variables.map(variable => ({ id: variable.id }))} labels={labelsFor(props.label)}\n heatColors={{ high: resolveDatavizSeriesColor(color, 0), low: resolveDatavizSeriesColor(color, 1) }}\n cellStyle={(row, column) => { if (column === \"label\") return null; const value = valueOf(row, column); return value === null || value === undefined || value === 0 ? null : { heat: { side: value > 0 ? \"high\" : \"low\", strength: Math.abs(value) >= .7 ? 3 : Math.abs(value) >= .35 ? 2 : 1 } }; }}\n renderCell={(row, column) => { if (column === \"label\") return props.data.variables.find(variable => variable.id === row)!.label; const value = valueOf(row, column); return value === null || value === undefined ? props.missingLabel : props.formatValue(value); }} />;\n}\n\nexport type TargetSummaryProps = Readonly<{ label: string; actual: number; target: number; formatActual: (actual: number) => string; summaryLabel: (summary: ReturnType<typeof resolveTarget>) => string }>;\nexport function TargetSummary(props: TargetSummaryProps) {\n const summary = resolveTarget(props.actual, props.target), label = props.summaryLabel(summary);\n return <Stack gap=\"sm\"><Statistic descriptor={{ id: \"target-summary\", label: props.label, value: props.formatActual(summary.actual), hint: label }} />\n {summary.progress === null ? null : <Progress label={props.label} value={summary.progress} max={1} valueText={label} />}\n </Stack>;\n}\n\nexport type HistogramExplorerProps = Readonly<{\n label: string; samples: readonly (number | null)[]; binCounts: readonly number[]; binCount: number; onBinCountChange: (count: number) => void;\n domain?: readonly [number, number]; binLabel: (bin: HistogramBin) => string; binCountLabel: (count: number) => string;\n formatCount: (count: number) => string; missingLabel: string; summaryLabel: (histogram: ReturnType<typeof binHistogram>) => string;\n}>;\nexport function HistogramExplorer(props: HistogramExplorerProps) {\n if (!props.binCounts.length || !props.binCounts.includes(props.binCount) || new Set(props.binCounts).size !== props.binCounts.length) throw new RangeError(\"Histogram requires distinct choices including the selected bin count\");\n const variants = props.binCounts.map(count => binHistogram(props.samples, count, props.domain)), histogram = variants[props.binCounts.indexOf(props.binCount)]!;\n // Hold the y domain across rebinning. Normalizing each set to its tallest bar changes the meaning.\n const maximum = Math.max(...variants.map(variant => variant.maxCount));\n return <Stack gap=\"md\"><Text emphasis=\"strong\">{props.label}</Text><Stack axis=\"inline\" gap=\"sm\" wrap>{props.binCounts.map(count => <Button key={count} tone=\"secondary\" selected={count === props.binCount} onClick={() => props.onBinCountChange(count)}>{props.binCountLabel(count)}</Button>)}</Stack>\n {histogram.observed ? <BarChart categories={histogram.bins.map(props.binLabel)} series={[{ id: \"frequency\", label: props.label, values: histogram.bins.map(bin => bin.count) }]}\n accessibilityLabel={props.label} formatValue={props.formatCount} missingLabel={props.missingLabel} domain={[0, maximum]} showValues /> : <Text style={{ textAlign: \"center\" }}>{props.missingLabel}</Text>}\n <Text role=\"status\">{props.summaryLabel(histogram)}</Text>\n </Stack>;\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.21.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.21.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.19.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.21.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"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare function useCompositionAction<T = string>(disabled?: boolean): {
|
|
2
|
+
session: Readonly<{
|
|
3
|
+
getSnapshot(): import("@hjmds/design-contracts/action-session").ActionSnapshot<T | null>;
|
|
4
|
+
subscribe(listener: () => void): () => void;
|
|
5
|
+
run(task: import("@hjmds/design-contracts/action-session").ActionTask<T | null>, options?: Readonly<{
|
|
6
|
+
optimisticValue?: T | null;
|
|
7
|
+
retryable?: boolean;
|
|
8
|
+
}> | undefined): Promise<import("@hjmds/design-contracts/action-session").ActionOutcome<T | null>>;
|
|
9
|
+
retry(): Promise<import("@hjmds/design-contracts/action-session").ActionOutcome<T | null>>;
|
|
10
|
+
reset(value: T | null): void;
|
|
11
|
+
}>;
|
|
12
|
+
pending: boolean;
|
|
13
|
+
failed: boolean;
|
|
14
|
+
active: T | null;
|
|
15
|
+
run: (key: T, task: () => void | Promise<void>) => Promise<import("@hjmds/design-contracts/action-session").ActionOutcome<T | null>>;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=use-composition-action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-composition-action.d.ts","sourceRoot":"","sources":["../../src/internal/use-composition-action.ts"],"names":[],"mappings":"AAGA,wBAAgB,oBAAoB,CAAC,CAAC,GAAG,MAAM,EAAE,QAAQ,UAAQ;;;;;;;;;;;;;;eASlD,CAAC,QAAQ,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;EAIjD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { useEffect, useRef, useState, useSyncExternalStore } from "react";
|
|
2
|
+
import { createActionSession } from "@hjmds/design-contracts/action-session";
|
|
3
|
+
export function useCompositionAction(disabled = false) {
|
|
4
|
+
const available = useRef(true), disabledRef = useRef(disabled);
|
|
5
|
+
disabledRef.current = disabled;
|
|
6
|
+
const [session] = useState(() => createActionSession(null));
|
|
7
|
+
const state = useSyncExternalStore(session.subscribe, session.getSnapshot, session.getSnapshot);
|
|
8
|
+
// Reset detaches responses after unmount, including a keyed change to another entity.
|
|
9
|
+
useEffect(() => { available.current = true; return () => { available.current = false; session.reset(null); }; }, [session]);
|
|
10
|
+
return { session, pending: state.status === "pending", failed: state.status === "error",
|
|
11
|
+
active: state.status === "pending" ? state.value : null,
|
|
12
|
+
run: (key, task) => {
|
|
13
|
+
if (!available.current || disabledRef.current)
|
|
14
|
+
return Promise.resolve({ status: "ignored" });
|
|
15
|
+
return session.run(async () => { await task(); return null; }, { optimisticValue: key });
|
|
16
|
+
} };
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=use-composition-action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-composition-action.js","sourceRoot":"","sources":["../../src/internal/use-composition-action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAE7E,MAAM,UAAU,oBAAoB,CAAa,QAAQ,GAAG,KAAK;IAC/D,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/D,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;IAC/B,MAAM,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAW,IAAI,CAAC,CAAC,CAAC;IACtE,MAAM,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAChG,sFAAsF;IACtF,SAAS,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE,GAAG,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5H,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,KAAK,OAAO;QACrF,MAAM,EAAE,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;QACvD,GAAG,EAAE,CAAC,GAAM,EAAE,IAAgC,EAAE,EAAE;YAChD,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO;gBAAE,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAkB,EAAE,CAAC,CAAC;YACtG,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3F,CAAC,EAAE,CAAC;AACR,CAAC","sourcesContent":["import { useEffect, useRef, useState, useSyncExternalStore } from \"react\";\nimport { createActionSession } from \"@hjmds/design-contracts/action-session\";\n\nexport function useCompositionAction<T = string>(disabled = false) {\n const available = useRef(true), disabledRef = useRef(disabled);\n disabledRef.current = disabled;\n const [session] = useState(() => createActionSession<T | null>(null));\n const state = useSyncExternalStore(session.subscribe, session.getSnapshot, session.getSnapshot);\n // Reset detaches responses after unmount, including a keyed change to another entity.\n useEffect(() => { available.current = true; return () => { available.current = false; session.reset(null); }; }, [session]);\n return { session, pending: state.status === \"pending\", failed: state.status === \"error\",\n active: state.status === \"pending\" ? state.value : null,\n run: (key: T, task: () => void | Promise<void>) => {\n if (!available.current || disabledRef.current) return Promise.resolve({ status: \"ignored\" as const });\n return session.run(async () => { await task(); return null; }, { optimisticValue: key });\n } };\n}\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type MediaPlaybackState } from "@hjmds/design-contracts/media-transport";
|
|
2
|
+
export type MediaTransportProps = Readonly<{
|
|
3
|
+
state: MediaPlaybackState;
|
|
4
|
+
onPlay: () => void | Promise<void>;
|
|
5
|
+
onPause: () => void | Promise<void>;
|
|
6
|
+
/** Resolve after the adapter confirms the actual seek; rejecting keeps the observed position. */
|
|
7
|
+
onSeek: (seconds: number) => void | Promise<void>;
|
|
8
|
+
labels: Readonly<{
|
|
9
|
+
play: string;
|
|
10
|
+
pause: string;
|
|
11
|
+
seek: string;
|
|
12
|
+
decrement: string;
|
|
13
|
+
increment: string;
|
|
14
|
+
unknownDuration: string;
|
|
15
|
+
error: string;
|
|
16
|
+
}>;
|
|
17
|
+
formatTime: (seconds: number) => string;
|
|
18
|
+
disabled?: boolean;
|
|
19
|
+
active?: boolean;
|
|
20
|
+
}>;
|
|
21
|
+
export declare function MediaTransport(props: MediaTransportProps): import("react").JSX.Element;
|
|
22
|
+
//# sourceMappingURL=media-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-transport.d.ts","sourceRoot":"","sources":["../src/media-transport.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA6C,KAAK,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAwB7H,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC,KAAK,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnG,iGAAiG;IACjG,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,EAAE,QAAQ,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9I,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC/E,CAAC,CAAC;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,+BAiBxD"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useRef, useState } from "react";
|
|
4
|
+
import { mediaTransportPaths, resolveMediaPlayback } from "@hjmds/design-contracts/media-transport";
|
|
5
|
+
import { motion } from "@hjmds/design-contracts/foundations";
|
|
6
|
+
import { IconButton } from "./actions.js";
|
|
7
|
+
import { Slider } from "./slider.js";
|
|
8
|
+
import { Stack, Text } from "./layout.js";
|
|
9
|
+
import { useHjmTheme } from "./provider.js";
|
|
10
|
+
import { useCompositionAction } from "./internal/use-composition-action.js";
|
|
11
|
+
function MediaGlyph({ playing, active }) {
|
|
12
|
+
const first = useRef(null), second = useRef(null), current = useRef(playing ? 1 : 0);
|
|
13
|
+
const reduced = useHjmTheme().environment.reducedMotion;
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
const target = playing ? 1 : 0, initial = current.current;
|
|
16
|
+
let frame = 0, start;
|
|
17
|
+
const draw = (value) => { current.current = value; const paths = mediaTransportPaths(value); first.current?.setAttribute("d", paths[0]); second.current?.setAttribute("d", paths[1]); };
|
|
18
|
+
const settle = () => { cancelAnimationFrame(frame); draw(target); };
|
|
19
|
+
const visibility = () => { if (document.hidden)
|
|
20
|
+
settle(); };
|
|
21
|
+
const animate = (now) => { start ??= now; const p = Math.min(1, (now - start) / motion.normal); draw(initial + (target - initial) * (1 - (1 - p) ** 3)); if (p < 1)
|
|
22
|
+
frame = requestAnimationFrame(animate); };
|
|
23
|
+
// Geometry updates go directly to SVG: no per-frame React render and no background loop.
|
|
24
|
+
if (reduced || !active || document.hidden || initial === target)
|
|
25
|
+
settle();
|
|
26
|
+
else
|
|
27
|
+
frame = requestAnimationFrame(animate);
|
|
28
|
+
document.addEventListener("visibilitychange", visibility);
|
|
29
|
+
return () => { cancelAnimationFrame(frame); document.removeEventListener("visibilitychange", visibility); };
|
|
30
|
+
}, [playing, active, reduced]);
|
|
31
|
+
const paths = mediaTransportPaths(current.current);
|
|
32
|
+
return _jsxs("svg", { width: 24, height: 24, viewBox: "0 0 24 24", "aria-hidden": "true", focusable: "false", fill: "currentColor", children: [_jsx("path", { ref: first, d: paths[0] }), _jsx("path", { ref: second, d: paths[1] })] });
|
|
33
|
+
}
|
|
34
|
+
export function MediaTransport(props) {
|
|
35
|
+
const state = resolveMediaPlayback(props.state), active = props.active !== false;
|
|
36
|
+
const action = useCompositionAction(props.disabled === true || !active), [draft, setDraft] = useState(null);
|
|
37
|
+
const locked = props.disabled === true || !active || action.pending;
|
|
38
|
+
useEffect(() => { if (!active)
|
|
39
|
+
setDraft(null); }, [active]);
|
|
40
|
+
const toggle = () => { void action.run(state.playing ? "pause" : "play", state.playing ? props.onPause : props.onPlay); };
|
|
41
|
+
const seek = (seconds) => {
|
|
42
|
+
if (locked || !state.seekable)
|
|
43
|
+
return;
|
|
44
|
+
void action.run("seek", () => props.onSeek(Math.min(state.duration, Math.max(0, seconds)))).then(result => { if (result.status === "success" || result.status === "error")
|
|
45
|
+
setDraft(null); });
|
|
46
|
+
};
|
|
47
|
+
return _jsxs(Stack, { gap: "md", children: [_jsxs(Stack, { axis: "inline", gap: "sm", align: "center", children: [_jsx(IconButton, { label: state.playing ? props.labels.pause : props.labels.play, tone: "ghost", selected: state.playing, loading: action.pending || (state.buffering === true && !state.playing), disabled: props.disabled === true || !active, onClick: toggle, children: _jsx(MediaGlyph, { playing: state.playing, active: active }) }), _jsxs(Text, { variant: "caption", children: [props.formatTime(state.position), " / ", state.duration === null ? props.labels.unknownDuration : props.formatTime(state.duration)] })] }), state.seekable ? _jsx(Slider, { label: props.labels.seek, min: 0, max: state.duration, step: .1, value: Math.min(state.duration, draft ?? state.position), disabled: locked, onValueChange: seconds => { if (!locked)
|
|
48
|
+
setDraft(seconds); }, onValueChangeEnd: seek, getValueText: props.formatTime }) : null, action.failed ? _jsx(Text, { role: "alert", tone: "danger", style: { textAlign: "center" }, children: props.labels.error }) : null] });
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=media-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-transport.js","sourceRoot":"","sources":["../src/media-transport.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { mediaTransportPaths, resolveMediaPlayback, type MediaPlaybackState } from \"@hjmds/design-contracts/media-transport\";\nimport { motion } from \"@hjmds/design-contracts/foundations\";\nimport { IconButton } from \"./actions.js\";\nimport { Slider } from \"./slider.js\";\nimport { Stack, Text } from \"./layout.js\";\nimport { useHjmTheme } from \"./provider.js\";\nimport { useCompositionAction } from \"./internal/use-composition-action.js\";\nfunction MediaGlyph({ playing, active }: Readonly<{ playing: boolean; active: boolean }>) {\n const first = useRef<SVGPathElement>(null), second = useRef<SVGPathElement>(null), current = useRef(playing ? 1 : 0);\n const reduced = useHjmTheme().environment.reducedMotion;\n useEffect(() => {\n const target = playing ? 1 : 0, initial = current.current; let frame = 0, start: number | undefined;\n const draw = (value: number) => { current.current = value; const paths = mediaTransportPaths(value); first.current?.setAttribute(\"d\", paths[0]); second.current?.setAttribute(\"d\", paths[1]); };\n const settle = () => { cancelAnimationFrame(frame); draw(target); };\n const visibility = () => { if (document.hidden) settle(); };\n const animate = (now: number) => { start ??= now; const p = Math.min(1, (now - start) / motion.normal); draw(initial + (target - initial) * (1 - (1-p)**3)); if (p < 1) frame = requestAnimationFrame(animate); };\n // Geometry updates go directly to SVG: no per-frame React render and no background loop.\n if (reduced || !active || document.hidden || initial === target) settle(); else frame = requestAnimationFrame(animate);\n document.addEventListener(\"visibilitychange\", visibility);\n return () => { cancelAnimationFrame(frame); document.removeEventListener(\"visibilitychange\", visibility); };\n }, [playing, active, reduced]);\n const paths = mediaTransportPaths(current.current);\n return <svg width={24} height={24} viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\" fill=\"currentColor\"><path ref={first} d={paths[0]} /><path ref={second} d={paths[1]} /></svg>;\n}\nexport type MediaTransportProps = Readonly<{\n state: MediaPlaybackState; onPlay: () => void | Promise<void>; onPause: () => void | Promise<void>;\n /** Resolve after the adapter confirms the actual seek; rejecting keeps the observed position. */\n onSeek: (seconds: number) => void | Promise<void>;\n labels: Readonly<{ play: string; pause: string; seek: string; decrement: string; increment: string; unknownDuration: string; error: string }>;\n formatTime: (seconds: number) => string; disabled?: boolean; active?: boolean;\n}>;\nexport function MediaTransport(props: MediaTransportProps) {\n const state = resolveMediaPlayback(props.state), active = props.active !== false;\n const action = useCompositionAction(props.disabled === true || !active), [draft, setDraft] = useState<number | null>(null);\n const locked = props.disabled === true || !active || action.pending;\n useEffect(() => { if (!active) setDraft(null); }, [active]);\n const toggle = () => { void action.run(state.playing ? \"pause\" : \"play\", state.playing ? props.onPause : props.onPlay); };\n const seek = (seconds: number) => {\n if (locked || !state.seekable) return;\n void action.run(\"seek\", () => props.onSeek(Math.min(state.duration!, Math.max(0, seconds)))).then(result => { if (result.status === \"success\" || result.status === \"error\") setDraft(null); });\n };\n return <Stack gap=\"md\"><Stack axis=\"inline\" gap=\"sm\" align=\"center\">\n <IconButton label={state.playing ? props.labels.pause : props.labels.play} tone=\"ghost\" selected={state.playing} loading={action.pending || (state.buffering === true && !state.playing)} disabled={props.disabled === true || !active} onClick={toggle}><MediaGlyph playing={state.playing} active={active} /></IconButton>\n <Text variant=\"caption\">{props.formatTime(state.position)} / {state.duration === null ? props.labels.unknownDuration : props.formatTime(state.duration)}</Text>\n </Stack>\n {state.seekable ? <Slider label={props.labels.seek} min={0} max={state.duration!} step={.1} value={Math.min(state.duration!, draft ?? state.position)} disabled={locked}\n onValueChange={seconds => { if (!locked) setDraft(seconds); }} onValueChangeEnd={seek} getValueText={props.formatTime} /> : null}\n {action.failed ? <Text role=\"alert\" tone=\"danger\" style={{ textAlign: \"center\" }}>{props.labels.error}</Text> : null}</Stack>;\n}\n"]}
|
package/dist/navigation.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type TabsAppearance } from "@hjmds/design-contracts/gooey-navigation";
|
|
1
|
+
import { type TabSwipePosition, type TabsAppearance } from "@hjmds/design-contracts/gooey-navigation";
|
|
2
2
|
export type { TabsAppearance };
|
|
3
3
|
import { type TabsActivationMode, type TabsDirection, type TabsMountPolicy, type TabsOrientation, type TabsPanelMode } from "@hjmds/design-contracts/behaviors";
|
|
4
4
|
import { type TabSize, type TabsLayout, type TabsOverflow } from "@hjmds/design-contracts/recipes";
|
|
@@ -34,6 +34,8 @@ export type TabsProps = Omit<HTMLAttributes<HTMLDivElement>, "dir" | "onChange">
|
|
|
34
34
|
mountPolicy?: TabsMountPolicy;
|
|
35
35
|
panelMode?: TabsPanelMode;
|
|
36
36
|
appearance?: TabsAppearance;
|
|
37
|
+
/** Fractional pager position; selection commits through onValueChange. Horizontal only. */
|
|
38
|
+
swipePosition?: TabSwipePosition;
|
|
37
39
|
orientation?: TabsOrientation;
|
|
38
40
|
direction?: TabsDirection;
|
|
39
41
|
loop?: boolean;
|
package/dist/navigation.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../src/navigation.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA8C,KAAK,cAAc,EAA2B,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../src/navigation.tsx"],"names":[],"mappings":"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"}
|
package/dist/navigation.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { resolveTabIndicator, resolveTabsAppearance } from "@hjmds/design-contracts/gooey-navigation";
|
|
2
|
+
import { resolveSwipeTabIndicator, resolveTabIndicator, resolveTabsAppearance } from "@hjmds/design-contracts/gooey-navigation";
|
|
3
3
|
import { easing } from "@hjmds/design-contracts/foundations";
|
|
4
4
|
import { getTabNavigationIntent, getTabNavigationTarget, resolveInitialTabValue, tabsBehaviorDefaults, } from "@hjmds/design-contracts/behaviors";
|
|
5
5
|
import { iconRecipe, tabsRecipe, } from "@hjmds/design-contracts/recipes";
|
|
@@ -81,7 +81,7 @@ export function TabPanel(props) {
|
|
|
81
81
|
return (_jsx(TabPanelHost, { ...hostProps, id: getTabPanelId(tabsId, value, dynamic ? "dynamic" : "keyed"), labelledBy: getTabId(tabsId, dynamic ? activeValue : value), selected: selected, dynamic: dynamic, children: children }));
|
|
82
82
|
}
|
|
83
83
|
export const Tabs = forwardRef(function Tabs(props, ref) {
|
|
84
|
-
const { label, items, activationMode = tabsBehaviorDefaults.activationMode, mountPolicy = tabsBehaviorDefaults.mountPolicy, panelMode = tabsBehaviorDefaults.panelMode, appearance: suppliedAppearance, orientation = tabsBehaviorDefaults.orientation, direction: directionProp, loop = tabsBehaviorDefaults.loop, size = tabsRecipe.defaults.size, layout = tabsRecipe.defaults.layout, overflow = tabsRecipe.defaults.overflow, renderPanels = true, className, id, value: valueProp, defaultValue, onValueChange, layoutStyle, ...rest } = props;
|
|
84
|
+
const { label, items, activationMode = tabsBehaviorDefaults.activationMode, mountPolicy = tabsBehaviorDefaults.mountPolicy, panelMode = tabsBehaviorDefaults.panelMode, appearance: suppliedAppearance, swipePosition, orientation = tabsBehaviorDefaults.orientation, direction: directionProp, loop = tabsBehaviorDefaults.loop, size = tabsRecipe.defaults.size, layout = tabsRecipe.defaults.layout, overflow = tabsRecipe.defaults.overflow, renderPanels = true, className, id, value: valueProp, defaultValue, onValueChange, layoutStyle, ...rest } = props;
|
|
85
85
|
validateItems(items);
|
|
86
86
|
if (label.trim().length === 0)
|
|
87
87
|
throw new TypeError("Tabs label must not be empty");
|
|
@@ -127,7 +127,7 @@ export const Tabs = forwardRef(function Tabs(props, ref) {
|
|
|
127
127
|
const theme = useOptionalHjmTheme();
|
|
128
128
|
const direction = directionProp ?? theme?.environment.direction ?? tabsBehaviorDefaults.direction;
|
|
129
129
|
const appearance = resolveTabsAppearance(suppliedAppearance, theme?.designProfile?.interactions.selectionMotion, orientation);
|
|
130
|
-
const movingIndicator = appearance !== "standard";
|
|
130
|
+
const movingIndicator = appearance !== "standard" || (orientation === "horizontal" && swipePosition !== undefined);
|
|
131
131
|
// Recreated label/panel elements must not cancel motion on unrelated draft edits;
|
|
132
132
|
// resize observation covers their geometry, while stable IDs detect reordering.
|
|
133
133
|
const itemOrder = JSON.stringify(items.map(item => item.id));
|
|
@@ -137,7 +137,7 @@ export const Tabs = forwardRef(function Tabs(props, ref) {
|
|
|
137
137
|
useLayoutEffect(() => {
|
|
138
138
|
const indicator = indicatorRef.current;
|
|
139
139
|
const tab = tabRefs.current.get(value);
|
|
140
|
-
if (appearance === "standard" || !indicator || !tab) {
|
|
140
|
+
if (swipePosition || appearance === "standard" || !indicator || !tab) {
|
|
141
141
|
previousIndicator.current = null;
|
|
142
142
|
interruptedIndicator.current = null;
|
|
143
143
|
return;
|
|
@@ -186,7 +186,31 @@ export const Tabs = forwardRef(function Tabs(props, ref) {
|
|
|
186
186
|
observer.disconnect();
|
|
187
187
|
document.removeEventListener("visibilitychange", visibility);
|
|
188
188
|
};
|
|
189
|
-
}, [movingIndicator, appearance, value, itemOrder, direction, theme?.environment.reducedMotion]);
|
|
189
|
+
}, [movingIndicator, appearance, value, itemOrder, direction, theme?.environment.reducedMotion, swipePosition]);
|
|
190
|
+
useLayoutEffect(() => {
|
|
191
|
+
if (!swipePosition || orientation !== "horizontal")
|
|
192
|
+
return;
|
|
193
|
+
const indicator = indicatorRef.current;
|
|
194
|
+
if (!indicator)
|
|
195
|
+
return;
|
|
196
|
+
const place = (position = swipePosition.get()) => {
|
|
197
|
+
const rect = resolveSwipeTabIndicator(items.map(item => { const tab = tabRefs.current.get(item.id); return tab ? { x: tab.offsetLeft, width: tab.offsetWidth } : undefined; }), position);
|
|
198
|
+
if (!rect)
|
|
199
|
+
return;
|
|
200
|
+
indicator.style.left = `${rect.x}px`;
|
|
201
|
+
indicator.style.width = `${rect.width}px`;
|
|
202
|
+
};
|
|
203
|
+
place();
|
|
204
|
+
const unsubscribe = swipePosition.subscribe(place);
|
|
205
|
+
const observer = new ResizeObserver(() => place());
|
|
206
|
+
for (const tab of tabRefs.current.values())
|
|
207
|
+
observer.observe(tab);
|
|
208
|
+
// RTL natural-width lists can move physical x when only the list width changes.
|
|
209
|
+
const list = indicator.parentElement;
|
|
210
|
+
if (list)
|
|
211
|
+
observer.observe(list);
|
|
212
|
+
return () => { unsubscribe(); observer.disconnect(); };
|
|
213
|
+
}, [swipePosition, itemOrder, orientation, direction]);
|
|
190
214
|
useEffect(() => {
|
|
191
215
|
if (!controlled && !storedSelectionIsValid)
|
|
192
216
|
setValue(collectionFallback);
|