@lockin90/ui-native 0.0.0-stage → 1.0.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/lib/commonjs/components/Accordion.js +144 -0
- package/lib/commonjs/components/Accordion.js.map +1 -0
- package/lib/commonjs/components/AchievementBadge.js +225 -0
- package/lib/commonjs/components/AchievementBadge.js.map +1 -0
- package/lib/commonjs/components/Alert.js +232 -0
- package/lib/commonjs/components/Alert.js.map +1 -0
- package/lib/commonjs/components/AreaChart.js +506 -0
- package/lib/commonjs/components/AreaChart.js.map +1 -0
- package/lib/commonjs/components/AuroraBackground.js +267 -0
- package/lib/commonjs/components/AuroraBackground.js.map +1 -0
- package/lib/commonjs/components/Avatar.js +187 -0
- package/lib/commonjs/components/Avatar.js.map +1 -0
- package/lib/commonjs/components/AvatarStack.js +95 -0
- package/lib/commonjs/components/AvatarStack.js.map +1 -0
- package/lib/commonjs/components/BackLink.js +77 -0
- package/lib/commonjs/components/BackLink.js.map +1 -0
- package/lib/commonjs/components/Badge.js +136 -0
- package/lib/commonjs/components/Badge.js.map +1 -0
- package/lib/commonjs/components/BarChart.js +641 -0
- package/lib/commonjs/components/BarChart.js.map +1 -0
- package/lib/commonjs/components/BarFill.js +55 -0
- package/lib/commonjs/components/BarFill.js.map +1 -0
- package/lib/commonjs/components/BeeswarmChart.js +615 -0
- package/lib/commonjs/components/BeeswarmChart.js.map +1 -0
- package/lib/commonjs/components/BiomarkerRange.js +610 -0
- package/lib/commonjs/components/BiomarkerRange.js.map +1 -0
- package/lib/commonjs/components/BodyBattery.js +563 -0
- package/lib/commonjs/components/BodyBattery.js.map +1 -0
- package/lib/commonjs/components/BrandMark.js +184 -0
- package/lib/commonjs/components/BrandMark.js.map +1 -0
- package/lib/commonjs/components/BulletChart.js +406 -0
- package/lib/commonjs/components/BulletChart.js.map +1 -0
- package/lib/commonjs/components/Button.js +154 -0
- package/lib/commonjs/components/Button.js.map +1 -0
- package/lib/commonjs/components/CaffeineClock.js +491 -0
- package/lib/commonjs/components/CaffeineClock.js.map +1 -0
- package/lib/commonjs/components/Card.js +142 -0
- package/lib/commonjs/components/Card.js.map +1 -0
- package/lib/commonjs/components/CharCounter.js +106 -0
- package/lib/commonjs/components/CharCounter.js.map +1 -0
- package/lib/commonjs/components/ChartState.js +554 -0
- package/lib/commonjs/components/ChartState.js.map +1 -0
- package/lib/commonjs/components/Checkbox.js +180 -0
- package/lib/commonjs/components/Checkbox.js.map +1 -0
- package/lib/commonjs/components/Chip.js +218 -0
- package/lib/commonjs/components/Chip.js.map +1 -0
- package/lib/commonjs/components/ChoiceChip.js +133 -0
- package/lib/commonjs/components/ChoiceChip.js.map +1 -0
- package/lib/commonjs/components/CodeBlock.js +126 -0
- package/lib/commonjs/components/CodeBlock.js.map +1 -0
- package/lib/commonjs/components/CodeField.js +129 -0
- package/lib/commonjs/components/CodeField.js.map +1 -0
- package/lib/commonjs/components/ColorPicker.js +181 -0
- package/lib/commonjs/components/ColorPicker.js.map +1 -0
- package/lib/commonjs/components/ComboChart.js +419 -0
- package/lib/commonjs/components/ComboChart.js.map +1 -0
- package/lib/commonjs/components/Combobox.js +108 -0
- package/lib/commonjs/components/Combobox.js.map +1 -0
- package/lib/commonjs/components/CompareChart.js +627 -0
- package/lib/commonjs/components/CompareChart.js.map +1 -0
- package/lib/commonjs/components/CompositeChart.js +654 -0
- package/lib/commonjs/components/CompositeChart.js.map +1 -0
- package/lib/commonjs/components/Countdown.js +152 -0
- package/lib/commonjs/components/Countdown.js.map +1 -0
- package/lib/commonjs/components/CreditCardVisual.js +167 -0
- package/lib/commonjs/components/CreditCardVisual.js.map +1 -0
- package/lib/commonjs/components/DateField.js +365 -0
- package/lib/commonjs/components/DateField.js.map +1 -0
- package/lib/commonjs/components/DayTimelineBlocks.js +253 -0
- package/lib/commonjs/components/DayTimelineBlocks.js.map +1 -0
- package/lib/commonjs/components/DayWheel.js +467 -0
- package/lib/commonjs/components/DayWheel.js.map +1 -0
- package/lib/commonjs/components/DeltaPill.js +154 -0
- package/lib/commonjs/components/DeltaPill.js.map +1 -0
- package/lib/commonjs/components/DistributionChart.js +776 -0
- package/lib/commonjs/components/DistributionChart.js.map +1 -0
- package/lib/commonjs/components/Divider.js +74 -0
- package/lib/commonjs/components/Divider.js.map +1 -0
- package/lib/commonjs/components/DonutChart.js +337 -0
- package/lib/commonjs/components/DonutChart.js.map +1 -0
- package/lib/commonjs/components/DotsLoader.js +94 -0
- package/lib/commonjs/components/DotsLoader.js.map +1 -0
- package/lib/commonjs/components/EffectAttributionLine.js +105 -0
- package/lib/commonjs/components/EffectAttributionLine.js.map +1 -0
- package/lib/commonjs/components/EmptyState.js +120 -0
- package/lib/commonjs/components/EmptyState.js.map +1 -0
- package/lib/commonjs/components/EngagementBar.js +122 -0
- package/lib/commonjs/components/EngagementBar.js.map +1 -0
- package/lib/commonjs/components/EnvironmentChart.js +573 -0
- package/lib/commonjs/components/EnvironmentChart.js.map +1 -0
- package/lib/commonjs/components/Eyebrow.js +32 -0
- package/lib/commonjs/components/Eyebrow.js.map +1 -0
- package/lib/commonjs/components/FocalPointPicker.js +196 -0
- package/lib/commonjs/components/FocalPointPicker.js.map +1 -0
- package/lib/commonjs/components/FollowButton.js +95 -0
- package/lib/commonjs/components/FollowButton.js.map +1 -0
- package/lib/commonjs/components/ForecastCallout.js +116 -0
- package/lib/commonjs/components/ForecastCallout.js.map +1 -0
- package/lib/commonjs/components/FormField.js +204 -0
- package/lib/commonjs/components/FormField.js.map +1 -0
- package/lib/commonjs/components/FunnelChart.js +260 -0
- package/lib/commonjs/components/FunnelChart.js.map +1 -0
- package/lib/commonjs/components/Gauge.js +252 -0
- package/lib/commonjs/components/Gauge.js.map +1 -0
- package/lib/commonjs/components/GradientText.js +136 -0
- package/lib/commonjs/components/GradientText.js.map +1 -0
- package/lib/commonjs/components/Heatmap.js +419 -0
- package/lib/commonjs/components/Heatmap.js.map +1 -0
- package/lib/commonjs/components/Highlight.js +55 -0
- package/lib/commonjs/components/Highlight.js.map +1 -0
- package/lib/commonjs/components/Hypnogram.js +842 -0
- package/lib/commonjs/components/Hypnogram.js.map +1 -0
- package/lib/commonjs/components/Icon.js +486 -0
- package/lib/commonjs/components/Icon.js.map +1 -0
- package/lib/commonjs/components/Input.js +142 -0
- package/lib/commonjs/components/Input.js.map +1 -0
- package/lib/commonjs/components/InsightCard.js +119 -0
- package/lib/commonjs/components/InsightCard.js.map +1 -0
- package/lib/commonjs/components/KeyValue.js +93 -0
- package/lib/commonjs/components/KeyValue.js.map +1 -0
- package/lib/commonjs/components/LeaderboardRow.js +140 -0
- package/lib/commonjs/components/LeaderboardRow.js.map +1 -0
- package/lib/commonjs/components/LineChart.js +1544 -0
- package/lib/commonjs/components/LineChart.js.map +1 -0
- package/lib/commonjs/components/ListRow.js +122 -0
- package/lib/commonjs/components/ListRow.js.map +1 -0
- package/lib/commonjs/components/Menu.js +183 -0
- package/lib/commonjs/components/Menu.js.map +1 -0
- package/lib/commonjs/components/MessageBubble.js +117 -0
- package/lib/commonjs/components/MessageBubble.js.map +1 -0
- package/lib/commonjs/components/MessageComposer.js +212 -0
- package/lib/commonjs/components/MessageComposer.js.map +1 -0
- package/lib/commonjs/components/MetaphorWidget.js +1053 -0
- package/lib/commonjs/components/MetaphorWidget.js.map +1 -0
- package/lib/commonjs/components/Meter.js +173 -0
- package/lib/commonjs/components/Meter.js.map +1 -0
- package/lib/commonjs/components/MetricTile.js +268 -0
- package/lib/commonjs/components/MetricTile.js.map +1 -0
- package/lib/commonjs/components/MiniRing.js +30 -0
- package/lib/commonjs/components/MiniRing.js.map +1 -0
- package/lib/commonjs/components/Modal.js +153 -0
- package/lib/commonjs/components/Modal.js.map +1 -0
- package/lib/commonjs/components/MuscleDiagram.js +326 -0
- package/lib/commonjs/components/MuscleDiagram.js.map +1 -0
- package/lib/commonjs/components/NoteField.js +73 -0
- package/lib/commonjs/components/NoteField.js.map +1 -0
- package/lib/commonjs/components/NotificationRow.js +234 -0
- package/lib/commonjs/components/NotificationRow.js.map +1 -0
- package/lib/commonjs/components/Pagination.js +212 -0
- package/lib/commonjs/components/Pagination.js.map +1 -0
- package/lib/commonjs/components/PasswordInput.js +120 -0
- package/lib/commonjs/components/PasswordInput.js.map +1 -0
- package/lib/commonjs/components/PasswordStrengthMeter.js +108 -0
- package/lib/commonjs/components/PasswordStrengthMeter.js.map +1 -0
- package/lib/commonjs/components/PendingPatternCard.js +182 -0
- package/lib/commonjs/components/PendingPatternCard.js.map +1 -0
- package/lib/commonjs/components/PhaseWheel.js +704 -0
- package/lib/commonjs/components/PhaseWheel.js.map +1 -0
- package/lib/commonjs/components/PkChart.js +566 -0
- package/lib/commonjs/components/PkChart.js.map +1 -0
- package/lib/commonjs/components/Popover.js +234 -0
- package/lib/commonjs/components/Popover.js.map +1 -0
- package/lib/commonjs/components/PrBadge.js +71 -0
- package/lib/commonjs/components/PrBadge.js.map +1 -0
- package/lib/commonjs/components/PrCard.js +150 -0
- package/lib/commonjs/components/PrCard.js.map +1 -0
- package/lib/commonjs/components/PricingTierCard.js +237 -0
- package/lib/commonjs/components/PricingTierCard.js.map +1 -0
- package/lib/commonjs/components/ProGate.js +235 -0
- package/lib/commonjs/components/ProGate.js.map +1 -0
- package/lib/commonjs/components/ProgressBar.js +515 -0
- package/lib/commonjs/components/ProgressBar.js.map +1 -0
- package/lib/commonjs/components/Pulse.js +36 -0
- package/lib/commonjs/components/Pulse.js.map +1 -0
- package/lib/commonjs/components/QRCode.js +519 -0
- package/lib/commonjs/components/QRCode.js.map +1 -0
- package/lib/commonjs/components/RadarChart.js +492 -0
- package/lib/commonjs/components/RadarChart.js.map +1 -0
- package/lib/commonjs/components/RangeBar.js +191 -0
- package/lib/commonjs/components/RangeBar.js.map +1 -0
- package/lib/commonjs/components/ReauthDialog.js +261 -0
- package/lib/commonjs/components/ReauthDialog.js.map +1 -0
- package/lib/commonjs/components/RestTimer.js +246 -0
- package/lib/commonjs/components/RestTimer.js.map +1 -0
- package/lib/commonjs/components/RichText.js +81 -0
- package/lib/commonjs/components/RichText.js.map +1 -0
- package/lib/commonjs/components/RichTextEditor.js +274 -0
- package/lib/commonjs/components/RichTextEditor.js.map +1 -0
- package/lib/commonjs/components/Ring.js +239 -0
- package/lib/commonjs/components/Ring.js.map +1 -0
- package/lib/commonjs/components/RoseChart.js +376 -0
- package/lib/commonjs/components/RoseChart.js.map +1 -0
- package/lib/commonjs/components/SankeyChart.js +652 -0
- package/lib/commonjs/components/SankeyChart.js.map +1 -0
- package/lib/commonjs/components/ScatterChart.js +432 -0
- package/lib/commonjs/components/ScatterChart.js.map +1 -0
- package/lib/commonjs/components/ScrollProgress.js +66 -0
- package/lib/commonjs/components/ScrollProgress.js.map +1 -0
- package/lib/commonjs/components/SectionDivider.js +59 -0
- package/lib/commonjs/components/SectionDivider.js.map +1 -0
- package/lib/commonjs/components/SectionHeader.js +53 -0
- package/lib/commonjs/components/SectionHeader.js.map +1 -0
- package/lib/commonjs/components/SegmentedTabs.js +336 -0
- package/lib/commonjs/components/SegmentedTabs.js.map +1 -0
- package/lib/commonjs/components/Select.js +380 -0
- package/lib/commonjs/components/Select.js.map +1 -0
- package/lib/commonjs/components/SessionBanner.js +220 -0
- package/lib/commonjs/components/SessionBanner.js.map +1 -0
- package/lib/commonjs/components/SessionChart.js +1046 -0
- package/lib/commonjs/components/SessionChart.js.map +1 -0
- package/lib/commonjs/components/SetTable.js +351 -0
- package/lib/commonjs/components/SetTable.js.map +1 -0
- package/lib/commonjs/components/ShareCard.js +227 -0
- package/lib/commonjs/components/ShareCard.js.map +1 -0
- package/lib/commonjs/components/Sheet.js +220 -0
- package/lib/commonjs/components/Sheet.js.map +1 -0
- package/lib/commonjs/components/Skeleton.js +28 -0
- package/lib/commonjs/components/Skeleton.js.map +1 -0
- package/lib/commonjs/components/Slider.js +173 -0
- package/lib/commonjs/components/Slider.js.map +1 -0
- package/lib/commonjs/components/Sortable.js +230 -0
- package/lib/commonjs/components/Sortable.js.map +1 -0
- package/lib/commonjs/components/SourceChip.js +111 -0
- package/lib/commonjs/components/SourceChip.js.map +1 -0
- package/lib/commonjs/components/Sparkline.js +110 -0
- package/lib/commonjs/components/Sparkline.js.map +1 -0
- package/lib/commonjs/components/Spinner.js +132 -0
- package/lib/commonjs/components/Spinner.js.map +1 -0
- package/lib/commonjs/components/SplitButton.js +158 -0
- package/lib/commonjs/components/SplitButton.js.map +1 -0
- package/lib/commonjs/components/SsoButton.js +109 -0
- package/lib/commonjs/components/SsoButton.js.map +1 -0
- package/lib/commonjs/components/StackedBar.js +133 -0
- package/lib/commonjs/components/StackedBar.js.map +1 -0
- package/lib/commonjs/components/Stat.js +167 -0
- package/lib/commonjs/components/Stat.js.map +1 -0
- package/lib/commonjs/components/StatTile.js +644 -0
- package/lib/commonjs/components/StatTile.js.map +1 -0
- package/lib/commonjs/components/StateLabel.js +73 -0
- package/lib/commonjs/components/StateLabel.js.map +1 -0
- package/lib/commonjs/components/StatusDot.js +65 -0
- package/lib/commonjs/components/StatusDot.js.map +1 -0
- package/lib/commonjs/components/Stepper.js +355 -0
- package/lib/commonjs/components/Stepper.js.map +1 -0
- package/lib/commonjs/components/SupplementChart.js +1002 -0
- package/lib/commonjs/components/SupplementChart.js.map +1 -0
- package/lib/commonjs/components/TabBar.js +303 -0
- package/lib/commonjs/components/TabBar.js.map +1 -0
- package/lib/commonjs/components/Table.js +458 -0
- package/lib/commonjs/components/Table.js.map +1 -0
- package/lib/commonjs/components/Tabs.js +88 -0
- package/lib/commonjs/components/Tabs.js.map +1 -0
- package/lib/commonjs/components/TagCloud.js +118 -0
- package/lib/commonjs/components/TagCloud.js.map +1 -0
- package/lib/commonjs/components/TagInput.js +298 -0
- package/lib/commonjs/components/TagInput.js.map +1 -0
- package/lib/commonjs/components/TemplateCard.js +206 -0
- package/lib/commonjs/components/TemplateCard.js.map +1 -0
- package/lib/commonjs/components/Timeline.js +219 -0
- package/lib/commonjs/components/Timeline.js.map +1 -0
- package/lib/commonjs/components/TimelineChart.js +1228 -0
- package/lib/commonjs/components/TimelineChart.js.map +1 -0
- package/lib/commonjs/components/Toast.js +156 -0
- package/lib/commonjs/components/Toast.js.map +1 -0
- package/lib/commonjs/components/Toggle.js +166 -0
- package/lib/commonjs/components/Toggle.js.map +1 -0
- package/lib/commonjs/components/Toolbar.js +310 -0
- package/lib/commonjs/components/Toolbar.js.map +1 -0
- package/lib/commonjs/components/Tooltip.js +245 -0
- package/lib/commonjs/components/Tooltip.js.map +1 -0
- package/lib/commonjs/components/TypingIndicator.js +112 -0
- package/lib/commonjs/components/TypingIndicator.js.map +1 -0
- package/lib/commonjs/components/UnitChart.js +482 -0
- package/lib/commonjs/components/UnitChart.js.map +1 -0
- package/lib/commonjs/components/VersionBadge.js +133 -0
- package/lib/commonjs/components/VersionBadge.js.map +1 -0
- package/lib/commonjs/components/VideoThumbnail.js +152 -0
- package/lib/commonjs/components/VideoThumbnail.js.map +1 -0
- package/lib/commonjs/components/VitalsStrip.js +766 -0
- package/lib/commonjs/components/VitalsStrip.js.map +1 -0
- package/lib/commonjs/components/WatchComplication.js +563 -0
- package/lib/commonjs/components/WatchComplication.js.map +1 -0
- package/lib/commonjs/components/ZoneBar.js +149 -0
- package/lib/commonjs/components/ZoneBar.js.map +1 -0
- package/lib/commonjs/components/ZonePyramid.js +398 -0
- package/lib/commonjs/components/ZonePyramid.js.map +1 -0
- package/lib/commonjs/index.js +1140 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/internal/optionalBlur.js +34 -0
- package/lib/commonjs/internal/optionalBlur.js.map +1 -0
- package/lib/commonjs/internal/optionalHaptics.js +40 -0
- package/lib/commonjs/internal/optionalHaptics.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/theme.js +61 -0
- package/lib/commonjs/theme.js.map +1 -0
- package/lib/module/components/Accordion.js +139 -0
- package/lib/module/components/Accordion.js.map +1 -0
- package/lib/module/components/AchievementBadge.js +223 -0
- package/lib/module/components/AchievementBadge.js.map +1 -0
- package/lib/module/components/Alert.js +227 -0
- package/lib/module/components/Alert.js.map +1 -0
- package/lib/module/components/AreaChart.js +501 -0
- package/lib/module/components/AreaChart.js.map +1 -0
- package/lib/module/components/AuroraBackground.js +262 -0
- package/lib/module/components/AuroraBackground.js.map +1 -0
- package/lib/module/components/Avatar.js +183 -0
- package/lib/module/components/Avatar.js.map +1 -0
- package/lib/module/components/AvatarStack.js +91 -0
- package/lib/module/components/AvatarStack.js.map +1 -0
- package/lib/module/components/BackLink.js +73 -0
- package/lib/module/components/BackLink.js.map +1 -0
- package/lib/module/components/Badge.js +132 -0
- package/lib/module/components/Badge.js.map +1 -0
- package/lib/module/components/BarChart.js +636 -0
- package/lib/module/components/BarChart.js.map +1 -0
- package/lib/module/components/BarFill.js +51 -0
- package/lib/module/components/BarFill.js.map +1 -0
- package/lib/module/components/BeeswarmChart.js +610 -0
- package/lib/module/components/BeeswarmChart.js.map +1 -0
- package/lib/module/components/BiomarkerRange.js +605 -0
- package/lib/module/components/BiomarkerRange.js.map +1 -0
- package/lib/module/components/BodyBattery.js +558 -0
- package/lib/module/components/BodyBattery.js.map +1 -0
- package/lib/module/components/BrandMark.js +179 -0
- package/lib/module/components/BrandMark.js.map +1 -0
- package/lib/module/components/BulletChart.js +401 -0
- package/lib/module/components/BulletChart.js.map +1 -0
- package/lib/module/components/Button.js +150 -0
- package/lib/module/components/Button.js.map +1 -0
- package/lib/module/components/CaffeineClock.js +486 -0
- package/lib/module/components/CaffeineClock.js.map +1 -0
- package/lib/module/components/Card.js +138 -0
- package/lib/module/components/Card.js.map +1 -0
- package/lib/module/components/CharCounter.js +102 -0
- package/lib/module/components/CharCounter.js.map +1 -0
- package/lib/module/components/ChartState.js +549 -0
- package/lib/module/components/ChartState.js.map +1 -0
- package/lib/module/components/Checkbox.js +175 -0
- package/lib/module/components/Checkbox.js.map +1 -0
- package/lib/module/components/Chip.js +214 -0
- package/lib/module/components/Chip.js.map +1 -0
- package/lib/module/components/ChoiceChip.js +129 -0
- package/lib/module/components/ChoiceChip.js.map +1 -0
- package/lib/module/components/CodeBlock.js +122 -0
- package/lib/module/components/CodeBlock.js.map +1 -0
- package/lib/module/components/CodeField.js +125 -0
- package/lib/module/components/CodeField.js.map +1 -0
- package/lib/module/components/ColorPicker.js +177 -0
- package/lib/module/components/ColorPicker.js.map +1 -0
- package/lib/module/components/ComboChart.js +414 -0
- package/lib/module/components/ComboChart.js.map +1 -0
- package/lib/module/components/Combobox.js +104 -0
- package/lib/module/components/Combobox.js.map +1 -0
- package/lib/module/components/CompareChart.js +622 -0
- package/lib/module/components/CompareChart.js.map +1 -0
- package/lib/module/components/CompositeChart.js +649 -0
- package/lib/module/components/CompositeChart.js.map +1 -0
- package/lib/module/components/Countdown.js +148 -0
- package/lib/module/components/Countdown.js.map +1 -0
- package/lib/module/components/CreditCardVisual.js +163 -0
- package/lib/module/components/CreditCardVisual.js.map +1 -0
- package/lib/module/components/DateField.js +361 -0
- package/lib/module/components/DateField.js.map +1 -0
- package/lib/module/components/DayTimelineBlocks.js +249 -0
- package/lib/module/components/DayTimelineBlocks.js.map +1 -0
- package/lib/module/components/DayWheel.js +462 -0
- package/lib/module/components/DayWheel.js.map +1 -0
- package/lib/module/components/DeltaPill.js +149 -0
- package/lib/module/components/DeltaPill.js.map +1 -0
- package/lib/module/components/DistributionChart.js +771 -0
- package/lib/module/components/DistributionChart.js.map +1 -0
- package/lib/module/components/Divider.js +70 -0
- package/lib/module/components/Divider.js.map +1 -0
- package/lib/module/components/DonutChart.js +332 -0
- package/lib/module/components/DonutChart.js.map +1 -0
- package/lib/module/components/DotsLoader.js +90 -0
- package/lib/module/components/DotsLoader.js.map +1 -0
- package/lib/module/components/EffectAttributionLine.js +101 -0
- package/lib/module/components/EffectAttributionLine.js.map +1 -0
- package/lib/module/components/EmptyState.js +115 -0
- package/lib/module/components/EmptyState.js.map +1 -0
- package/lib/module/components/EngagementBar.js +118 -0
- package/lib/module/components/EngagementBar.js.map +1 -0
- package/lib/module/components/EnvironmentChart.js +568 -0
- package/lib/module/components/EnvironmentChart.js.map +1 -0
- package/lib/module/components/Eyebrow.js +28 -0
- package/lib/module/components/Eyebrow.js.map +1 -0
- package/lib/module/components/FocalPointPicker.js +192 -0
- package/lib/module/components/FocalPointPicker.js.map +1 -0
- package/lib/module/components/FollowButton.js +91 -0
- package/lib/module/components/FollowButton.js.map +1 -0
- package/lib/module/components/ForecastCallout.js +112 -0
- package/lib/module/components/ForecastCallout.js.map +1 -0
- package/lib/module/components/FormField.js +198 -0
- package/lib/module/components/FormField.js.map +1 -0
- package/lib/module/components/FunnelChart.js +255 -0
- package/lib/module/components/FunnelChart.js.map +1 -0
- package/lib/module/components/Gauge.js +249 -0
- package/lib/module/components/Gauge.js.map +1 -0
- package/lib/module/components/GradientText.js +130 -0
- package/lib/module/components/GradientText.js.map +1 -0
- package/lib/module/components/Heatmap.js +414 -0
- package/lib/module/components/Heatmap.js.map +1 -0
- package/lib/module/components/Highlight.js +51 -0
- package/lib/module/components/Highlight.js.map +1 -0
- package/lib/module/components/Hypnogram.js +837 -0
- package/lib/module/components/Hypnogram.js.map +1 -0
- package/lib/module/components/Icon.js +480 -0
- package/lib/module/components/Icon.js.map +1 -0
- package/lib/module/components/Input.js +138 -0
- package/lib/module/components/Input.js.map +1 -0
- package/lib/module/components/InsightCard.js +115 -0
- package/lib/module/components/InsightCard.js.map +1 -0
- package/lib/module/components/KeyValue.js +89 -0
- package/lib/module/components/KeyValue.js.map +1 -0
- package/lib/module/components/LeaderboardRow.js +136 -0
- package/lib/module/components/LeaderboardRow.js.map +1 -0
- package/lib/module/components/LineChart.js +1539 -0
- package/lib/module/components/LineChart.js.map +1 -0
- package/lib/module/components/ListRow.js +118 -0
- package/lib/module/components/ListRow.js.map +1 -0
- package/lib/module/components/Menu.js +179 -0
- package/lib/module/components/Menu.js.map +1 -0
- package/lib/module/components/MessageBubble.js +113 -0
- package/lib/module/components/MessageBubble.js.map +1 -0
- package/lib/module/components/MessageComposer.js +208 -0
- package/lib/module/components/MessageComposer.js.map +1 -0
- package/lib/module/components/MetaphorWidget.js +1048 -0
- package/lib/module/components/MetaphorWidget.js.map +1 -0
- package/lib/module/components/Meter.js +169 -0
- package/lib/module/components/Meter.js.map +1 -0
- package/lib/module/components/MetricTile.js +263 -0
- package/lib/module/components/MetricTile.js.map +1 -0
- package/lib/module/components/MiniRing.js +26 -0
- package/lib/module/components/MiniRing.js.map +1 -0
- package/lib/module/components/Modal.js +148 -0
- package/lib/module/components/Modal.js.map +1 -0
- package/lib/module/components/MuscleDiagram.js +321 -0
- package/lib/module/components/MuscleDiagram.js.map +1 -0
- package/lib/module/components/NoteField.js +69 -0
- package/lib/module/components/NoteField.js.map +1 -0
- package/lib/module/components/NotificationRow.js +230 -0
- package/lib/module/components/NotificationRow.js.map +1 -0
- package/lib/module/components/Pagination.js +207 -0
- package/lib/module/components/Pagination.js.map +1 -0
- package/lib/module/components/PasswordInput.js +116 -0
- package/lib/module/components/PasswordInput.js.map +1 -0
- package/lib/module/components/PasswordStrengthMeter.js +104 -0
- package/lib/module/components/PasswordStrengthMeter.js.map +1 -0
- package/lib/module/components/PendingPatternCard.js +178 -0
- package/lib/module/components/PendingPatternCard.js.map +1 -0
- package/lib/module/components/PhaseWheel.js +699 -0
- package/lib/module/components/PhaseWheel.js.map +1 -0
- package/lib/module/components/PkChart.js +558 -0
- package/lib/module/components/PkChart.js.map +1 -0
- package/lib/module/components/Popover.js +230 -0
- package/lib/module/components/Popover.js.map +1 -0
- package/lib/module/components/PrBadge.js +66 -0
- package/lib/module/components/PrBadge.js.map +1 -0
- package/lib/module/components/PrCard.js +146 -0
- package/lib/module/components/PrCard.js.map +1 -0
- package/lib/module/components/PricingTierCard.js +233 -0
- package/lib/module/components/PricingTierCard.js.map +1 -0
- package/lib/module/components/ProGate.js +229 -0
- package/lib/module/components/ProGate.js.map +1 -0
- package/lib/module/components/ProgressBar.js +511 -0
- package/lib/module/components/ProgressBar.js.map +1 -0
- package/lib/module/components/Pulse.js +32 -0
- package/lib/module/components/Pulse.js.map +1 -0
- package/lib/module/components/QRCode.js +514 -0
- package/lib/module/components/QRCode.js.map +1 -0
- package/lib/module/components/RadarChart.js +487 -0
- package/lib/module/components/RadarChart.js.map +1 -0
- package/lib/module/components/RangeBar.js +187 -0
- package/lib/module/components/RangeBar.js.map +1 -0
- package/lib/module/components/ReauthDialog.js +256 -0
- package/lib/module/components/ReauthDialog.js.map +1 -0
- package/lib/module/components/RestTimer.js +239 -0
- package/lib/module/components/RestTimer.js.map +1 -0
- package/lib/module/components/RichText.js +77 -0
- package/lib/module/components/RichText.js.map +1 -0
- package/lib/module/components/RichTextEditor.js +269 -0
- package/lib/module/components/RichTextEditor.js.map +1 -0
- package/lib/module/components/Ring.js +236 -0
- package/lib/module/components/Ring.js.map +1 -0
- package/lib/module/components/RoseChart.js +371 -0
- package/lib/module/components/RoseChart.js.map +1 -0
- package/lib/module/components/SankeyChart.js +647 -0
- package/lib/module/components/SankeyChart.js.map +1 -0
- package/lib/module/components/ScatterChart.js +427 -0
- package/lib/module/components/ScatterChart.js.map +1 -0
- package/lib/module/components/ScrollProgress.js +62 -0
- package/lib/module/components/ScrollProgress.js.map +1 -0
- package/lib/module/components/SectionDivider.js +55 -0
- package/lib/module/components/SectionDivider.js.map +1 -0
- package/lib/module/components/SectionHeader.js +49 -0
- package/lib/module/components/SectionHeader.js.map +1 -0
- package/lib/module/components/SegmentedTabs.js +332 -0
- package/lib/module/components/SegmentedTabs.js.map +1 -0
- package/lib/module/components/Select.js +375 -0
- package/lib/module/components/Select.js.map +1 -0
- package/lib/module/components/SessionBanner.js +216 -0
- package/lib/module/components/SessionBanner.js.map +1 -0
- package/lib/module/components/SessionChart.js +1040 -0
- package/lib/module/components/SessionChart.js.map +1 -0
- package/lib/module/components/SetTable.js +345 -0
- package/lib/module/components/SetTable.js.map +1 -0
- package/lib/module/components/ShareCard.js +223 -0
- package/lib/module/components/ShareCard.js.map +1 -0
- package/lib/module/components/Sheet.js +216 -0
- package/lib/module/components/Sheet.js.map +1 -0
- package/lib/module/components/Skeleton.js +24 -0
- package/lib/module/components/Skeleton.js.map +1 -0
- package/lib/module/components/Slider.js +169 -0
- package/lib/module/components/Slider.js.map +1 -0
- package/lib/module/components/Sortable.js +226 -0
- package/lib/module/components/Sortable.js.map +1 -0
- package/lib/module/components/SourceChip.js +107 -0
- package/lib/module/components/SourceChip.js.map +1 -0
- package/lib/module/components/Sparkline.js +105 -0
- package/lib/module/components/Sparkline.js.map +1 -0
- package/lib/module/components/Spinner.js +127 -0
- package/lib/module/components/Spinner.js.map +1 -0
- package/lib/module/components/SplitButton.js +154 -0
- package/lib/module/components/SplitButton.js.map +1 -0
- package/lib/module/components/SsoButton.js +104 -0
- package/lib/module/components/SsoButton.js.map +1 -0
- package/lib/module/components/StackedBar.js +129 -0
- package/lib/module/components/StackedBar.js.map +1 -0
- package/lib/module/components/Stat.js +163 -0
- package/lib/module/components/Stat.js.map +1 -0
- package/lib/module/components/StatTile.js +639 -0
- package/lib/module/components/StatTile.js.map +1 -0
- package/lib/module/components/StateLabel.js +69 -0
- package/lib/module/components/StateLabel.js.map +1 -0
- package/lib/module/components/StatusDot.js +61 -0
- package/lib/module/components/StatusDot.js.map +1 -0
- package/lib/module/components/Stepper.js +350 -0
- package/lib/module/components/Stepper.js.map +1 -0
- package/lib/module/components/SupplementChart.js +997 -0
- package/lib/module/components/SupplementChart.js.map +1 -0
- package/lib/module/components/TabBar.js +298 -0
- package/lib/module/components/TabBar.js.map +1 -0
- package/lib/module/components/Table.js +452 -0
- package/lib/module/components/Table.js.map +1 -0
- package/lib/module/components/Tabs.js +84 -0
- package/lib/module/components/Tabs.js.map +1 -0
- package/lib/module/components/TagCloud.js +113 -0
- package/lib/module/components/TagCloud.js.map +1 -0
- package/lib/module/components/TagInput.js +291 -0
- package/lib/module/components/TagInput.js.map +1 -0
- package/lib/module/components/TemplateCard.js +202 -0
- package/lib/module/components/TemplateCard.js.map +1 -0
- package/lib/module/components/Timeline.js +214 -0
- package/lib/module/components/Timeline.js.map +1 -0
- package/lib/module/components/TimelineChart.js +1223 -0
- package/lib/module/components/TimelineChart.js.map +1 -0
- package/lib/module/components/Toast.js +151 -0
- package/lib/module/components/Toast.js.map +1 -0
- package/lib/module/components/Toggle.js +162 -0
- package/lib/module/components/Toggle.js.map +1 -0
- package/lib/module/components/Toolbar.js +306 -0
- package/lib/module/components/Toolbar.js.map +1 -0
- package/lib/module/components/Tooltip.js +241 -0
- package/lib/module/components/Tooltip.js.map +1 -0
- package/lib/module/components/TypingIndicator.js +108 -0
- package/lib/module/components/TypingIndicator.js.map +1 -0
- package/lib/module/components/UnitChart.js +477 -0
- package/lib/module/components/UnitChart.js.map +1 -0
- package/lib/module/components/VersionBadge.js +129 -0
- package/lib/module/components/VersionBadge.js.map +1 -0
- package/lib/module/components/VideoThumbnail.js +147 -0
- package/lib/module/components/VideoThumbnail.js.map +1 -0
- package/lib/module/components/VitalsStrip.js +761 -0
- package/lib/module/components/VitalsStrip.js.map +1 -0
- package/lib/module/components/WatchComplication.js +558 -0
- package/lib/module/components/WatchComplication.js.map +1 -0
- package/lib/module/components/ZoneBar.js +145 -0
- package/lib/module/components/ZoneBar.js.map +1 -0
- package/lib/module/components/ZonePyramid.js +393 -0
- package/lib/module/components/ZonePyramid.js.map +1 -0
- package/lib/module/index.js +166 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/internal/optionalBlur.js +30 -0
- package/lib/module/internal/optionalBlur.js.map +1 -0
- package/lib/module/internal/optionalHaptics.js +34 -0
- package/lib/module/internal/optionalHaptics.js.map +1 -0
- package/lib/module/theme.js +6 -0
- package/lib/module/theme.js.map +1 -0
- package/lib/typescript/components/Accordion.d.ts +20 -0
- package/lib/typescript/components/Accordion.d.ts.map +1 -0
- package/lib/typescript/components/AchievementBadge.d.ts +29 -0
- package/lib/typescript/components/AchievementBadge.d.ts.map +1 -0
- package/lib/typescript/components/Alert.d.ts +18 -0
- package/lib/typescript/components/Alert.d.ts.map +1 -0
- package/lib/typescript/components/AreaChart.d.ts +58 -0
- package/lib/typescript/components/AreaChart.d.ts.map +1 -0
- package/lib/typescript/components/AuroraBackground.d.ts +24 -0
- package/lib/typescript/components/AuroraBackground.d.ts.map +1 -0
- package/lib/typescript/components/Avatar.d.ts +38 -0
- package/lib/typescript/components/Avatar.d.ts.map +1 -0
- package/lib/typescript/components/AvatarStack.d.ts +26 -0
- package/lib/typescript/components/AvatarStack.d.ts.map +1 -0
- package/lib/typescript/components/BackLink.d.ts +20 -0
- package/lib/typescript/components/BackLink.d.ts.map +1 -0
- package/lib/typescript/components/Badge.d.ts +12 -0
- package/lib/typescript/components/Badge.d.ts.map +1 -0
- package/lib/typescript/components/BarChart.d.ts +83 -0
- package/lib/typescript/components/BarChart.d.ts.map +1 -0
- package/lib/typescript/components/BarFill.d.ts +15 -0
- package/lib/typescript/components/BarFill.d.ts.map +1 -0
- package/lib/typescript/components/BeeswarmChart.d.ts +71 -0
- package/lib/typescript/components/BeeswarmChart.d.ts.map +1 -0
- package/lib/typescript/components/BiomarkerRange.d.ts +64 -0
- package/lib/typescript/components/BiomarkerRange.d.ts.map +1 -0
- package/lib/typescript/components/BodyBattery.d.ts +70 -0
- package/lib/typescript/components/BodyBattery.d.ts.map +1 -0
- package/lib/typescript/components/BrandMark.d.ts +10 -0
- package/lib/typescript/components/BrandMark.d.ts.map +1 -0
- package/lib/typescript/components/BulletChart.d.ts +61 -0
- package/lib/typescript/components/BulletChart.d.ts.map +1 -0
- package/lib/typescript/components/Button.d.ts +27 -0
- package/lib/typescript/components/Button.d.ts.map +1 -0
- package/lib/typescript/components/CaffeineClock.d.ts +64 -0
- package/lib/typescript/components/CaffeineClock.d.ts.map +1 -0
- package/lib/typescript/components/Card.d.ts +23 -0
- package/lib/typescript/components/Card.d.ts.map +1 -0
- package/lib/typescript/components/CharCounter.d.ts +30 -0
- package/lib/typescript/components/CharCounter.d.ts.map +1 -0
- package/lib/typescript/components/ChartState.d.ts +58 -0
- package/lib/typescript/components/ChartState.d.ts.map +1 -0
- package/lib/typescript/components/Checkbox.d.ts +44 -0
- package/lib/typescript/components/Checkbox.d.ts.map +1 -0
- package/lib/typescript/components/Chip.d.ts +17 -0
- package/lib/typescript/components/Chip.d.ts.map +1 -0
- package/lib/typescript/components/ChoiceChip.d.ts +31 -0
- package/lib/typescript/components/ChoiceChip.d.ts.map +1 -0
- package/lib/typescript/components/CodeBlock.d.ts +18 -0
- package/lib/typescript/components/CodeBlock.d.ts.map +1 -0
- package/lib/typescript/components/CodeField.d.ts +22 -0
- package/lib/typescript/components/CodeField.d.ts.map +1 -0
- package/lib/typescript/components/ColorPicker.d.ts +20 -0
- package/lib/typescript/components/ColorPicker.d.ts.map +1 -0
- package/lib/typescript/components/ComboChart.d.ts +56 -0
- package/lib/typescript/components/ComboChart.d.ts.map +1 -0
- package/lib/typescript/components/Combobox.d.ts +39 -0
- package/lib/typescript/components/Combobox.d.ts.map +1 -0
- package/lib/typescript/components/CompareChart.d.ts +80 -0
- package/lib/typescript/components/CompareChart.d.ts.map +1 -0
- package/lib/typescript/components/CompositeChart.d.ts +83 -0
- package/lib/typescript/components/CompositeChart.d.ts.map +1 -0
- package/lib/typescript/components/Countdown.d.ts +28 -0
- package/lib/typescript/components/Countdown.d.ts.map +1 -0
- package/lib/typescript/components/CreditCardVisual.d.ts +26 -0
- package/lib/typescript/components/CreditCardVisual.d.ts.map +1 -0
- package/lib/typescript/components/DateField.d.ts +39 -0
- package/lib/typescript/components/DateField.d.ts.map +1 -0
- package/lib/typescript/components/DayTimelineBlocks.d.ts +40 -0
- package/lib/typescript/components/DayTimelineBlocks.d.ts.map +1 -0
- package/lib/typescript/components/DayWheel.d.ts +70 -0
- package/lib/typescript/components/DayWheel.d.ts.map +1 -0
- package/lib/typescript/components/DeltaPill.d.ts +22 -0
- package/lib/typescript/components/DeltaPill.d.ts.map +1 -0
- package/lib/typescript/components/DistributionChart.d.ts +94 -0
- package/lib/typescript/components/DistributionChart.d.ts.map +1 -0
- package/lib/typescript/components/Divider.d.ts +16 -0
- package/lib/typescript/components/Divider.d.ts.map +1 -0
- package/lib/typescript/components/DonutChart.d.ts +70 -0
- package/lib/typescript/components/DonutChart.d.ts.map +1 -0
- package/lib/typescript/components/DotsLoader.d.ts +19 -0
- package/lib/typescript/components/DotsLoader.d.ts.map +1 -0
- package/lib/typescript/components/EffectAttributionLine.d.ts +24 -0
- package/lib/typescript/components/EffectAttributionLine.d.ts.map +1 -0
- package/lib/typescript/components/EmptyState.d.ts +17 -0
- package/lib/typescript/components/EmptyState.d.ts.map +1 -0
- package/lib/typescript/components/EngagementBar.d.ts +23 -0
- package/lib/typescript/components/EngagementBar.d.ts.map +1 -0
- package/lib/typescript/components/EnvironmentChart.d.ts +89 -0
- package/lib/typescript/components/EnvironmentChart.d.ts.map +1 -0
- package/lib/typescript/components/Eyebrow.d.ts +7 -0
- package/lib/typescript/components/Eyebrow.d.ts.map +1 -0
- package/lib/typescript/components/FocalPointPicker.d.ts +31 -0
- package/lib/typescript/components/FocalPointPicker.d.ts.map +1 -0
- package/lib/typescript/components/FollowButton.d.ts +21 -0
- package/lib/typescript/components/FollowButton.d.ts.map +1 -0
- package/lib/typescript/components/ForecastCallout.d.ts +21 -0
- package/lib/typescript/components/ForecastCallout.d.ts.map +1 -0
- package/lib/typescript/components/FormField.d.ts +32 -0
- package/lib/typescript/components/FormField.d.ts.map +1 -0
- package/lib/typescript/components/FunnelChart.d.ts +46 -0
- package/lib/typescript/components/FunnelChart.d.ts.map +1 -0
- package/lib/typescript/components/Gauge.d.ts +70 -0
- package/lib/typescript/components/Gauge.d.ts.map +1 -0
- package/lib/typescript/components/GradientText.d.ts +21 -0
- package/lib/typescript/components/GradientText.d.ts.map +1 -0
- package/lib/typescript/components/Heatmap.d.ts +87 -0
- package/lib/typescript/components/Heatmap.d.ts.map +1 -0
- package/lib/typescript/components/Highlight.d.ts +11 -0
- package/lib/typescript/components/Highlight.d.ts.map +1 -0
- package/lib/typescript/components/Hypnogram.d.ts +94 -0
- package/lib/typescript/components/Hypnogram.d.ts.map +1 -0
- package/lib/typescript/components/Icon.d.ts +30 -0
- package/lib/typescript/components/Icon.d.ts.map +1 -0
- package/lib/typescript/components/Input.d.ts +25 -0
- package/lib/typescript/components/Input.d.ts.map +1 -0
- package/lib/typescript/components/InsightCard.d.ts +37 -0
- package/lib/typescript/components/InsightCard.d.ts.map +1 -0
- package/lib/typescript/components/KeyValue.d.ts +18 -0
- package/lib/typescript/components/KeyValue.d.ts.map +1 -0
- package/lib/typescript/components/LeaderboardRow.d.ts +31 -0
- package/lib/typescript/components/LeaderboardRow.d.ts.map +1 -0
- package/lib/typescript/components/LineChart.d.ts +166 -0
- package/lib/typescript/components/LineChart.d.ts.map +1 -0
- package/lib/typescript/components/ListRow.d.ts +37 -0
- package/lib/typescript/components/ListRow.d.ts.map +1 -0
- package/lib/typescript/components/Menu.d.ts +28 -0
- package/lib/typescript/components/Menu.d.ts.map +1 -0
- package/lib/typescript/components/MessageBubble.d.ts +20 -0
- package/lib/typescript/components/MessageBubble.d.ts.map +1 -0
- package/lib/typescript/components/MessageComposer.d.ts +20 -0
- package/lib/typescript/components/MessageComposer.d.ts.map +1 -0
- package/lib/typescript/components/MetaphorWidget.d.ts +107 -0
- package/lib/typescript/components/MetaphorWidget.d.ts.map +1 -0
- package/lib/typescript/components/Meter.d.ts +34 -0
- package/lib/typescript/components/Meter.d.ts.map +1 -0
- package/lib/typescript/components/MetricTile.d.ts +43 -0
- package/lib/typescript/components/MetricTile.d.ts.map +1 -0
- package/lib/typescript/components/MiniRing.d.ts +9 -0
- package/lib/typescript/components/MiniRing.d.ts.map +1 -0
- package/lib/typescript/components/Modal.d.ts +19 -0
- package/lib/typescript/components/Modal.d.ts.map +1 -0
- package/lib/typescript/components/MuscleDiagram.d.ts +37 -0
- package/lib/typescript/components/MuscleDiagram.d.ts.map +1 -0
- package/lib/typescript/components/NoteField.d.ts +9 -0
- package/lib/typescript/components/NoteField.d.ts.map +1 -0
- package/lib/typescript/components/NotificationRow.d.ts +36 -0
- package/lib/typescript/components/NotificationRow.d.ts.map +1 -0
- package/lib/typescript/components/Pagination.d.ts +22 -0
- package/lib/typescript/components/Pagination.d.ts.map +1 -0
- package/lib/typescript/components/PasswordInput.d.ts +24 -0
- package/lib/typescript/components/PasswordInput.d.ts.map +1 -0
- package/lib/typescript/components/PasswordStrengthMeter.d.ts +18 -0
- package/lib/typescript/components/PasswordStrengthMeter.d.ts.map +1 -0
- package/lib/typescript/components/PendingPatternCard.d.ts +27 -0
- package/lib/typescript/components/PendingPatternCard.d.ts.map +1 -0
- package/lib/typescript/components/PhaseWheel.d.ts +103 -0
- package/lib/typescript/components/PhaseWheel.d.ts.map +1 -0
- package/lib/typescript/components/PkChart.d.ts +67 -0
- package/lib/typescript/components/PkChart.d.ts.map +1 -0
- package/lib/typescript/components/Popover.d.ts +27 -0
- package/lib/typescript/components/Popover.d.ts.map +1 -0
- package/lib/typescript/components/PrBadge.d.ts +21 -0
- package/lib/typescript/components/PrBadge.d.ts.map +1 -0
- package/lib/typescript/components/PrCard.d.ts +29 -0
- package/lib/typescript/components/PrCard.d.ts.map +1 -0
- package/lib/typescript/components/PricingTierCard.d.ts +46 -0
- package/lib/typescript/components/PricingTierCard.d.ts.map +1 -0
- package/lib/typescript/components/ProGate.d.ts +26 -0
- package/lib/typescript/components/ProGate.d.ts.map +1 -0
- package/lib/typescript/components/ProgressBar.d.ts +60 -0
- package/lib/typescript/components/ProgressBar.d.ts.map +1 -0
- package/lib/typescript/components/Pulse.d.ts +8 -0
- package/lib/typescript/components/Pulse.d.ts.map +1 -0
- package/lib/typescript/components/QRCode.d.ts +17 -0
- package/lib/typescript/components/QRCode.d.ts.map +1 -0
- package/lib/typescript/components/RadarChart.d.ts +59 -0
- package/lib/typescript/components/RadarChart.d.ts.map +1 -0
- package/lib/typescript/components/RangeBar.d.ts +38 -0
- package/lib/typescript/components/RangeBar.d.ts.map +1 -0
- package/lib/typescript/components/ReauthDialog.d.ts +44 -0
- package/lib/typescript/components/ReauthDialog.d.ts.map +1 -0
- package/lib/typescript/components/RestTimer.d.ts +45 -0
- package/lib/typescript/components/RestTimer.d.ts.map +1 -0
- package/lib/typescript/components/RichText.d.ts +26 -0
- package/lib/typescript/components/RichText.d.ts.map +1 -0
- package/lib/typescript/components/RichTextEditor.d.ts +25 -0
- package/lib/typescript/components/RichTextEditor.d.ts.map +1 -0
- package/lib/typescript/components/Ring.d.ts +63 -0
- package/lib/typescript/components/Ring.d.ts.map +1 -0
- package/lib/typescript/components/RoseChart.d.ts +54 -0
- package/lib/typescript/components/RoseChart.d.ts.map +1 -0
- package/lib/typescript/components/SankeyChart.d.ts +93 -0
- package/lib/typescript/components/SankeyChart.d.ts.map +1 -0
- package/lib/typescript/components/ScatterChart.d.ts +59 -0
- package/lib/typescript/components/ScatterChart.d.ts.map +1 -0
- package/lib/typescript/components/ScrollProgress.d.ts +24 -0
- package/lib/typescript/components/ScrollProgress.d.ts.map +1 -0
- package/lib/typescript/components/SectionDivider.d.ts +18 -0
- package/lib/typescript/components/SectionDivider.d.ts.map +1 -0
- package/lib/typescript/components/SectionHeader.d.ts +18 -0
- package/lib/typescript/components/SectionHeader.d.ts.map +1 -0
- package/lib/typescript/components/SegmentedTabs.d.ts +85 -0
- package/lib/typescript/components/SegmentedTabs.d.ts.map +1 -0
- package/lib/typescript/components/Select.d.ts +47 -0
- package/lib/typescript/components/Select.d.ts.map +1 -0
- package/lib/typescript/components/SessionBanner.d.ts +45 -0
- package/lib/typescript/components/SessionBanner.d.ts.map +1 -0
- package/lib/typescript/components/SessionChart.d.ts +130 -0
- package/lib/typescript/components/SessionChart.d.ts.map +1 -0
- package/lib/typescript/components/SetTable.d.ts +58 -0
- package/lib/typescript/components/SetTable.d.ts.map +1 -0
- package/lib/typescript/components/ShareCard.d.ts +40 -0
- package/lib/typescript/components/ShareCard.d.ts.map +1 -0
- package/lib/typescript/components/Sheet.d.ts +22 -0
- package/lib/typescript/components/Sheet.d.ts.map +1 -0
- package/lib/typescript/components/Skeleton.d.ts +9 -0
- package/lib/typescript/components/Skeleton.d.ts.map +1 -0
- package/lib/typescript/components/Slider.d.ts +27 -0
- package/lib/typescript/components/Slider.d.ts.map +1 -0
- package/lib/typescript/components/Sortable.d.ts +25 -0
- package/lib/typescript/components/Sortable.d.ts.map +1 -0
- package/lib/typescript/components/SourceChip.d.ts +24 -0
- package/lib/typescript/components/SourceChip.d.ts.map +1 -0
- package/lib/typescript/components/Sparkline.d.ts +28 -0
- package/lib/typescript/components/Sparkline.d.ts.map +1 -0
- package/lib/typescript/components/Spinner.d.ts +23 -0
- package/lib/typescript/components/Spinner.d.ts.map +1 -0
- package/lib/typescript/components/SplitButton.d.ts +21 -0
- package/lib/typescript/components/SplitButton.d.ts.map +1 -0
- package/lib/typescript/components/SsoButton.d.ts +10 -0
- package/lib/typescript/components/SsoButton.d.ts.map +1 -0
- package/lib/typescript/components/StackedBar.d.ts +32 -0
- package/lib/typescript/components/StackedBar.d.ts.map +1 -0
- package/lib/typescript/components/Stat.d.ts +33 -0
- package/lib/typescript/components/Stat.d.ts.map +1 -0
- package/lib/typescript/components/StatTile.d.ts +90 -0
- package/lib/typescript/components/StatTile.d.ts.map +1 -0
- package/lib/typescript/components/StateLabel.d.ts +12 -0
- package/lib/typescript/components/StateLabel.d.ts.map +1 -0
- package/lib/typescript/components/StatusDot.d.ts +13 -0
- package/lib/typescript/components/StatusDot.d.ts.map +1 -0
- package/lib/typescript/components/Stepper.d.ts +47 -0
- package/lib/typescript/components/Stepper.d.ts.map +1 -0
- package/lib/typescript/components/SupplementChart.d.ts +121 -0
- package/lib/typescript/components/SupplementChart.d.ts.map +1 -0
- package/lib/typescript/components/TabBar.d.ts +52 -0
- package/lib/typescript/components/TabBar.d.ts.map +1 -0
- package/lib/typescript/components/Table.d.ts +64 -0
- package/lib/typescript/components/Table.d.ts.map +1 -0
- package/lib/typescript/components/Tabs.d.ts +16 -0
- package/lib/typescript/components/Tabs.d.ts.map +1 -0
- package/lib/typescript/components/TagCloud.d.ts +31 -0
- package/lib/typescript/components/TagCloud.d.ts.map +1 -0
- package/lib/typescript/components/TagInput.d.ts +37 -0
- package/lib/typescript/components/TagInput.d.ts.map +1 -0
- package/lib/typescript/components/TemplateCard.d.ts +43 -0
- package/lib/typescript/components/TemplateCard.d.ts.map +1 -0
- package/lib/typescript/components/Timeline.d.ts +18 -0
- package/lib/typescript/components/Timeline.d.ts.map +1 -0
- package/lib/typescript/components/TimelineChart.d.ts +124 -0
- package/lib/typescript/components/TimelineChart.d.ts.map +1 -0
- package/lib/typescript/components/Toast.d.ts +18 -0
- package/lib/typescript/components/Toast.d.ts.map +1 -0
- package/lib/typescript/components/Toggle.d.ts +22 -0
- package/lib/typescript/components/Toggle.d.ts.map +1 -0
- package/lib/typescript/components/Toolbar.d.ts +48 -0
- package/lib/typescript/components/Toolbar.d.ts.map +1 -0
- package/lib/typescript/components/Tooltip.d.ts +16 -0
- package/lib/typescript/components/Tooltip.d.ts.map +1 -0
- package/lib/typescript/components/TypingIndicator.d.ts +16 -0
- package/lib/typescript/components/TypingIndicator.d.ts.map +1 -0
- package/lib/typescript/components/UnitChart.d.ts +84 -0
- package/lib/typescript/components/UnitChart.d.ts.map +1 -0
- package/lib/typescript/components/VersionBadge.d.ts +17 -0
- package/lib/typescript/components/VersionBadge.d.ts.map +1 -0
- package/lib/typescript/components/VideoThumbnail.d.ts +24 -0
- package/lib/typescript/components/VideoThumbnail.d.ts.map +1 -0
- package/lib/typescript/components/VitalsStrip.d.ts +53 -0
- package/lib/typescript/components/VitalsStrip.d.ts.map +1 -0
- package/lib/typescript/components/WatchComplication.d.ts +84 -0
- package/lib/typescript/components/WatchComplication.d.ts.map +1 -0
- package/lib/typescript/components/ZoneBar.d.ts +33 -0
- package/lib/typescript/components/ZoneBar.d.ts.map +1 -0
- package/lib/typescript/components/ZonePyramid.d.ts +51 -0
- package/lib/typescript/components/ZonePyramid.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +288 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/internal/optionalBlur.d.ts +13 -0
- package/lib/typescript/internal/optionalBlur.d.ts.map +1 -0
- package/lib/typescript/internal/optionalHaptics.d.ts +7 -0
- package/lib/typescript/internal/optionalHaptics.d.ts.map +1 -0
- package/lib/typescript/theme.d.ts +5 -0
- package/lib/typescript/theme.d.ts.map +1 -0
- package/package.json +92 -3
- package/src/components/Accordion.tsx +130 -0
- package/src/components/AchievementBadge.tsx +217 -0
- package/src/components/Alert.tsx +149 -0
- package/src/components/AreaChart.tsx +546 -0
- package/src/components/AuroraBackground.tsx +198 -0
- package/src/components/Avatar.tsx +164 -0
- package/src/components/AvatarStack.tsx +94 -0
- package/src/components/BackLink.tsx +64 -0
- package/src/components/Badge.tsx +91 -0
- package/src/components/BarChart.tsx +643 -0
- package/src/components/BarFill.tsx +37 -0
- package/src/components/BeeswarmChart.tsx +567 -0
- package/src/components/BiomarkerRange.tsx +571 -0
- package/src/components/BodyBattery.tsx +551 -0
- package/src/components/BrandMark.tsx +107 -0
- package/src/components/BulletChart.tsx +433 -0
- package/src/components/Button.tsx +127 -0
- package/src/components/CaffeineClock.tsx +472 -0
- package/src/components/Card.tsx +139 -0
- package/src/components/CharCounter.tsx +113 -0
- package/src/components/ChartState.tsx +473 -0
- package/src/components/Checkbox.tsx +175 -0
- package/src/components/Chip.tsx +132 -0
- package/src/components/ChoiceChip.tsx +119 -0
- package/src/components/CodeBlock.tsx +106 -0
- package/src/components/CodeField.tsx +137 -0
- package/src/components/ColorPicker.tsx +169 -0
- package/src/components/ComboChart.tsx +476 -0
- package/src/components/Combobox.tsx +141 -0
- package/src/components/CompareChart.tsx +651 -0
- package/src/components/CompositeChart.tsx +609 -0
- package/src/components/Countdown.tsx +155 -0
- package/src/components/CreditCardVisual.tsx +151 -0
- package/src/components/DateField.tsx +346 -0
- package/src/components/DayTimelineBlocks.tsx +270 -0
- package/src/components/DayWheel.tsx +483 -0
- package/src/components/DeltaPill.tsx +114 -0
- package/src/components/DistributionChart.tsx +739 -0
- package/src/components/Divider.tsx +61 -0
- package/src/components/DonutChart.tsx +399 -0
- package/src/components/DotsLoader.tsx +74 -0
- package/src/components/EffectAttributionLine.tsx +82 -0
- package/src/components/EmptyState.tsx +108 -0
- package/src/components/EngagementBar.tsx +140 -0
- package/src/components/EnvironmentChart.tsx +522 -0
- package/src/components/Eyebrow.tsx +22 -0
- package/src/components/FocalPointPicker.tsx +193 -0
- package/src/components/FollowButton.tsx +78 -0
- package/src/components/ForecastCallout.tsx +100 -0
- package/src/components/FormField.tsx +217 -0
- package/src/components/FunnelChart.tsx +310 -0
- package/src/components/Gauge.tsx +329 -0
- package/src/components/GradientText.tsx +114 -0
- package/src/components/Heatmap.tsx +459 -0
- package/src/components/Highlight.tsx +36 -0
- package/src/components/Hypnogram.tsx +751 -0
- package/src/components/Icon.tsx +680 -0
- package/src/components/Input.tsx +125 -0
- package/src/components/InsightCard.tsx +130 -0
- package/src/components/KeyValue.tsx +83 -0
- package/src/components/LeaderboardRow.tsx +156 -0
- package/src/components/LineChart.tsx +1529 -0
- package/src/components/ListRow.tsx +153 -0
- package/src/components/Menu.tsx +156 -0
- package/src/components/MessageBubble.tsx +118 -0
- package/src/components/MessageComposer.tsx +202 -0
- package/src/components/MetaphorWidget.tsx +848 -0
- package/src/components/Meter.tsx +186 -0
- package/src/components/MetricTile.tsx +247 -0
- package/src/components/MiniRing.tsx +17 -0
- package/src/components/Modal.tsx +129 -0
- package/src/components/MuscleDiagram.tsx +319 -0
- package/src/components/NoteField.tsx +68 -0
- package/src/components/NotificationRow.tsx +230 -0
- package/src/components/Pagination.tsx +188 -0
- package/src/components/PasswordInput.tsx +111 -0
- package/src/components/PasswordStrengthMeter.tsx +104 -0
- package/src/components/PendingPatternCard.tsx +163 -0
- package/src/components/PhaseWheel.tsx +781 -0
- package/src/components/PkChart.tsx +539 -0
- package/src/components/Popover.tsx +206 -0
- package/src/components/PrBadge.tsx +51 -0
- package/src/components/PrCard.tsx +132 -0
- package/src/components/PricingTierCard.tsx +234 -0
- package/src/components/ProGate.tsx +194 -0
- package/src/components/ProgressBar.tsx +439 -0
- package/src/components/Pulse.tsx +17 -0
- package/src/components/QRCode.tsx +555 -0
- package/src/components/RadarChart.tsx +538 -0
- package/src/components/RangeBar.tsx +206 -0
- package/src/components/ReauthDialog.tsx +282 -0
- package/src/components/RestTimer.tsx +193 -0
- package/src/components/RichText.tsx +71 -0
- package/src/components/RichTextEditor.tsx +207 -0
- package/src/components/Ring.tsx +269 -0
- package/src/components/RoseChart.tsx +375 -0
- package/src/components/SankeyChart.tsx +687 -0
- package/src/components/ScatterChart.tsx +498 -0
- package/src/components/ScrollProgress.tsx +61 -0
- package/src/components/SectionDivider.tsx +51 -0
- package/src/components/SectionHeader.tsx +41 -0
- package/src/components/SegmentedTabs.tsx +389 -0
- package/src/components/Select.tsx +335 -0
- package/src/components/SessionBanner.tsx +195 -0
- package/src/components/SessionChart.tsx +917 -0
- package/src/components/SetTable.tsx +341 -0
- package/src/components/ShareCard.tsx +145 -0
- package/src/components/Sheet.tsx +212 -0
- package/src/components/Skeleton.tsx +13 -0
- package/src/components/Slider.tsx +187 -0
- package/src/components/Sortable.tsx +263 -0
- package/src/components/SourceChip.tsx +95 -0
- package/src/components/Sparkline.tsx +108 -0
- package/src/components/Spinner.tsx +128 -0
- package/src/components/SplitButton.tsx +111 -0
- package/src/components/SsoButton.tsx +93 -0
- package/src/components/StackedBar.tsx +138 -0
- package/src/components/Stat.tsx +118 -0
- package/src/components/StatTile.tsx +581 -0
- package/src/components/StateLabel.tsx +62 -0
- package/src/components/StatusDot.tsx +58 -0
- package/src/components/Stepper.tsx +359 -0
- package/src/components/SupplementChart.tsx +1044 -0
- package/src/components/TabBar.tsx +297 -0
- package/src/components/Table.tsx +448 -0
- package/src/components/Tabs.tsx +85 -0
- package/src/components/TagCloud.tsx +111 -0
- package/src/components/TagInput.tsx +325 -0
- package/src/components/TemplateCard.tsx +181 -0
- package/src/components/Timeline.tsx +132 -0
- package/src/components/TimelineChart.tsx +1035 -0
- package/src/components/Toast.tsx +138 -0
- package/src/components/Toggle.tsx +155 -0
- package/src/components/Toolbar.tsx +292 -0
- package/src/components/Tooltip.tsx +193 -0
- package/src/components/TypingIndicator.tsx +106 -0
- package/src/components/UnitChart.tsx +519 -0
- package/src/components/VersionBadge.tsx +129 -0
- package/src/components/VideoThumbnail.tsx +140 -0
- package/src/components/VitalsStrip.tsx +636 -0
- package/src/components/WatchComplication.tsx +536 -0
- package/src/components/ZoneBar.tsx +148 -0
- package/src/components/ZonePyramid.tsx +405 -0
- package/src/components/__tests__/Chip.test.tsx +33 -0
- package/src/components/__tests__/CodeInput.test.tsx +62 -0
- package/src/components/__tests__/DeltaPill.test.tsx +41 -0
- package/src/components/__tests__/GradientText.test.tsx +69 -0
- package/src/components/__tests__/Icon.test.tsx +61 -0
- package/src/components/__tests__/Input.test.tsx +30 -0
- package/src/components/__tests__/LineChart.test.tsx +62 -0
- package/src/components/__tests__/ListRow.test.tsx +28 -0
- package/src/components/__tests__/PkChart.test.tsx +47 -0
- package/src/components/__tests__/PrBadge.test.tsx +32 -0
- package/src/components/__tests__/PrCard.test.tsx +49 -0
- package/src/components/__tests__/RestTimer.test.tsx +94 -0
- package/src/components/__tests__/SegmentedTabs.test.tsx +58 -0
- package/src/components/__tests__/SessionBanner.test.tsx +96 -0
- package/src/components/__tests__/SetTable.test.tsx +105 -0
- package/src/components/__tests__/SourceChip.test.tsx +82 -0
- package/src/components/__tests__/SupplementChart.test.tsx +71 -0
- package/src/components/__tests__/Table.test.tsx +81 -0
- package/src/components/__tests__/TemplateCard.test.tsx +85 -0
- package/src/components/__tests__/Toggle.test.tsx +49 -0
- package/src/components/__tests__/UnitChart.test.tsx +44 -0
- package/src/components/__tests__/markup.ts +142 -0
- package/src/components/__tests__/react-dom-server.d.ts +11 -0
- package/src/index.ts +320 -0
- package/src/internal/optionalBlur.ts +37 -0
- package/src/internal/optionalHaptics.ts +38 -0
- package/src/theme.ts +14 -0
- package/README.md +0 -3
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/* Input (native) — the `numeral` variant added for the edit-set weight/reps
|
|
2
|
+
readout (design `.strow .sv`): 20px bold display-font, centered, with the
|
|
3
|
+
unit suffix styled as a smaller dim companion instead of the default mono
|
|
4
|
+
far-right suffix. */
|
|
5
|
+
import { describe, expect, test } from 'vitest';
|
|
6
|
+
import { Input } from '../Input';
|
|
7
|
+
import { findAll, hasDeclaration, parse, render } from './markup';
|
|
8
|
+
|
|
9
|
+
describe('Input variant', () => {
|
|
10
|
+
test("variant='numeral' centers a 20px bold display-font value", () => {
|
|
11
|
+
const root = parse(render(Input, { variant: 'numeral', value: '120', unit: 'kg' }));
|
|
12
|
+
const field = findAll(root, (el) => el.tag === 'input')[0];
|
|
13
|
+
expect(field).toBeDefined();
|
|
14
|
+
expect(hasDeclaration(field, 'font-size:20px')).toBe(true);
|
|
15
|
+
expect(hasDeclaration(field, 'font-weight:700')).toBe(true);
|
|
16
|
+
expect(hasDeclaration(field, 'text-align:center')).toBe(true);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
test('default variant does NOT carry the numeral font size', () => {
|
|
20
|
+
const root = parse(render(Input, { value: '120' }));
|
|
21
|
+
const field = findAll(root, (el) => el.tag === 'input')[0];
|
|
22
|
+
expect(field).toBeDefined();
|
|
23
|
+
expect(hasDeclaration(field, 'font-size:20px')).toBe(false);
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
test("variant='numeral' still renders the unit suffix text", () => {
|
|
27
|
+
const html = render(Input, { variant: 'numeral', value: '120', unit: 'kg' });
|
|
28
|
+
expect(html).toContain('kg');
|
|
29
|
+
});
|
|
30
|
+
});
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { describe, expect, test } from 'vitest';
|
|
2
|
+
import { LineChart } from '../LineChart';
|
|
3
|
+
import { ancestors, findByText, hasDeclaration, inlineStyle, parse, render } from './markup';
|
|
4
|
+
|
|
5
|
+
/* Chip-pill edge clamping: a label anchored near the right edge of the plot
|
|
6
|
+
* flips to hang INWARD (align-items:flex-end wrapper) so the pill never leaves
|
|
7
|
+
* the viewBox; a left-edge label hangs right (flex-start); an interior label
|
|
8
|
+
* stays centered on its point. Geometry: VB_W=560, PAD_X=14, 6 points →
|
|
9
|
+
* x = 14 + (i/5)*532; chip width ≈ len*5.35+12. */
|
|
10
|
+
|
|
11
|
+
const DATA = [10, 20, 30, 40, 50, 60];
|
|
12
|
+
|
|
13
|
+
/** the overlay wrapper View that positions a chip (has the left:% anchor) */
|
|
14
|
+
function chipWrapper(html: string, text: string) {
|
|
15
|
+
const root = parse(html);
|
|
16
|
+
const label = findByText(root, text);
|
|
17
|
+
expect(label, `chip text "${text}" not rendered`).toBeTruthy();
|
|
18
|
+
const wrapper = ancestors(label!).find((a) => (a.attrs.style ?? '').includes('left:'));
|
|
19
|
+
expect(wrapper, `chip "${text}" has no positioned wrapper`).toBeTruthy();
|
|
20
|
+
return wrapper!;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
describe('LineChart chip edge clamping', () => {
|
|
24
|
+
const html = render(LineChart, {
|
|
25
|
+
data: DATA,
|
|
26
|
+
labels: [
|
|
27
|
+
{ index: 5, text: 'EDGE LABEL' }, // x=546; half-width 32.75 → crosses 560
|
|
28
|
+
{ index: 2, text: 'MIDDLE' }, // x=226.8; fully interior
|
|
29
|
+
{ index: 0, text: 'START LABEL' }, // x=14; half-width crosses 0
|
|
30
|
+
],
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
test('label at the last point near the right edge hangs inward (stays inside the viewBox)', () => {
|
|
34
|
+
const wrapper = chipWrapper(html, 'EDGE LABEL');
|
|
35
|
+
expect(hasDeclaration(wrapper, 'align-items:flex-end')).toBe(true);
|
|
36
|
+
expect(hasDeclaration(wrapper, 'align-items:center')).toBe(false);
|
|
37
|
+
// anchored exactly on the data point — 546/560 of the plot width
|
|
38
|
+
expect(inlineStyle(wrapper).left).toBe('97.5%');
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
test('interior label stays centered on its point', () => {
|
|
42
|
+
const wrapper = chipWrapper(html, 'MIDDLE');
|
|
43
|
+
expect(hasDeclaration(wrapper, 'align-items:center')).toBe(true);
|
|
44
|
+
expect(hasDeclaration(wrapper, 'align-items:flex-end')).toBe(false);
|
|
45
|
+
expect(hasDeclaration(wrapper, 'align-items:flex-start')).toBe(false);
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
test('label at the first point near the left edge hangs right', () => {
|
|
49
|
+
const wrapper = chipWrapper(html, 'START LABEL');
|
|
50
|
+
expect(hasDeclaration(wrapper, 'align-items:flex-start')).toBe(true);
|
|
51
|
+
expect(hasDeclaration(wrapper, 'align-items:center')).toBe(false);
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
test('a series label defaulting to the last point also flips to hang inward', () => {
|
|
55
|
+
const seriesHtml = render(LineChart, {
|
|
56
|
+
data: DATA,
|
|
57
|
+
series: [{ data: [15, 25, 35, 45, 55, 65], label: 'COHORT MEDIAN' }],
|
|
58
|
+
});
|
|
59
|
+
const wrapper = chipWrapper(seriesHtml, 'COHORT MEDIAN');
|
|
60
|
+
expect(hasDeclaration(wrapper, 'align-items:flex-end')).toBe(true);
|
|
61
|
+
});
|
|
62
|
+
});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/* ListRow (native) — `activeTint` overrides the ACTIVE-state background
|
|
2
|
+
(design `.exl.on` cyan); default active keeps the accent tint. Mirrors the
|
|
3
|
+
web twin's --lk-listrow-active-bg custom property. */
|
|
4
|
+
import { describe, expect, test } from 'vitest';
|
|
5
|
+
import { ListRow } from '../ListRow';
|
|
6
|
+
import { findAll, hasDeclaration, parse, render, type El } from './markup';
|
|
7
|
+
|
|
8
|
+
/** The element paints the background, whether react-native-web serialized it
|
|
9
|
+
* as an atomic class (registered style) or an inline style (dynamic tint). */
|
|
10
|
+
function paintsBg(el: El, rgba: string): boolean {
|
|
11
|
+
return (el.attrs.style ?? '').includes(rgba) || hasDeclaration(el, `background-color:${rgba}`);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
describe('ListRow activeTint', () => {
|
|
15
|
+
test('active + activeTint paints the override instead of the accent tint', () => {
|
|
16
|
+
const root = parse(
|
|
17
|
+
render(ListRow, { title: 'Incline DB Press', active: true, activeTint: 'rgba(34,211,238,0.09)' }),
|
|
18
|
+
);
|
|
19
|
+
expect(findAll(root, (el) => paintsBg(el, 'rgba(34,211,238,0.09')).length).toBeGreaterThan(0);
|
|
20
|
+
expect(findAll(root, (el) => paintsBg(el, 'rgba(124,92,255,0.14')).length).toBe(0);
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
test('active without a tint keeps the default accent fill', () => {
|
|
24
|
+
const root = parse(render(ListRow, { title: 'Row', active: true }));
|
|
25
|
+
expect(findAll(root, (el) => paintsBg(el, 'rgba(124,92,255,0.14')).length).toBeGreaterThan(0);
|
|
26
|
+
expect(findAll(root, (el) => paintsBg(el, 'rgba(34,211,238,0.09')).length).toBe(0);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { describe, expect, test } from 'vitest';
|
|
2
|
+
import { PkChart, beatPeriodMs } from '../PkChart';
|
|
3
|
+
import { render } from './markup';
|
|
4
|
+
|
|
5
|
+
/* Heartbeat pacing: the live (raw-`samples`) trace beats once per
|
|
6
|
+
* 60000/bpm ms; a non-positive/non-finite bpm or `still` must render NO beat
|
|
7
|
+
* elements. The sonar ring's first animation frame carries scale(0.5) inline —
|
|
8
|
+
* beat elements are detectable in static markup by that transform. */
|
|
9
|
+
|
|
10
|
+
const LIVE_SAMPLES = [1, 4, 2, 8, 3];
|
|
11
|
+
|
|
12
|
+
const hasBeatRing = (html: string) => /scale\(0\.5\)/.test(html);
|
|
13
|
+
|
|
14
|
+
describe('beatPeriodMs (bpm → beat period)', () => {
|
|
15
|
+
test('period is 60000/bpm', () => {
|
|
16
|
+
expect(beatPeriodMs(60)).toBe(1000);
|
|
17
|
+
expect(beatPeriodMs(64)).toBe(937.5);
|
|
18
|
+
expect(beatPeriodMs(120)).toBe(500);
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
test('non-positive and non-finite bpm produce no beat (0)', () => {
|
|
22
|
+
expect(beatPeriodMs(0)).toBe(0);
|
|
23
|
+
expect(beatPeriodMs(-5)).toBe(0);
|
|
24
|
+
expect(beatPeriodMs(Number.NaN)).toBe(0);
|
|
25
|
+
expect(beatPeriodMs(Number.POSITIVE_INFINITY)).toBe(0);
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
describe('PkChart beat elements in markup', () => {
|
|
30
|
+
test('live samples + valid bpm render the heartbeat ring', () => {
|
|
31
|
+
expect(hasBeatRing(render(PkChart, { samples: LIVE_SAMPLES, bpm: 64 }))).toBe(true);
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
test('`still` renders no beat', () => {
|
|
35
|
+
expect(hasBeatRing(render(PkChart, { samples: LIVE_SAMPLES, bpm: 64, still: true }))).toBe(false);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
test('bpm <= 0 / non-finite renders no beat', () => {
|
|
39
|
+
expect(hasBeatRing(render(PkChart, { samples: LIVE_SAMPLES, bpm: 0 }))).toBe(false);
|
|
40
|
+
expect(hasBeatRing(render(PkChart, { samples: LIVE_SAMPLES, bpm: -10 }))).toBe(false);
|
|
41
|
+
expect(hasBeatRing(render(PkChart, { samples: LIVE_SAMPLES, bpm: Number.NaN }))).toBe(false);
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
test('the doses (non-live) variant never beats, even with a valid bpm', () => {
|
|
45
|
+
expect(hasBeatRing(render(PkChart, { bpm: 64 }))).toBe(false);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/* PrBadge (native) — the solid red PR flag: PR-red fill, white mono label
|
|
2
|
+
(uppercased), 4px radius, and the sm size. Mirrors the web twin. */
|
|
3
|
+
import { describe, expect, test } from 'vitest';
|
|
4
|
+
import { PrBadge, PR_RED } from '../PrBadge';
|
|
5
|
+
import { findByText, hasDeclaration, parse, render } from './markup';
|
|
6
|
+
|
|
7
|
+
describe('PrBadge', () => {
|
|
8
|
+
test('renders the default PR label on the PR-red 4px-radius tab', () => {
|
|
9
|
+
const root = parse(render(PrBadge, {}));
|
|
10
|
+
const label = findByText(root, 'PR');
|
|
11
|
+
expect(label).toBeDefined();
|
|
12
|
+
expect(PR_RED).toBe('#FF4757');
|
|
13
|
+
// the badge surface carries the red fill + the 4px radius
|
|
14
|
+
const badge = label!.parent!;
|
|
15
|
+
const carries = (decl: string) => (badge.attrs.style ?? '').includes(decl) || hasDeclaration(badge, decl);
|
|
16
|
+
expect(carries('255,71,87')).toBe(true); // PR-red fill (rgb/rgba serialization-agnostic)
|
|
17
|
+
// react-native-web expands borderRadius into per-corner longhands
|
|
18
|
+
expect(carries('border-bottom-left-radius:4px')).toBe(true);
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
test('uppercases custom labels (PrCard state tags)', () => {
|
|
22
|
+
const root = parse(render(PrBadge, { label: 'At Peak' }));
|
|
23
|
+
expect(findByText(root, 'AT PEAK')).toBeDefined();
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
test('sm renders the tighter 8.5px label', () => {
|
|
27
|
+
const root = parse(render(PrBadge, { size: 'sm' }));
|
|
28
|
+
const label = findByText(root, 'PR');
|
|
29
|
+
expect(label).toBeDefined();
|
|
30
|
+
expect(hasDeclaration(label!, 'font-size:8.5px')).toBe(true);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/* PrCard (native) — the red-hot treatment (new/atPeak: tinted border + red
|
|
2
|
+
PrBadge tag), the quiet amber offPeak text tag, and the content lines.
|
|
3
|
+
Mirrors the web twin. */
|
|
4
|
+
import { describe, expect, test } from 'vitest';
|
|
5
|
+
import { PrCard } from '../PrCard';
|
|
6
|
+
import { findAll, findByText, hasDeclaration, parse, render, type El } from './markup';
|
|
7
|
+
|
|
8
|
+
/** Any element whose classes or inline style carry the rgb triplet (colors
|
|
9
|
+
* live in react-native-web's atomic-class sheet, not the HTML). */
|
|
10
|
+
function anyWithColor(root: El, rgb: string): boolean {
|
|
11
|
+
return findAll(root, (el) => (el.attrs.style ?? '').includes(rgb) || hasDeclaration(el, rgb)).length > 0;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
describe('PrCard', () => {
|
|
15
|
+
test('renders name, kind (uppercased), value, detail; no tag without state', () => {
|
|
16
|
+
const root = parse(
|
|
17
|
+
render(PrCard, { name: 'Back Squat', kind: 'Estimated 1RM', value: '130 kg', detail: 'today · +2kg' }),
|
|
18
|
+
);
|
|
19
|
+
expect(findByText(root, 'Back Squat')).toBeDefined();
|
|
20
|
+
expect(findByText(root, 'ESTIMATED 1RM')).toBeDefined();
|
|
21
|
+
expect(findByText(root, '130 kg')).toBeDefined();
|
|
22
|
+
expect(findByText(root, 'today · +2kg')).toBeDefined();
|
|
23
|
+
expect(findByText(root, 'NEW')).toBeUndefined();
|
|
24
|
+
expect(findByText(root, 'OFF PEAK')).toBeUndefined();
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
test('new → red border treatment + NEW badge', () => {
|
|
28
|
+
const root = parse(render(PrCard, { name: 'A', kind: '1RM', value: '130 kg', state: 'new' }));
|
|
29
|
+
expect(findByText(root, 'NEW')).toBeDefined();
|
|
30
|
+
expect(anyWithColor(root, '255,71,87')).toBe(true); // PR-red border/glow + badge fill
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
test('atPeak → AT PEAK badge', () => {
|
|
34
|
+
const root = parse(render(PrCard, { name: 'A', kind: '1RM', value: '130 kg', state: 'atPeak' }));
|
|
35
|
+
expect(findByText(root, 'AT PEAK')).toBeDefined();
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
test('offPeak → amber text tag, no red treatment', () => {
|
|
39
|
+
const root = parse(render(PrCard, { name: 'A', kind: '1RM', value: '130 kg', state: 'offPeak' }));
|
|
40
|
+
const tag = findByText(root, 'OFF PEAK');
|
|
41
|
+
expect(tag).toBeDefined();
|
|
42
|
+
expect(anyWithColor(root, '255,71,87')).toBe(false); // no PR-red anywhere
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
test('onPress renders a pressable card (button role)', () => {
|
|
46
|
+
const html = render(PrCard, { name: 'A', kind: '1RM', value: '130 kg', onPress: () => {} });
|
|
47
|
+
expect(html).toContain('role="button"');
|
|
48
|
+
});
|
|
49
|
+
});
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/* RestTimer (native) — m:ss formatting, remaining-fraction clamp, the mint
|
|
2
|
+
arc dashoffset, the paused dim, and the Skip / sublabel / trailing slots.
|
|
3
|
+
Mirrors the web twin's contract (same geometry: r=50 → C ≈ 314.16). */
|
|
4
|
+
import { createElement } from 'react';
|
|
5
|
+
import { Text } from 'react-native';
|
|
6
|
+
import { describe, expect, test } from 'vitest';
|
|
7
|
+
import { RestTimer, formatRestTime, restFraction } from '../RestTimer';
|
|
8
|
+
import { findByText, hasDeclaration, parse, render } from './markup';
|
|
9
|
+
|
|
10
|
+
describe('formatRestTime', () => {
|
|
11
|
+
test('formats m:ss with zero-padded seconds (clamped at 0)', () => {
|
|
12
|
+
expect(formatRestTime(95)).toBe('1:35');
|
|
13
|
+
expect(formatRestTime(60)).toBe('1:00');
|
|
14
|
+
expect(formatRestTime(9)).toBe('0:09');
|
|
15
|
+
expect(formatRestTime(-5)).toBe('0:00');
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
describe('restFraction', () => {
|
|
20
|
+
test('clamps to 0–1 and guards totalSec ≤ 0', () => {
|
|
21
|
+
expect(restFraction(45, 90)).toBe(0.5);
|
|
22
|
+
expect(restFraction(120, 90)).toBe(1);
|
|
23
|
+
expect(restFraction(-3, 90)).toBe(0);
|
|
24
|
+
expect(restFraction(30, 0)).toBe(0);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
describe('RestTimer', () => {
|
|
29
|
+
test('renders the centered mono time + label and a half-drained arc', () => {
|
|
30
|
+
const html = render(RestTimer, { remainingSec: 45, totalSec: 90 });
|
|
31
|
+
const root = parse(html);
|
|
32
|
+
expect(findByText(root, '0:45')).toBeDefined();
|
|
33
|
+
expect(findByText(root, 'REST')).toBeDefined(); // default label, uppercased
|
|
34
|
+
// C = 2π·50 ≈ 314.16 → offset at 50% ≈ 157.08
|
|
35
|
+
expect(html).toContain('157.07'); // dashoffset (float serialization tolerant)
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
test('renders sublabel, Skip button, and trailing slot', () => {
|
|
39
|
+
const html = render(RestTimer, {
|
|
40
|
+
remainingSec: 30,
|
|
41
|
+
totalSec: 90,
|
|
42
|
+
sublabel: 'Next: Bench Press · set 3 of 5',
|
|
43
|
+
onSkip: () => {},
|
|
44
|
+
trailing: createElement(Text, null, '128 bpm'),
|
|
45
|
+
});
|
|
46
|
+
const root = parse(html);
|
|
47
|
+
expect(findByText(root, 'Next: Bench Press · set 3 of 5')).toBeDefined();
|
|
48
|
+
expect(findByText(root, 'Skip')).toBeDefined();
|
|
49
|
+
expect(findByText(root, '128 bpm')).toBeDefined();
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
test('paused announces itself and drops the glow arc', () => {
|
|
53
|
+
const paused = render(RestTimer, { remainingSec: 30, totalSec: 90, paused: true });
|
|
54
|
+
expect(paused).toContain(', paused');
|
|
55
|
+
const live = render(RestTimer, { remainingSec: 30, totalSec: 90 });
|
|
56
|
+
expect(live).not.toContain(', paused');
|
|
57
|
+
// the glow duplicate (blur filter) only renders while running
|
|
58
|
+
expect(live).toContain('lk-resttimer-blur');
|
|
59
|
+
expect(paused).not.toContain('lk-resttimer-blur');
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
test('compact renders the 42px ring (r 18 → C ≈ 113.10) with the mint time inside', () => {
|
|
63
|
+
const html = render(RestTimer, {
|
|
64
|
+
remainingSec: 45,
|
|
65
|
+
totalSec: 90,
|
|
66
|
+
compact: true,
|
|
67
|
+
sublabel: 'Next 1:05',
|
|
68
|
+
onSkip: () => {},
|
|
69
|
+
});
|
|
70
|
+
const root = parse(html);
|
|
71
|
+
const time = findByText(root, '0:45')!;
|
|
72
|
+
expect(time).toBeDefined();
|
|
73
|
+
// compact readout is MINT (design `.rg .num`), not the hero white
|
|
74
|
+
expect(hasDeclaration(time, '52,245,197')).toBe(true);
|
|
75
|
+
// label moved OUT of the ring into the text column, above the sublabel
|
|
76
|
+
expect(findByText(root, 'REST')).toBeDefined();
|
|
77
|
+
expect(findByText(root, 'Next 1:05')).toBeDefined();
|
|
78
|
+
expect(findByText(root, 'Skip')).toBeDefined();
|
|
79
|
+
// compact geometry: C = 2π·18 ≈ 113.10 → offset at 50% ≈ 56.55
|
|
80
|
+
expect(html).toContain('113.10');
|
|
81
|
+
expect(html).toContain('56.5');
|
|
82
|
+
expect(html).not.toContain('157.0'); // no hero arc
|
|
83
|
+
// the glow duplicate arc still renders in compact
|
|
84
|
+
expect(html).toContain('lk-resttimer-blur');
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
test('hero default keeps the 116/r50 geometry (no compact readout)', () => {
|
|
88
|
+
const html = render(RestTimer, { remainingSec: 45, totalSec: 90 });
|
|
89
|
+
expect(html).toContain('157.07');
|
|
90
|
+
expect(html).not.toContain('113.10');
|
|
91
|
+
const time = findByText(parse(html), '0:45')!;
|
|
92
|
+
expect(hasDeclaration(time, '52,245,197')).toBe(false); // hero time stays text-white
|
|
93
|
+
});
|
|
94
|
+
});
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/* SegmentedTabs (native) — the set-type COLOR tones (amber/cyan/violet/
|
|
2
|
+
magenta, design `.sg`): label tinted at ALL times, NO leading dot, active
|
|
3
|
+
segment painted tone@16% fill + tone@50% border; semantic tones (ok/canary/
|
|
4
|
+
danger) keep the leading dot + active-only tint. Mirrors the web twin. */
|
|
5
|
+
import { describe, expect, test } from 'vitest';
|
|
6
|
+
import { SegmentedTabs, type SegmentedTabItem } from '../SegmentedTabs';
|
|
7
|
+
import { ancestors, findAll, findByText, hasDeclaration, parse, render, type El } from './markup';
|
|
8
|
+
|
|
9
|
+
/** The element carries the color, whether react-native-web serialized it as
|
|
10
|
+
* an atomic class or an inline style (dynamic style objects go inline). */
|
|
11
|
+
function carriesColor(el: El, rgb: string): boolean {
|
|
12
|
+
return (el.attrs.style ?? '').includes(rgb) || hasDeclaration(el, rgb);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/** Elements whose INLINE style paints a background in the given rgb (the
|
|
16
|
+
* leading dot / active fill — both dynamic, so always inline). */
|
|
17
|
+
function bgWith(root: El, rgb: string): El[] {
|
|
18
|
+
return findAll(root, (el) => (el.attrs.style ?? '').includes(`background-color:rgba(${rgb}`));
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const tabs: SegmentedTabItem[] = [
|
|
22
|
+
{ label: 'Warm-up', tone: 'amber' },
|
|
23
|
+
{ label: 'Working', tone: 'cyan' },
|
|
24
|
+
{ label: 'OK', tone: 'ok' },
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
describe('SegmentedTabs color tones', () => {
|
|
28
|
+
test('color-tone labels are tinted even when INACTIVE, and render NO dot', () => {
|
|
29
|
+
const root = parse(render(SegmentedTabs, { tabs, active: 1 }));
|
|
30
|
+
// inactive amber label still tinted warn (#FFB020)
|
|
31
|
+
expect(carriesColor(findByText(root, 'Warm-up')!, '255,176,32')).toBe(true);
|
|
32
|
+
// ... but there is no amber DOT anywhere (the 6px tone dot is skipped)
|
|
33
|
+
expect(bgWith(root, '255,176,32').length).toBe(0);
|
|
34
|
+
// semantic 'ok' keeps its mint dot even while inactive
|
|
35
|
+
expect(bgWith(root, '52,245,197').length).toBe(1);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
test('the ACTIVE color-tone segment paints tone@16% fill + tone@50% border', () => {
|
|
39
|
+
const root = parse(render(SegmentedTabs, { tabs, active: 1 }));
|
|
40
|
+
const label = findByText(root, 'Working')!;
|
|
41
|
+
expect(carriesColor(label, '34,211,238')).toBe(true); // cyan label
|
|
42
|
+
const tab = ancestors(label).find((a) => (a.attrs.style ?? '').includes('rgba(34,211,238,0.16'));
|
|
43
|
+
expect(tab).toBeDefined(); // 16% fill
|
|
44
|
+
expect((tab!.attrs.style ?? '').includes('rgba(34,211,238,0.5')).toBe(true); // 50% border
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
test('an INACTIVE color-tone segment has no fill/border paint', () => {
|
|
48
|
+
const root = parse(render(SegmentedTabs, { tabs, active: 1 }));
|
|
49
|
+
// amber is inactive — no 16% fill in amber anywhere
|
|
50
|
+
expect(findAll(root, (el) => (el.attrs.style ?? '').includes('rgba(255,176,32,0.16')).length).toBe(0);
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
test('semantic tones keep the active-only label tint (inactive stays dim)', () => {
|
|
54
|
+
const root = parse(render(SegmentedTabs, { tabs, active: 1 }));
|
|
55
|
+
// 'ok' is inactive here — its label must NOT be mint-tinted
|
|
56
|
+
expect(carriesColor(findByText(root, 'OK')!, '52,245,197')).toBe(false);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/* SessionBanner (native) — live dot + live-tinted status, stats capped at 3
|
|
2
|
+
(labels uppercased), Button actions, and the header slots. Mirrors the
|
|
3
|
+
web twin. (The dot's Animated pulse never runs under static markup —
|
|
4
|
+
asserted by presence, like the other Animated components.) */
|
|
5
|
+
import { createElement } from 'react';
|
|
6
|
+
import { Text } from 'react-native';
|
|
7
|
+
import { describe, expect, test } from 'vitest';
|
|
8
|
+
import { SessionBanner } from '../SessionBanner';
|
|
9
|
+
import { ancestors, findAll, findByText, hasDeclaration, parse, render, type El } from './markup';
|
|
10
|
+
|
|
11
|
+
/** Any element whose classes or inline style carry the rgb triplet (colors
|
|
12
|
+
* live in react-native-web's atomic-class sheet, not the HTML). */
|
|
13
|
+
function anyWithColor(root: El, rgb: string): boolean {
|
|
14
|
+
return findAll(root, (el) => (el.attrs.style ?? '').includes(rgb) || hasDeclaration(el, rgb)).length > 0;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
describe('SessionBanner', () => {
|
|
18
|
+
test('renders title, status, subtitle', () => {
|
|
19
|
+
const root = parse(
|
|
20
|
+
render(SessionBanner, { title: 'Push Day A', status: 'Live · 24:18', subtitle: 'Bench Press · set 2 of 5' }),
|
|
21
|
+
);
|
|
22
|
+
expect(findByText(root, 'Push Day A')).toBeDefined();
|
|
23
|
+
expect(findByText(root, 'Live · 24:18')).toBeDefined();
|
|
24
|
+
expect(findByText(root, 'Bench Press · set 2 of 5')).toBeDefined();
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
test('live shows the magenta dot + tints the status; off shows neither', () => {
|
|
28
|
+
const live = parse(render(SessionBanner, { title: 'A', status: 'Live · 24:18', live: true }));
|
|
29
|
+
expect(anyWithColor(live, '255,61,129')).toBe(true); // magenta dot + status tint
|
|
30
|
+
const off = parse(render(SessionBanner, { title: 'A', status: 'Paused' }));
|
|
31
|
+
expect(anyWithColor(off, '255,61,129')).toBe(false);
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
test('renders at most 3 stats, labels uppercased', () => {
|
|
35
|
+
const root = parse(
|
|
36
|
+
render(SessionBanner, {
|
|
37
|
+
title: 'A',
|
|
38
|
+
stats: [
|
|
39
|
+
{ value: '142', label: 'bpm' },
|
|
40
|
+
{ value: '12', label: 'sets' },
|
|
41
|
+
{ value: '8 400', label: 'kg vol' },
|
|
42
|
+
{ value: 'X', label: 'dropped' },
|
|
43
|
+
],
|
|
44
|
+
}),
|
|
45
|
+
);
|
|
46
|
+
expect(findByText(root, '142')).toBeDefined();
|
|
47
|
+
expect(findByText(root, 'BPM')).toBeDefined();
|
|
48
|
+
expect(findByText(root, 'KG VOL')).toBeDefined();
|
|
49
|
+
expect(findByText(root, 'DROPPED')).toBeUndefined();
|
|
50
|
+
expect(findByText(root, 'X')).toBeUndefined();
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
test('actions render as kit Buttons; leading slot renders', () => {
|
|
54
|
+
const root = parse(
|
|
55
|
+
render(SessionBanner, {
|
|
56
|
+
title: 'A',
|
|
57
|
+
leading: createElement(Text, null, 'ICON'),
|
|
58
|
+
actions: [
|
|
59
|
+
{ label: 'Resume', variant: 'primary' as const },
|
|
60
|
+
{ label: 'Discard' },
|
|
61
|
+
],
|
|
62
|
+
}),
|
|
63
|
+
);
|
|
64
|
+
expect(findByText(root, 'Resume')).toBeDefined();
|
|
65
|
+
expect(findByText(root, 'Discard')).toBeDefined();
|
|
66
|
+
expect(findByText(root, 'ICON')).toBeDefined();
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
test('single-row: with no subtitle/stats the actions fold INLINE into the head row', () => {
|
|
70
|
+
const root = parse(
|
|
71
|
+
render(SessionBanner, {
|
|
72
|
+
title: 'Push Day A',
|
|
73
|
+
status: 'LIVE · 24:18',
|
|
74
|
+
live: true,
|
|
75
|
+
actions: [{ label: 'Finish', variant: 'primary' as const }],
|
|
76
|
+
}),
|
|
77
|
+
);
|
|
78
|
+
const head = findByText(root, 'Push Day A')!.parent!; // the head row View
|
|
79
|
+
const finish = findByText(root, 'Finish')!;
|
|
80
|
+
expect(ancestors(finish)).toContain(head);
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
test('with stats present the actions keep their own row below', () => {
|
|
84
|
+
const root = parse(
|
|
85
|
+
render(SessionBanner, {
|
|
86
|
+
title: 'Push Day A',
|
|
87
|
+
stats: [{ value: '142', label: 'bpm' }],
|
|
88
|
+
actions: [{ label: 'Finish' }],
|
|
89
|
+
}),
|
|
90
|
+
);
|
|
91
|
+
const head = findByText(root, 'Push Day A')!.parent!;
|
|
92
|
+
const finish = findByText(root, 'Finish')!;
|
|
93
|
+
expect(finish).toBeDefined();
|
|
94
|
+
expect(ancestors(finish)).not.toContain(head);
|
|
95
|
+
});
|
|
96
|
+
});
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/* SetTable (native) — set labels (W / 1,2,… / D / F), set-type colors, row
|
|
2
|
+
tints, PR badge only on done PR sets, reference tones, column selection,
|
|
3
|
+
and the + Add set row. Mirrors the web twin's contract. */
|
|
4
|
+
import { describe, expect, test } from 'vitest';
|
|
5
|
+
import { colors } from '@lockin90/tokens';
|
|
6
|
+
import { SetTable, setLabels, type WorkoutSet } from '../SetTable';
|
|
7
|
+
import { ancestors, findByText, hasDeclaration, parse, render, type El } from './markup';
|
|
8
|
+
|
|
9
|
+
/** The element carries the color, whether react-native-web serialized it as
|
|
10
|
+
* an atomic class or an inline style (dynamic style objects go inline). */
|
|
11
|
+
function carriesColor(el: El, rgb: string): boolean {
|
|
12
|
+
return (el.attrs.style ?? '').includes(rgb) || hasDeclaration(el, rgb);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const SETS: WorkoutSet[] = [
|
|
16
|
+
{ id: 'a', setType: 'warmup', weight: 40, reps: 10, unit: 'kg', reference: '42.5×10', referenceTone: 'coach', done: true },
|
|
17
|
+
{ id: 'b', setType: 'working', weight: 80, reps: 5, reference: '80×5', referenceTone: 'coach', done: true, isPr: true },
|
|
18
|
+
{ id: 'c', setType: 'working', weight: 80, reps: 5, reference: '82.5×5', referenceTone: 'ai', isCurrent: true },
|
|
19
|
+
{ id: 'd', setType: 'drop', weight: 60, reps: 12 },
|
|
20
|
+
{ id: 'e', setType: 'failure', weight: 60 },
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
describe('setLabels', () => {
|
|
24
|
+
test('numbers working sets only; warmup/drop/failure get W/D/F', () => {
|
|
25
|
+
expect(setLabels(SETS)).toEqual(['W', '1', '2', 'D', 'F']);
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
describe('SetTable', () => {
|
|
30
|
+
test('renders colored set labels, values, and the unit-derived header', () => {
|
|
31
|
+
const html = render(SetTable, { sets: SETS });
|
|
32
|
+
const root = parse(html);
|
|
33
|
+
expect(findByText(root, 'W')).toBeDefined();
|
|
34
|
+
expect(findByText(root, 'D')).toBeDefined();
|
|
35
|
+
expect(findByText(root, 'F')).toBeDefined();
|
|
36
|
+
expect(findByText(root, '60×—')).toBeDefined(); // missing reps → em dash
|
|
37
|
+
expect(findByText(root, 'KG × REPS')).toBeDefined();
|
|
38
|
+
expect(findByText(root, 'COACH REC')).toBeDefined(); // default header, uppercased
|
|
39
|
+
// set-type colors — warmup amber, failure magenta
|
|
40
|
+
expect(carriesColor(findByText(root, 'W')!, '255,176,32')).toBe(true); // zoneMid
|
|
41
|
+
expect(carriesColor(findByText(root, 'F')!, '255,61,129')).toBe(true); // magenta
|
|
42
|
+
expect(colors.zoneMid).toBe('#FFB020');
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
test('stamps the PR badge only on done PR sets', () => {
|
|
46
|
+
const withPr = parse(render(SetTable, { sets: SETS }));
|
|
47
|
+
expect(findByText(withPr, 'PR')).toBeDefined(); // set b (done + isPr)
|
|
48
|
+
const notDone = parse(
|
|
49
|
+
render(SetTable, { sets: [{ id: 'x', setType: 'working', weight: 80, reps: 5, isPr: true }] as WorkoutSet[] }),
|
|
50
|
+
);
|
|
51
|
+
expect(findByText(notDone, 'PR')).toBeUndefined();
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
test('PR badge hugs the value (content-hugging row), not the flexed column edge', () => {
|
|
55
|
+
const root = parse(render(SetTable, { sets: SETS }));
|
|
56
|
+
const value = findByText(root, '80×5')!; // set b — done + isPr
|
|
57
|
+
const pr = findByText(root, 'PR')!;
|
|
58
|
+
const valueAncestors = ancestors(value);
|
|
59
|
+
const prAncestors = ancestors(pr);
|
|
60
|
+
const shared = valueAncestors.find((a) => prAncestors.includes(a));
|
|
61
|
+
expect(shared).toBeDefined();
|
|
62
|
+
// the nearest shared ancestor is the content-hugging `valGroup` row, so
|
|
63
|
+
// the badge sits directly beside the number instead of pinning to the
|
|
64
|
+
// flex:1 column's own right edge.
|
|
65
|
+
expect(hasDeclaration(shared!, 'flex-direction:row')).toBe(true);
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
test('tones the reference column (coach mint / ai violet accent)', () => {
|
|
69
|
+
const root = parse(render(SetTable, { sets: SETS }));
|
|
70
|
+
expect(carriesColor(findByText(root, '42.5×10')!, '52,245,197')).toBe(true); // mint
|
|
71
|
+
expect(carriesColor(findByText(root, '82.5×5')!, '124,92,255')).toBe(true); // accent
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
test('renders only the requested columns', () => {
|
|
75
|
+
const root = parse(render(SetTable, { sets: SETS, columns: ['set', 'value'] }));
|
|
76
|
+
expect(findByText(root, '80×5')).toBeDefined();
|
|
77
|
+
expect(findByText(root, '42.5×10')).toBeUndefined(); // reference dropped
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
test('add row renders only with onAddSet (uppercased label)', () => {
|
|
81
|
+
const withAdd = parse(render(SetTable, { sets: SETS, onAddSet: () => {}, addLabel: 'Add drop set' }));
|
|
82
|
+
expect(findByText(withAdd, '+ ADD DROP SET')).toBeDefined();
|
|
83
|
+
const without = parse(render(SetTable, { sets: SETS }));
|
|
84
|
+
expect(findByText(without, '+ ADD SET')).toBeUndefined();
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
test('editable boxes ONLY the current set value — done/pending stay plain, done dimmed', () => {
|
|
88
|
+
const sets: WorkoutSet[] = [
|
|
89
|
+
{ id: 'p', setType: 'working', weight: 60, reps: 5 }, // pending
|
|
90
|
+
{ id: 'c', setType: 'working', weight: 80, reps: 5, isCurrent: true }, // current
|
|
91
|
+
{ id: 'd', setType: 'working', weight: 100, reps: 5, done: true }, // done
|
|
92
|
+
];
|
|
93
|
+
const root = parse(render(SetTable, { sets, editable: true, columns: ['set', 'value'] }));
|
|
94
|
+
// the one cyan-accented box wraps the CURRENT value only
|
|
95
|
+
const boxed = (text: string) =>
|
|
96
|
+
ancestors(findByText(root, text)!).some((a) => hasDeclaration(a, 'rgba(34,211,238,0.35)'));
|
|
97
|
+
expect(boxed('80×5')).toBe(true);
|
|
98
|
+
expect(boxed('60×5')).toBe(false);
|
|
99
|
+
expect(boxed('100×5')).toBe(false);
|
|
100
|
+
// done value de-emphasized (textDim #AAB2C6), pending/current stay bright
|
|
101
|
+
expect(carriesColor(findByText(root, '100×5')!, '170,178,198')).toBe(true);
|
|
102
|
+
expect(carriesColor(findByText(root, '60×5')!, '170,178,198')).toBe(false);
|
|
103
|
+
expect(colors.textDim).toBe('#AAB2C6');
|
|
104
|
+
});
|
|
105
|
+
});
|