@epilot/spark-ui 0.10.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/LICENSE +201 -0
- package/NOTICE +2 -0
- package/README.md +32 -0
- package/dist/chunk-DY84GLCh.cjs +29 -0
- package/dist/components/accordion.cjs +57 -0
- package/dist/components/accordion.cjs.map +1 -0
- package/dist/components/accordion.d.cts +44 -0
- package/dist/components/accordion.d.ts +44 -0
- package/dist/components/accordion.js +51 -0
- package/dist/components/accordion.js.map +1 -0
- package/dist/components/alert-dialog.cjs +137 -0
- package/dist/components/alert-dialog.cjs.map +1 -0
- package/dist/components/alert-dialog.d.cts +62 -0
- package/dist/components/alert-dialog.d.ts +62 -0
- package/dist/components/alert-dialog.js +123 -0
- package/dist/components/alert-dialog.js.map +1 -0
- package/dist/components/attachment.cjs +119 -0
- package/dist/components/attachment.cjs.map +1 -0
- package/dist/components/attachment.d.cts +65 -0
- package/dist/components/attachment.d.ts +65 -0
- package/dist/components/attachment.js +108 -0
- package/dist/components/attachment.js.map +1 -0
- package/dist/components/avatar.cjs +56 -0
- package/dist/components/avatar.cjs.map +1 -0
- package/dist/components/avatar.d.cts +26 -0
- package/dist/components/avatar.d.ts +26 -0
- package/dist/components/avatar.js +52 -0
- package/dist/components/avatar.js.map +1 -0
- package/dist/components/badge.cjs +25 -0
- package/dist/components/badge.cjs.map +1 -0
- package/dist/components/badge.d.cts +16 -0
- package/dist/components/badge.d.ts +16 -0
- package/dist/components/badge.js +22 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/bar-chart.cjs +584 -0
- package/dist/components/bar-chart.cjs.map +1 -0
- package/dist/components/bar-chart.d.cts +102 -0
- package/dist/components/bar-chart.d.ts +102 -0
- package/dist/components/bar-chart.js +583 -0
- package/dist/components/bar-chart.js.map +1 -0
- package/dist/components/battery-progress-row.cjs +133 -0
- package/dist/components/battery-progress-row.cjs.map +1 -0
- package/dist/components/battery-progress-row.d.cts +77 -0
- package/dist/components/battery-progress-row.d.ts +77 -0
- package/dist/components/battery-progress-row.js +123 -0
- package/dist/components/battery-progress-row.js.map +1 -0
- package/dist/components/breadcrumbs.cjs +64 -0
- package/dist/components/breadcrumbs.cjs.map +1 -0
- package/dist/components/breadcrumbs.d.cts +42 -0
- package/dist/components/breadcrumbs.d.ts +42 -0
- package/dist/components/breadcrumbs.js +58 -0
- package/dist/components/breadcrumbs.js.map +1 -0
- package/dist/components/bubble.cjs +84 -0
- package/dist/components/bubble.cjs.map +1 -0
- package/dist/components/bubble.d.cts +39 -0
- package/dist/components/bubble.d.ts +39 -0
- package/dist/components/bubble.js +78 -0
- package/dist/components/bubble.js.map +1 -0
- package/dist/components/button-group.cjs +72 -0
- package/dist/components/button-group.cjs.map +1 -0
- package/dist/components/button-group.d.cts +29 -0
- package/dist/components/button-group.d.ts +29 -0
- package/dist/components/button-group.js +64 -0
- package/dist/components/button-group.js.map +1 -0
- package/dist/components/button.cjs +58 -0
- package/dist/components/button.cjs.map +1 -0
- package/dist/components/button.d.cts +29 -0
- package/dist/components/button.d.ts +29 -0
- package/dist/components/button.js +54 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/calendar.cjs +59 -0
- package/dist/components/calendar.cjs.map +1 -0
- package/dist/components/calendar.d.cts +20 -0
- package/dist/components/calendar.d.ts +20 -0
- package/dist/components/calendar.js +56 -0
- package/dist/components/calendar.js.map +1 -0
- package/dist/components/callout.cjs +95 -0
- package/dist/components/callout.cjs.map +1 -0
- package/dist/components/callout.d.cts +42 -0
- package/dist/components/callout.d.ts +42 -0
- package/dist/components/callout.js +88 -0
- package/dist/components/callout.js.map +1 -0
- package/dist/components/card.cjs +100 -0
- package/dist/components/card.cjs.map +1 -0
- package/dist/components/card.d.cts +34 -0
- package/dist/components/card.d.ts +34 -0
- package/dist/components/card.js +90 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/chart.cjs +110 -0
- package/dist/components/chart.cjs.map +1 -0
- package/dist/components/chart.d.cts +92 -0
- package/dist/components/chart.d.ts +92 -0
- package/dist/components/chart.js +104 -0
- package/dist/components/chart.js.map +1 -0
- package/dist/components/checkbox.cjs +44 -0
- package/dist/components/checkbox.cjs.map +1 -0
- package/dist/components/checkbox.d.cts +26 -0
- package/dist/components/checkbox.d.ts +26 -0
- package/dist/components/checkbox.js +41 -0
- package/dist/components/checkbox.js.map +1 -0
- package/dist/components/circular-gauge.cjs +74 -0
- package/dist/components/circular-gauge.cjs.map +1 -0
- package/dist/components/circular-gauge.d.cts +37 -0
- package/dist/components/circular-gauge.d.ts +37 -0
- package/dist/components/circular-gauge.js +71 -0
- package/dist/components/circular-gauge.js.map +1 -0
- package/dist/components/day-of-week-picker.cjs +123 -0
- package/dist/components/day-of-week-picker.cjs.map +1 -0
- package/dist/components/day-of-week-picker.d.cts +39 -0
- package/dist/components/day-of-week-picker.d.ts +39 -0
- package/dist/components/day-of-week-picker.js +119 -0
- package/dist/components/day-of-week-picker.js.map +1 -0
- package/dist/components/device-card.cjs +118 -0
- package/dist/components/device-card.cjs.map +1 -0
- package/dist/components/device-card.d.cts +70 -0
- package/dist/components/device-card.d.ts +70 -0
- package/dist/components/device-card.js +104 -0
- package/dist/components/device-card.js.map +1 -0
- package/dist/components/dialog.cjs +115 -0
- package/dist/components/dialog.cjs.map +1 -0
- package/dist/components/dialog.d.cts +44 -0
- package/dist/components/dialog.d.ts +44 -0
- package/dist/components/dialog.js +103 -0
- package/dist/components/dialog.js.map +1 -0
- package/dist/components/donut-chart.cjs +70 -0
- package/dist/components/donut-chart.cjs.map +1 -0
- package/dist/components/donut-chart.d.cts +20 -0
- package/dist/components/donut-chart.d.ts +20 -0
- package/dist/components/donut-chart.js +69 -0
- package/dist/components/donut-chart.js.map +1 -0
- package/dist/components/drawer.cjs +95 -0
- package/dist/components/drawer.cjs.map +1 -0
- package/dist/components/drawer.d.cts +45 -0
- package/dist/components/drawer.d.ts +45 -0
- package/dist/components/drawer.js +83 -0
- package/dist/components/drawer.js.map +1 -0
- package/dist/components/dropdown-menu.cjs +165 -0
- package/dist/components/dropdown-menu.cjs.map +1 -0
- package/dist/components/dropdown-menu.d.cts +92 -0
- package/dist/components/dropdown-menu.d.ts +92 -0
- package/dist/components/dropdown-menu.js +148 -0
- package/dist/components/dropdown-menu.js.map +1 -0
- package/dist/components/empty-state.cjs +41 -0
- package/dist/components/empty-state.cjs.map +1 -0
- package/dist/components/empty-state.d.cts +26 -0
- package/dist/components/empty-state.d.ts +26 -0
- package/dist/components/empty-state.js +41 -0
- package/dist/components/empty-state.js.map +1 -0
- package/dist/components/energy-bar-chart.cjs +23 -0
- package/dist/components/energy-bar-chart.cjs.map +1 -0
- package/dist/components/energy-bar-chart.d.cts +43 -0
- package/dist/components/energy-bar-chart.d.ts +43 -0
- package/dist/components/energy-bar-chart.js +22 -0
- package/dist/components/energy-bar-chart.js.map +1 -0
- package/dist/components/energy-breakdown.cjs +80 -0
- package/dist/components/energy-breakdown.cjs.map +1 -0
- package/dist/components/energy-breakdown.d.cts +24 -0
- package/dist/components/energy-breakdown.d.ts +24 -0
- package/dist/components/energy-breakdown.js +79 -0
- package/dist/components/energy-breakdown.js.map +1 -0
- package/dist/components/energy-history-chart.cjs +63 -0
- package/dist/components/energy-history-chart.cjs.map +1 -0
- package/dist/components/energy-history-chart.d.cts +64 -0
- package/dist/components/energy-history-chart.d.ts +64 -0
- package/dist/components/energy-history-chart.js +62 -0
- package/dist/components/energy-history-chart.js.map +1 -0
- package/dist/components/feed-in-hero.cjs +55 -0
- package/dist/components/feed-in-hero.cjs.map +1 -0
- package/dist/components/feed-in-hero.d.cts +32 -0
- package/dist/components/feed-in-hero.d.ts +32 -0
- package/dist/components/feed-in-hero.js +51 -0
- package/dist/components/feed-in-hero.js.map +1 -0
- package/dist/components/field.cjs +257 -0
- package/dist/components/field.cjs.map +1 -0
- package/dist/components/field.d.cts +103 -0
- package/dist/components/field.d.ts +103 -0
- package/dist/components/field.js +243 -0
- package/dist/components/field.js.map +1 -0
- package/dist/components/icon.cjs +35 -0
- package/dist/components/icon.cjs.map +1 -0
- package/dist/components/icon.d.cts +26 -0
- package/dist/components/icon.d.ts +26 -0
- package/dist/components/icon.js +32 -0
- package/dist/components/icon.js.map +1 -0
- package/dist/components/info-block.cjs +75 -0
- package/dist/components/info-block.cjs.map +1 -0
- package/dist/components/info-block.d.cts +19 -0
- package/dist/components/info-block.d.ts +19 -0
- package/dist/components/info-block.js +65 -0
- package/dist/components/info-block.js.map +1 -0
- package/dist/components/input-group.cjs +165 -0
- package/dist/components/input-group.cjs.map +1 -0
- package/dist/components/input-group.d.cts +27 -0
- package/dist/components/input-group.d.ts +27 -0
- package/dist/components/input-group.js +159 -0
- package/dist/components/input-group.js.map +1 -0
- package/dist/components/input-otp.cjs +112 -0
- package/dist/components/input-otp.cjs.map +1 -0
- package/dist/components/input-otp.d.cts +24 -0
- package/dist/components/input-otp.d.ts +24 -0
- package/dist/components/input-otp.js +111 -0
- package/dist/components/input-otp.js.map +1 -0
- package/dist/components/input.cjs +113 -0
- package/dist/components/input.cjs.map +1 -0
- package/dist/components/input.d.cts +14 -0
- package/dist/components/input.d.ts +14 -0
- package/dist/components/input.js +110 -0
- package/dist/components/input.js.map +1 -0
- package/dist/components/label.cjs +18 -0
- package/dist/components/label.cjs.map +1 -0
- package/dist/components/label.d.cts +10 -0
- package/dist/components/label.d.ts +10 -0
- package/dist/components/label.js +15 -0
- package/dist/components/label.js.map +1 -0
- package/dist/components/layout.cjs +14 -0
- package/dist/components/layout.cjs.map +1 -0
- package/dist/components/layout.d.cts +11 -0
- package/dist/components/layout.d.ts +12 -0
- package/dist/components/layout.js +14 -0
- package/dist/components/layout.js.map +1 -0
- package/dist/components/line-chart.cjs +538 -0
- package/dist/components/line-chart.cjs.map +1 -0
- package/dist/components/line-chart.d.cts +90 -0
- package/dist/components/line-chart.d.ts +90 -0
- package/dist/components/line-chart.js +536 -0
- package/dist/components/line-chart.js.map +1 -0
- package/dist/components/list.cjs +132 -0
- package/dist/components/list.cjs.map +1 -0
- package/dist/components/list.d.cts +71 -0
- package/dist/components/list.d.ts +71 -0
- package/dist/components/list.js +122 -0
- package/dist/components/list.js.map +1 -0
- package/dist/components/marker.cjs +52 -0
- package/dist/components/marker.cjs.map +1 -0
- package/dist/components/marker.d.cts +27 -0
- package/dist/components/marker.d.ts +27 -0
- package/dist/components/marker.js +46 -0
- package/dist/components/marker.js.map +1 -0
- package/dist/components/message-scroller.cjs +73 -0
- package/dist/components/message-scroller.cjs.map +1 -0
- package/dist/components/message-scroller.d.cts +38 -0
- package/dist/components/message-scroller.d.ts +38 -0
- package/dist/components/message-scroller.js +62 -0
- package/dist/components/message-scroller.js.map +1 -0
- package/dist/components/message.cjs +60 -0
- package/dist/components/message.cjs.map +1 -0
- package/dist/components/message.d.cts +35 -0
- package/dist/components/message.d.ts +35 -0
- package/dist/components/message.js +52 -0
- package/dist/components/message.js.map +1 -0
- package/dist/components/metering-row.cjs +42 -0
- package/dist/components/metering-row.cjs.map +1 -0
- package/dist/components/metering-row.d.cts +31 -0
- package/dist/components/metering-row.d.ts +31 -0
- package/dist/components/metering-row.js +38 -0
- package/dist/components/metering-row.js.map +1 -0
- package/dist/components/money-saved-block.cjs +86 -0
- package/dist/components/money-saved-block.cjs.map +1 -0
- package/dist/components/money-saved-block.d.cts +55 -0
- package/dist/components/money-saved-block.d.ts +55 -0
- package/dist/components/money-saved-block.js +79 -0
- package/dist/components/money-saved-block.js.map +1 -0
- package/dist/components/number-flow.cjs +44 -0
- package/dist/components/number-flow.cjs.map +1 -0
- package/dist/components/number-flow.d.cts +4 -0
- package/dist/components/number-flow.d.ts +4 -0
- package/dist/components/number-flow.js +42 -0
- package/dist/components/number-flow.js.map +1 -0
- package/dist/components/on-off-button.cjs +35 -0
- package/dist/components/on-off-button.cjs.map +1 -0
- package/dist/components/on-off-button.d.cts +18 -0
- package/dist/components/on-off-button.d.ts +18 -0
- package/dist/components/on-off-button.js +34 -0
- package/dist/components/on-off-button.js.map +1 -0
- package/dist/components/onboarding-layout.cjs +67 -0
- package/dist/components/onboarding-layout.cjs.map +1 -0
- package/dist/components/onboarding-layout.d.cts +44 -0
- package/dist/components/onboarding-layout.d.ts +44 -0
- package/dist/components/onboarding-layout.js +60 -0
- package/dist/components/onboarding-layout.js.map +1 -0
- package/dist/components/page-header.cjs +50 -0
- package/dist/components/page-header.cjs.map +1 -0
- package/dist/components/page-header.d.cts +25 -0
- package/dist/components/page-header.d.ts +25 -0
- package/dist/components/page-header.js +44 -0
- package/dist/components/page-header.js.map +1 -0
- package/dist/components/page-spinner.cjs +18 -0
- package/dist/components/page-spinner.cjs.map +1 -0
- package/dist/components/page-spinner.d.cts +12 -0
- package/dist/components/page-spinner.d.ts +12 -0
- package/dist/components/page-spinner.js +17 -0
- package/dist/components/page-spinner.js.map +1 -0
- package/dist/components/period-tabs.cjs +78 -0
- package/dist/components/period-tabs.cjs.map +1 -0
- package/dist/components/period-tabs.d.cts +50 -0
- package/dist/components/period-tabs.d.ts +50 -0
- package/dist/components/period-tabs.js +73 -0
- package/dist/components/period-tabs.js.map +1 -0
- package/dist/components/pill.cjs +62 -0
- package/dist/components/pill.cjs.map +1 -0
- package/dist/components/pill.d.cts +29 -0
- package/dist/components/pill.d.ts +29 -0
- package/dist/components/pill.js +59 -0
- package/dist/components/pill.js.map +1 -0
- package/dist/components/popover.cjs +62 -0
- package/dist/components/popover.cjs.map +1 -0
- package/dist/components/popover.d.cts +28 -0
- package/dist/components/popover.d.ts +28 -0
- package/dist/components/popover.js +56 -0
- package/dist/components/popover.js.map +1 -0
- package/dist/components/power-history-chart.cjs +498 -0
- package/dist/components/power-history-chart.cjs.map +1 -0
- package/dist/components/power-history-chart.d.cts +71 -0
- package/dist/components/power-history-chart.d.ts +71 -0
- package/dist/components/power-history-chart.js +496 -0
- package/dist/components/power-history-chart.js.map +1 -0
- package/dist/components/power-history.cjs +114 -0
- package/dist/components/power-history.cjs.map +1 -0
- package/dist/components/power-history.d.cts +40 -0
- package/dist/components/power-history.d.ts +41 -0
- package/dist/components/power-history.js +114 -0
- package/dist/components/power-history.js.map +1 -0
- package/dist/components/power-network.cjs +562 -0
- package/dist/components/power-network.cjs.map +1 -0
- package/dist/components/power-network.d.cts +80 -0
- package/dist/components/power-network.d.ts +80 -0
- package/dist/components/power-network.js +556 -0
- package/dist/components/power-network.js.map +1 -0
- package/dist/components/progress.cjs +34 -0
- package/dist/components/progress.cjs.map +1 -0
- package/dist/components/progress.d.cts +17 -0
- package/dist/components/progress.d.ts +17 -0
- package/dist/components/progress.js +31 -0
- package/dist/components/progress.js.map +1 -0
- package/dist/components/radio-card-group.cjs +94 -0
- package/dist/components/radio-card-group.cjs.map +1 -0
- package/dist/components/radio-card-group.d.cts +21 -0
- package/dist/components/radio-card-group.d.ts +21 -0
- package/dist/components/radio-card-group.js +90 -0
- package/dist/components/radio-card-group.js.map +1 -0
- package/dist/components/radio.cjs +41 -0
- package/dist/components/radio.cjs.map +1 -0
- package/dist/components/radio.d.cts +32 -0
- package/dist/components/radio.d.ts +32 -0
- package/dist/components/radio.js +37 -0
- package/dist/components/radio.js.map +1 -0
- package/dist/components/reparent.cjs +55 -0
- package/dist/components/reparent.cjs.map +1 -0
- package/dist/components/reparent.d.cts +28 -0
- package/dist/components/reparent.d.ts +28 -0
- package/dist/components/reparent.js +49 -0
- package/dist/components/reparent.js.map +1 -0
- package/dist/components/sankey-chart.cjs +187 -0
- package/dist/components/sankey-chart.cjs.map +1 -0
- package/dist/components/sankey-chart.d.cts +66 -0
- package/dist/components/sankey-chart.d.ts +66 -0
- package/dist/components/sankey-chart.js +185 -0
- package/dist/components/sankey-chart.js.map +1 -0
- package/dist/components/schedule-editor.cjs +82 -0
- package/dist/components/schedule-editor.cjs.map +1 -0
- package/dist/components/schedule-editor.d.cts +25 -0
- package/dist/components/schedule-editor.d.ts +25 -0
- package/dist/components/schedule-editor.js +72 -0
- package/dist/components/schedule-editor.js.map +1 -0
- package/dist/components/schedule-list.cjs +110 -0
- package/dist/components/schedule-list.cjs.map +1 -0
- package/dist/components/schedule-list.d.cts +29 -0
- package/dist/components/schedule-list.d.ts +29 -0
- package/dist/components/schedule-list.js +99 -0
- package/dist/components/schedule-list.js.map +1 -0
- package/dist/components/scroll-area.cjs +53 -0
- package/dist/components/scroll-area.cjs.map +1 -0
- package/dist/components/scroll-area.d.cts +24 -0
- package/dist/components/scroll-area.d.ts +24 -0
- package/dist/components/scroll-area.js +44 -0
- package/dist/components/scroll-area.js.map +1 -0
- package/dist/components/segmented-control.cjs +44 -0
- package/dist/components/segmented-control.cjs.map +1 -0
- package/dist/components/segmented-control.d.cts +32 -0
- package/dist/components/segmented-control.d.ts +32 -0
- package/dist/components/segmented-control.js +40 -0
- package/dist/components/segmented-control.js.map +1 -0
- package/dist/components/select.cjs +136 -0
- package/dist/components/select.cjs.map +1 -0
- package/dist/components/select.d.cts +62 -0
- package/dist/components/select.d.ts +62 -0
- package/dist/components/select.js +124 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/separator.cjs +38 -0
- package/dist/components/separator.cjs.map +1 -0
- package/dist/components/separator.d.cts +13 -0
- package/dist/components/separator.d.ts +13 -0
- package/dist/components/separator.js +35 -0
- package/dist/components/separator.js.map +1 -0
- package/dist/components/series-legend.cjs +38 -0
- package/dist/components/series-legend.cjs.map +1 -0
- package/dist/components/series-legend.d.cts +29 -0
- package/dist/components/series-legend.d.ts +29 -0
- package/dist/components/series-legend.js +37 -0
- package/dist/components/series-legend.js.map +1 -0
- package/dist/components/sheet.cjs +102 -0
- package/dist/components/sheet.cjs.map +1 -0
- package/dist/components/sheet.d.cts +45 -0
- package/dist/components/sheet.d.ts +45 -0
- package/dist/components/sheet.js +90 -0
- package/dist/components/sheet.js.map +1 -0
- package/dist/components/skeleton.cjs +23 -0
- package/dist/components/skeleton.cjs.map +1 -0
- package/dist/components/skeleton.d.cts +23 -0
- package/dist/components/skeleton.d.ts +23 -0
- package/dist/components/skeleton.js +21 -0
- package/dist/components/skeleton.js.map +1 -0
- package/dist/components/slider.cjs +263 -0
- package/dist/components/slider.cjs.map +1 -0
- package/dist/components/slider.d.cts +136 -0
- package/dist/components/slider.d.ts +136 -0
- package/dist/components/slider.js +253 -0
- package/dist/components/slider.js.map +1 -0
- package/dist/components/smart-toggle-button.cjs +27 -0
- package/dist/components/smart-toggle-button.cjs.map +1 -0
- package/dist/components/smart-toggle-button.d.cts +16 -0
- package/dist/components/smart-toggle-button.d.ts +16 -0
- package/dist/components/smart-toggle-button.js +26 -0
- package/dist/components/smart-toggle-button.js.map +1 -0
- package/dist/components/solar-forecast-chart.cjs +109 -0
- package/dist/components/solar-forecast-chart.cjs.map +1 -0
- package/dist/components/solar-forecast-chart.d.cts +77 -0
- package/dist/components/solar-forecast-chart.d.ts +77 -0
- package/dist/components/solar-forecast-chart.js +104 -0
- package/dist/components/solar-forecast-chart.js.map +1 -0
- package/dist/components/sortable-list.cjs +68 -0
- package/dist/components/sortable-list.cjs.map +1 -0
- package/dist/components/sortable-list.d.cts +45 -0
- package/dist/components/sortable-list.d.ts +45 -0
- package/dist/components/sortable-list.js +67 -0
- package/dist/components/sortable-list.js.map +1 -0
- package/dist/components/spinner.cjs +42 -0
- package/dist/components/spinner.cjs.map +1 -0
- package/dist/components/spinner.d.cts +15 -0
- package/dist/components/spinner.d.ts +15 -0
- package/dist/components/spinner.js +39 -0
- package/dist/components/spinner.js.map +1 -0
- package/dist/components/stat-card.cjs +57 -0
- package/dist/components/stat-card.cjs.map +1 -0
- package/dist/components/stat-card.d.cts +34 -0
- package/dist/components/stat-card.d.ts +34 -0
- package/dist/components/stat-card.js +50 -0
- package/dist/components/stat-card.js.map +1 -0
- package/dist/components/stepper.cjs +79 -0
- package/dist/components/stepper.cjs.map +1 -0
- package/dist/components/stepper.d.cts +33 -0
- package/dist/components/stepper.d.ts +33 -0
- package/dist/components/stepper.js +76 -0
- package/dist/components/stepper.js.map +1 -0
- package/dist/components/switch.cjs +26 -0
- package/dist/components/switch.cjs.map +1 -0
- package/dist/components/switch.d.cts +32 -0
- package/dist/components/switch.d.ts +32 -0
- package/dist/components/switch.js +25 -0
- package/dist/components/switch.js.map +1 -0
- package/dist/components/tabs.cjs +178 -0
- package/dist/components/tabs.cjs.map +1 -0
- package/dist/components/tabs.d.cts +44 -0
- package/dist/components/tabs.d.ts +44 -0
- package/dist/components/tabs.js +170 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/textarea.cjs +128 -0
- package/dist/components/textarea.cjs.map +1 -0
- package/dist/components/textarea.d.cts +15 -0
- package/dist/components/textarea.d.ts +15 -0
- package/dist/components/textarea.js +125 -0
- package/dist/components/textarea.js.map +1 -0
- package/dist/components/theme.cjs +122 -0
- package/dist/components/theme.cjs.map +1 -0
- package/dist/components/theme.d.cts +36 -0
- package/dist/components/theme.d.ts +36 -0
- package/dist/components/theme.js +118 -0
- package/dist/components/theme.js.map +1 -0
- package/dist/components/thumbnail.cjs +54 -0
- package/dist/components/thumbnail.cjs.map +1 -0
- package/dist/components/thumbnail.d.cts +33 -0
- package/dist/components/thumbnail.d.ts +33 -0
- package/dist/components/thumbnail.js +51 -0
- package/dist/components/thumbnail.js.map +1 -0
- package/dist/components/time-picker.cjs +105 -0
- package/dist/components/time-picker.cjs.map +1 -0
- package/dist/components/time-picker.d.cts +43 -0
- package/dist/components/time-picker.d.ts +43 -0
- package/dist/components/time-picker.js +101 -0
- package/dist/components/time-picker.js.map +1 -0
- package/dist/components/toast.cjs +192 -0
- package/dist/components/toast.cjs.map +1 -0
- package/dist/components/toast.d.cts +59 -0
- package/dist/components/toast.d.ts +59 -0
- package/dist/components/toast.js +188 -0
- package/dist/components/toast.js.map +1 -0
- package/dist/components/tooltip.cjs +85 -0
- package/dist/components/tooltip.cjs.map +1 -0
- package/dist/components/tooltip.d.cts +48 -0
- package/dist/components/tooltip.d.ts +48 -0
- package/dist/components/tooltip.js +77 -0
- package/dist/components/tooltip.js.map +1 -0
- package/dist/components/typography.cjs +51 -0
- package/dist/components/typography.cjs.map +1 -0
- package/dist/components/typography.d.cts +30 -0
- package/dist/components/typography.d.ts +30 -0
- package/dist/components/typography.js +45 -0
- package/dist/components/typography.js.map +1 -0
- package/dist/generate-radix-colors-Bw-RYaV4.d.cts +33 -0
- package/dist/generate-radix-colors-Bw-RYaV4.d.ts +33 -0
- package/dist/hooks/use-chart-zoom.cjs +236 -0
- package/dist/hooks/use-chart-zoom.cjs.map +1 -0
- package/dist/hooks/use-chart-zoom.d.cts +53 -0
- package/dist/hooks/use-chart-zoom.d.ts +53 -0
- package/dist/hooks/use-chart-zoom.js +234 -0
- package/dist/hooks/use-chart-zoom.js.map +1 -0
- package/dist/hooks/use-container-width.cjs +21 -0
- package/dist/hooks/use-container-width.cjs.map +1 -0
- package/dist/hooks/use-container-width.d.cts +7 -0
- package/dist/hooks/use-container-width.d.ts +7 -0
- package/dist/hooks/use-container-width.js +20 -0
- package/dist/hooks/use-container-width.js.map +1 -0
- package/dist/hooks/use-reduced-motion.cjs +21 -0
- package/dist/hooks/use-reduced-motion.cjs.map +1 -0
- package/dist/hooks/use-reduced-motion.d.cts +7 -0
- package/dist/hooks/use-reduced-motion.d.ts +7 -0
- package/dist/hooks/use-reduced-motion.js +20 -0
- package/dist/hooks/use-reduced-motion.js.map +1 -0
- package/dist/icons/index.cjs +7 -0
- package/dist/icons/index.d.cts +4 -0
- package/dist/icons/index.d.ts +4 -0
- package/dist/icons/index.js +3 -0
- package/dist/icons/material-symbol.cjs +104 -0
- package/dist/icons/material-symbol.cjs.map +1 -0
- package/dist/icons/material-symbol.d.cts +21 -0
- package/dist/icons/material-symbol.d.ts +21 -0
- package/dist/icons/material-symbol.js +100 -0
- package/dist/icons/material-symbol.js.map +1 -0
- package/dist/lib/accent-colors.cjs +14 -0
- package/dist/lib/accent-colors.cjs.map +1 -0
- package/dist/lib/accent-colors.d.cts +8 -0
- package/dist/lib/accent-colors.d.ts +8 -0
- package/dist/lib/accent-colors.js +13 -0
- package/dist/lib/accent-colors.js.map +1 -0
- package/dist/lib/accent-theme.cjs +130 -0
- package/dist/lib/accent-theme.cjs.map +1 -0
- package/dist/lib/accent-theme.d.cts +35 -0
- package/dist/lib/accent-theme.d.ts +35 -0
- package/dist/lib/accent-theme.js +122 -0
- package/dist/lib/accent-theme.js.map +1 -0
- package/dist/lib/generate-radix-colors.cjs +364 -0
- package/dist/lib/generate-radix-colors.cjs.map +1 -0
- package/dist/lib/generate-radix-colors.d.cts +4 -0
- package/dist/lib/generate-radix-colors.d.ts +4 -0
- package/dist/lib/generate-radix-colors.js +357 -0
- package/dist/lib/generate-radix-colors.js.map +1 -0
- package/dist/lib/input-box-variants.cjs +30 -0
- package/dist/lib/input-box-variants.cjs.map +1 -0
- package/dist/lib/input-box-variants.d.cts +10 -0
- package/dist/lib/input-box-variants.d.ts +10 -0
- package/dist/lib/input-box-variants.js +28 -0
- package/dist/lib/input-box-variants.js.map +1 -0
- package/dist/lib/theme-types.cjs +1 -0
- package/dist/lib/theme-types.d.cts +4 -0
- package/dist/lib/theme-types.d.ts +4 -0
- package/dist/lib/theme-types.js +2 -0
- package/dist/lib/tones.cjs +14 -0
- package/dist/lib/tones.cjs.map +1 -0
- package/dist/lib/tones.d.cts +8 -0
- package/dist/lib/tones.d.ts +8 -0
- package/dist/lib/tones.js +13 -0
- package/dist/lib/tones.js.map +1 -0
- package/dist/number-flow-Bch81ixZ.d.cts +14 -0
- package/dist/number-flow-Bch81ixZ.d.ts +14 -0
- package/dist/styles/index.css +447 -0
- package/dist/styles/internal.css +5 -0
- package/dist/styles/material-symbol.css +22 -0
- package/dist/styles/spark-default.css +980 -0
- package/dist/styles/theme.css +623 -0
- package/dist/styles/utilities.css +557 -0
- package/dist/theme-types-8wjgiNA_.d.cts +29 -0
- package/dist/theme-types-8wjgiNA_.d.ts +29 -0
- package/dist/utils/build-sankey-nodes.cjs +72 -0
- package/dist/utils/build-sankey-nodes.cjs.map +1 -0
- package/dist/utils/build-sankey-nodes.d.cts +27 -0
- package/dist/utils/build-sankey-nodes.d.ts +27 -0
- package/dist/utils/build-sankey-nodes.js +71 -0
- package/dist/utils/build-sankey-nodes.js.map +1 -0
- package/dist/utils/chars.cjs +18 -0
- package/dist/utils/chars.cjs.map +1 -0
- package/dist/utils/chars.d.cts +10 -0
- package/dist/utils/chars.d.ts +10 -0
- package/dist/utils/chars.js +14 -0
- package/dist/utils/chars.js.map +1 -0
- package/dist/utils/chart-scale.cjs +54 -0
- package/dist/utils/chart-scale.cjs.map +1 -0
- package/dist/utils/chart-scale.d.cts +29 -0
- package/dist/utils/chart-scale.d.ts +29 -0
- package/dist/utils/chart-scale.js +51 -0
- package/dist/utils/chart-scale.js.map +1 -0
- package/dist/utils/chart-time-ticks.cjs +35 -0
- package/dist/utils/chart-time-ticks.cjs.map +1 -0
- package/dist/utils/chart-time-ticks.d.cts +7 -0
- package/dist/utils/chart-time-ticks.d.ts +7 -0
- package/dist/utils/chart-time-ticks.js +34 -0
- package/dist/utils/chart-time-ticks.js.map +1 -0
- package/dist/utils/chart-zoom.cjs +84 -0
- package/dist/utils/chart-zoom.cjs.map +1 -0
- package/dist/utils/chart-zoom.d.cts +14 -0
- package/dist/utils/chart-zoom.d.ts +14 -0
- package/dist/utils/chart-zoom.js +77 -0
- package/dist/utils/chart-zoom.js.map +1 -0
- package/dist/utils/cn.cjs +9 -0
- package/dist/utils/cn.d.cts +4 -0
- package/dist/utils/cn.d.ts +4 -0
- package/dist/utils/cn.js +3 -0
- package/dist/utils/date-mask.cjs +45 -0
- package/dist/utils/date-mask.cjs.map +1 -0
- package/dist/utils/date-mask.d.cts +17 -0
- package/dist/utils/date-mask.d.ts +17 -0
- package/dist/utils/date-mask.js +41 -0
- package/dist/utils/date-mask.js.map +1 -0
- package/dist/utils/format.cjs +57 -0
- package/dist/utils/format.cjs.map +1 -0
- package/dist/utils/format.d.cts +23 -0
- package/dist/utils/format.d.ts +23 -0
- package/dist/utils/format.js +47 -0
- package/dist/utils/format.js.map +1 -0
- package/package.json +109 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../utils/cn.js";
|
|
3
|
+
import "react";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/circular-gauge.tsx
|
|
6
|
+
const TRACK_TONE_CLASSES = {
|
|
7
|
+
success: "stroke-base-success-soft",
|
|
8
|
+
warning: "stroke-base-warning-soft",
|
|
9
|
+
error: "stroke-base-error-soft",
|
|
10
|
+
accent: "stroke-base-accent-soft",
|
|
11
|
+
neutral: "stroke-base-gray-soft"
|
|
12
|
+
};
|
|
13
|
+
const INDICATOR_TONE_CLASSES = {
|
|
14
|
+
success: "stroke-base-success-solid",
|
|
15
|
+
warning: "stroke-warning-active",
|
|
16
|
+
error: "stroke-error-active",
|
|
17
|
+
accent: "stroke-accent",
|
|
18
|
+
neutral: "stroke-gray"
|
|
19
|
+
};
|
|
20
|
+
const CircularGauge = ({ className, value, max = 100, tone = "accent", size = 44, strokeWidth = 4, children, ...rest }) => {
|
|
21
|
+
const clamped = Math.min(Math.max(value, 0), max);
|
|
22
|
+
const radius = (size - strokeWidth) / 2;
|
|
23
|
+
const circumference = 2 * Math.PI * radius;
|
|
24
|
+
const offset = circumference * (1 - clamped / max);
|
|
25
|
+
const percent = Math.round(clamped / max * 100);
|
|
26
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
27
|
+
className: cn("relative inline-flex shrink-0", className),
|
|
28
|
+
style: {
|
|
29
|
+
width: size,
|
|
30
|
+
height: size
|
|
31
|
+
},
|
|
32
|
+
role: "meter",
|
|
33
|
+
"aria-valuemin": 0,
|
|
34
|
+
"aria-valuemax": max,
|
|
35
|
+
"aria-valuenow": value,
|
|
36
|
+
"aria-valuetext": `${percent}%`,
|
|
37
|
+
...rest,
|
|
38
|
+
children: [/* @__PURE__ */ jsxs("svg", {
|
|
39
|
+
className: "size-full -rotate-90",
|
|
40
|
+
width: size,
|
|
41
|
+
height: size,
|
|
42
|
+
viewBox: `0 0 ${size} ${size}`,
|
|
43
|
+
"aria-hidden": "true",
|
|
44
|
+
children: [/* @__PURE__ */ jsx("circle", {
|
|
45
|
+
cx: size / 2,
|
|
46
|
+
cy: size / 2,
|
|
47
|
+
r: radius,
|
|
48
|
+
fill: "none",
|
|
49
|
+
strokeWidth,
|
|
50
|
+
className: TRACK_TONE_CLASSES[tone]
|
|
51
|
+
}), /* @__PURE__ */ jsx("circle", {
|
|
52
|
+
cx: size / 2,
|
|
53
|
+
cy: size / 2,
|
|
54
|
+
r: radius,
|
|
55
|
+
fill: "none",
|
|
56
|
+
strokeWidth,
|
|
57
|
+
strokeLinecap: "round",
|
|
58
|
+
strokeDasharray: circumference,
|
|
59
|
+
strokeDashoffset: offset,
|
|
60
|
+
className: cn("transition-[stroke-dashoffset] duration-300", INDICATOR_TONE_CLASSES[tone])
|
|
61
|
+
})]
|
|
62
|
+
}), children !== void 0 && /* @__PURE__ */ jsx("span", {
|
|
63
|
+
className: "absolute inset-0 flex items-center justify-center text-[11px] leading-none font-semibold tabular-nums",
|
|
64
|
+
children
|
|
65
|
+
})]
|
|
66
|
+
});
|
|
67
|
+
};
|
|
68
|
+
//#endregion
|
|
69
|
+
export { CircularGauge };
|
|
70
|
+
|
|
71
|
+
//# sourceMappingURL=circular-gauge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"circular-gauge.js","names":[],"sources":["../../src/components/circular-gauge.tsx"],"sourcesContent":["import * as React from 'react'\nimport type { Tone } from '../lib/tones'\nimport { cn } from '../utils/cn'\n\nconst TRACK_TONE_CLASSES: Record<Tone, string> = {\n success: 'stroke-base-success-soft',\n warning: 'stroke-base-warning-soft',\n error: 'stroke-base-error-soft',\n accent: 'stroke-base-accent-soft',\n neutral: 'stroke-base-gray-soft',\n}\n\nconst INDICATOR_TONE_CLASSES: Record<Tone, string> = {\n // solid ramp, not `-active`: keeps the ring in step with DeviceCardState's dot\n success: 'stroke-base-success-solid',\n warning: 'stroke-warning-active',\n error: 'stroke-error-active',\n accent: 'stroke-accent',\n neutral: 'stroke-gray',\n}\n\n/**\n * Consumers should pass an `aria-label` to name the metric the gauge represents\n * (e.g. \"Battery\"); `aria-valuetext` defaults to the value as a percentage.\n */\nexport interface CircularGaugeProps extends Omit<\n React.ComponentProps<'div'>,\n 'children'\n> {\n /** Current value (0–max). */\n value: number\n /** Maximum value. Default: 100 */\n max?: number\n /** Tone color for the indicator/track pair. Default: \"accent\" */\n tone?: Tone\n /** Diameter in pixels. Default: 44 */\n size?: number\n /** Stroke thickness in pixels. Default: 4 */\n strokeWidth?: number\n /** Optional content rendered centered inside the gauge (e.g. percentage, icon). */\n children?: React.ReactNode\n}\n\nconst CircularGauge = ({\n className,\n value,\n max = 100,\n tone = 'accent',\n size = 44,\n strokeWidth = 4,\n children,\n ...rest\n}: CircularGaugeProps) => {\n const clamped = Math.min(Math.max(value, 0), max)\n const radius = (size - strokeWidth) / 2\n const circumference = 2 * Math.PI * radius\n const offset = circumference * (1 - clamped / max)\n const percent = Math.round((clamped / max) * 100)\n\n return (\n <div\n className={cn('relative inline-flex shrink-0', className)}\n style={{ width: size, height: size }}\n role=\"meter\"\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-valuetext={`${percent}%`}\n {...rest}\n >\n <svg\n className=\"size-full -rotate-90\"\n width={size}\n height={size}\n viewBox={`0 0 ${size} ${size}`}\n aria-hidden=\"true\"\n >\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n fill=\"none\"\n strokeWidth={strokeWidth}\n className={TRACK_TONE_CLASSES[tone]}\n />\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n fill=\"none\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeDasharray={circumference}\n strokeDashoffset={offset}\n className={cn(\n 'transition-[stroke-dashoffset] duration-300',\n INDICATOR_TONE_CLASSES[tone],\n )}\n />\n </svg>\n {children !== undefined && (\n <span className=\"absolute inset-0 flex items-center justify-center text-[11px] leading-none font-semibold tabular-nums\">\n {children}\n </span>\n )}\n </div>\n )\n}\n\nexport { CircularGauge }\n"],"mappings":";;;;;AAIA,MAAM,qBAA2C;CAC/C,SAAS;CACT,SAAS;CACT,OAAO;CACP,QAAQ;CACR,SAAS;AACX;AAEA,MAAM,yBAA+C;CAEnD,SAAS;CACT,SAAS;CACT,OAAO;CACP,QAAQ;CACR,SAAS;AACX;AAwBA,MAAM,iBAAiB,EACrB,WACA,OACA,MAAM,KACN,OAAO,UACP,OAAO,IACP,cAAc,GACd,UACA,GAAG,WACqB;CACxB,MAAM,UAAU,KAAK,IAAI,KAAK,IAAI,OAAO,CAAC,GAAG,GAAG;CAChD,MAAM,UAAU,OAAO,eAAe;CACtC,MAAM,gBAAgB,IAAI,KAAK,KAAK;CACpC,MAAM,SAAS,iBAAiB,IAAI,UAAU;CAC9C,MAAM,UAAU,KAAK,MAAO,UAAU,MAAO,GAAG;CAEhD,OACE,qBAAC,OAAD;EACE,WAAW,GAAG,iCAAiC,SAAS;EACxD,OAAO;GAAE,OAAO;GAAM,QAAQ;EAAK;EACnC,MAAK;EACL,iBAAe;EACf,iBAAe;EACf,iBAAe;EACf,kBAAgB,GAAG,QAAQ;EAC3B,GAAI;YARN,CAUE,qBAAC,OAAD;GACE,WAAU;GACV,OAAO;GACP,QAAQ;GACR,SAAS,OAAO,KAAK,GAAG;GACxB,eAAY;aALd,CAOE,oBAAC,UAAD;IACE,IAAI,OAAO;IACX,IAAI,OAAO;IACX,GAAG;IACH,MAAK;IACQ;IACb,WAAW,mBAAmB;GAC/B,CAAA,GACD,oBAAC,UAAD;IACE,IAAI,OAAO;IACX,IAAI,OAAO;IACX,GAAG;IACH,MAAK;IACQ;IACb,eAAc;IACd,iBAAiB;IACjB,kBAAkB;IAClB,WAAW,GACT,+CACA,uBAAuB,KACzB;GACD,CAAA,CACE;MACJ,aAAa,KAAA,KACZ,oBAAC,QAAD;GAAM,WAAU;GACb;EACG,CAAA,CAEL;;AAET"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const require_chunk = require("../chunk-DY84GLCh.cjs");
|
|
4
|
+
let react = require("react");
|
|
5
|
+
react = require_chunk.__toESM(react);
|
|
6
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
7
|
+
let cnfast = require("cnfast");
|
|
8
|
+
//#region src/components/day-of-week-picker.tsx
|
|
9
|
+
const WEEK_DAYS = [
|
|
10
|
+
{
|
|
11
|
+
value: "monday",
|
|
12
|
+
short: "Mon"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
value: "tuesday",
|
|
16
|
+
short: "Tue"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
value: "wednesday",
|
|
20
|
+
short: "Wed"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
value: "thursday",
|
|
24
|
+
short: "Thu"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
value: "friday",
|
|
28
|
+
short: "Fri"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
value: "saturday",
|
|
32
|
+
short: "Sat"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
value: "sunday",
|
|
36
|
+
short: "Sun"
|
|
37
|
+
}
|
|
38
|
+
];
|
|
39
|
+
const WEEKDAYS_ONLY = [
|
|
40
|
+
"monday",
|
|
41
|
+
"tuesday",
|
|
42
|
+
"wednesday",
|
|
43
|
+
"thursday",
|
|
44
|
+
"friday"
|
|
45
|
+
];
|
|
46
|
+
const WEEKEND_ONLY = ["saturday", "sunday"];
|
|
47
|
+
const ALL_DAYS = WEEK_DAYS.map((d) => d.value);
|
|
48
|
+
const DayOfWeekPicker = react.forwardRef(({ className, disabled, onValueChange, showPresets = false, value, dayLabels, dayAriaLabels, presetLabels, presetsAriaLabel = "Day presets", daysAriaLabel = "Days of the week" }, ref) => {
|
|
49
|
+
const selected = react.useMemo(() => new Set(value), [value]);
|
|
50
|
+
const toggle = (day) => {
|
|
51
|
+
const next = new Set(selected);
|
|
52
|
+
if (next.has(day)) next.delete(day);
|
|
53
|
+
else next.add(day);
|
|
54
|
+
onValueChange(ALL_DAYS.filter((d) => next.has(d)));
|
|
55
|
+
};
|
|
56
|
+
const matches = (preset) => selected.size === preset.length && preset.every((d) => selected.has(d));
|
|
57
|
+
const setPreset = (preset) => {
|
|
58
|
+
onValueChange(preset);
|
|
59
|
+
};
|
|
60
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
61
|
+
ref,
|
|
62
|
+
className: (0, cnfast.cn)("flex flex-col gap-2", className),
|
|
63
|
+
children: [showPresets && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
64
|
+
role: "group",
|
|
65
|
+
"aria-label": presetsAriaLabel,
|
|
66
|
+
className: "flex flex-wrap gap-1.5",
|
|
67
|
+
children: [
|
|
68
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(PresetButton, {
|
|
69
|
+
active: matches(WEEKDAYS_ONLY),
|
|
70
|
+
disabled,
|
|
71
|
+
onClick: () => setPreset(WEEKDAYS_ONLY),
|
|
72
|
+
children: presetLabels?.weekdays ?? "Weekdays"
|
|
73
|
+
}),
|
|
74
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(PresetButton, {
|
|
75
|
+
active: matches(WEEKEND_ONLY),
|
|
76
|
+
disabled,
|
|
77
|
+
onClick: () => setPreset(WEEKEND_ONLY),
|
|
78
|
+
children: presetLabels?.weekend ?? "Weekend"
|
|
79
|
+
}),
|
|
80
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(PresetButton, {
|
|
81
|
+
active: matches(ALL_DAYS),
|
|
82
|
+
disabled,
|
|
83
|
+
onClick: () => setPreset(ALL_DAYS),
|
|
84
|
+
children: presetLabels?.everyDay ?? "Every day"
|
|
85
|
+
})
|
|
86
|
+
]
|
|
87
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
88
|
+
role: "group",
|
|
89
|
+
"aria-label": daysAriaLabel,
|
|
90
|
+
className: "flex gap-1",
|
|
91
|
+
children: WEEK_DAYS.map((day) => {
|
|
92
|
+
const checked = selected.has(day.value);
|
|
93
|
+
const label = dayLabels?.[day.value] ?? day.short;
|
|
94
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
95
|
+
type: "button",
|
|
96
|
+
role: "checkbox",
|
|
97
|
+
"aria-checked": checked,
|
|
98
|
+
"aria-label": dayAriaLabels?.[day.value] ?? label,
|
|
99
|
+
disabled,
|
|
100
|
+
onClick: () => toggle(day.value),
|
|
101
|
+
className: (0, cnfast.cn)("inline-flex h-9 flex-1 items-center justify-center rounded-circle text-xs font-medium transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:cursor-not-allowed disabled:opacity-50", checked ? "bg-base-accent-solid text-accent-contrast hover:bg-spark-9" : "bg-base-gray-soft text-gray-light hover:bg-gray-a4"),
|
|
102
|
+
children: label
|
|
103
|
+
}, day.value);
|
|
104
|
+
})
|
|
105
|
+
})]
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
DayOfWeekPicker.displayName = "DayOfWeekPicker";
|
|
109
|
+
function PresetButton({ active, children, disabled, onClick }) {
|
|
110
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
111
|
+
type: "button",
|
|
112
|
+
onClick,
|
|
113
|
+
disabled,
|
|
114
|
+
"aria-pressed": active,
|
|
115
|
+
className: (0, cnfast.cn)("inline-flex h-7 items-center justify-center rounded-circle px-3 text-xs font-medium transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:cursor-not-allowed disabled:opacity-50", active ? "bg-base-accent-soft text-accent" : "bg-transparent text-gray-light hover:bg-gray-a3"),
|
|
116
|
+
children
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
//#endregion
|
|
120
|
+
exports.DayOfWeekPicker = DayOfWeekPicker;
|
|
121
|
+
exports.WEEK_DAYS = WEEK_DAYS;
|
|
122
|
+
|
|
123
|
+
//# sourceMappingURL=day-of-week-picker.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"day-of-week-picker.cjs","names":["React"],"sources":["../../src/components/day-of-week-picker.tsx"],"sourcesContent":["import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport type WeekDay =\n | 'monday'\n | 'tuesday'\n | 'wednesday'\n | 'thursday'\n | 'friday'\n | 'saturday'\n | 'sunday'\n\nexport const WEEK_DAYS: ReadonlyArray<{ value: WeekDay; short: string }> = [\n { value: 'monday', short: 'Mon' },\n { value: 'tuesday', short: 'Tue' },\n { value: 'wednesday', short: 'Wed' },\n { value: 'thursday', short: 'Thu' },\n { value: 'friday', short: 'Fri' },\n { value: 'saturday', short: 'Sat' },\n { value: 'sunday', short: 'Sun' },\n]\n\nconst WEEKDAYS_ONLY: WeekDay[] = [\n 'monday',\n 'tuesday',\n 'wednesday',\n 'thursday',\n 'friday',\n]\nconst WEEKEND_ONLY: WeekDay[] = ['saturday', 'sunday']\nconst ALL_DAYS: WeekDay[] = WEEK_DAYS.map((d) => d.value)\n\ninterface DayOfWeekPickerProps {\n value: WeekDay[]\n onValueChange: (next: WeekDay[]) => void\n disabled?: boolean\n /** Show \"Weekdays / Weekend / Every day\" preset shortcuts above the chips. */\n showPresets?: boolean\n className?: string\n /** Short labels (e.g. \"Mon\", \"Tue\") shown on each day chip. Defaults to English. */\n dayLabels?: Partial<Record<WeekDay, string>>\n /**\n * Full accessible names per day (e.g. \"Monday\"). Used as each chip's\n * `aria-label`. Falls back to the visible short label when omitted.\n */\n dayAriaLabels?: Partial<Record<WeekDay, string>>\n /** Preset button labels. Each defaults to its English name. */\n presetLabels?: {\n weekdays?: React.ReactNode\n weekend?: React.ReactNode\n everyDay?: React.ReactNode\n }\n /** Accessible label for the preset row. Defaults to `\"Day presets\"`. */\n presetsAriaLabel?: string\n /** Accessible label for the day chip group. Defaults to `\"Days of the week\"`. */\n daysAriaLabel?: string\n}\n\nconst DayOfWeekPicker = React.forwardRef<HTMLDivElement, DayOfWeekPickerProps>(\n (\n {\n className,\n disabled,\n onValueChange,\n showPresets = false,\n value,\n dayLabels,\n dayAriaLabels,\n presetLabels,\n presetsAriaLabel = 'Day presets',\n daysAriaLabel = 'Days of the week',\n },\n ref,\n ) => {\n const selected = React.useMemo(() => new Set(value), [value])\n\n const toggle = (day: WeekDay) => {\n const next = new Set(selected)\n if (next.has(day)) {\n next.delete(day)\n } else {\n next.add(day)\n }\n onValueChange(ALL_DAYS.filter((d) => next.has(d)))\n }\n\n const matches = (preset: WeekDay[]) =>\n selected.size === preset.length && preset.every((d) => selected.has(d))\n\n const setPreset = (preset: WeekDay[]) => {\n onValueChange(preset)\n }\n\n return (\n <div ref={ref} className={cn('flex flex-col gap-2', className)}>\n {showPresets && (\n <div\n role=\"group\"\n aria-label={presetsAriaLabel}\n className=\"flex flex-wrap gap-1.5\"\n >\n <PresetButton\n active={matches(WEEKDAYS_ONLY)}\n disabled={disabled}\n onClick={() => setPreset(WEEKDAYS_ONLY)}\n >\n {presetLabels?.weekdays ?? 'Weekdays'}\n </PresetButton>\n <PresetButton\n active={matches(WEEKEND_ONLY)}\n disabled={disabled}\n onClick={() => setPreset(WEEKEND_ONLY)}\n >\n {presetLabels?.weekend ?? 'Weekend'}\n </PresetButton>\n <PresetButton\n active={matches(ALL_DAYS)}\n disabled={disabled}\n onClick={() => setPreset(ALL_DAYS)}\n >\n {presetLabels?.everyDay ?? 'Every day'}\n </PresetButton>\n </div>\n )}\n <div role=\"group\" aria-label={daysAriaLabel} className=\"flex gap-1\">\n {WEEK_DAYS.map((day) => {\n const checked = selected.has(day.value)\n const label = dayLabels?.[day.value] ?? day.short\n const ariaLabel = dayAriaLabels?.[day.value] ?? label\n return (\n <button\n key={day.value}\n type=\"button\"\n role=\"checkbox\"\n aria-checked={checked}\n aria-label={ariaLabel}\n disabled={disabled}\n onClick={() => toggle(day.value)}\n className={cn(\n 'inline-flex h-9 flex-1 items-center justify-center rounded-circle text-xs font-medium transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:cursor-not-allowed disabled:opacity-50',\n checked\n ? 'bg-base-accent-solid text-accent-contrast hover:bg-spark-9'\n : 'bg-base-gray-soft text-gray-light hover:bg-gray-a4',\n )}\n >\n {label}\n </button>\n )\n })}\n </div>\n </div>\n )\n },\n)\n\nDayOfWeekPicker.displayName = 'DayOfWeekPicker'\n\ninterface PresetButtonProps {\n active: boolean\n disabled?: boolean\n onClick: () => void\n children: React.ReactNode\n}\n\nfunction PresetButton({\n active,\n children,\n disabled,\n onClick,\n}: PresetButtonProps) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n disabled={disabled}\n aria-pressed={active}\n className={cn(\n 'inline-flex h-7 items-center justify-center rounded-circle px-3 text-xs font-medium transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:cursor-not-allowed disabled:opacity-50',\n active\n ? 'bg-base-accent-soft text-accent'\n : 'bg-transparent text-gray-light hover:bg-gray-a3',\n )}\n >\n {children}\n </button>\n )\n}\n\nexport { DayOfWeekPicker }\n"],"mappings":";;;;;;;;AAYA,MAAa,YAA8D;CACzE;EAAE,OAAO;EAAU,OAAO;CAAM;CAChC;EAAE,OAAO;EAAW,OAAO;CAAM;CACjC;EAAE,OAAO;EAAa,OAAO;CAAM;CACnC;EAAE,OAAO;EAAY,OAAO;CAAM;CAClC;EAAE,OAAO;EAAU,OAAO;CAAM;CAChC;EAAE,OAAO;EAAY,OAAO;CAAM;CAClC;EAAE,OAAO;EAAU,OAAO;CAAM;AAClC;AAEA,MAAM,gBAA2B;CAC/B;CACA;CACA;CACA;CACA;AACF;AACA,MAAM,eAA0B,CAAC,YAAY,QAAQ;AACrD,MAAM,WAAsB,UAAU,KAAK,MAAM,EAAE,KAAK;AA4BxD,MAAM,kBAAkBA,MAAM,YAE1B,EACE,WACA,UACA,eACA,cAAc,OACd,OACA,WACA,eACA,cACA,mBAAmB,eACnB,gBAAgB,sBAElB,QACG;CACH,MAAM,WAAWA,MAAM,cAAc,IAAI,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC;CAE5D,MAAM,UAAU,QAAiB;EAC/B,MAAM,OAAO,IAAI,IAAI,QAAQ;EAC7B,IAAI,KAAK,IAAI,GAAG,GACd,KAAK,OAAO,GAAG;OAEf,KAAK,IAAI,GAAG;EAEd,cAAc,SAAS,QAAQ,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC;CACnD;CAEA,MAAM,WAAW,WACf,SAAS,SAAS,OAAO,UAAU,OAAO,OAAO,MAAM,SAAS,IAAI,CAAC,CAAC;CAExE,MAAM,aAAa,WAAsB;EACvC,cAAc,MAAM;CACtB;CAEA,OACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EAAU;EAAK,YAAA,GAAA,OAAA,IAAc,uBAAuB,SAAS;YAA7D,CACG,eACC,iBAAA,GAAA,kBAAA,MAAC,OAAD;GACE,MAAK;GACL,cAAY;GACZ,WAAU;aAHZ;IAKE,iBAAA,GAAA,kBAAA,KAAC,cAAD;KACE,QAAQ,QAAQ,aAAa;KACnB;KACV,eAAe,UAAU,aAAa;eAErC,cAAc,YAAY;IACf,CAAA;IACd,iBAAA,GAAA,kBAAA,KAAC,cAAD;KACE,QAAQ,QAAQ,YAAY;KAClB;KACV,eAAe,UAAU,YAAY;eAEpC,cAAc,WAAW;IACd,CAAA;IACd,iBAAA,GAAA,kBAAA,KAAC,cAAD;KACE,QAAQ,QAAQ,QAAQ;KACd;KACV,eAAe,UAAU,QAAQ;eAEhC,cAAc,YAAY;IACf,CAAA;GACX;MAEP,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,MAAK;GAAQ,cAAY;GAAe,WAAU;aACpD,UAAU,KAAK,QAAQ;IACtB,MAAM,UAAU,SAAS,IAAI,IAAI,KAAK;IACtC,MAAM,QAAQ,YAAY,IAAI,UAAU,IAAI;IAE5C,OACE,iBAAA,GAAA,kBAAA,KAAC,UAAD;KAEE,MAAK;KACL,MAAK;KACL,gBAAc;KACd,cAPc,gBAAgB,IAAI,UAAU;KAQlC;KACV,eAAe,OAAO,IAAI,KAAK;KAC/B,YAAA,GAAA,OAAA,IACE,yOACA,UACI,+DACA,oDACN;eAEC;IACK,GAfD,IAAI,KAeH;GAEZ,CAAC;EACE,CAAA,CACF;;AAET,CACF;AAEA,gBAAgB,cAAc;AAS9B,SAAS,aAAa,EACpB,QACA,UACA,UACA,WACoB;CACpB,OACE,iBAAA,GAAA,kBAAA,KAAC,UAAD;EACE,MAAK;EACI;EACC;EACV,gBAAc;EACd,YAAA,GAAA,OAAA,IACE,uOACA,SACI,oCACA,iDACN;EAEC;CACK,CAAA;AAEZ"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import * as React$1 from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/components/day-of-week-picker.d.ts
|
|
6
|
+
type WeekDay = 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sunday';
|
|
7
|
+
declare const WEEK_DAYS: ReadonlyArray<{
|
|
8
|
+
value: WeekDay;
|
|
9
|
+
short: string;
|
|
10
|
+
}>;
|
|
11
|
+
interface DayOfWeekPickerProps {
|
|
12
|
+
value: WeekDay[];
|
|
13
|
+
onValueChange: (next: WeekDay[]) => void;
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
/** Show "Weekdays / Weekend / Every day" preset shortcuts above the chips. */
|
|
16
|
+
showPresets?: boolean;
|
|
17
|
+
className?: string;
|
|
18
|
+
/** Short labels (e.g. "Mon", "Tue") shown on each day chip. Defaults to English. */
|
|
19
|
+
dayLabels?: Partial<Record<WeekDay, string>>;
|
|
20
|
+
/**
|
|
21
|
+
* Full accessible names per day (e.g. "Monday"). Used as each chip's
|
|
22
|
+
* `aria-label`. Falls back to the visible short label when omitted.
|
|
23
|
+
*/
|
|
24
|
+
dayAriaLabels?: Partial<Record<WeekDay, string>>;
|
|
25
|
+
/** Preset button labels. Each defaults to its English name. */
|
|
26
|
+
presetLabels?: {
|
|
27
|
+
weekdays?: React$1.ReactNode;
|
|
28
|
+
weekend?: React$1.ReactNode;
|
|
29
|
+
everyDay?: React$1.ReactNode;
|
|
30
|
+
};
|
|
31
|
+
/** Accessible label for the preset row. Defaults to `"Day presets"`. */
|
|
32
|
+
presetsAriaLabel?: string;
|
|
33
|
+
/** Accessible label for the day chip group. Defaults to `"Days of the week"`. */
|
|
34
|
+
daysAriaLabel?: string;
|
|
35
|
+
}
|
|
36
|
+
declare const DayOfWeekPicker: React$1.ForwardRefExoticComponent<DayOfWeekPickerProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
37
|
+
//#endregion
|
|
38
|
+
export { DayOfWeekPicker, WEEK_DAYS, WeekDay };
|
|
39
|
+
//# sourceMappingURL=day-of-week-picker.d.cts.map
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import * as React$1 from "react";
|
|
4
|
+
|
|
5
|
+
//#region src/components/day-of-week-picker.d.ts
|
|
6
|
+
type WeekDay = 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sunday';
|
|
7
|
+
declare const WEEK_DAYS: ReadonlyArray<{
|
|
8
|
+
value: WeekDay;
|
|
9
|
+
short: string;
|
|
10
|
+
}>;
|
|
11
|
+
interface DayOfWeekPickerProps {
|
|
12
|
+
value: WeekDay[];
|
|
13
|
+
onValueChange: (next: WeekDay[]) => void;
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
/** Show "Weekdays / Weekend / Every day" preset shortcuts above the chips. */
|
|
16
|
+
showPresets?: boolean;
|
|
17
|
+
className?: string;
|
|
18
|
+
/** Short labels (e.g. "Mon", "Tue") shown on each day chip. Defaults to English. */
|
|
19
|
+
dayLabels?: Partial<Record<WeekDay, string>>;
|
|
20
|
+
/**
|
|
21
|
+
* Full accessible names per day (e.g. "Monday"). Used as each chip's
|
|
22
|
+
* `aria-label`. Falls back to the visible short label when omitted.
|
|
23
|
+
*/
|
|
24
|
+
dayAriaLabels?: Partial<Record<WeekDay, string>>;
|
|
25
|
+
/** Preset button labels. Each defaults to its English name. */
|
|
26
|
+
presetLabels?: {
|
|
27
|
+
weekdays?: React$1.ReactNode;
|
|
28
|
+
weekend?: React$1.ReactNode;
|
|
29
|
+
everyDay?: React$1.ReactNode;
|
|
30
|
+
};
|
|
31
|
+
/** Accessible label for the preset row. Defaults to `"Day presets"`. */
|
|
32
|
+
presetsAriaLabel?: string;
|
|
33
|
+
/** Accessible label for the day chip group. Defaults to `"Days of the week"`. */
|
|
34
|
+
daysAriaLabel?: string;
|
|
35
|
+
}
|
|
36
|
+
declare const DayOfWeekPicker: React$1.ForwardRefExoticComponent<DayOfWeekPickerProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
37
|
+
//#endregion
|
|
38
|
+
export { DayOfWeekPicker, WEEK_DAYS, WeekDay };
|
|
39
|
+
//# sourceMappingURL=day-of-week-picker.d.ts.map
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../utils/cn.js";
|
|
3
|
+
import * as React$1 from "react";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/day-of-week-picker.tsx
|
|
6
|
+
const WEEK_DAYS = [
|
|
7
|
+
{
|
|
8
|
+
value: "monday",
|
|
9
|
+
short: "Mon"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
value: "tuesday",
|
|
13
|
+
short: "Tue"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
value: "wednesday",
|
|
17
|
+
short: "Wed"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
value: "thursday",
|
|
21
|
+
short: "Thu"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
value: "friday",
|
|
25
|
+
short: "Fri"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
value: "saturday",
|
|
29
|
+
short: "Sat"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
value: "sunday",
|
|
33
|
+
short: "Sun"
|
|
34
|
+
}
|
|
35
|
+
];
|
|
36
|
+
const WEEKDAYS_ONLY = [
|
|
37
|
+
"monday",
|
|
38
|
+
"tuesday",
|
|
39
|
+
"wednesday",
|
|
40
|
+
"thursday",
|
|
41
|
+
"friday"
|
|
42
|
+
];
|
|
43
|
+
const WEEKEND_ONLY = ["saturday", "sunday"];
|
|
44
|
+
const ALL_DAYS = WEEK_DAYS.map((d) => d.value);
|
|
45
|
+
const DayOfWeekPicker = React$1.forwardRef(({ className, disabled, onValueChange, showPresets = false, value, dayLabels, dayAriaLabels, presetLabels, presetsAriaLabel = "Day presets", daysAriaLabel = "Days of the week" }, ref) => {
|
|
46
|
+
const selected = React$1.useMemo(() => new Set(value), [value]);
|
|
47
|
+
const toggle = (day) => {
|
|
48
|
+
const next = new Set(selected);
|
|
49
|
+
if (next.has(day)) next.delete(day);
|
|
50
|
+
else next.add(day);
|
|
51
|
+
onValueChange(ALL_DAYS.filter((d) => next.has(d)));
|
|
52
|
+
};
|
|
53
|
+
const matches = (preset) => selected.size === preset.length && preset.every((d) => selected.has(d));
|
|
54
|
+
const setPreset = (preset) => {
|
|
55
|
+
onValueChange(preset);
|
|
56
|
+
};
|
|
57
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
58
|
+
ref,
|
|
59
|
+
className: cn("flex flex-col gap-2", className),
|
|
60
|
+
children: [showPresets && /* @__PURE__ */ jsxs("div", {
|
|
61
|
+
role: "group",
|
|
62
|
+
"aria-label": presetsAriaLabel,
|
|
63
|
+
className: "flex flex-wrap gap-1.5",
|
|
64
|
+
children: [
|
|
65
|
+
/* @__PURE__ */ jsx(PresetButton, {
|
|
66
|
+
active: matches(WEEKDAYS_ONLY),
|
|
67
|
+
disabled,
|
|
68
|
+
onClick: () => setPreset(WEEKDAYS_ONLY),
|
|
69
|
+
children: presetLabels?.weekdays ?? "Weekdays"
|
|
70
|
+
}),
|
|
71
|
+
/* @__PURE__ */ jsx(PresetButton, {
|
|
72
|
+
active: matches(WEEKEND_ONLY),
|
|
73
|
+
disabled,
|
|
74
|
+
onClick: () => setPreset(WEEKEND_ONLY),
|
|
75
|
+
children: presetLabels?.weekend ?? "Weekend"
|
|
76
|
+
}),
|
|
77
|
+
/* @__PURE__ */ jsx(PresetButton, {
|
|
78
|
+
active: matches(ALL_DAYS),
|
|
79
|
+
disabled,
|
|
80
|
+
onClick: () => setPreset(ALL_DAYS),
|
|
81
|
+
children: presetLabels?.everyDay ?? "Every day"
|
|
82
|
+
})
|
|
83
|
+
]
|
|
84
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
85
|
+
role: "group",
|
|
86
|
+
"aria-label": daysAriaLabel,
|
|
87
|
+
className: "flex gap-1",
|
|
88
|
+
children: WEEK_DAYS.map((day) => {
|
|
89
|
+
const checked = selected.has(day.value);
|
|
90
|
+
const label = dayLabels?.[day.value] ?? day.short;
|
|
91
|
+
return /* @__PURE__ */ jsx("button", {
|
|
92
|
+
type: "button",
|
|
93
|
+
role: "checkbox",
|
|
94
|
+
"aria-checked": checked,
|
|
95
|
+
"aria-label": dayAriaLabels?.[day.value] ?? label,
|
|
96
|
+
disabled,
|
|
97
|
+
onClick: () => toggle(day.value),
|
|
98
|
+
className: cn("inline-flex h-9 flex-1 items-center justify-center rounded-circle text-xs font-medium transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:cursor-not-allowed disabled:opacity-50", checked ? "bg-base-accent-solid text-accent-contrast hover:bg-spark-9" : "bg-base-gray-soft text-gray-light hover:bg-gray-a4"),
|
|
99
|
+
children: label
|
|
100
|
+
}, day.value);
|
|
101
|
+
})
|
|
102
|
+
})]
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
DayOfWeekPicker.displayName = "DayOfWeekPicker";
|
|
106
|
+
function PresetButton({ active, children, disabled, onClick }) {
|
|
107
|
+
return /* @__PURE__ */ jsx("button", {
|
|
108
|
+
type: "button",
|
|
109
|
+
onClick,
|
|
110
|
+
disabled,
|
|
111
|
+
"aria-pressed": active,
|
|
112
|
+
className: cn("inline-flex h-7 items-center justify-center rounded-circle px-3 text-xs font-medium transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:cursor-not-allowed disabled:opacity-50", active ? "bg-base-accent-soft text-accent" : "bg-transparent text-gray-light hover:bg-gray-a3"),
|
|
113
|
+
children
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
//#endregion
|
|
117
|
+
export { DayOfWeekPicker, WEEK_DAYS };
|
|
118
|
+
|
|
119
|
+
//# sourceMappingURL=day-of-week-picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"day-of-week-picker.js","names":["React"],"sources":["../../src/components/day-of-week-picker.tsx"],"sourcesContent":["import * as React from 'react'\nimport { cn } from '../utils/cn'\n\nexport type WeekDay =\n | 'monday'\n | 'tuesday'\n | 'wednesday'\n | 'thursday'\n | 'friday'\n | 'saturday'\n | 'sunday'\n\nexport const WEEK_DAYS: ReadonlyArray<{ value: WeekDay; short: string }> = [\n { value: 'monday', short: 'Mon' },\n { value: 'tuesday', short: 'Tue' },\n { value: 'wednesday', short: 'Wed' },\n { value: 'thursday', short: 'Thu' },\n { value: 'friday', short: 'Fri' },\n { value: 'saturday', short: 'Sat' },\n { value: 'sunday', short: 'Sun' },\n]\n\nconst WEEKDAYS_ONLY: WeekDay[] = [\n 'monday',\n 'tuesday',\n 'wednesday',\n 'thursday',\n 'friday',\n]\nconst WEEKEND_ONLY: WeekDay[] = ['saturday', 'sunday']\nconst ALL_DAYS: WeekDay[] = WEEK_DAYS.map((d) => d.value)\n\ninterface DayOfWeekPickerProps {\n value: WeekDay[]\n onValueChange: (next: WeekDay[]) => void\n disabled?: boolean\n /** Show \"Weekdays / Weekend / Every day\" preset shortcuts above the chips. */\n showPresets?: boolean\n className?: string\n /** Short labels (e.g. \"Mon\", \"Tue\") shown on each day chip. Defaults to English. */\n dayLabels?: Partial<Record<WeekDay, string>>\n /**\n * Full accessible names per day (e.g. \"Monday\"). Used as each chip's\n * `aria-label`. Falls back to the visible short label when omitted.\n */\n dayAriaLabels?: Partial<Record<WeekDay, string>>\n /** Preset button labels. Each defaults to its English name. */\n presetLabels?: {\n weekdays?: React.ReactNode\n weekend?: React.ReactNode\n everyDay?: React.ReactNode\n }\n /** Accessible label for the preset row. Defaults to `\"Day presets\"`. */\n presetsAriaLabel?: string\n /** Accessible label for the day chip group. Defaults to `\"Days of the week\"`. */\n daysAriaLabel?: string\n}\n\nconst DayOfWeekPicker = React.forwardRef<HTMLDivElement, DayOfWeekPickerProps>(\n (\n {\n className,\n disabled,\n onValueChange,\n showPresets = false,\n value,\n dayLabels,\n dayAriaLabels,\n presetLabels,\n presetsAriaLabel = 'Day presets',\n daysAriaLabel = 'Days of the week',\n },\n ref,\n ) => {\n const selected = React.useMemo(() => new Set(value), [value])\n\n const toggle = (day: WeekDay) => {\n const next = new Set(selected)\n if (next.has(day)) {\n next.delete(day)\n } else {\n next.add(day)\n }\n onValueChange(ALL_DAYS.filter((d) => next.has(d)))\n }\n\n const matches = (preset: WeekDay[]) =>\n selected.size === preset.length && preset.every((d) => selected.has(d))\n\n const setPreset = (preset: WeekDay[]) => {\n onValueChange(preset)\n }\n\n return (\n <div ref={ref} className={cn('flex flex-col gap-2', className)}>\n {showPresets && (\n <div\n role=\"group\"\n aria-label={presetsAriaLabel}\n className=\"flex flex-wrap gap-1.5\"\n >\n <PresetButton\n active={matches(WEEKDAYS_ONLY)}\n disabled={disabled}\n onClick={() => setPreset(WEEKDAYS_ONLY)}\n >\n {presetLabels?.weekdays ?? 'Weekdays'}\n </PresetButton>\n <PresetButton\n active={matches(WEEKEND_ONLY)}\n disabled={disabled}\n onClick={() => setPreset(WEEKEND_ONLY)}\n >\n {presetLabels?.weekend ?? 'Weekend'}\n </PresetButton>\n <PresetButton\n active={matches(ALL_DAYS)}\n disabled={disabled}\n onClick={() => setPreset(ALL_DAYS)}\n >\n {presetLabels?.everyDay ?? 'Every day'}\n </PresetButton>\n </div>\n )}\n <div role=\"group\" aria-label={daysAriaLabel} className=\"flex gap-1\">\n {WEEK_DAYS.map((day) => {\n const checked = selected.has(day.value)\n const label = dayLabels?.[day.value] ?? day.short\n const ariaLabel = dayAriaLabels?.[day.value] ?? label\n return (\n <button\n key={day.value}\n type=\"button\"\n role=\"checkbox\"\n aria-checked={checked}\n aria-label={ariaLabel}\n disabled={disabled}\n onClick={() => toggle(day.value)}\n className={cn(\n 'inline-flex h-9 flex-1 items-center justify-center rounded-circle text-xs font-medium transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:cursor-not-allowed disabled:opacity-50',\n checked\n ? 'bg-base-accent-solid text-accent-contrast hover:bg-spark-9'\n : 'bg-base-gray-soft text-gray-light hover:bg-gray-a4',\n )}\n >\n {label}\n </button>\n )\n })}\n </div>\n </div>\n )\n },\n)\n\nDayOfWeekPicker.displayName = 'DayOfWeekPicker'\n\ninterface PresetButtonProps {\n active: boolean\n disabled?: boolean\n onClick: () => void\n children: React.ReactNode\n}\n\nfunction PresetButton({\n active,\n children,\n disabled,\n onClick,\n}: PresetButtonProps) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n disabled={disabled}\n aria-pressed={active}\n className={cn(\n 'inline-flex h-7 items-center justify-center rounded-circle px-3 text-xs font-medium transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:cursor-not-allowed disabled:opacity-50',\n active\n ? 'bg-base-accent-soft text-accent'\n : 'bg-transparent text-gray-light hover:bg-gray-a3',\n )}\n >\n {children}\n </button>\n )\n}\n\nexport { DayOfWeekPicker }\n"],"mappings":";;;;;AAYA,MAAa,YAA8D;CACzE;EAAE,OAAO;EAAU,OAAO;CAAM;CAChC;EAAE,OAAO;EAAW,OAAO;CAAM;CACjC;EAAE,OAAO;EAAa,OAAO;CAAM;CACnC;EAAE,OAAO;EAAY,OAAO;CAAM;CAClC;EAAE,OAAO;EAAU,OAAO;CAAM;CAChC;EAAE,OAAO;EAAY,OAAO;CAAM;CAClC;EAAE,OAAO;EAAU,OAAO;CAAM;AAClC;AAEA,MAAM,gBAA2B;CAC/B;CACA;CACA;CACA;CACA;AACF;AACA,MAAM,eAA0B,CAAC,YAAY,QAAQ;AACrD,MAAM,WAAsB,UAAU,KAAK,MAAM,EAAE,KAAK;AA4BxD,MAAM,kBAAkBA,QAAM,YAE1B,EACE,WACA,UACA,eACA,cAAc,OACd,OACA,WACA,eACA,cACA,mBAAmB,eACnB,gBAAgB,sBAElB,QACG;CACH,MAAM,WAAWA,QAAM,cAAc,IAAI,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC;CAE5D,MAAM,UAAU,QAAiB;EAC/B,MAAM,OAAO,IAAI,IAAI,QAAQ;EAC7B,IAAI,KAAK,IAAI,GAAG,GACd,KAAK,OAAO,GAAG;OAEf,KAAK,IAAI,GAAG;EAEd,cAAc,SAAS,QAAQ,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC;CACnD;CAEA,MAAM,WAAW,WACf,SAAS,SAAS,OAAO,UAAU,OAAO,OAAO,MAAM,SAAS,IAAI,CAAC,CAAC;CAExE,MAAM,aAAa,WAAsB;EACvC,cAAc,MAAM;CACtB;CAEA,OACE,qBAAC,OAAD;EAAU;EAAK,WAAW,GAAG,uBAAuB,SAAS;YAA7D,CACG,eACC,qBAAC,OAAD;GACE,MAAK;GACL,cAAY;GACZ,WAAU;aAHZ;IAKE,oBAAC,cAAD;KACE,QAAQ,QAAQ,aAAa;KACnB;KACV,eAAe,UAAU,aAAa;eAErC,cAAc,YAAY;IACf,CAAA;IACd,oBAAC,cAAD;KACE,QAAQ,QAAQ,YAAY;KAClB;KACV,eAAe,UAAU,YAAY;eAEpC,cAAc,WAAW;IACd,CAAA;IACd,oBAAC,cAAD;KACE,QAAQ,QAAQ,QAAQ;KACd;KACV,eAAe,UAAU,QAAQ;eAEhC,cAAc,YAAY;IACf,CAAA;GACX;MAEP,oBAAC,OAAD;GAAK,MAAK;GAAQ,cAAY;GAAe,WAAU;aACpD,UAAU,KAAK,QAAQ;IACtB,MAAM,UAAU,SAAS,IAAI,IAAI,KAAK;IACtC,MAAM,QAAQ,YAAY,IAAI,UAAU,IAAI;IAE5C,OACE,oBAAC,UAAD;KAEE,MAAK;KACL,MAAK;KACL,gBAAc;KACd,cAPc,gBAAgB,IAAI,UAAU;KAQlC;KACV,eAAe,OAAO,IAAI,KAAK;KAC/B,WAAW,GACT,yOACA,UACI,+DACA,oDACN;eAEC;IACK,GAfD,IAAI,KAeH;GAEZ,CAAC;EACE,CAAA,CACF;;AAET,CACF;AAEA,gBAAgB,cAAc;AAS9B,SAAS,aAAa,EACpB,QACA,UACA,UACA,WACoB;CACpB,OACE,oBAAC,UAAD;EACE,MAAK;EACI;EACC;EACV,gBAAc;EACd,WAAW,GACT,uOACA,SACI,oCACA,iDACN;EAEC;CACK,CAAA;AAEZ"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const require_chunk = require("../chunk-DY84GLCh.cjs");
|
|
4
|
+
const require_icons_material_symbol = require("../icons/material-symbol.cjs");
|
|
5
|
+
let react = require("react");
|
|
6
|
+
react = require_chunk.__toESM(react);
|
|
7
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
8
|
+
let class_variance_authority = require("class-variance-authority");
|
|
9
|
+
let cnfast = require("cnfast");
|
|
10
|
+
//#region src/components/device-card.tsx
|
|
11
|
+
const DeviceCard = ({ className, ...rest }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
12
|
+
className: (0, cnfast.cn)("flex flex-col overflow-hidden rounded-2xl border border-gray bg-(--spark-background)", className),
|
|
13
|
+
...rest
|
|
14
|
+
});
|
|
15
|
+
const DeviceCardBody = ({ className, active, ...rest }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
16
|
+
type: "button",
|
|
17
|
+
className: (0, cnfast.cn)("flex w-full cursor-pointer flex-col gap-3 p-4 text-left transition-colors hover:bg-gray-a2 focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-accent-focus", active && "bg-linear-to-br from-spark-9/10 to-spark-1/5 to-20%", className),
|
|
18
|
+
...rest
|
|
19
|
+
});
|
|
20
|
+
const DeviceCardHeader = ({ className, ...rest }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
21
|
+
className: (0, cnfast.cn)("flex w-full items-center gap-3", className),
|
|
22
|
+
...rest
|
|
23
|
+
});
|
|
24
|
+
const DeviceCardMeters = ({ className, ...rest }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
25
|
+
className: (0, cnfast.cn)("flex flex-col gap-2 border-t border-gray pt-3", className),
|
|
26
|
+
...rest
|
|
27
|
+
});
|
|
28
|
+
const iconToneVariants = (0, class_variance_authority.cva)("flex size-11 shrink-0 items-center justify-center rounded-xl", {
|
|
29
|
+
variants: { tone: {
|
|
30
|
+
success: "bg-base-success-soft text-success",
|
|
31
|
+
warning: "bg-base-warning-soft text-warning",
|
|
32
|
+
error: "bg-base-error-soft text-error",
|
|
33
|
+
accent: "bg-base-accent-soft text-accent",
|
|
34
|
+
neutral: "bg-base-gray-soft text-gray"
|
|
35
|
+
} },
|
|
36
|
+
defaultVariants: { tone: "neutral" }
|
|
37
|
+
});
|
|
38
|
+
const DeviceCardIcon = ({ className, icon, tone, ...rest }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
39
|
+
className: iconToneVariants({
|
|
40
|
+
tone,
|
|
41
|
+
className
|
|
42
|
+
}),
|
|
43
|
+
...rest,
|
|
44
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_icons_material_symbol.MaterialSymbol, {
|
|
45
|
+
className: "text-[18px]",
|
|
46
|
+
name: icon
|
|
47
|
+
})
|
|
48
|
+
});
|
|
49
|
+
const DeviceCardTitleColumn = ({ className, ...rest }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
50
|
+
className: (0, cnfast.cn)("flex min-w-0 flex-1 flex-col gap-0.5", className),
|
|
51
|
+
...rest
|
|
52
|
+
});
|
|
53
|
+
const DeviceCardTitle = ({ className, ...rest }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
54
|
+
className: (0, cnfast.cn)("truncate text-sm font-bold text-gray", className),
|
|
55
|
+
...rest
|
|
56
|
+
});
|
|
57
|
+
const stateToneVariants = (0, class_variance_authority.cva)("inline-flex items-center gap-1.5 text-xs font-medium", {
|
|
58
|
+
variants: { tone: {
|
|
59
|
+
success: "text-success",
|
|
60
|
+
warning: "text-warning",
|
|
61
|
+
error: "text-error",
|
|
62
|
+
accent: "text-accent",
|
|
63
|
+
neutral: "text-gray-light"
|
|
64
|
+
} },
|
|
65
|
+
defaultVariants: { tone: "neutral" }
|
|
66
|
+
});
|
|
67
|
+
const dotToneVariants = (0, class_variance_authority.cva)("size-1.5 shrink-0 rounded-full", {
|
|
68
|
+
variants: { tone: {
|
|
69
|
+
success: "bg-base-success-solid",
|
|
70
|
+
warning: "bg-base-warning-solid",
|
|
71
|
+
error: "bg-base-error-solid",
|
|
72
|
+
accent: "bg-base-accent-solid",
|
|
73
|
+
neutral: "bg-base-gray-solid"
|
|
74
|
+
} },
|
|
75
|
+
defaultVariants: { tone: "neutral" }
|
|
76
|
+
});
|
|
77
|
+
const DeviceCardState = ({ className, tone, children, ...rest }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
78
|
+
className: stateToneVariants({
|
|
79
|
+
tone,
|
|
80
|
+
className
|
|
81
|
+
}),
|
|
82
|
+
...rest,
|
|
83
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: dotToneVariants({ tone }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
84
|
+
className: "truncate",
|
|
85
|
+
children
|
|
86
|
+
})]
|
|
87
|
+
});
|
|
88
|
+
const DeviceCardDetail = ({ className, ...rest }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
89
|
+
className: (0, cnfast.cn)("truncate text-xs text-gray-light tabular-nums", className),
|
|
90
|
+
...rest
|
|
91
|
+
});
|
|
92
|
+
const DeviceCardPower = ({ className, ...rest }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
93
|
+
className: (0, cnfast.cn)("ms-2 shrink-0 self-center text-lg leading-tight font-bold text-gray tabular-nums", className),
|
|
94
|
+
...rest
|
|
95
|
+
});
|
|
96
|
+
const DeviceCardControls = ({ className, ...rest }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
97
|
+
className: (0, cnfast.cn)("flex items-center gap-3 border-t border-gray bg-base-gray-surface px-4 py-3", className),
|
|
98
|
+
...rest
|
|
99
|
+
});
|
|
100
|
+
const DeviceCardFooter = ({ className, ...rest }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
101
|
+
className: (0, cnfast.cn)("flex items-center justify-center gap-1.5 border-t border-gray bg-base-gray-surface px-4 py-2 text-xs text-gray-light", className),
|
|
102
|
+
...rest
|
|
103
|
+
});
|
|
104
|
+
//#endregion
|
|
105
|
+
exports.DeviceCard = DeviceCard;
|
|
106
|
+
exports.DeviceCardBody = DeviceCardBody;
|
|
107
|
+
exports.DeviceCardControls = DeviceCardControls;
|
|
108
|
+
exports.DeviceCardDetail = DeviceCardDetail;
|
|
109
|
+
exports.DeviceCardFooter = DeviceCardFooter;
|
|
110
|
+
exports.DeviceCardHeader = DeviceCardHeader;
|
|
111
|
+
exports.DeviceCardIcon = DeviceCardIcon;
|
|
112
|
+
exports.DeviceCardMeters = DeviceCardMeters;
|
|
113
|
+
exports.DeviceCardPower = DeviceCardPower;
|
|
114
|
+
exports.DeviceCardState = DeviceCardState;
|
|
115
|
+
exports.DeviceCardTitle = DeviceCardTitle;
|
|
116
|
+
exports.DeviceCardTitleColumn = DeviceCardTitleColumn;
|
|
117
|
+
|
|
118
|
+
//# sourceMappingURL=device-card.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-card.cjs","names":["MaterialSymbol"],"sources":["../../src/components/device-card.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority'\nimport * as React from 'react'\nimport {\n MaterialSymbol,\n type MaterialSymbolIconName,\n} from '../icons/material-symbol'\nimport type { Tone } from '../lib/tones'\nimport { cn } from '../utils/cn'\n\nconst DeviceCard = ({ className, ...rest }: React.ComponentProps<'div'>) => (\n <div\n className={cn(\n 'flex flex-col overflow-hidden rounded-2xl border border-gray bg-(--spark-background)',\n className,\n )}\n {...rest}\n />\n)\n\nconst DeviceCardBody = ({\n className,\n active,\n ...rest\n}: React.ComponentProps<'button'> & { active?: boolean }) => (\n <button\n type=\"button\"\n className={cn(\n 'flex w-full cursor-pointer flex-col gap-3 p-4 text-left transition-colors hover:bg-gray-a2 focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-accent-focus',\n active && 'bg-linear-to-br from-spark-9/10 to-spark-1/5 to-20%',\n className,\n )}\n {...rest}\n />\n)\n\nconst DeviceCardHeader = ({\n className,\n ...rest\n}: React.ComponentProps<'div'>) => (\n <div className={cn('flex w-full items-center gap-3', className)} {...rest} />\n)\n\nconst DeviceCardMeters = ({\n className,\n ...rest\n}: React.ComponentProps<'div'>) => (\n <div\n className={cn('flex flex-col gap-2 border-t border-gray pt-3', className)}\n {...rest}\n />\n)\n\nconst iconToneVariants = cva(\n 'flex size-11 shrink-0 items-center justify-center rounded-xl',\n {\n variants: {\n tone: {\n success: 'bg-base-success-soft text-success',\n warning: 'bg-base-warning-soft text-warning',\n error: 'bg-base-error-soft text-error',\n accent: 'bg-base-accent-soft text-accent',\n neutral: 'bg-base-gray-soft text-gray',\n },\n },\n defaultVariants: { tone: 'neutral' },\n },\n)\n\nconst DeviceCardIcon = ({\n className,\n icon,\n tone,\n ...rest\n}: React.ComponentProps<'span'> & {\n icon: MaterialSymbolIconName\n tone?: Tone\n}) => (\n <span className={iconToneVariants({ tone, className })} {...rest}>\n <MaterialSymbol className=\"text-[18px]\" name={icon} />\n </span>\n)\n\nconst DeviceCardTitleColumn = ({\n className,\n ...rest\n}: React.ComponentProps<'div'>) => (\n <div\n className={cn('flex min-w-0 flex-1 flex-col gap-0.5', className)}\n {...rest}\n />\n)\n\nconst DeviceCardTitle = ({\n className,\n ...rest\n}: React.ComponentProps<'span'>) => (\n <span\n className={cn('truncate text-sm font-bold text-gray', className)}\n {...rest}\n />\n)\n\nconst stateToneVariants = cva(\n 'inline-flex items-center gap-1.5 text-xs font-medium',\n {\n variants: {\n tone: {\n success: 'text-success',\n warning: 'text-warning',\n error: 'text-error',\n accent: 'text-accent',\n neutral: 'text-gray-light',\n },\n },\n defaultVariants: { tone: 'neutral' },\n },\n)\n\nconst dotToneVariants = cva('size-1.5 shrink-0 rounded-full', {\n variants: {\n tone: {\n success: 'bg-base-success-solid',\n warning: 'bg-base-warning-solid',\n error: 'bg-base-error-solid',\n accent: 'bg-base-accent-solid',\n neutral: 'bg-base-gray-solid',\n },\n },\n defaultVariants: { tone: 'neutral' },\n})\n\nconst DeviceCardState = ({\n className,\n tone,\n children,\n ...rest\n}: React.ComponentProps<'span'> & { tone?: Tone }) => (\n <span className={stateToneVariants({ tone, className })} {...rest}>\n <span className={dotToneVariants({ tone })} />\n <span className=\"truncate\">{children}</span>\n </span>\n)\n\nconst DeviceCardDetail = ({\n className,\n ...rest\n}: React.ComponentProps<'span'>) => (\n <span\n className={cn('truncate text-xs text-gray-light tabular-nums', className)}\n {...rest}\n />\n)\n\nconst DeviceCardPower = ({\n className,\n ...rest\n}: React.ComponentProps<'span'>) => (\n <span\n className={cn(\n 'ms-2 shrink-0 self-center text-lg leading-tight font-bold text-gray tabular-nums',\n className,\n )}\n {...rest}\n />\n)\n\nconst DeviceCardControls = ({\n className,\n ...rest\n}: React.ComponentProps<'div'>) => (\n <div\n className={cn(\n 'flex items-center gap-3 border-t border-gray bg-base-gray-surface px-4 py-3',\n className,\n )}\n {...rest}\n />\n)\n\nconst DeviceCardFooter = ({\n className,\n ...rest\n}: React.ComponentProps<'div'>) => (\n <div\n className={cn(\n 'flex items-center justify-center gap-1.5 border-t border-gray bg-base-gray-surface px-4 py-2 text-xs text-gray-light',\n className,\n )}\n {...rest}\n />\n)\n\nexport {\n DeviceCard,\n DeviceCardBody,\n DeviceCardControls,\n DeviceCardDetail,\n DeviceCardFooter,\n DeviceCardHeader,\n DeviceCardIcon,\n DeviceCardMeters,\n DeviceCardPower,\n DeviceCardState,\n DeviceCardTitle,\n DeviceCardTitleColumn,\n}\n"],"mappings":";;;;;;;;;;AASA,MAAM,cAAc,EAAE,WAAW,GAAG,WAClC,iBAAA,GAAA,kBAAA,KAAC,OAAD;CACE,YAAA,GAAA,OAAA,IACE,wFACA,SACF;CACA,GAAI;AACL,CAAA;AAGH,MAAM,kBAAkB,EACtB,WACA,QACA,GAAG,WAEH,iBAAA,GAAA,kBAAA,KAAC,UAAD;CACE,MAAK;CACL,YAAA,GAAA,OAAA,IACE,yLACA,UAAU,uDACV,SACF;CACA,GAAI;AACL,CAAA;AAGH,MAAM,oBAAoB,EACxB,WACA,GAAG,WAEH,iBAAA,GAAA,kBAAA,KAAC,OAAD;CAAK,YAAA,GAAA,OAAA,IAAc,kCAAkC,SAAS;CAAG,GAAI;AAAO,CAAA;AAG9E,MAAM,oBAAoB,EACxB,WACA,GAAG,WAEH,iBAAA,GAAA,kBAAA,KAAC,OAAD;CACE,YAAA,GAAA,OAAA,IAAc,iDAAiD,SAAS;CACxE,GAAI;AACL,CAAA;AAGH,MAAM,oBAAA,GAAA,yBAAA,KACJ,gEACA;CACE,UAAU,EACR,MAAM;EACJ,SAAS;EACT,SAAS;EACT,OAAO;EACP,QAAQ;EACR,SAAS;CACX,EACF;CACA,iBAAiB,EAAE,MAAM,UAAU;AACrC,CACF;AAEA,MAAM,kBAAkB,EACtB,WACA,MACA,MACA,GAAG,WAKH,iBAAA,GAAA,kBAAA,KAAC,QAAD;CAAM,WAAW,iBAAiB;EAAE;EAAM;CAAU,CAAC;CAAG,GAAI;WAC1D,iBAAA,GAAA,kBAAA,KAACA,8BAAAA,gBAAD;EAAgB,WAAU;EAAc,MAAM;CAAO,CAAA;AACjD,CAAA;AAGR,MAAM,yBAAyB,EAC7B,WACA,GAAG,WAEH,iBAAA,GAAA,kBAAA,KAAC,OAAD;CACE,YAAA,GAAA,OAAA,IAAc,wCAAwC,SAAS;CAC/D,GAAI;AACL,CAAA;AAGH,MAAM,mBAAmB,EACvB,WACA,GAAG,WAEH,iBAAA,GAAA,kBAAA,KAAC,QAAD;CACE,YAAA,GAAA,OAAA,IAAc,wCAAwC,SAAS;CAC/D,GAAI;AACL,CAAA;AAGH,MAAM,qBAAA,GAAA,yBAAA,KACJ,wDACA;CACE,UAAU,EACR,MAAM;EACJ,SAAS;EACT,SAAS;EACT,OAAO;EACP,QAAQ;EACR,SAAS;CACX,EACF;CACA,iBAAiB,EAAE,MAAM,UAAU;AACrC,CACF;AAEA,MAAM,mBAAA,GAAA,yBAAA,KAAsB,kCAAkC;CAC5D,UAAU,EACR,MAAM;EACJ,SAAS;EACT,SAAS;EACT,OAAO;EACP,QAAQ;EACR,SAAS;CACX,EACF;CACA,iBAAiB,EAAE,MAAM,UAAU;AACrC,CAAC;AAED,MAAM,mBAAmB,EACvB,WACA,MACA,UACA,GAAG,WAEH,iBAAA,GAAA,kBAAA,MAAC,QAAD;CAAM,WAAW,kBAAkB;EAAE;EAAM;CAAU,CAAC;CAAG,GAAI;WAA7D,CACE,iBAAA,GAAA,kBAAA,KAAC,QAAD,EAAM,WAAW,gBAAgB,EAAE,KAAK,CAAC,EAAI,CAAA,GAC7C,iBAAA,GAAA,kBAAA,KAAC,QAAD;EAAM,WAAU;EAAY;CAAe,CAAA,CACvC;;AAGR,MAAM,oBAAoB,EACxB,WACA,GAAG,WAEH,iBAAA,GAAA,kBAAA,KAAC,QAAD;CACE,YAAA,GAAA,OAAA,IAAc,iDAAiD,SAAS;CACxE,GAAI;AACL,CAAA;AAGH,MAAM,mBAAmB,EACvB,WACA,GAAG,WAEH,iBAAA,GAAA,kBAAA,KAAC,QAAD;CACE,YAAA,GAAA,OAAA,IACE,oFACA,SACF;CACA,GAAI;AACL,CAAA;AAGH,MAAM,sBAAsB,EAC1B,WACA,GAAG,WAEH,iBAAA,GAAA,kBAAA,KAAC,OAAD;CACE,YAAA,GAAA,OAAA,IACE,+EACA,SACF;CACA,GAAI;AACL,CAAA;AAGH,MAAM,oBAAoB,EACxB,WACA,GAAG,WAEH,iBAAA,GAAA,kBAAA,KAAC,OAAD;CACE,YAAA,GAAA,OAAA,IACE,wHACA,SACF;CACA,GAAI;AACL,CAAA"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { MaterialSymbolIconName } from "../icons/material-symbol.cjs";
|
|
4
|
+
import { Tone } from "../lib/tones.cjs";
|
|
5
|
+
import * as React$1 from "react";
|
|
6
|
+
|
|
7
|
+
//#region src/components/device-card.d.ts
|
|
8
|
+
declare const DeviceCard: ({
|
|
9
|
+
className,
|
|
10
|
+
...rest
|
|
11
|
+
}: React$1.ComponentProps<"div">) => import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
declare const DeviceCardBody: ({
|
|
13
|
+
className,
|
|
14
|
+
active,
|
|
15
|
+
...rest
|
|
16
|
+
}: React$1.ComponentProps<"button"> & {
|
|
17
|
+
active?: boolean;
|
|
18
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
declare const DeviceCardHeader: ({
|
|
20
|
+
className,
|
|
21
|
+
...rest
|
|
22
|
+
}: React$1.ComponentProps<"div">) => import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
declare const DeviceCardMeters: ({
|
|
24
|
+
className,
|
|
25
|
+
...rest
|
|
26
|
+
}: React$1.ComponentProps<"div">) => import("react/jsx-runtime").JSX.Element;
|
|
27
|
+
declare const DeviceCardIcon: ({
|
|
28
|
+
className,
|
|
29
|
+
icon,
|
|
30
|
+
tone,
|
|
31
|
+
...rest
|
|
32
|
+
}: React$1.ComponentProps<"span"> & {
|
|
33
|
+
icon: MaterialSymbolIconName;
|
|
34
|
+
tone?: Tone;
|
|
35
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
36
|
+
declare const DeviceCardTitleColumn: ({
|
|
37
|
+
className,
|
|
38
|
+
...rest
|
|
39
|
+
}: React$1.ComponentProps<"div">) => import("react/jsx-runtime").JSX.Element;
|
|
40
|
+
declare const DeviceCardTitle: ({
|
|
41
|
+
className,
|
|
42
|
+
...rest
|
|
43
|
+
}: React$1.ComponentProps<"span">) => import("react/jsx-runtime").JSX.Element;
|
|
44
|
+
declare const DeviceCardState: ({
|
|
45
|
+
className,
|
|
46
|
+
tone,
|
|
47
|
+
children,
|
|
48
|
+
...rest
|
|
49
|
+
}: React$1.ComponentProps<"span"> & {
|
|
50
|
+
tone?: Tone;
|
|
51
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
52
|
+
declare const DeviceCardDetail: ({
|
|
53
|
+
className,
|
|
54
|
+
...rest
|
|
55
|
+
}: React$1.ComponentProps<"span">) => import("react/jsx-runtime").JSX.Element;
|
|
56
|
+
declare const DeviceCardPower: ({
|
|
57
|
+
className,
|
|
58
|
+
...rest
|
|
59
|
+
}: React$1.ComponentProps<"span">) => import("react/jsx-runtime").JSX.Element;
|
|
60
|
+
declare const DeviceCardControls: ({
|
|
61
|
+
className,
|
|
62
|
+
...rest
|
|
63
|
+
}: React$1.ComponentProps<"div">) => import("react/jsx-runtime").JSX.Element;
|
|
64
|
+
declare const DeviceCardFooter: ({
|
|
65
|
+
className,
|
|
66
|
+
...rest
|
|
67
|
+
}: React$1.ComponentProps<"div">) => import("react/jsx-runtime").JSX.Element;
|
|
68
|
+
//#endregion
|
|
69
|
+
export { DeviceCard, DeviceCardBody, DeviceCardControls, DeviceCardDetail, DeviceCardFooter, DeviceCardHeader, DeviceCardIcon, DeviceCardMeters, DeviceCardPower, DeviceCardState, DeviceCardTitle, DeviceCardTitleColumn };
|
|
70
|
+
//# sourceMappingURL=device-card.d.cts.map
|