@hjmds/design-contracts 1.7.0 → 1.9.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 +58 -0
- package/dist/affix.d.ts +8 -0
- package/dist/affix.d.ts.map +1 -0
- package/dist/affix.js +7 -0
- package/dist/affix.js.map +1 -0
- package/dist/agreement.d.ts +3 -3
- package/dist/agreement.js +1 -1
- package/dist/agreement.js.map +1 -1
- package/dist/asset.d.ts +1 -1
- package/dist/asset.js +1 -1
- package/dist/asset.js.map +1 -1
- package/dist/base-recipes.d.ts +12 -12
- package/dist/base-recipes.d.ts.map +1 -1
- package/dist/base-recipes.js +15 -14
- package/dist/base-recipes.js.map +1 -1
- package/dist/behaviors.d.ts +1 -1
- package/dist/catalog.d.ts +445 -651
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +149 -101
- package/dist/catalog.js.map +1 -1
- package/dist/color-picker.d.ts +11 -0
- package/dist/color-picker.d.ts.map +1 -0
- package/dist/color-picker.js +20 -0
- package/dist/color-picker.js.map +1 -0
- package/dist/command-palette.d.ts +3 -3
- package/dist/component-contracts.d.ts +4 -4
- package/dist/component-contracts.d.ts.map +1 -1
- package/dist/component-contracts.js +5 -4
- package/dist/component-contracts.js.map +1 -1
- package/dist/component-definitions.d.ts +1 -9
- package/dist/component-definitions.d.ts.map +1 -1
- package/dist/component-definitions.js +1 -9
- package/dist/component-definitions.js.map +1 -1
- package/dist/component-recipes.d.ts +76 -83
- package/dist/component-recipes.d.ts.map +1 -1
- package/dist/component-recipes.js +29 -49
- package/dist/component-recipes.js.map +1 -1
- package/dist/component-references.d.ts +10 -25
- package/dist/component-references.d.ts.map +1 -1
- package/dist/component-references.js +5 -8
- package/dist/component-references.js.map +1 -1
- package/dist/data-table.d.ts +3 -3
- package/dist/data-table.js +1 -1
- package/dist/data-table.js.map +1 -1
- package/dist/date-picker.d.ts +2 -2
- package/dist/icon-button-recipe.d.ts +2 -2
- package/dist/icon-button-recipe.js +1 -1
- package/dist/icon-button-recipe.js.map +1 -1
- package/dist/image.d.ts +2 -2
- package/dist/image.js +2 -2
- package/dist/image.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/interaction-adapters.d.ts +53 -0
- package/dist/interaction-adapters.d.ts.map +1 -0
- package/dist/interaction-adapters.js +45 -0
- package/dist/interaction-adapters.js.map +1 -0
- package/dist/internal/thinking-orb/braid.d.ts +3 -0
- package/dist/internal/thinking-orb/braid.d.ts.map +1 -0
- package/dist/internal/thinking-orb/braid.js +47 -0
- package/dist/internal/thinking-orb/braid.js.map +1 -0
- package/dist/internal/thinking-orb/core.d.ts +60 -0
- package/dist/internal/thinking-orb/core.d.ts.map +1 -0
- package/dist/internal/thinking-orb/core.js +86 -0
- package/dist/internal/thinking-orb/core.js.map +1 -0
- package/dist/internal/thinking-orb/lattice.d.ts +5 -0
- package/dist/internal/thinking-orb/lattice.d.ts.map +1 -0
- package/dist/internal/thinking-orb/lattice.js +187 -0
- package/dist/internal/thinking-orb/lattice.js.map +1 -0
- package/dist/internal/thinking-orb/morph.d.ts +3 -0
- package/dist/internal/thinking-orb/morph.d.ts.map +1 -0
- package/dist/internal/thinking-orb/morph.js +127 -0
- package/dist/internal/thinking-orb/morph.js.map +1 -0
- package/dist/internal/thinking-orb/orbits.d.ts +3 -0
- package/dist/internal/thinking-orb/orbits.d.ts.map +1 -0
- package/dist/internal/thinking-orb/orbits.js +68 -0
- package/dist/internal/thinking-orb/orbits.js.map +1 -0
- package/dist/internal/thinking-orb/presets.d.ts +21 -0
- package/dist/internal/thinking-orb/presets.d.ts.map +1 -0
- package/dist/internal/thinking-orb/presets.js +77 -0
- package/dist/internal/thinking-orb/presets.js.map +1 -0
- package/dist/internal/thinking-orb/profiles.d.ts +8 -0
- package/dist/internal/thinking-orb/profiles.d.ts.map +1 -0
- package/dist/internal/thinking-orb/profiles.js +158 -0
- package/dist/internal/thinking-orb/profiles.js.map +1 -0
- package/dist/internal/thinking-orb/registry.d.ts +9 -0
- package/dist/internal/thinking-orb/registry.d.ts.map +1 -0
- package/dist/internal/thinking-orb/registry.js +27 -0
- package/dist/internal/thinking-orb/registry.js.map +1 -0
- package/dist/internal/thinking-orb/ribbon.d.ts +3 -0
- package/dist/internal/thinking-orb/ribbon.d.ts.map +1 -0
- package/dist/internal/thinking-orb/ribbon.js +87 -0
- package/dist/internal/thinking-orb/ribbon.js.map +1 -0
- package/dist/internal/thinking-orb/types.d.ts +15 -0
- package/dist/internal/thinking-orb/types.d.ts.map +1 -0
- package/dist/internal/thinking-orb/types.js +4 -0
- package/dist/internal/thinking-orb/types.js.map +1 -0
- package/dist/internal/thinking-orb/web.d.ts +3 -0
- package/dist/internal/thinking-orb/web.d.ts.map +1 -0
- package/dist/internal/thinking-orb/web.js +92 -0
- package/dist/internal/thinking-orb/web.js.map +1 -0
- package/dist/masonry.d.ts +17 -0
- package/dist/masonry.d.ts.map +1 -0
- package/dist/masonry.js +18 -0
- package/dist/masonry.js.map +1 -0
- package/dist/menubar.d.ts +3 -3
- package/dist/menubar.js +1 -1
- package/dist/menubar.js.map +1 -1
- package/dist/number-field.d.ts +2 -2
- package/dist/otp-field.d.ts +1 -1
- package/dist/password-field.d.ts +2 -2
- package/dist/popover.d.ts +7 -8
- package/dist/popover.d.ts.map +1 -1
- package/dist/popover.js +2 -0
- package/dist/popover.js.map +1 -1
- package/dist/qr-code-recipe.d.ts +7 -0
- package/dist/qr-code-recipe.d.ts.map +1 -0
- package/dist/qr-code-recipe.js +2 -0
- package/dist/qr-code-recipe.js.map +1 -0
- package/dist/qr-code.d.ts +16 -0
- package/dist/qr-code.d.ts.map +1 -0
- package/dist/qr-code.js +37 -0
- package/dist/qr-code.js.map +1 -0
- package/dist/semantic-colors.d.ts +1 -1
- package/dist/semantic-colors.js +1 -1
- package/dist/semantic-colors.js.map +1 -1
- package/dist/showcase.d.ts +5 -1
- package/dist/showcase.d.ts.map +1 -1
- package/dist/showcase.js +53 -12
- package/dist/showcase.js.map +1 -1
- package/dist/sidebar.d.ts +3 -3
- package/dist/sidebar.js +1 -1
- package/dist/sidebar.js.map +1 -1
- package/dist/tag.d.ts +4 -4
- package/dist/tag.js +3 -3
- package/dist/tag.js.map +1 -1
- package/dist/tags-input.d.ts +3 -3
- package/dist/tags-input.js +1 -1
- package/dist/tags-input.js.map +1 -1
- package/dist/text-formats.d.ts +2 -2
- package/dist/text-formats.js +2 -2
- package/dist/text-formats.js.map +1 -1
- package/dist/thinking-orb-recipe.d.ts +15 -0
- package/dist/thinking-orb-recipe.d.ts.map +1 -0
- package/dist/thinking-orb-recipe.js +9 -0
- package/dist/thinking-orb-recipe.js.map +1 -0
- package/dist/thinking-orb.d.ts +25 -0
- package/dist/thinking-orb.d.ts.map +1 -0
- package/dist/thinking-orb.js +40 -0
- package/dist/thinking-orb.js.map +1 -0
- package/dist/toast-liquid.d.ts +116 -0
- package/dist/toast-liquid.d.ts.map +1 -0
- package/dist/toast-liquid.js +103 -0
- package/dist/toast-liquid.js.map +1 -0
- package/dist/toast.d.ts +7 -1
- package/dist/toast.d.ts.map +1 -1
- package/dist/toast.js +5 -0
- package/dist/toast.js.map +1 -1
- package/dist/toggle-group.d.ts +2 -2
- package/dist/toggle-group.js +3 -3
- package/dist/toggle-group.js.map +1 -1
- package/dist/transfer-list.d.ts +3 -3
- package/dist/transfer-list.js +1 -1
- package/dist/transfer-list.js.map +1 -1
- package/dist/tree.d.ts +2 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dist/virtual-list.d.ts +13 -0
- package/dist/virtual-list.d.ts.map +1 -0
- package/dist/virtual-list.js +13 -0
- package/dist/virtual-list.js.map +1 -0
- package/dist/watermark.d.ts +15 -0
- package/dist/watermark.d.ts.map +1 -0
- package/dist/watermark.js +11 -0
- package/dist/watermark.js.map +1 -0
- package/docs/affix.md +27 -63
- package/docs/anchor.md +5 -4
- package/docs/ant-design-coverage.md +8 -12
- package/docs/architecture.md +6 -2
- package/docs/authoring-brief.md +3 -2
- package/docs/bottom-navigation.md +7 -6
- package/docs/breadcrumb.md +5 -2
- package/docs/calendar.md +6 -3
- package/docs/carousel.md +2 -2
- package/docs/cascader.md +11 -0
- package/docs/catalog-cleanup.md +7 -0
- package/docs/catalog-decision-status.md +8 -3
- package/docs/catalog-freeze.json +9 -7
- package/docs/collapsible.md +12 -0
- package/docs/color-picker.md +30 -72
- package/docs/command-palette.md +5 -3
- package/docs/confirm-popover.md +5 -0
- package/docs/consumer-policy.md +29 -12
- package/docs/context-menu.md +12 -2
- package/docs/data-table.md +11 -6
- package/docs/date-picker.md +6 -4
- package/docs/date-range.md +4 -2
- package/docs/description-list.md +8 -9
- package/docs/dialog.md +39 -0
- package/docs/expansion-roadmap.md +11 -7
- package/docs/file-picker.md +5 -3
- package/docs/form.md +16 -4
- package/docs/generated/component-maturity.md +91 -99
- package/docs/generated/renderer-evidence.json +2043 -1059
- package/docs/generated/renderer-evidence.md +156 -145
- package/docs/generated/showcase-manifest.json +476 -625
- package/docs/layout.md +8 -9
- package/docs/library-gap-analysis.md +1 -1
- package/docs/masonry.md +11 -0
- package/docs/mentions.md +14 -7
- package/docs/optional-adapters.md +126 -0
- package/docs/otp-field.md +2 -1
- package/docs/pagination.md +4 -1
- package/docs/password-field.md +2 -1
- package/docs/popover.md +9 -6
- package/docs/promotion-candidates.md +2 -1
- package/docs/qr-code.md +11 -65
- package/docs/rating.md +5 -0
- package/docs/react-native-completion.md +1 -1
- package/docs/result.md +8 -5
- package/docs/screen-chrome.md +2 -1
- package/docs/sheet.md +8 -2
- package/docs/showcase.md +10 -2
- package/docs/side-panel.md +12 -6
- package/docs/sidebar.md +3 -0
- package/docs/splitter.md +6 -6
- package/docs/stable-core.md +92 -0
- package/docs/stable-promotion.md +47 -43
- package/docs/tags-input.md +5 -2
- package/docs/theme-palette.md +27 -0
- package/docs/thinking-orb.md +124 -0
- package/docs/time-picker.md +5 -0
- package/docs/timeline.md +2 -3
- package/docs/toast.md +6 -0
- package/docs/tooltip.md +2 -1
- package/docs/tour.md +14 -8
- package/docs/transfer-list.md +24 -21
- package/docs/tree-select.md +7 -1
- package/docs/tree.md +12 -7
- package/docs/upload-item.md +7 -3
- package/docs/virtual-list.md +10 -67
- package/docs/watermark.md +26 -58
- package/package.json +54 -3
- package/docs/app-provider.md +0 -50
- package/docs/border-beam.md +0 -66
- package/docs/chart.md +0 -33
- package/docs/utility.md +0 -53
package/dist/index.js
CHANGED
|
@@ -7,7 +7,7 @@ export { bottomNavigationBehaviorDefaults, resolveBottomNavigationActivation, re
|
|
|
7
7
|
export { resolveTooltipDescriptor, tooltipBehaviorDefaults, tooltipDescriptorDefaults, validateTooltipDescriptor, validateTooltipOpenState, } from "./tooltip.js";
|
|
8
8
|
export { alertDialogBehaviorDefaults, canDismissAlertDialog, createAlertDialogSession, getAlertDialogInitialFocus, validateAlertDialogRequest, } from "./alert-dialog.js";
|
|
9
9
|
export { canDismissSheet, createSheetLifecycle, sheetBehaviorDefaults, } from "./sheet.js";
|
|
10
|
-
export { createToastSession, createToastStore, resolveToastAnnouncement, resolveToastDescriptor, resolveToastDuration, toastBehaviorDefaults, validateToastDescriptor, } from "./toast.js";
|
|
10
|
+
export { createToastSession, createToastStore, resolveToastAnnouncement, resolveToastDescriptor, resolveToastDuration, liquidToastRecipe, resolveLiquidToastLayout, buildLiquidToastGeometry, validateLiquidToastAnchor, toastBehaviorDefaults, validateToastDescriptor, } from "./toast.js";
|
|
11
11
|
export { resolveStatisticDescriptor, statisticDefaults, statisticTrendMarks, validateStatisticDescriptor, validateStatisticGroup, } from "./statistic.js";
|
|
12
12
|
export { canRequestLoadMore, createLoadMoreController, loadMoreBehaviorDefaults, validateLoadMoreDescriptor, validateLoadMoreLabels, validateLoadMoreState, } from "./load-more.js";
|
|
13
13
|
export { collectionValidationDefaults, flattenCollectionItems, getCollectionNavigationIntent, getCollectionNavigationTarget, getCollectionTypeaheadMatch, isComboboxResultCurrent, reconcileSelectSelection, resolveComboboxSelectedItem, resolveCollectionItem, resolveSelectSelectedItem, validateCollection, } from "./collection.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["export {\n aspectRatioDefaults,\n aspectRatioRecipe,\n resolveAspectRatioDescriptor,\n validateAspectRatioValue,\n type AspectRatioDescriptor,\n type AspectRatioPreset,\n type AspectRatioValue,\n type ResolvedAspectRatioDescriptor,\n} from \"./aspect-ratio.js\";\n\nexport {\n containerDefaults,\n containerRecipe,\n resolveContainerDescriptor,\n validateContainerDescriptor,\n type ContainerDescriptor,\n type ContainerGutter,\n type ContainerSize,\n type ResolvedContainerDescriptor,\n} from \"./container.js\";\n\nexport {\n visuallyHiddenRecipe,\n type VisuallyHiddenContract,\n} from \"./visually-hidden.js\";\n\nexport {\n getIconDirectionality,\n getIconTransform,\n resolveIconDescriptor,\n semanticIconNames,\n validateIconDescriptor,\n type DecorativeIconDescriptor,\n type IconDescriptor,\n type IconDirection,\n type IconDirectionality,\n type IconTransform,\n type InformativeIconDescriptor,\n type ResolvedIconDescriptor,\n type SemanticIconName,\n} from \"./icon.js\";\n\nexport {\n resolveLinkDescriptor,\n validateLinkDescriptor,\n validateLinkDestination,\n type ExternalLinkDestination,\n type InternalLinkDestination,\n type LinkDescriptor,\n type LinkDestination,\n type LinkIconDescriptor,\n type ResolvedLinkDescriptor,\n type ResolvedLinkIconDescriptor,\n} from \"./link.js\";\n\nexport {\n bottomNavigationBehaviorDefaults,\n resolveBottomNavigationActivation,\n resolveBottomNavigationConfiguration,\n resolveBottomNavigationDescriptor,\n resolveBottomNavigationItem,\n validateBottomNavigationConfiguration,\n validateBottomNavigationDescriptor,\n type BottomNavigationActivation,\n type BottomNavigationConfiguration,\n type BottomNavigationCounterBadge,\n type BottomNavigationDescriptor,\n type BottomNavigationDirection,\n type BottomNavigationIconDescriptor,\n type BottomNavigationItemDescriptor,\n type BottomNavigationKeyboardBehavior,\n type ResolvedBottomNavigationCounterBadge,\n type ResolvedBottomNavigationConfiguration,\n type ResolvedBottomNavigationDescriptor,\n type ResolvedBottomNavigationIconDescriptor,\n type ResolvedBottomNavigationItemDescriptor,\n} from \"./bottom-navigation.js\";\n\nexport {\n resolveTooltipDescriptor,\n tooltipBehaviorDefaults,\n tooltipDescriptorDefaults,\n validateTooltipDescriptor,\n validateTooltipOpenState,\n type ControlledTooltipOpenState,\n type ResolvedTooltipDescriptor,\n type TooltipAlign,\n type TooltipDescriptor,\n type TooltipOpenChangeDetails,\n type TooltipOpenChangeReason,\n type TooltipOpenState,\n type TooltipPlacement,\n type UncontrolledTooltipOpenState,\n} from \"./tooltip.js\";\n\nexport {\n alertDialogBehaviorDefaults,\n canDismissAlertDialog,\n createAlertDialogSession,\n getAlertDialogInitialFocus,\n validateAlertDialogRequest,\n type AlertDialogAsyncState,\n type AlertDialogCancelReason,\n type AlertDialogConfirmAction,\n type AlertDialogDismissReason,\n type AlertDialogInitialFocus,\n type AlertDialogMode,\n type AlertDialogOpenChangeReason,\n type AlertDialogOpenState,\n type AlertDialogPhase,\n type AlertDialogRequest,\n type AlertDialogResult,\n type AlertDialogSession,\n} from \"./alert-dialog.js\";\n\nexport {\n canDismissSheet,\n createSheetLifecycle,\n sheetBehaviorDefaults,\n type SheetDismissPolicy,\n type SheetDismissReason,\n type SheetLifecycle,\n type SheetOpenChangeDetails,\n type SheetOpenState,\n} from \"./sheet.js\";\n\nexport {\n createToastSession,\n createToastStore,\n resolveToastAnnouncement,\n resolveToastDescriptor,\n resolveToastDuration,\n toastBehaviorDefaults,\n validateToastDescriptor,\n type ResolvedToastActionDescriptor,\n type ResolvedToastDescriptor,\n type ToastActionDescriptor,\n type ToastAnnouncement,\n type ToastAnnouncementPriority,\n type ToastDescriptor,\n type ToastDismissReason,\n type ToastDuplicatePolicy,\n type ToastId,\n type ToastOverflowPolicy,\n type ToastPauseReason,\n type ToastPhase,\n type ToastPublishOptions,\n type ToastPublishResult,\n type ToastSession,\n type ToastSessionSnapshot,\n type ToastStore,\n type ToastStoreOptions,\n type ToastStoreSnapshot,\n type ToastTimerSnapshot,\n type ToastTimerStatus,\n type ToastTimerUpdatePolicy,\n} from \"./toast.js\";\n\nexport {\n resolveStatisticDescriptor,\n statisticDefaults,\n statisticTrendMarks,\n validateStatisticDescriptor,\n validateStatisticGroup,\n type ResolvedStatisticDescriptor,\n type ResolvedStatisticTrendDescriptor,\n type StatisticDescriptor,\n type StatisticGroupDescriptor,\n type StatisticTrendDescriptor,\n type StatisticTrendDirection,\n type StatisticTrendTone,\n} from \"./statistic.js\";\n\nexport {\n canRequestLoadMore,\n createLoadMoreController,\n loadMoreBehaviorDefaults,\n validateLoadMoreDescriptor,\n validateLoadMoreLabels,\n validateLoadMoreState,\n type LoadMoreCompleteState,\n type LoadMoreController,\n type LoadMoreControllerOptions,\n type LoadMoreControllerSnapshot,\n type LoadMoreDescriptor,\n type LoadMoreErrorState,\n type LoadMoreLabels,\n type LoadMoreLoadingState,\n type LoadMoreMode,\n type LoadMoreReadyState,\n type LoadMoreRequest,\n type LoadMoreRequestHandler,\n type LoadMoreRequestOutcome,\n type LoadMoreRequestReason,\n type LoadMoreState,\n} from \"./load-more.js\";\n\nexport {\n collectionValidationDefaults,\n flattenCollectionItems,\n getCollectionNavigationIntent,\n getCollectionNavigationTarget,\n getCollectionTypeaheadMatch,\n isComboboxResultCurrent,\n reconcileSelectSelection,\n resolveComboboxSelectedItem,\n resolveCollectionItem,\n resolveSelectSelectedItem,\n validateCollection,\n type CollectionNavigationIntent,\n type CollectionSource,\n type SelectCollectionSectionDescriptor,\n type SelectCollectionSource,\n type CollectionTypeaheadOptions,\n type CollectionValidationOptions,\n type ComboboxCollectionState,\n type ComboboxState,\n type ReconcileSelectOptions,\n type SelectCollectionState,\n type SelectConfiguration,\n type SelectLabel,\n type SelectOpenChangeReason,\n type SelectOpenState,\n type SelectState,\n} from \"./collection.js\";\n\nexport {\n ACCENTS,\n THEMES,\n accentFill,\n accentTint,\n brandGradient,\n isThemePreference,\n onAccentFill,\n onBrandGradient,\n withAlpha,\n type AccentTone,\n type ResolvedTheme,\n type ThemeColors,\n type ThemePreference,\n} from \"./colors.js\";\n\nexport {\n backdrop,\n breakpoint,\n control,\n easing,\n fontFamily,\n fontWeight,\n glyph,\n heading,\n layer,\n layout,\n letterSpacing,\n motion,\n motionPreset,\n numeric,\n opacity,\n overlay,\n radius,\n scrim,\n shadow,\n spacing,\n spring,\n stateLayer,\n stroke,\n typography,\n type BackdropReference,\n type FontFamily,\n type FontWeight,\n type FontWeightValue,\n type GlyphSize,\n type HeadingLevel,\n type LetterSpacing,\n type NumericVariant,\n type ReducedMotionBehavior,\n type TextVariant,\n} from \"./foundations.js\";\n\nexport {\n resolveResponsiveValue,\n resolveWindowClass,\n validateResponsiveValue,\n windowClassOrder,\n type ResponsiveValue,\n type WindowClass,\n} from \"./responsive.js\";\n\nexport {\n gridDefaults,\n gridGaps,\n gridRecipe,\n resolveGridLayout,\n validateGridDescriptor,\n type GridDescriptor,\n type GridGap,\n type GridGapToken,\n type ResolveGridLayoutOptions,\n type ResolvedGridLayout,\n} from \"./grid.js\";\n\nexport {\n accordionRecipe,\n alertDialogRecipe,\n avatarRecipe,\n badgeRecipe,\n bottomNavigationRecipe,\n bottomCtaRecipe,\n buttonRecipe,\n cardRecipe,\n chipRecipe,\n comboboxRecipe,\n counterBadgeRecipe,\n dialogRecipe,\n dividerRecipe,\n emptyStateRecipe,\n fieldRecipe,\n formatCounterBadgeCount,\n iconButtonRecipe,\n iconRecipe,\n linkRecipe,\n listRecipe,\n listRowRecipe,\n loadMoreRecipe,\n menuRecipe,\n noticeRecipe,\n progressRecipe,\n searchFieldRecipe,\n selectRecipe,\n selectionGroupRecipe,\n sectionRecipe,\n segmentedControlRecipe,\n selectionControlRecipe,\n sheetRecipe,\n skeletonRecipe,\n spinnerRecipe,\n surfaceDefaults,\n surfaceGeometry,\n stackRecipe,\n statisticRecipe,\n surfaceRecipe,\n switchRecipe,\n tabsRecipe,\n textRecipe,\n toastRecipe,\n tooltipRecipe,\n topBarRecipe,\n type AccordionDensity,\n type AlertDialogTone,\n type AvatarShape,\n type AvatarSize,\n type BadgeSize,\n type BadgeTone,\n type BadgeVariant,\n type BottomNavigationDensity,\n type BottomNavigationDistribution,\n type BottomNavigationPresentation,\n type ButtonSize,\n type ButtonTone,\n type CardHeadingLevel,\n type ChipSize,\n type SelectDensity,\n type SelectSize,\n type CounterBadgeSize,\n type CounterBadgeTone,\n type CounterBadgeVariant,\n type DialogSize,\n type FieldShape,\n type FieldVariant,\n type IconButtonShape,\n type IconButtonSize,\n type IconTone,\n type IconWeight,\n type LinkTone,\n type LinkVariant,\n type LoadMoreDensity,\n type ListRowDensity,\n type MenuDensity,\n type MenuItemTone,\n type NoticeTone,\n type ProgressSize,\n type ProgressTone,\n type SearchFieldSize,\n type SegmentedControlSize,\n type SelectionControlKind,\n type SelectionControlPresentation,\n type SelectionControlSize,\n type SelectionGroupOrientation,\n type SelectionGroupPresentation,\n type SpinnerSize,\n type SpinnerTone,\n type StackAlign,\n type StackAxis,\n type StackGap,\n type StackJustify,\n type StatisticDensity,\n type StatisticPresentation,\n type SurfaceTone,\n type SurfacePadding,\n type SurfaceRadius,\n type SwitchSize,\n type TabSize,\n type TabsLayout,\n type TabsOverflow,\n type TextEmphasis,\n type TextTone,\n type ToastPlacement,\n type ToastTone,\n type ToastToneMark,\n} from \"./recipes.js\";\n\nexport {\n accentColor,\n resolveColorReference,\n solidAccentColor,\n themeColor,\n type AccentColorReference,\n type AccentFillReference,\n type ColorReference,\n type ColorReferencePalette,\n type ThemeColorReference,\n} from \"./color-references.js\";\n\nexport {\n componentCatalog,\n getComponentSurfaceStatus,\n recipeRegistry,\n summarizeComponentRoadmap,\n type ComponentCatalogEntry,\n type ComponentCategory,\n type ComponentName,\n type ComponentPlatform,\n type ComponentRoadmap,\n type ComponentRoadmapState,\n type ComponentSurface,\n type ComponentSurfaceMaturity,\n type ComponentSurfaceStatus,\n type ComponentStatus,\n type RecipeName,\n} from \"./catalog.js\";\n\nexport { designSystemVersion } from \"./version.js\";\n\nexport {\n antDesignReferenceComponents,\n antDesignReferenceSystem,\n getAntDesignReferencesFor,\n summarizeAntDesignCoverage,\n type AntDesignCategory,\n type AntDesignComponentName,\n type AntDesignReferenceComponent,\n type ReferenceCoverageSummary,\n type ReferenceRelationship,\n} from \"./component-references.js\";\n\nexport {\n componentDefinitions,\n componentIds,\n getComponentDefinition,\n type ComponentDefinition,\n type ComponentId,\n type ComponentKind,\n} from \"./component-definitions.js\";\n\nexport { semanticColors } from \"./semantic-colors.js\";\n\nexport {\n behaviorRegistry,\n checkboxBehaviorDefaults,\n comboboxBehaviorDefaults,\n getCheckboxNextState,\n getRadioNavigationTarget,\n getSelectionNavigationIntent,\n getTabNavigationIntent,\n getTabNavigationTarget,\n reconcileCheckboxSelection,\n reconcileRadioSelection,\n radioGroupBehaviorDefaults,\n resolveInitialRadioValue,\n resolveControlAccessibleName,\n resolveRadioTabStop,\n resolveInitialTabValue,\n selectionGroupBehaviorDefaults,\n selectBehaviorDefaults,\n tabsBehaviorDefaults,\n toggleCheckboxSelection,\n validateCheckboxSelection,\n validateRadioSelection,\n validateSelectionItems,\n type AsyncCollectionState,\n type AvailabilityState,\n type BehaviorContract,\n type BehaviorName,\n type BehaviorStateAxis,\n type CollectionItemDescriptor,\n type CollectionItemTone,\n type CollectionKey,\n type CollectionSectionDescriptor,\n type MenuItemDescriptor,\n type MenuSectionDescriptor,\n type CollectionSelectionModel,\n type ComboboxCommitReason,\n type ComboboxFiltering,\n type ComboboxInput,\n type ControlledComboboxInput,\n type ControlledSelectSelection,\n type ControlledCheckboxGroupSelection,\n type ControlledCheckboxState,\n type ControlledRadioGroupSelection,\n type ContentState,\n type ControlledTabsSelection,\n type InteractionState,\n type MixedCheckboxActivation,\n type MultipleSelectionModel,\n type NativeAccessibilityState,\n type NoSelectionModel,\n type SingleSelectionModel,\n type SelectItemDescriptor,\n type SelectSelection,\n type CheckboxGroupSelection,\n type CheckboxSelection,\n type CheckboxState,\n type RadioGroupSelection,\n type SelectionDirection,\n type SelectionGroupLabel,\n type SelectionItemDescriptor,\n type SelectionNavigationIntent,\n type SelectionOrientation,\n type TabDescriptor,\n type TabNavigationIntent,\n type TabsActivationMode,\n type TabsDirection,\n type TabsMountPolicy,\n type TabsOrientation,\n type TabsPanelMode,\n type TabsSelection,\n type UncontrolledTabsSelection,\n type UncontrolledComboboxInput,\n type UncontrolledSelectSelection,\n type UncontrolledCheckboxGroupSelection,\n type UncontrolledCheckboxState,\n type UncontrolledRadioGroupSelection,\n type ValidationState,\n type ValueState,\n type WebKeyboardKey,\n} from \"./behaviors.js\";\n\nexport {\n collectionItemContract,\n fieldFrameContract,\n floatingSurfaceContract,\n focusIndicatorContract,\n formSupportContract,\n} from \"./component-contracts.js\";\n\nexport {\n assertShowcaseCoverage,\n createShowcaseCoverage,\n createShowcaseManifest,\n getRequiredShowcaseScenarios,\n getRequiredShowcaseEvidence,\n getRequiredShowcaseSurfaces,\n getShowcaseEnvironmentInput,\n getShowcaseStoryId,\n showcaseEnvironmentMatrix,\n showcaseManifest,\n showcaseScenarios,\n summarizeShowcaseMaturity,\n type ShowcaseComponentEntry,\n type ShowcaseCoverageEntry,\n type ShowcaseDirection,\n type ShowcaseEnvironment,\n type ShowcaseEvidenceEntry,\n type ShowcaseEvidenceRequirement,\n type ShowcaseMotionPreference,\n type ShowcaseScenario,\n type ShowcaseScenarioId,\n type ShowcaseSurface,\n type ShowcaseTextScale,\n type ShowcaseTheme,\n} from \"./showcase.js\";\n\nexport {\n assertShowcaseStoryIds,\n compareShowcaseStoryIds,\n createDesignSystemEvidence,\n createDesignSystemEvidenceCoverage,\n defineDesignSystemEvidence,\n designSystemEvidenceSchemaVersion,\n getShowcaseStoryIdsForSurface,\n toShowcaseEvidenceEntries,\n type DesignSystemEvidenceItem,\n type DesignSystemEvidenceManifest,\n type DesignSystemEvidenceSource,\n type DesignSystemEvidenceSourceKind,\n type ShowcaseStoryIdComparison,\n} from \"./evidence.js\";\n\n/*\n Batch 2 — 계약과 recipe가 준비된 컴포넌트.\n\n catalog의 status는 여전히 `planned`다. 로드맵의 maturity gate가 `planned → beta` 승격에\n **실제 제품 vertical slice 한 번**을 요구하므로, 계약이 준비된 것과 검증된 것을 섞지\n 않는다. 여기 있는 심볼은 제품이 renderer를 붙일 수 있다는 뜻이고, 붙여서 검증되면\n 그때 리드가 catalog를 올린다.\n*/\nexport * from \"./breadcrumb.js\";\nexport * from \"./calendar.js\";\nexport * from \"./carousel.js\";\nexport * from \"./command-palette.js\";\nexport * from \"./design-system-provider.js\";\nexport * from \"./floating-action-button.js\";\nexport * from \"./content-state.js\";\nexport * from \"./data-table.js\";\nexport * from \"./mentions.js\";\nexport * from \"./transfer-list.js\";\nexport * from \"./tour.js\";\nexport * from \"./layout.js\";\nexport * from \"./otp-field.js\";\nexport * from \"./password-field.js\";\nexport * from \"./splitter.js\";\nexport * from \"./tree-select.js\";\nexport * from \"./date-picker.js\";\nexport * from \"./side-panel.js\";\nexport * from \"./file-picker.js\";\nexport * from \"./pagination.js\";\nexport * from \"./popover.js\";\nexport * from \"./upload-item.js\";\nexport * from \"./timeline.js\";\nexport * from \"./tree.js\";\nexport * from \"./steps.js\";\nexport * from \"./number-field.js\";\nexport * from \"./slider.js\";\nexport * from \"./form.js\";\nexport * from \"./tag.js\";\nexport * from \"./description-list.js\";\nexport * from \"./result.js\";\nexport * from \"./image.js\";\n\nexport * from \"./anchor.js\";\n\nexport * from \"./agreement.js\";\nexport * from \"./top.js\";\n\nexport * from \"./provider-button.js\";\nexport * from \"./auth-screen.js\";\n\nexport * from \"./heading.js\";\n\nexport * from \"./toggle-group.js\";\nexport * from \"./tags-input.js\";\n\nexport * from \"./skip-nav.js\";\nexport * from \"./bottom-info.js\";\nexport * from \"./sidebar.js\";\n\nexport * from \"./formatters.js\";\n\nexport * from \"./native-platform.js\";\n\nexport * from \"./date-range.js\";\n\nexport * from \"./text-formats.js\";\n\nexport * from \"./collapsible.js\";\nexport * from \"./asset.js\";\nexport * from \"./dataviz.js\";\nexport * from \"./menubar.js\";\nexport * from \"./context-menu.js\";\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["export {\n aspectRatioDefaults,\n aspectRatioRecipe,\n resolveAspectRatioDescriptor,\n validateAspectRatioValue,\n type AspectRatioDescriptor,\n type AspectRatioPreset,\n type AspectRatioValue,\n type ResolvedAspectRatioDescriptor,\n} from \"./aspect-ratio.js\";\n\nexport {\n containerDefaults,\n containerRecipe,\n resolveContainerDescriptor,\n validateContainerDescriptor,\n type ContainerDescriptor,\n type ContainerGutter,\n type ContainerSize,\n type ResolvedContainerDescriptor,\n} from \"./container.js\";\n\nexport {\n visuallyHiddenRecipe,\n type VisuallyHiddenContract,\n} from \"./visually-hidden.js\";\n\nexport {\n getIconDirectionality,\n getIconTransform,\n resolveIconDescriptor,\n semanticIconNames,\n validateIconDescriptor,\n type DecorativeIconDescriptor,\n type IconDescriptor,\n type IconDirection,\n type IconDirectionality,\n type IconTransform,\n type InformativeIconDescriptor,\n type ResolvedIconDescriptor,\n type SemanticIconName,\n} from \"./icon.js\";\n\nexport {\n resolveLinkDescriptor,\n validateLinkDescriptor,\n validateLinkDestination,\n type ExternalLinkDestination,\n type InternalLinkDestination,\n type LinkDescriptor,\n type LinkDestination,\n type LinkIconDescriptor,\n type ResolvedLinkDescriptor,\n type ResolvedLinkIconDescriptor,\n} from \"./link.js\";\n\nexport {\n bottomNavigationBehaviorDefaults,\n resolveBottomNavigationActivation,\n resolveBottomNavigationConfiguration,\n resolveBottomNavigationDescriptor,\n resolveBottomNavigationItem,\n validateBottomNavigationConfiguration,\n validateBottomNavigationDescriptor,\n type BottomNavigationActivation,\n type BottomNavigationConfiguration,\n type BottomNavigationCounterBadge,\n type BottomNavigationDescriptor,\n type BottomNavigationDirection,\n type BottomNavigationIconDescriptor,\n type BottomNavigationItemDescriptor,\n type BottomNavigationKeyboardBehavior,\n type ResolvedBottomNavigationCounterBadge,\n type ResolvedBottomNavigationConfiguration,\n type ResolvedBottomNavigationDescriptor,\n type ResolvedBottomNavigationIconDescriptor,\n type ResolvedBottomNavigationItemDescriptor,\n} from \"./bottom-navigation.js\";\n\nexport {\n resolveTooltipDescriptor,\n tooltipBehaviorDefaults,\n tooltipDescriptorDefaults,\n validateTooltipDescriptor,\n validateTooltipOpenState,\n type ControlledTooltipOpenState,\n type ResolvedTooltipDescriptor,\n type TooltipAlign,\n type TooltipDescriptor,\n type TooltipOpenChangeDetails,\n type TooltipOpenChangeReason,\n type TooltipOpenState,\n type TooltipPlacement,\n type UncontrolledTooltipOpenState,\n} from \"./tooltip.js\";\n\nexport {\n alertDialogBehaviorDefaults,\n canDismissAlertDialog,\n createAlertDialogSession,\n getAlertDialogInitialFocus,\n validateAlertDialogRequest,\n type AlertDialogAsyncState,\n type AlertDialogCancelReason,\n type AlertDialogConfirmAction,\n type AlertDialogDismissReason,\n type AlertDialogInitialFocus,\n type AlertDialogMode,\n type AlertDialogOpenChangeReason,\n type AlertDialogOpenState,\n type AlertDialogPhase,\n type AlertDialogRequest,\n type AlertDialogResult,\n type AlertDialogSession,\n} from \"./alert-dialog.js\";\n\nexport {\n canDismissSheet,\n createSheetLifecycle,\n sheetBehaviorDefaults,\n type SheetDismissPolicy,\n type SheetDismissReason,\n type SheetLifecycle,\n type SheetOpenChangeDetails,\n type SheetOpenState,\n} from \"./sheet.js\";\n\nexport {\n createToastSession,\n createToastStore,\n resolveToastAnnouncement,\n resolveToastDescriptor,\n resolveToastDuration,\n liquidToastRecipe,\n resolveLiquidToastLayout,\n buildLiquidToastGeometry,\n validateLiquidToastAnchor,\n type LiquidToastAnchor,\n type LiquidToastLayout,\n type ToastPresentation,\n toastBehaviorDefaults,\n validateToastDescriptor,\n type ResolvedToastActionDescriptor,\n type ResolvedToastDescriptor,\n type ToastActionDescriptor,\n type ToastAnnouncement,\n type ToastAnnouncementPriority,\n type ToastDescriptor,\n type ToastDismissReason,\n type ToastDuplicatePolicy,\n type ToastId,\n type ToastOverflowPolicy,\n type ToastPauseReason,\n type ToastPhase,\n type ToastPublishOptions,\n type ToastPublishResult,\n type ToastSession,\n type ToastSessionSnapshot,\n type ToastStore,\n type ToastStoreOptions,\n type ToastStoreSnapshot,\n type ToastTimerSnapshot,\n type ToastTimerStatus,\n type ToastTimerUpdatePolicy,\n} from \"./toast.js\";\n\nexport {\n resolveStatisticDescriptor,\n statisticDefaults,\n statisticTrendMarks,\n validateStatisticDescriptor,\n validateStatisticGroup,\n type ResolvedStatisticDescriptor,\n type ResolvedStatisticTrendDescriptor,\n type StatisticDescriptor,\n type StatisticGroupDescriptor,\n type StatisticTrendDescriptor,\n type StatisticTrendDirection,\n type StatisticTrendTone,\n} from \"./statistic.js\";\n\nexport {\n canRequestLoadMore,\n createLoadMoreController,\n loadMoreBehaviorDefaults,\n validateLoadMoreDescriptor,\n validateLoadMoreLabels,\n validateLoadMoreState,\n type LoadMoreCompleteState,\n type LoadMoreController,\n type LoadMoreControllerOptions,\n type LoadMoreControllerSnapshot,\n type LoadMoreDescriptor,\n type LoadMoreErrorState,\n type LoadMoreLabels,\n type LoadMoreLoadingState,\n type LoadMoreMode,\n type LoadMoreReadyState,\n type LoadMoreRequest,\n type LoadMoreRequestHandler,\n type LoadMoreRequestOutcome,\n type LoadMoreRequestReason,\n type LoadMoreState,\n} from \"./load-more.js\";\n\nexport {\n collectionValidationDefaults,\n flattenCollectionItems,\n getCollectionNavigationIntent,\n getCollectionNavigationTarget,\n getCollectionTypeaheadMatch,\n isComboboxResultCurrent,\n reconcileSelectSelection,\n resolveComboboxSelectedItem,\n resolveCollectionItem,\n resolveSelectSelectedItem,\n validateCollection,\n type CollectionNavigationIntent,\n type CollectionSource,\n type SelectCollectionSectionDescriptor,\n type SelectCollectionSource,\n type CollectionTypeaheadOptions,\n type CollectionValidationOptions,\n type ComboboxCollectionState,\n type ComboboxState,\n type ReconcileSelectOptions,\n type SelectCollectionState,\n type SelectConfiguration,\n type SelectLabel,\n type SelectOpenChangeReason,\n type SelectOpenState,\n type SelectState,\n} from \"./collection.js\";\n\nexport {\n ACCENTS,\n THEMES,\n accentFill,\n accentTint,\n brandGradient,\n isThemePreference,\n onAccentFill,\n onBrandGradient,\n withAlpha,\n type AccentTone,\n type ResolvedTheme,\n type ThemeColors,\n type ThemePreference,\n} from \"./colors.js\";\n\nexport {\n backdrop,\n breakpoint,\n control,\n easing,\n fontFamily,\n fontWeight,\n glyph,\n heading,\n layer,\n layout,\n letterSpacing,\n motion,\n motionPreset,\n numeric,\n opacity,\n overlay,\n radius,\n scrim,\n shadow,\n spacing,\n spring,\n stateLayer,\n stroke,\n typography,\n type BackdropReference,\n type FontFamily,\n type FontWeight,\n type FontWeightValue,\n type GlyphSize,\n type HeadingLevel,\n type LetterSpacing,\n type NumericVariant,\n type ReducedMotionBehavior,\n type TextVariant,\n} from \"./foundations.js\";\n\nexport {\n resolveResponsiveValue,\n resolveWindowClass,\n validateResponsiveValue,\n windowClassOrder,\n type ResponsiveValue,\n type WindowClass,\n} from \"./responsive.js\";\n\nexport {\n gridDefaults,\n gridGaps,\n gridRecipe,\n resolveGridLayout,\n validateGridDescriptor,\n type GridDescriptor,\n type GridGap,\n type GridGapToken,\n type ResolveGridLayoutOptions,\n type ResolvedGridLayout,\n} from \"./grid.js\";\n\nexport {\n accordionRecipe,\n alertDialogRecipe,\n avatarRecipe,\n badgeRecipe,\n bottomNavigationRecipe,\n bottomCtaRecipe,\n buttonRecipe,\n cardRecipe,\n chipRecipe,\n comboboxRecipe,\n counterBadgeRecipe,\n dialogRecipe,\n dividerRecipe,\n emptyStateRecipe,\n fieldRecipe,\n formatCounterBadgeCount,\n iconButtonRecipe,\n iconRecipe,\n linkRecipe,\n listRecipe,\n listRowRecipe,\n loadMoreRecipe,\n menuRecipe,\n noticeRecipe,\n progressRecipe,\n searchFieldRecipe,\n selectRecipe,\n selectionGroupRecipe,\n sectionRecipe,\n segmentedControlRecipe,\n selectionControlRecipe,\n sheetRecipe,\n skeletonRecipe,\n spinnerRecipe,\n surfaceDefaults,\n surfaceGeometry,\n stackRecipe,\n statisticRecipe,\n surfaceRecipe,\n switchRecipe,\n tabsRecipe,\n textRecipe,\n toastRecipe,\n tooltipRecipe,\n topBarRecipe,\n type AccordionDensity,\n type AlertDialogTone,\n type AvatarShape,\n type AvatarSize,\n type BadgeSize,\n type BadgeTone,\n type BadgeVariant,\n type BottomNavigationDensity,\n type BottomNavigationDistribution,\n type BottomNavigationPresentation,\n type ButtonSize,\n type ButtonTone,\n type CardHeadingLevel,\n type ChipSize,\n type SelectDensity,\n type SelectSize,\n type CounterBadgeSize,\n type CounterBadgeTone,\n type CounterBadgeVariant,\n type DialogSize,\n type FieldShape,\n type FieldVariant,\n type IconButtonShape,\n type IconButtonSize,\n type IconTone,\n type IconWeight,\n type LinkTone,\n type LinkVariant,\n type LoadMoreDensity,\n type ListRowDensity,\n type MenuDensity,\n type MenuItemTone,\n type NoticeTone,\n type ProgressSize,\n type ProgressTone,\n type SearchFieldSize,\n type SegmentedControlSize,\n type SelectionControlKind,\n type SelectionControlPresentation,\n type SelectionControlSize,\n type SelectionGroupOrientation,\n type SelectionGroupPresentation,\n type SpinnerSize,\n type SpinnerTone,\n type StackAlign,\n type StackAxis,\n type StackGap,\n type StackJustify,\n type StatisticDensity,\n type StatisticPresentation,\n type SurfaceTone,\n type SurfacePadding,\n type SurfaceRadius,\n type SwitchSize,\n type TabSize,\n type TabsLayout,\n type TabsOverflow,\n type TextEmphasis,\n type TextTone,\n type ToastPlacement,\n type ToastTone,\n type ToastToneMark,\n} from \"./recipes.js\";\n\nexport {\n accentColor,\n resolveColorReference,\n solidAccentColor,\n themeColor,\n type AccentColorReference,\n type AccentFillReference,\n type ColorReference,\n type ColorReferencePalette,\n type ThemeColorReference,\n} from \"./color-references.js\";\n\nexport {\n componentCatalog,\n getComponentSurfaceStatus,\n recipeRegistry,\n summarizeComponentRoadmap,\n type ComponentCatalogEntry,\n type ComponentCategory,\n type ComponentName,\n type ComponentPlatform,\n type ComponentRoadmap,\n type ComponentRoadmapState,\n type ComponentSurface,\n type ComponentSurfaceMaturity,\n type ComponentSurfaceStatus,\n type ComponentStatus,\n type RecipeName,\n} from \"./catalog.js\";\n\nexport { designSystemVersion } from \"./version.js\";\n\nexport {\n antDesignReferenceComponents,\n antDesignReferenceSystem,\n getAntDesignReferencesFor,\n summarizeAntDesignCoverage,\n type AntDesignCategory,\n type AntDesignComponentName,\n type AntDesignReferenceComponent,\n type ReferenceCoverageSummary,\n type ReferenceRelationship,\n} from \"./component-references.js\";\n\nexport {\n componentDefinitions,\n componentIds,\n getComponentDefinition,\n type ComponentDefinition,\n type ComponentId,\n type ComponentKind,\n} from \"./component-definitions.js\";\n\nexport { semanticColors } from \"./semantic-colors.js\";\n\nexport {\n behaviorRegistry,\n checkboxBehaviorDefaults,\n comboboxBehaviorDefaults,\n getCheckboxNextState,\n getRadioNavigationTarget,\n getSelectionNavigationIntent,\n getTabNavigationIntent,\n getTabNavigationTarget,\n reconcileCheckboxSelection,\n reconcileRadioSelection,\n radioGroupBehaviorDefaults,\n resolveInitialRadioValue,\n resolveControlAccessibleName,\n resolveRadioTabStop,\n resolveInitialTabValue,\n selectionGroupBehaviorDefaults,\n selectBehaviorDefaults,\n tabsBehaviorDefaults,\n toggleCheckboxSelection,\n validateCheckboxSelection,\n validateRadioSelection,\n validateSelectionItems,\n type AsyncCollectionState,\n type AvailabilityState,\n type BehaviorContract,\n type BehaviorName,\n type BehaviorStateAxis,\n type CollectionItemDescriptor,\n type CollectionItemTone,\n type CollectionKey,\n type CollectionSectionDescriptor,\n type MenuItemDescriptor,\n type MenuSectionDescriptor,\n type CollectionSelectionModel,\n type ComboboxCommitReason,\n type ComboboxFiltering,\n type ComboboxInput,\n type ControlledComboboxInput,\n type ControlledSelectSelection,\n type ControlledCheckboxGroupSelection,\n type ControlledCheckboxState,\n type ControlledRadioGroupSelection,\n type ContentState,\n type ControlledTabsSelection,\n type InteractionState,\n type MixedCheckboxActivation,\n type MultipleSelectionModel,\n type NativeAccessibilityState,\n type NoSelectionModel,\n type SingleSelectionModel,\n type SelectItemDescriptor,\n type SelectSelection,\n type CheckboxGroupSelection,\n type CheckboxSelection,\n type CheckboxState,\n type RadioGroupSelection,\n type SelectionDirection,\n type SelectionGroupLabel,\n type SelectionItemDescriptor,\n type SelectionNavigationIntent,\n type SelectionOrientation,\n type TabDescriptor,\n type TabNavigationIntent,\n type TabsActivationMode,\n type TabsDirection,\n type TabsMountPolicy,\n type TabsOrientation,\n type TabsPanelMode,\n type TabsSelection,\n type UncontrolledTabsSelection,\n type UncontrolledComboboxInput,\n type UncontrolledSelectSelection,\n type UncontrolledCheckboxGroupSelection,\n type UncontrolledCheckboxState,\n type UncontrolledRadioGroupSelection,\n type ValidationState,\n type ValueState,\n type WebKeyboardKey,\n} from \"./behaviors.js\";\n\nexport {\n collectionItemContract,\n fieldFrameContract,\n floatingSurfaceContract,\n focusIndicatorContract,\n formSupportContract,\n} from \"./component-contracts.js\";\n\nexport {\n assertShowcaseCoverage,\n createShowcaseCoverage,\n createShowcaseManifest,\n getRequiredShowcaseScenarios,\n getRequiredShowcaseEvidence,\n getRequiredShowcaseSurfaces,\n getShowcaseEnvironmentInput,\n getShowcaseStoryId,\n showcaseEnvironmentMatrix,\n showcaseManifest,\n showcaseScenarios,\n summarizeShowcaseMaturity,\n type ShowcaseComponentEntry,\n type ShowcaseCoverageEntry,\n type ShowcaseDirection,\n type ShowcaseEnvironment,\n type ShowcaseEvidenceEntry,\n type ShowcaseEvidenceRequirement,\n type ShowcaseMotionPreference,\n type ShowcaseScenario,\n type ShowcaseScenarioId,\n type ShowcaseSurface,\n type ShowcaseTextScale,\n type ShowcaseTheme,\n} from \"./showcase.js\";\n\nexport {\n assertShowcaseStoryIds,\n compareShowcaseStoryIds,\n createDesignSystemEvidence,\n createDesignSystemEvidenceCoverage,\n defineDesignSystemEvidence,\n designSystemEvidenceSchemaVersion,\n getShowcaseStoryIdsForSurface,\n toShowcaseEvidenceEntries,\n type DesignSystemEvidenceItem,\n type DesignSystemEvidenceManifest,\n type DesignSystemEvidenceSource,\n type DesignSystemEvidenceSourceKind,\n type ShowcaseStoryIdComparison,\n} from \"./evidence.js\";\n\n/*\n Batch 2 — 계약과 recipe가 준비된 컴포넌트.\n\n catalog의 status는 여전히 `planned`다. 로드맵의 maturity gate가 `planned → beta` 승격에\n **실제 제품 vertical slice 한 번**을 요구하므로, 계약이 준비된 것과 검증된 것을 섞지\n 않는다. 여기 있는 심볼은 제품이 renderer를 붙일 수 있다는 뜻이고, 붙여서 검증되면\n 그때 리드가 catalog를 올린다.\n*/\nexport * from \"./breadcrumb.js\";\nexport * from \"./calendar.js\";\nexport * from \"./carousel.js\";\nexport * from \"./command-palette.js\";\nexport * from \"./design-system-provider.js\";\nexport * from \"./floating-action-button.js\";\nexport * from \"./content-state.js\";\nexport * from \"./data-table.js\";\nexport * from \"./mentions.js\";\nexport * from \"./transfer-list.js\";\nexport * from \"./tour.js\";\nexport * from \"./layout.js\";\nexport * from \"./otp-field.js\";\nexport * from \"./password-field.js\";\nexport * from \"./splitter.js\";\nexport * from \"./tree-select.js\";\nexport * from \"./date-picker.js\";\nexport * from \"./side-panel.js\";\nexport * from \"./file-picker.js\";\nexport * from \"./pagination.js\";\nexport * from \"./popover.js\";\nexport * from \"./upload-item.js\";\nexport * from \"./timeline.js\";\nexport * from \"./tree.js\";\nexport * from \"./steps.js\";\nexport * from \"./number-field.js\";\nexport * from \"./slider.js\";\nexport * from \"./form.js\";\nexport * from \"./tag.js\";\nexport * from \"./description-list.js\";\nexport * from \"./result.js\";\nexport * from \"./image.js\";\n\nexport * from \"./anchor.js\";\n\nexport * from \"./agreement.js\";\nexport * from \"./top.js\";\n\nexport * from \"./provider-button.js\";\nexport * from \"./auth-screen.js\";\n\nexport * from \"./heading.js\";\n\nexport * from \"./toggle-group.js\";\nexport * from \"./tags-input.js\";\n\nexport * from \"./skip-nav.js\";\nexport * from \"./bottom-info.js\";\nexport * from \"./sidebar.js\";\n\nexport * from \"./formatters.js\";\n\nexport * from \"./native-platform.js\";\n\nexport * from \"./date-range.js\";\n\nexport * from \"./text-formats.js\";\n\nexport * from \"./collapsible.js\";\nexport * from \"./asset.js\";\nexport * from \"./dataviz.js\";\nexport * from \"./menubar.js\";\nexport * from \"./context-menu.js\";\n"]}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/** Optional interaction contracts have no engine or catalog dependency. */
|
|
2
|
+
export type SortableItem = Readonly<{
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
}>;
|
|
7
|
+
export type ReorderIntent = Readonly<{
|
|
8
|
+
itemId: string;
|
|
9
|
+
fromIndex: number;
|
|
10
|
+
toIndex: number;
|
|
11
|
+
orderedIds: readonly string[];
|
|
12
|
+
source: "drag" | "keyboard" | "accessibility-action";
|
|
13
|
+
}>;
|
|
14
|
+
export type SortableLabels = Readonly<{
|
|
15
|
+
instructions: string;
|
|
16
|
+
dragStart: (item: SortableItem) => string;
|
|
17
|
+
dragCancel: string;
|
|
18
|
+
handle: (item: SortableItem) => string;
|
|
19
|
+
previous: (item: SortableItem) => string;
|
|
20
|
+
next: (item: SortableItem) => string;
|
|
21
|
+
position: (item: SortableItem, position: number, total: number) => string;
|
|
22
|
+
}>;
|
|
23
|
+
export declare function validateItems(items: readonly SortableItem[]): void;
|
|
24
|
+
export declare function reorderIntent(items: readonly SortableItem[], id: string, to: number, source: ReorderIntent["source"]): ReorderIntent | null;
|
|
25
|
+
export type RowAction = Readonly<{
|
|
26
|
+
id: string;
|
|
27
|
+
label: string;
|
|
28
|
+
intent?: "default" | "danger";
|
|
29
|
+
disabled?: boolean;
|
|
30
|
+
}>;
|
|
31
|
+
export declare function validateActions(actions: readonly RowAction[]): void;
|
|
32
|
+
export type CelebrationPreset = "small-burst" | "milestone";
|
|
33
|
+
export declare const celebrationRecipe: {
|
|
34
|
+
readonly "small-burst": {
|
|
35
|
+
readonly count: 32;
|
|
36
|
+
readonly duration: 1600;
|
|
37
|
+
};
|
|
38
|
+
readonly milestone: {
|
|
39
|
+
readonly count: 64;
|
|
40
|
+
readonly duration: 2400;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Particle colors: the primary plus the four theme status accents, resolved per theme by the renderer.
|
|
45
|
+
* The first adoption used primary + surfaceAccent; surfaceAccent is a pale surface tint, so 2026-09-30 device
|
|
46
|
+
* captures showed a sparse single-blue burst that barely read as a celebration. Status accents are already
|
|
47
|
+
* contrast-checked foreground hues in both themes, so no new palette is introduced.
|
|
48
|
+
*/
|
|
49
|
+
export declare const celebrationAccentTones: readonly ["info", "success", "warning", "attention"];
|
|
50
|
+
export declare function celebrationColors(primary: string, accents: Readonly<Record<(typeof celebrationAccentTones)[number], string>>): string[];
|
|
51
|
+
export declare function validateEventId(eventId: string): void;
|
|
52
|
+
export declare function validateCarousel(items: readonly SortableItem[], currentKey: string): number;
|
|
53
|
+
//# sourceMappingURL=interaction-adapters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interaction-adapters.d.ts","sourceRoot":"","sources":["../src/interaction-adapters.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AACvF,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAClF,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,sBAAsB,CAAC;CACtD,CAAC,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,MAAM,CAAC;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,MAAM,CAAC;IACvC,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,MAAM,CAAC;IACzC,IAAI,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,MAAM,CAAC;IACrC,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAC3E,CAAC,CAAC;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,GAAG,IAAI,CAGlE;AACD,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,aAAa,GAAG,IAAI,CAS3I;AACD,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AACnH,wBAAgB,eAAe,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,GAAG,IAAI,CAA4B;AAChG,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,WAAW,CAAC;AAG5D,eAAO,MAAM,iBAAiB;;;;;;;;;CAGpB,CAAC;AACX;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,sDAAuD,CAAC;AAC3F,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,CAEvI;AACD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAErD;AACD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAK3F"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export function validateItems(items) {
|
|
2
|
+
if (items.some(item => !item.id.trim() || !item.label.trim()) || new Set(items.map(item => item.id)).size !== items.length)
|
|
3
|
+
throw new TypeError("Items require unique nonempty IDs and localized labels");
|
|
4
|
+
}
|
|
5
|
+
export function reorderIntent(items, id, to, source) {
|
|
6
|
+
validateItems(items);
|
|
7
|
+
const from = items.findIndex(item => item.id === id);
|
|
8
|
+
if (from < 0 || !Number.isInteger(to) || to < 0 || to >= items.length || from === to)
|
|
9
|
+
return null;
|
|
10
|
+
// A disabled item is fixed in place, not merely missing a drag handle.
|
|
11
|
+
if (items.slice(Math.min(from, to), Math.max(from, to) + 1).some(item => item.disabled))
|
|
12
|
+
return null;
|
|
13
|
+
const orderedIds = items.map(item => item.id);
|
|
14
|
+
orderedIds.splice(to, 0, orderedIds.splice(from, 1)[0]);
|
|
15
|
+
return { itemId: id, fromIndex: from, toIndex: to, orderedIds, source };
|
|
16
|
+
}
|
|
17
|
+
export function validateActions(actions) { validateItems(actions); }
|
|
18
|
+
// Conservative recipes: bounded one-shot effects rather than an infinite
|
|
19
|
+
// celebratory layer. Device profiling is required before increasing these limits.
|
|
20
|
+
export const celebrationRecipe = {
|
|
21
|
+
"small-burst": { count: 32, duration: 1600 },
|
|
22
|
+
milestone: { count: 64, duration: 2400 },
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Particle colors: the primary plus the four theme status accents, resolved per theme by the renderer.
|
|
26
|
+
* The first adoption used primary + surfaceAccent; surfaceAccent is a pale surface tint, so 2026-09-30 device
|
|
27
|
+
* captures showed a sparse single-blue burst that barely read as a celebration. Status accents are already
|
|
28
|
+
* contrast-checked foreground hues in both themes, so no new palette is introduced.
|
|
29
|
+
*/
|
|
30
|
+
export const celebrationAccentTones = ["info", "success", "warning", "attention"];
|
|
31
|
+
export function celebrationColors(primary, accents) {
|
|
32
|
+
return [primary, ...celebrationAccentTones.map(tone => accents[tone])];
|
|
33
|
+
}
|
|
34
|
+
export function validateEventId(eventId) {
|
|
35
|
+
if (!eventId.trim())
|
|
36
|
+
throw new TypeError("Celebration eventId must not be empty");
|
|
37
|
+
}
|
|
38
|
+
export function validateCarousel(items, currentKey) {
|
|
39
|
+
validateItems(items);
|
|
40
|
+
const index = items.findIndex(item => item.id === currentKey);
|
|
41
|
+
if (index < 0)
|
|
42
|
+
throw new TypeError("Carousel currentKey must identify a slide");
|
|
43
|
+
return index;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=interaction-adapters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interaction-adapters.js","sourceRoot":"","sources":["../src/interaction-adapters.ts"],"names":[],"mappings":"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","sourcesContent":["/** Optional interaction contracts have no engine or catalog dependency. */\nexport type SortableItem = Readonly<{ id: string; label: string; disabled?: boolean }>;\nexport type ReorderIntent = Readonly<{\n itemId: string; fromIndex: number; toIndex: number; orderedIds: readonly string[];\n source: \"drag\" | \"keyboard\" | \"accessibility-action\";\n}>;\nexport type SortableLabels = Readonly<{\n instructions: string;\n dragStart: (item: SortableItem) => string;\n dragCancel: string;\n handle: (item: SortableItem) => string;\n previous: (item: SortableItem) => string;\n next: (item: SortableItem) => string;\n position: (item: SortableItem, position: number, total: number) => string;\n}>;\nexport function validateItems(items: readonly SortableItem[]): void {\n if (items.some(item => !item.id.trim() || !item.label.trim()) || new Set(items.map(item => item.id)).size !== items.length)\n throw new TypeError(\"Items require unique nonempty IDs and localized labels\");\n}\nexport function reorderIntent(items: readonly SortableItem[], id: string, to: number, source: ReorderIntent[\"source\"]): ReorderIntent | null {\n validateItems(items);\n const from = items.findIndex(item => item.id === id);\n if (from < 0 || !Number.isInteger(to) || to < 0 || to >= items.length || from === to) return null;\n // A disabled item is fixed in place, not merely missing a drag handle.\n if (items.slice(Math.min(from, to), Math.max(from, to) + 1).some(item => item.disabled)) return null;\n const orderedIds = items.map(item => item.id);\n orderedIds.splice(to, 0, orderedIds.splice(from, 1)[0]!);\n return { itemId: id, fromIndex: from, toIndex: to, orderedIds, source };\n}\nexport type RowAction = Readonly<{ id: string; label: string; intent?: \"default\" | \"danger\"; disabled?: boolean }>;\nexport function validateActions(actions: readonly RowAction[]): void { validateItems(actions); }\nexport type CelebrationPreset = \"small-burst\" | \"milestone\";\n// Conservative recipes: bounded one-shot effects rather than an infinite\n// celebratory layer. Device profiling is required before increasing these limits.\nexport const celebrationRecipe = {\n \"small-burst\": { count: 32, duration: 1600 },\n milestone: { count: 64, duration: 2400 },\n} as const;\n/**\n * Particle colors: the primary plus the four theme status accents, resolved per theme by the renderer.\n * The first adoption used primary + surfaceAccent; surfaceAccent is a pale surface tint, so 2026-09-30 device\n * captures showed a sparse single-blue burst that barely read as a celebration. Status accents are already\n * contrast-checked foreground hues in both themes, so no new palette is introduced.\n */\nexport const celebrationAccentTones = [\"info\", \"success\", \"warning\", \"attention\"] as const;\nexport function celebrationColors(primary: string, accents: Readonly<Record<(typeof celebrationAccentTones)[number], string>>): string[] {\n return [primary, ...celebrationAccentTones.map(tone => accents[tone])];\n}\nexport function validateEventId(eventId: string): void {\n if (!eventId.trim()) throw new TypeError(\"Celebration eventId must not be empty\");\n}\nexport function validateCarousel(items: readonly SortableItem[], currentKey: string): number {\n validateItems(items);\n const index = items.findIndex(item => item.id === currentKey);\n if (index < 0) throw new TypeError(\"Carousel currentKey must identify a slide\");\n return index;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"braid.d.ts","sourceRoot":"","sources":["../../../src/internal/thinking-orb/braid.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAO,SAAS,EAAE,MAAM,YAAY,CAAC;AAGjD,eAAO,MAAM,UAAU,EAAE,SA0CxB,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// Adapted from Thinking Orbs de85557 (MIT); see THIRD_PARTY_NOTICES.md.
|
|
2
|
+
// Braid: three strands plait around the sphere — the "weaving" state.
|
|
3
|
+
// Each strand runs pole to pole on a helix, and a radial breathing term
|
|
4
|
+
// makes them trade places, reading as the over/under of a plait.
|
|
5
|
+
import { fibDir, finalizeFrame, frac, makeProj, radiusScale } from './core.js';
|
|
6
|
+
export const frameBraid = (size, t, o) => {
|
|
7
|
+
const cx = size / 2;
|
|
8
|
+
const cy = size / 2;
|
|
9
|
+
const R = (size / 2) * 0.76;
|
|
10
|
+
const pt = makeProj(t * 0.4, 0.3, cx, cy, 1);
|
|
11
|
+
const rs = radiusScale(size, o.rsPow ?? 0.6);
|
|
12
|
+
const dots = [];
|
|
13
|
+
const ghostN = o.ghostN ?? 150;
|
|
14
|
+
for (let i = 0; i < ghostN; i++) {
|
|
15
|
+
const d = fibDir(i, ghostN);
|
|
16
|
+
const [px, py, z] = pt(d[0] * R, d[1] * R, d[2] * R);
|
|
17
|
+
const depth = (z / R + 1) / 2;
|
|
18
|
+
dots.push({ x: px, y: py, z, r: 0.8 * rs, white: 0.78, a: 0.1 + 0.22 * depth });
|
|
19
|
+
}
|
|
20
|
+
const strandN = o.strandN ?? 52;
|
|
21
|
+
const turns = o.turns ?? 3;
|
|
22
|
+
for (let s = 0; s < 3; s++) {
|
|
23
|
+
const phase = (s / 3) * 2 * Math.PI;
|
|
24
|
+
for (let i = 0; i < strandN; i++) {
|
|
25
|
+
// u walks pole to pole; the frac() drift slides the whole strand along
|
|
26
|
+
const u = (frac(i / strandN + t * 0.045) * 2 - 1) * 0.96;
|
|
27
|
+
const surf = Math.sqrt(Math.max(0, 1 - u * u));
|
|
28
|
+
const endFade = Math.min(1, (1 - Math.abs(u)) / 0.1);
|
|
29
|
+
const a = u * Math.PI * turns + phase;
|
|
30
|
+
// radial breathing: strands trade places — the over/under of a plait
|
|
31
|
+
const weave = 1 + 0.075 * Math.sin(u * Math.PI * turns * 2 + phase * 2 + t * 0.8);
|
|
32
|
+
const rr = surf * R * weave;
|
|
33
|
+
const [px, py, zr] = pt(Math.cos(a) * rr, u * R * weave, Math.sin(a) * rr);
|
|
34
|
+
const depth = (zr / R + 1) / 2;
|
|
35
|
+
dots.push({
|
|
36
|
+
x: px,
|
|
37
|
+
y: py,
|
|
38
|
+
z: zr,
|
|
39
|
+
r: ((o.rBase ?? 1.2) + (o.rDepth ?? 1.8) * depth) * rs,
|
|
40
|
+
white: 0.55 - 0.45 * depth,
|
|
41
|
+
a: endFade * (0.45 + 0.55 * depth)
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return finalizeFrame(dots, [], o.rMin);
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=braid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"braid.js","sourceRoot":"","sources":["../../../src/internal/thinking-orb/braid.ts"],"names":[],"mappings":"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","sourcesContent":["// Adapted from Thinking Orbs de85557 (MIT); see THIRD_PARTY_NOTICES.md.\n// Braid: three strands plait around the sphere — the \"weaving\" state.\n// Each strand runs pole to pole on a helix, and a radial breathing term\n// makes them trade places, reading as the over/under of a plait.\n\nimport type { Dot, ModeFrame } from './types.js';\nimport { fibDir, finalizeFrame, frac, makeProj, radiusScale } from './core.js';\n\nexport const frameBraid: ModeFrame = (size, t, o) => {\n const cx = size / 2;\n const cy = size / 2;\n const R = (size / 2) * 0.76;\n const pt = makeProj(t * 0.4, 0.3, cx, cy, 1);\n const rs = radiusScale(size, o.rsPow ?? 0.6);\n\n const dots: Dot[] = [];\n const ghostN = o.ghostN ?? 150;\n for (let i = 0; i < ghostN; i++) {\n const d = fibDir(i, ghostN);\n const [px, py, z] = pt(d[0] * R, d[1] * R, d[2] * R);\n const depth = (z / R + 1) / 2;\n dots.push({ x: px, y: py, z, r: 0.8 * rs, white: 0.78, a: 0.1 + 0.22 * depth });\n }\n\n const strandN = o.strandN ?? 52;\n const turns = o.turns ?? 3;\n for (let s = 0; s < 3; s++) {\n const phase = (s / 3) * 2 * Math.PI;\n for (let i = 0; i < strandN; i++) {\n // u walks pole to pole; the frac() drift slides the whole strand along\n const u = (frac(i / strandN + t * 0.045) * 2 - 1) * 0.96;\n const surf = Math.sqrt(Math.max(0, 1 - u * u));\n const endFade = Math.min(1, (1 - Math.abs(u)) / 0.1);\n const a = u * Math.PI * turns + phase;\n // radial breathing: strands trade places — the over/under of a plait\n const weave = 1 + 0.075 * Math.sin(u * Math.PI * turns * 2 + phase * 2 + t * 0.8);\n const rr = surf * R * weave;\n const [px, py, zr] = pt(Math.cos(a) * rr, u * R * weave, Math.sin(a) * rr);\n const depth = (zr / R + 1) / 2;\n dots.push({\n x: px,\n y: py,\n z: zr,\n r: ((o.rBase ?? 1.2) + (o.rDepth ?? 1.8) * depth) * rs,\n white: 0.55 - 0.45 * depth,\n a: endFade * (0.45 + 0.55 * depth)\n });\n }\n }\n return finalizeFrame(dots, [], o.rMin);\n};\n"]}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export interface Dot {
|
|
2
|
+
x: number;
|
|
3
|
+
y: number;
|
|
4
|
+
z: number;
|
|
5
|
+
r: number;
|
|
6
|
+
/** Ink value: 0 = darkest ink on paper. Mirrored on dark themes. */
|
|
7
|
+
white: number;
|
|
8
|
+
a?: number;
|
|
9
|
+
}
|
|
10
|
+
/** A stroked edge between two projected points (the `connecting` web). */
|
|
11
|
+
export interface Line {
|
|
12
|
+
x1: number;
|
|
13
|
+
y1: number;
|
|
14
|
+
x2: number;
|
|
15
|
+
y2: number;
|
|
16
|
+
/** Ink value, same convention as `Dot.white`. */
|
|
17
|
+
white: number;
|
|
18
|
+
a?: number;
|
|
19
|
+
w: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* One rendered instant: a complete, final set of draw instructions.
|
|
23
|
+
* `dots` is already z-sorted into draw order and radius-clamped; `lines`
|
|
24
|
+
* are drawn first. Nothing here needs further interpretation, which is what
|
|
25
|
+
* makes a frame portable to any 2D renderer.
|
|
26
|
+
*/
|
|
27
|
+
export interface OrbFrame {
|
|
28
|
+
dots: Dot[];
|
|
29
|
+
lines: Line[];
|
|
30
|
+
}
|
|
31
|
+
export type Projector = (x: number, y: number, z: number) => [number, number, number];
|
|
32
|
+
export declare function lerp(a: number, b: number, f: number): number;
|
|
33
|
+
export declare function frac(x: number): number;
|
|
34
|
+
/** Value noise on a 2D lattice — smooth, deterministic, cheap. */
|
|
35
|
+
export declare function vnoise(x: number, y: number): number;
|
|
36
|
+
/** Deterministic hash in [0, 1). */
|
|
37
|
+
export declare function hashD(a: number, b: number): number;
|
|
38
|
+
/** Stable directions on a unit sphere (Fibonacci lattice). */
|
|
39
|
+
export declare function fibDir(i: number, n: number): [number, number, number];
|
|
40
|
+
/** Shortest signed angular distance, wrapped to (-π, π]. */
|
|
41
|
+
export declare function angleDelta(a: number, b: number): number;
|
|
42
|
+
/** Shared spin + tilt + orthographic projection. */
|
|
43
|
+
export declare function makeProj(yaw: number, tilt: number, cx: number, cy: number, scale: number): Projector;
|
|
44
|
+
/**
|
|
45
|
+
* Turn raw mode output into a finished frame: drop invisible marks, clamp
|
|
46
|
+
* radii to the mode's floor, and z-sort far→near into draw order.
|
|
47
|
+
*
|
|
48
|
+
* This runs in the GEOMETRY step, not the painter, so a frame is a complete
|
|
49
|
+
* set of draw instructions: every value is final and the array order is the
|
|
50
|
+
* order to draw in. That is what lets the RN and SwiftUI ports share this
|
|
51
|
+
* output verbatim — a port draws the list, it never re-derives anything —
|
|
52
|
+
* and what lets the golden-vector tests compare numbers instead of pixels.
|
|
53
|
+
*/
|
|
54
|
+
export declare function finalizeFrame(dots: Dot[], lines: Line[], rMin?: number): OrbFrame;
|
|
55
|
+
/**
|
|
56
|
+
* Dot radii were tuned for a 300pt frame; sub-linear scaling keeps small
|
|
57
|
+
* spinners legible. Lower pow = radii shrink less with size.
|
|
58
|
+
*/
|
|
59
|
+
export declare function radiusScale(size: number, pow: number): number;
|
|
60
|
+
//# sourceMappingURL=core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/internal/thinking-orb/core.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,GAAG;IAClB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAED,0EAA0E;AAC1E,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;CACX;AAED;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,KAAK,EAAE,IAAI,EAAE,CAAC;CACf;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEtF,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEtC;AAED,kEAAkE;AAClE,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAYnD;AAED,oCAAoC;AACpC,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAGlD;AAED,8DAA8D;AAC9D,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAMrE;AAED,4DAA4D;AAC5D,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,oDAAoD;AACpD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAYpG;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,SAAM,GAAG,QAAQ,CAS9E;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7D"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// Adapted from Thinking Orbs de85557 (MIT); see THIRD_PARTY_NOTICES.md.
|
|
2
|
+
// Shared primitives for the dotted 3D thought-orbs. Ported from inkform
|
|
3
|
+
// (PlotterLab's HalftoneSphere lineage): honestly 3D — rotated,
|
|
4
|
+
// depth-shaded, z-sorted. Depth is carried by dot size and ink weight
|
|
5
|
+
// alone. Plain 2D canvas fills only: no ctx.filter, no SVG filters, so
|
|
6
|
+
// every mode renders identically in Chrome, Safari and Firefox.
|
|
7
|
+
export function lerp(a, b, f) {
|
|
8
|
+
return a + (b - a) * f;
|
|
9
|
+
}
|
|
10
|
+
export function frac(x) {
|
|
11
|
+
return x - Math.floor(x);
|
|
12
|
+
}
|
|
13
|
+
/** Value noise on a 2D lattice — smooth, deterministic, cheap. */
|
|
14
|
+
export function vnoise(x, y) {
|
|
15
|
+
const xi = Math.floor(x);
|
|
16
|
+
const yi = Math.floor(y);
|
|
17
|
+
let fx = x - xi;
|
|
18
|
+
let fy = y - yi;
|
|
19
|
+
fx = fx * fx * (3 - 2 * fx);
|
|
20
|
+
fy = fy * fy * (3 - 2 * fy);
|
|
21
|
+
const a = hashD(xi, yi);
|
|
22
|
+
const b = hashD(xi + 1, yi);
|
|
23
|
+
const c = hashD(xi, yi + 1);
|
|
24
|
+
const d = hashD(xi + 1, yi + 1);
|
|
25
|
+
return a + (b - a) * fx + (c - a) * fy + (a - b - c + d) * fx * fy;
|
|
26
|
+
}
|
|
27
|
+
/** Deterministic hash in [0, 1). */
|
|
28
|
+
export function hashD(a, b) {
|
|
29
|
+
const h = Math.sin(a * 12.9898 + b * 78.233) * 43758.5453;
|
|
30
|
+
return h - Math.floor(h);
|
|
31
|
+
}
|
|
32
|
+
/** Stable directions on a unit sphere (Fibonacci lattice). */
|
|
33
|
+
export function fibDir(i, n) {
|
|
34
|
+
const golden = Math.PI * (3 - Math.sqrt(5));
|
|
35
|
+
const y = 1 - (2 * (i + 0.5)) / n;
|
|
36
|
+
const rad = Math.sqrt(1 - y * y);
|
|
37
|
+
const a = i * golden;
|
|
38
|
+
return [rad * Math.cos(a), y, rad * Math.sin(a)];
|
|
39
|
+
}
|
|
40
|
+
/** Shortest signed angular distance, wrapped to (-π, π]. */
|
|
41
|
+
export function angleDelta(a, b) {
|
|
42
|
+
return Math.atan2(Math.sin(a - b), Math.cos(a - b));
|
|
43
|
+
}
|
|
44
|
+
/** Shared spin + tilt + orthographic projection. */
|
|
45
|
+
export function makeProj(yaw, tilt, cx, cy, scale) {
|
|
46
|
+
const st = Math.sin(tilt);
|
|
47
|
+
const ct = Math.cos(tilt);
|
|
48
|
+
const sy = Math.sin(yaw);
|
|
49
|
+
const cyw = Math.cos(yaw);
|
|
50
|
+
return (x, y, z) => {
|
|
51
|
+
const x1 = x * cyw + z * sy;
|
|
52
|
+
const z1 = -x * sy + z * cyw;
|
|
53
|
+
const y1 = y * ct - z1 * st;
|
|
54
|
+
const z2 = y * st + z1 * ct;
|
|
55
|
+
return [cx + x1 * scale, cy - y1 * scale, z2];
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Turn raw mode output into a finished frame: drop invisible marks, clamp
|
|
60
|
+
* radii to the mode's floor, and z-sort far→near into draw order.
|
|
61
|
+
*
|
|
62
|
+
* This runs in the GEOMETRY step, not the painter, so a frame is a complete
|
|
63
|
+
* set of draw instructions: every value is final and the array order is the
|
|
64
|
+
* order to draw in. That is what lets the RN and SwiftUI ports share this
|
|
65
|
+
* output verbatim — a port draws the list, it never re-derives anything —
|
|
66
|
+
* and what lets the golden-vector tests compare numbers instead of pixels.
|
|
67
|
+
*/
|
|
68
|
+
export function finalizeFrame(dots, lines, rMin = 0.3) {
|
|
69
|
+
const visible = [];
|
|
70
|
+
for (const d of dots) {
|
|
71
|
+
if ((d.a ?? 1) < 0.02)
|
|
72
|
+
continue;
|
|
73
|
+
d.r = Math.max(rMin, d.r);
|
|
74
|
+
visible.push(d);
|
|
75
|
+
}
|
|
76
|
+
visible.sort((a, b) => a.z - b.z);
|
|
77
|
+
return { dots: visible, lines: lines.filter((l) => (l.a ?? 1) >= 0.02) };
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Dot radii were tuned for a 300pt frame; sub-linear scaling keeps small
|
|
81
|
+
* spinners legible. Lower pow = radii shrink less with size.
|
|
82
|
+
*/
|
|
83
|
+
export function radiusScale(size, pow) {
|
|
84
|
+
return (size / 300) ** pow;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/internal/thinking-orb/core.ts"],"names":[],"mappings":"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","sourcesContent":["// Adapted from Thinking Orbs de85557 (MIT); see THIRD_PARTY_NOTICES.md.\n// Shared primitives for the dotted 3D thought-orbs. Ported from inkform\n// (PlotterLab's HalftoneSphere lineage): honestly 3D — rotated,\n// depth-shaded, z-sorted. Depth is carried by dot size and ink weight\n// alone. Plain 2D canvas fills only: no ctx.filter, no SVG filters, so\n// every mode renders identically in Chrome, Safari and Firefox.\n\nexport interface Dot {\n x: number;\n y: number;\n z: number;\n r: number;\n /** Ink value: 0 = darkest ink on paper. Mirrored on dark themes. */\n white: number;\n a?: number;\n}\n\n/** A stroked edge between two projected points (the `connecting` web). */\nexport interface Line {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n /** Ink value, same convention as `Dot.white`. */\n white: number;\n a?: number;\n w: number;\n}\n\n/**\n * One rendered instant: a complete, final set of draw instructions.\n * `dots` is already z-sorted into draw order and radius-clamped; `lines`\n * are drawn first. Nothing here needs further interpretation, which is what\n * makes a frame portable to any 2D renderer.\n */\nexport interface OrbFrame {\n dots: Dot[];\n lines: Line[];\n}\n\nexport type Projector = (x: number, y: number, z: number) => [number, number, number];\n\nexport function lerp(a: number, b: number, f: number): number {\n return a + (b - a) * f;\n}\n\nexport function frac(x: number): number {\n return x - Math.floor(x);\n}\n\n/** Value noise on a 2D lattice — smooth, deterministic, cheap. */\nexport function vnoise(x: number, y: number): number {\n const xi = Math.floor(x);\n const yi = Math.floor(y);\n let fx = x - xi;\n let fy = y - yi;\n fx = fx * fx * (3 - 2 * fx);\n fy = fy * fy * (3 - 2 * fy);\n const a = hashD(xi, yi);\n const b = hashD(xi + 1, yi);\n const c = hashD(xi, yi + 1);\n const d = hashD(xi + 1, yi + 1);\n return a + (b - a) * fx + (c - a) * fy + (a - b - c + d) * fx * fy;\n}\n\n/** Deterministic hash in [0, 1). */\nexport function hashD(a: number, b: number): number {\n const h = Math.sin(a * 12.9898 + b * 78.233) * 43758.5453;\n return h - Math.floor(h);\n}\n\n/** Stable directions on a unit sphere (Fibonacci lattice). */\nexport function fibDir(i: number, n: number): [number, number, number] {\n const golden = Math.PI * (3 - Math.sqrt(5));\n const y = 1 - (2 * (i + 0.5)) / n;\n const rad = Math.sqrt(1 - y * y);\n const a = i * golden;\n return [rad * Math.cos(a), y, rad * Math.sin(a)];\n}\n\n/** Shortest signed angular distance, wrapped to (-π, π]. */\nexport function angleDelta(a: number, b: number): number {\n return Math.atan2(Math.sin(a - b), Math.cos(a - b));\n}\n\n/** Shared spin + tilt + orthographic projection. */\nexport function makeProj(yaw: number, tilt: number, cx: number, cy: number, scale: number): Projector {\n const st = Math.sin(tilt);\n const ct = Math.cos(tilt);\n const sy = Math.sin(yaw);\n const cyw = Math.cos(yaw);\n return (x, y, z) => {\n const x1 = x * cyw + z * sy;\n const z1 = -x * sy + z * cyw;\n const y1 = y * ct - z1 * st;\n const z2 = y * st + z1 * ct;\n return [cx + x1 * scale, cy - y1 * scale, z2];\n };\n}\n\n/**\n * Turn raw mode output into a finished frame: drop invisible marks, clamp\n * radii to the mode's floor, and z-sort far→near into draw order.\n *\n * This runs in the GEOMETRY step, not the painter, so a frame is a complete\n * set of draw instructions: every value is final and the array order is the\n * order to draw in. That is what lets the RN and SwiftUI ports share this\n * output verbatim — a port draws the list, it never re-derives anything —\n * and what lets the golden-vector tests compare numbers instead of pixels.\n */\nexport function finalizeFrame(dots: Dot[], lines: Line[], rMin = 0.3): OrbFrame {\n const visible: Dot[] = [];\n for (const d of dots) {\n if ((d.a ?? 1) < 0.02) continue;\n d.r = Math.max(rMin, d.r);\n visible.push(d);\n }\n visible.sort((a, b) => a.z - b.z);\n return { dots: visible, lines: lines.filter((l) => (l.a ?? 1) >= 0.02) };\n}\n\n/**\n * Dot radii were tuned for a 300pt frame; sub-linear scaling keeps small\n * spinners legible. Lower pow = radii shrink less with size.\n */\nexport function radiusScale(size: number, pow: number): number {\n return (size / 300) ** pow;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lattice.d.ts","sourceRoot":"","sources":["../../../src/internal/thinking-orb/lattice.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAO,SAAS,EAAE,MAAM,YAAY,CAAC;AAoFjD,eAAO,MAAM,UAAU,EAAE,SAuCxB,CAAC;AAIF,eAAO,MAAM,UAAU,EAAE,SAkCxB,CAAC;AAIF,eAAO,MAAM,SAAS,EAAE,SAmCvB,CAAC"}
|