astro-component-kit 0.4.0 → 0.5.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/README.md +139 -27
- package/bin/cli.js +67 -0
- package/bin/installer.js +179 -0
- package/package.json +35 -5
- package/src/components/index.ts +2 -0
- package/src/components/lib/Galaxy3D.astro +249 -137
- package/src/components/lib/app/AppSidebar.astro +249 -0
- package/src/components/lib/app/AppTopbar.astro +284 -0
- package/src/components/lib/app/ArrivalsBoard.astro +176 -0
- package/src/components/lib/app/AuthCard.astro +213 -0
- package/src/components/lib/app/DataTable.astro +346 -0
- package/src/components/lib/app/GuestProfileCard.astro +133 -0
- package/src/components/lib/app/HousekeepingBoard.astro +189 -0
- package/src/components/lib/app/PageHeader.astro +157 -0
- package/src/components/lib/app/PlanUsageCard.astro +112 -0
- package/src/components/lib/app/RoomRack.astro +207 -0
- package/src/components/lib/app/SettingsSection.astro +96 -0
- package/src/components/lib/app/SwitchRow.astro +71 -0
- package/src/components/lib/app/TeamMembers.astro +190 -0
- package/src/components/lib/app/app-icons.ts +52 -0
- package/src/components/lib/app/index.ts +19 -0
- package/src/components/lib/charts/AreaChart.astro +4 -4
- package/src/components/lib/charts/BarChart.astro +3 -3
- package/src/components/lib/charts/ChartFrame.astro +10 -10
- package/src/components/lib/charts/DonutChart.astro +2 -2
- package/src/components/lib/charts/DumbbellChart.astro +1 -1
- package/src/components/lib/charts/ForecastLineChart.astro +1 -1
- package/src/components/lib/charts/GaugeChart.astro +1 -1
- package/src/components/lib/charts/HeatmapChart.astro +1 -1
- package/src/components/lib/charts/HorizontalBarChart.astro +2 -2
- package/src/components/lib/charts/KpiStatTile.astro +4 -4
- package/src/components/lib/charts/LinearProgressGauge.astro +4 -4
- package/src/components/lib/charts/MetricDeltaTable.astro +3 -3
- package/src/components/lib/charts/RadarMetricChart.astro +4 -4
- package/src/components/lib/charts/RadialBarChart.astro +1 -1
- package/src/components/lib/charts/RetentionCohortTable.astro +2 -2
- package/src/components/lib/charts/TreemapChart.astro +1 -1
- package/src/components/lib/ecommerce/CartDrawer.astro +483 -0
- package/src/components/lib/ecommerce/CartPageList.astro +290 -0
- package/src/components/lib/ecommerce/CartToast.astro +276 -0
- package/src/components/lib/ecommerce/CategoryTiles.astro +143 -0
- package/src/components/lib/ecommerce/CheckoutForm.astro +423 -0
- package/src/components/lib/ecommerce/CountdownBanner.astro +230 -0
- package/src/components/lib/ecommerce/FilterBar.astro +278 -0
- package/src/components/lib/ecommerce/FilterSidebar.astro +405 -0
- package/src/components/lib/ecommerce/LiveActivityToast.astro +213 -0
- package/src/components/lib/ecommerce/OrderSummary.astro +295 -0
- package/src/components/lib/ecommerce/ProductBuyBox.astro +247 -0
- package/src/components/lib/ecommerce/ProductCardMinimal.astro +229 -0
- package/src/components/lib/ecommerce/ProductGallery.astro +145 -0
- package/src/components/lib/ecommerce/ProductGrid.astro +118 -0
- package/src/components/lib/ecommerce/ProductMedia.astro +113 -0
- package/src/components/lib/ecommerce/ProductRating.astro +78 -0
- package/src/components/lib/ecommerce/ProductToolbar.astro +93 -0
- package/src/components/lib/ecommerce/PromoBar.astro +145 -0
- package/src/components/lib/ecommerce/StockIndicator.astro +127 -0
- package/src/components/lib/ecommerce/StoreHeader.astro +446 -0
- package/src/components/lib/ecommerce/StoreHero.astro +260 -0
- package/src/components/lib/ecommerce/StoreProductCard.astro +307 -0
- package/src/components/lib/ecommerce/TrustBadges.astro +101 -0
- package/src/components/lib/ecommerce/VariantPicker.astro +145 -0
- package/src/components/lib/ecommerce/cart-store.ts +151 -0
- package/src/components/lib/ecommerce/catalog-filter.ts +62 -0
- package/src/components/lib/ecommerce/index.ts +34 -0
- package/src/components/lib/ecommerce/product-icons.ts +28 -0
- package/src/components/lib/ecommerce/types.ts +70 -0
- package/src/components/lib/forms/AnimatedInput.astro +4 -2
- package/src/components/lib/forms/CustomRadioGroup.astro +3 -1
- package/src/components/lib/index.ts +2 -0
- package/src/components/lib/layout/BentoGrid3.astro +6 -4
- package/src/components/lib/layout/CenterFixedBox.astro +2 -2
- package/src/components/lib/layout/CenteredContainer.astro +4 -2
- package/src/components/lib/layout/ClusterHorizontal.astro +2 -2
- package/src/components/lib/layout/FeatureHero.astro +4 -2
- package/src/components/lib/layout/FooterCenteredMinimal.astro +4 -2
- package/src/components/lib/layout/FullBleedSection.astro +2 -2
- package/src/components/lib/layout/GalleryGrid4.astro +2 -2
- package/src/components/lib/layout/HolyGrailGrid.astro +11 -9
- package/src/components/lib/layout/LandingSectionSplit.astro +5 -3
- package/src/components/lib/layout/MasonryGrid.astro +2 -2
- package/src/components/lib/layout/MinimalFooterGrid.astro +1 -1
- package/src/components/lib/layout/ScrollSnapSection.astro +1 -1
- package/src/components/lib/layout/SidebarLayoutWrapper.astro +4 -2
- package/src/components/lib/layout/SplitScreenLayout.astro +3 -3
- package/src/components/lib/layout/StepLayoutVertical.astro +1 -1
- package/src/components/lib/layout/StickySidebarWrapper.astro +4 -2
- package/src/components/lib/sections/AgencyContactBrief.astro +194 -0
- package/src/components/lib/sections/AgencyFooterCta.astro +94 -0
- package/src/components/lib/sections/AgencyHeader.astro +161 -0
- package/src/components/lib/sections/AgencyHeroKinetic.astro +172 -0
- package/src/components/lib/sections/AgencyServicesList.astro +113 -0
- package/src/components/lib/sections/AgencyTeamGrid.astro +111 -0
- package/src/components/lib/sections/AgencyWorkGrid.astro +147 -0
- package/src/components/lib/sections/BlogGridSection.astro +9 -7
- package/src/components/lib/sections/ButtonsShowcase.astro +20 -18
- package/src/components/lib/sections/CardsShowcase.astro +28 -26
- package/src/components/lib/sections/CareersOpenings.astro +10 -8
- package/src/components/lib/sections/ChangelogSection.astro +20 -7
- package/src/components/lib/sections/ContactGlassForm.astro +10 -8
- package/src/components/lib/sections/ContactSplitMap.astro +11 -9
- package/src/components/lib/sections/CtaAppDownload.astro +13 -11
- package/src/components/lib/sections/CtaGlowBanner.astro +12 -10
- package/src/components/lib/sections/CtaNewsletterSection.astro +13 -11
- package/src/components/lib/sections/CtaSplitImage.astro +13 -11
- package/src/components/lib/sections/DataShowcase.astro +23 -21
- package/src/components/lib/sections/FaqAccordionSection.astro +8 -8
- package/src/components/lib/sections/FaqTwoColumn.astro +9 -7
- package/src/components/lib/sections/FeatureAlternatingRows.astro +10 -8
- package/src/components/lib/sections/FeatureBentoGrid.astro +13 -11
- package/src/components/lib/sections/FeatureIconGrid.astro +6 -6
- package/src/components/lib/sections/FeatureTabsShowcase.astro +13 -11
- package/src/components/lib/sections/FeatureTimelineFlow.astro +8 -6
- package/src/components/lib/sections/FeedbackShowcase.astro +15 -13
- package/src/components/lib/sections/FooterMegaSection.astro +13 -11
- package/src/components/lib/sections/FormsShowcase.astro +22 -20
- package/src/components/lib/sections/HeroDashboardPreview.astro +11 -9
- package/src/components/lib/sections/HeroGlass.astro +22 -20
- package/src/components/lib/sections/HeroGradient.astro +15 -13
- package/src/components/lib/sections/HeroMinimalCentered.astro +10 -10
- package/src/components/lib/sections/HeroShowcaseSplit.astro +18 -16
- package/src/components/lib/sections/HeroSplit.astro +13 -11
- package/src/components/lib/sections/HeroTerminal.astro +14 -12
- package/src/components/lib/sections/HeroWaitlist.astro +10 -8
- package/src/components/lib/sections/HowItWorksSteps.astro +12 -10
- package/src/components/lib/sections/IntegrationsGrid.astro +7 -7
- package/src/components/lib/sections/LayoutShowcase.astro +21 -19
- package/src/components/lib/sections/LogoCloudSection.astro +4 -4
- package/src/components/lib/sections/LogoWallGrid.astro +6 -4
- package/src/components/lib/sections/NavigationShowcase.astro +15 -13
- package/src/components/lib/sections/OverlaysShowcase.astro +21 -19
- package/src/components/lib/sections/PricingComparisonMatrix.astro +15 -13
- package/src/components/lib/sections/PricingSinglePlan.astro +13 -11
- package/src/components/lib/sections/PricingTierCards.astro +11 -9
- package/src/components/lib/sections/PricingToggleCards.astro +13 -13
- package/src/components/lib/sections/ShopCategoryHero.astro +103 -0
- package/src/components/lib/sections/ShopCollectionMosaic.astro +131 -0
- package/src/components/lib/sections/ShopFooterWordmark.astro +100 -0
- package/src/components/lib/sections/ShopHeaderEditorial.astro +396 -0
- package/src/components/lib/sections/ShopHeroEditorial.astro +151 -0
- package/src/components/lib/sections/ShopLookbook.astro +250 -0
- package/src/components/lib/sections/ShopNewsletterEditorial.astro +128 -0
- package/src/components/lib/sections/ShopProductRail.astro +150 -0
- package/src/components/lib/sections/ShopReviewsEditorial.astro +133 -0
- package/src/components/lib/sections/ShopValuesMarquee.astro +91 -0
- package/src/components/lib/sections/StatsCounterBand.astro +9 -7
- package/src/components/lib/sections/StatsDashboardSection.astro +4 -2
- package/src/components/lib/sections/StatsMetricShowcase.astro +9 -7
- package/src/components/lib/sections/TeamGridSection.astro +12 -10
- package/src/components/lib/sections/TestimonialCarousel.astro +10 -8
- package/src/components/lib/sections/TestimonialFeatured.astro +7 -5
- package/src/components/lib/sections/TestimonialGridSection.astro +7 -7
- package/src/components/lib/sections/TestimonialWallGlass.astro +11 -9
- package/src/components/lib/sections/TypographyShowcase.astro +10 -8
- package/src/components/lib/sections/index.ts +10 -0
- package/src/components/lib/templates/ecommerce/StoreCategoryPage.astro +160 -0
- package/src/components/lib/templates/ecommerce/StoreCheckoutPage.astro +98 -0
- package/src/components/lib/templates/ecommerce/StoreHomePage.astro +191 -0
- package/src/components/lib/templates/ecommerce/StoreLayout.astro +169 -0
- package/src/components/lib/templates/ecommerce/StoreProductPage.astro +165 -0
- package/src/components/lib/templates/ecommerce/data.ts +187 -0
- package/src/components/lib/templates/ecommerce/index.ts +14 -0
- package/src/components/lib/templates/ecommerce-editorial/EditorialBagPage.astro +52 -0
- package/src/components/lib/templates/ecommerce-editorial/EditorialCheckoutPage.astro +123 -0
- package/src/components/lib/templates/ecommerce-editorial/EditorialHomePage.astro +102 -0
- package/src/components/lib/templates/ecommerce-editorial/EditorialLayout.astro +216 -0
- package/src/components/lib/templates/ecommerce-editorial/EditorialProductPage.astro +205 -0
- package/src/components/lib/templates/ecommerce-editorial/EditorialShopPage.astro +112 -0
- package/src/components/lib/templates/ecommerce-editorial/data.ts +125 -0
- package/src/components/lib/templates/ecommerce-editorial/index.ts +16 -0
- package/src/components/lib/templates/saas-hotel/AppLayout.astro +83 -0
- package/src/components/lib/templates/saas-hotel/DashboardPage.astro +66 -0
- package/src/components/lib/templates/saas-hotel/GuestsPage.astro +65 -0
- package/src/components/lib/templates/saas-hotel/LandingPage.astro +213 -0
- package/src/components/lib/templates/saas-hotel/ReportsPage.astro +63 -0
- package/src/components/lib/templates/saas-hotel/ReservationsPage.astro +49 -0
- package/src/components/lib/templates/saas-hotel/RoomsPage.astro +48 -0
- package/src/components/lib/templates/saas-hotel/SettingsPage.astro +115 -0
- package/src/components/lib/templates/saas-hotel/SignInPage.astro +50 -0
- package/src/components/lib/templates/saas-hotel/data.ts +229 -0
- package/src/components/lib/templates/saas-hotel/index.ts +19 -0
- package/src/components/lib/templates/saas-hotel/lobby-theme.css +90 -0
- package/src/data/registry/app.ts +93 -0
- package/src/data/registry/buttons.ts +3279 -0
- package/src/data/registry/cards.ts +1753 -0
- package/src/data/registry/charts-svg.ts +557 -0
- package/src/data/registry/charts.ts +500 -0
- package/src/data/registry/data.ts +986 -0
- package/src/data/registry/ecommerce.ts +269 -0
- package/src/data/registry/feedback.ts +1824 -0
- package/src/data/registry/forms.ts +2513 -0
- package/src/data/registry/index.ts +64 -0
- package/src/data/registry/layout.ts +206 -0
- package/src/data/registry/navigation.ts +936 -0
- package/src/data/registry/overlays.ts +1133 -0
- package/src/data/registry/sections-extra.ts +397 -0
- package/src/data/registry/sections.ts +361 -0
- package/src/data/registry/sources.ts +41 -0
- package/src/data/registry/templates.ts +414 -0
- package/src/data/registry/types.ts +30 -0
- package/src/data/registry/typography.ts +777 -0
- package/src/mcp/http-server.ts +324 -0
- package/src/mcp/index.ts +67 -0
- package/src/mcp/installer.ts +178 -0
- package/src/mcp/registry-adapter.ts +278 -0
- package/src/mcp/stdio-server.ts +11 -0
- package/src/mcp/tools.ts +247 -0
- package/src/mcp/types.ts +53 -0
- package/src/styles/global.css +95 -0
|
@@ -48,9 +48,9 @@ const chartConfig = {
|
|
|
48
48
|
|
|
49
49
|
<style>
|
|
50
50
|
.premium-chart-card {
|
|
51
|
-
background:
|
|
51
|
+
background: rgb(var(--ink-rgb, 255 255 255) / 0.03);
|
|
52
52
|
backdrop-filter: blur(12px);
|
|
53
|
-
border: 1px solid
|
|
53
|
+
border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08);
|
|
54
54
|
border-radius: var(--r-xl, 24px);
|
|
55
55
|
padding: var(--sp-6, 24px);
|
|
56
56
|
overflow: hidden;
|
|
@@ -102,7 +102,7 @@ const chartConfig = {
|
|
|
102
102
|
:global(.apexcharts-tooltip) {
|
|
103
103
|
background: rgba(15, 23, 42, 0.9) !important;
|
|
104
104
|
backdrop-filter: blur(8px) !important;
|
|
105
|
-
border: 1px solid
|
|
105
|
+
border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.1) !important;
|
|
106
106
|
border-radius: 12px !important;
|
|
107
107
|
color: #fff !important;
|
|
108
108
|
box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.3) !important;
|
|
@@ -175,7 +175,7 @@ const chartConfig = {
|
|
|
175
175
|
},
|
|
176
176
|
grid: {
|
|
177
177
|
show: config.showGrid,
|
|
178
|
-
borderColor: '
|
|
178
|
+
borderColor: 'rgb(var(--ink-rgb, 255 255 255) / 0.05)',
|
|
179
179
|
strokeDashArray: 4,
|
|
180
180
|
},
|
|
181
181
|
legend: {
|
|
@@ -51,9 +51,9 @@ const chartConfig = {
|
|
|
51
51
|
|
|
52
52
|
<style>
|
|
53
53
|
.premium-chart-card {
|
|
54
|
-
background:
|
|
54
|
+
background: rgb(var(--ink-rgb, 255 255 255) / 0.03);
|
|
55
55
|
backdrop-filter: blur(12px);
|
|
56
|
-
border: 1px solid
|
|
56
|
+
border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08);
|
|
57
57
|
border-radius: var(--r-xl, 24px);
|
|
58
58
|
padding: var(--sp-6, 24px);
|
|
59
59
|
width: 100%;
|
|
@@ -158,7 +158,7 @@ const chartConfig = {
|
|
|
158
158
|
labels: { style: { colors: '#64748b', fontSize: '12px' } },
|
|
159
159
|
},
|
|
160
160
|
grid: {
|
|
161
|
-
borderColor: '
|
|
161
|
+
borderColor: 'rgb(var(--ink-rgb, 255 255 255) / 0.05)',
|
|
162
162
|
strokeDashArray: 4,
|
|
163
163
|
},
|
|
164
164
|
legend: {
|
|
@@ -133,14 +133,14 @@ const titleId = `cf-${Math.random().toString(36).slice(2, 9)}`;
|
|
|
133
133
|
font-family: var(--font-sans, system-ui, sans-serif);
|
|
134
134
|
}
|
|
135
135
|
.cf--glass {
|
|
136
|
-
background: linear-gradient(160deg,
|
|
137
|
-
border: 1px solid var(--c-border,
|
|
136
|
+
background: linear-gradient(160deg, rgb(var(--ink-rgb, 255 255 255) / 0.045), rgb(var(--ink-rgb, 255 255 255) / 0.015));
|
|
137
|
+
border: 1px solid var(--c-border, rgb(var(--ink-rgb, 255 255 255) / 0.07));
|
|
138
138
|
backdrop-filter: blur(14px);
|
|
139
139
|
-webkit-backdrop-filter: blur(14px);
|
|
140
140
|
}
|
|
141
141
|
.cf--solid {
|
|
142
142
|
background: var(--chart-surface, #0d0d0f);
|
|
143
|
-
border: 1px solid
|
|
143
|
+
border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08);
|
|
144
144
|
}
|
|
145
145
|
.cf--ghost {
|
|
146
146
|
background: transparent;
|
|
@@ -231,12 +231,12 @@ const titleId = `cf-${Math.random().toString(36).slice(2, 9)}`;
|
|
|
231
231
|
|
|
232
232
|
/* ── Shared mark vocabulary for every chart ───────────── */
|
|
233
233
|
.cf :global(.cf-grid) {
|
|
234
|
-
stroke: var(--chart-grid,
|
|
234
|
+
stroke: var(--chart-grid, rgb(var(--ink-rgb, 255 255 255) / 0.07));
|
|
235
235
|
stroke-width: 1;
|
|
236
236
|
shape-rendering: crispEdges;
|
|
237
237
|
}
|
|
238
238
|
.cf :global(.cf-axis) {
|
|
239
|
-
stroke: var(--chart-axis,
|
|
239
|
+
stroke: var(--chart-axis, rgb(var(--ink-rgb, 255 255 255) / 0.18));
|
|
240
240
|
stroke-width: 1;
|
|
241
241
|
shape-rendering: crispEdges;
|
|
242
242
|
}
|
|
@@ -272,7 +272,7 @@ const titleId = `cf-${Math.random().toString(36).slice(2, 9)}`;
|
|
|
272
272
|
outline: none;
|
|
273
273
|
}
|
|
274
274
|
.cf :global(.cf-cross) {
|
|
275
|
-
stroke:
|
|
275
|
+
stroke: rgb(var(--ink-rgb, 255 255 255) / 0.35);
|
|
276
276
|
stroke-width: 1;
|
|
277
277
|
opacity: 0;
|
|
278
278
|
pointer-events: none;
|
|
@@ -283,7 +283,7 @@ const titleId = `cf-${Math.random().toString(36).slice(2, 9)}`;
|
|
|
283
283
|
opacity: 1;
|
|
284
284
|
}
|
|
285
285
|
.cf :global(.cf-hit:focus-visible) {
|
|
286
|
-
fill:
|
|
286
|
+
fill: rgb(var(--ink-rgb, 255 255 255) / 0.04);
|
|
287
287
|
}
|
|
288
288
|
|
|
289
289
|
/* ── Tooltip ─────────────────────────────────────────── */
|
|
@@ -301,8 +301,8 @@ const titleId = `cf-${Math.random().toString(36).slice(2, 9)}`;
|
|
|
301
301
|
max-width: 16rem;
|
|
302
302
|
padding: 0.55rem 0.7rem;
|
|
303
303
|
border-radius: var(--r-sm, 8px);
|
|
304
|
-
background:
|
|
305
|
-
border: 1px solid
|
|
304
|
+
background: rgb(var(--paper-rgb, 12 12 14) / 0.96);
|
|
305
|
+
border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.12);
|
|
306
306
|
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.45);
|
|
307
307
|
font-size: 0.75rem;
|
|
308
308
|
color: var(--c-text-1, #fff);
|
|
@@ -359,7 +359,7 @@ const titleId = `cf-${Math.random().toString(36).slice(2, 9)}`;
|
|
|
359
359
|
.cf__data td {
|
|
360
360
|
padding: 0.4rem 0.6rem;
|
|
361
361
|
text-align: right;
|
|
362
|
-
border-bottom: 1px solid
|
|
362
|
+
border-bottom: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.06);
|
|
363
363
|
white-space: nowrap;
|
|
364
364
|
}
|
|
365
365
|
.cf__data th:first-child { text-align: left; }
|
|
@@ -48,9 +48,9 @@ const chartConfig = {
|
|
|
48
48
|
|
|
49
49
|
<style>
|
|
50
50
|
.premium-chart-card {
|
|
51
|
-
background:
|
|
51
|
+
background: rgb(var(--ink-rgb, 255 255 255) / 0.03);
|
|
52
52
|
backdrop-filter: blur(12px);
|
|
53
|
-
border: 1px solid
|
|
53
|
+
border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08);
|
|
54
54
|
border-radius: var(--r-xl, 24px);
|
|
55
55
|
padding: var(--sp-6, 24px);
|
|
56
56
|
width: 100%;
|
|
@@ -82,7 +82,7 @@ const fmt = (v: number) => formatValue(v, prefix, suffix);
|
|
|
82
82
|
data-tip-title={it.label} data-tip={`${ca}::${aLabel}: ${fmt(it.a)}|${cb}::${bLabel}: ${fmt(it.b)}|Δ ${fmt(it.b - it.a)}`}>
|
|
83
83
|
<rect x={m.l} y={cy - rowH / 2} width={W - m.l - m.r} height={rowH} fill="transparent" />
|
|
84
84
|
<text class="cf-label" x={m.l - 10} y={cy + 4} text-anchor="end">{it.label}</text>
|
|
85
|
-
<line x1={x(it.a)} x2={x(it.b)} y1={cy} y2={cy} stroke="
|
|
85
|
+
<line x1={x(it.a)} x2={x(it.b)} y1={cy} y2={cy} stroke="rgb(var(--ink-rgb, 255 255 255) / 0.22)" stroke-width="4" stroke-linecap="round" />
|
|
86
86
|
<circle cx={x(it.a)} cy={cy} r="7" fill={ca} stroke="var(--chart-surface, #0d0d0f)" stroke-width="2" />
|
|
87
87
|
<circle cx={x(it.b)} cy={cy} r="7" fill={cb} stroke="var(--chart-surface, #0d0d0f)" stroke-width="2" />
|
|
88
88
|
</g>
|
|
@@ -97,7 +97,7 @@ const fmt = (v: number) => formatValue(v, prefix, suffix);
|
|
|
97
97
|
))}
|
|
98
98
|
{categories.map((c, i) => <text class="cf-label" x={x(i)} y={H - 8} text-anchor="middle">{c}</text>)}
|
|
99
99
|
|
|
100
|
-
<rect x={anchor[0]} y={m.t} width={W - m.r - anchor[0]} height={H - m.t - m.b} fill="
|
|
100
|
+
<rect x={anchor[0]} y={m.t} width={W - m.r - anchor[0]} height={H - m.t - m.b} fill="rgb(var(--ink-rgb, 255 255 255) / 0.025)" aria-hidden="true" />
|
|
101
101
|
<line class="cf-axis" x1={anchor[0]} x2={anchor[0]} y1={m.t} y2={H - m.b} />
|
|
102
102
|
<text class="cf-label" x={anchor[0] + 6} y={m.t + 10}>Today</text>
|
|
103
103
|
|
|
@@ -64,7 +64,7 @@ const fmt = (v: number) => formatValue(v, prefix, suffix);
|
|
|
64
64
|
>
|
|
65
65
|
<div class="gc" role="meter" aria-valuemin={0} aria-valuemax={max} aria-valuenow={value} aria-label={`${title}: ${fmt(value)} ${label}, ${(pct * 100).toFixed(0)}%`}>
|
|
66
66
|
<svg viewBox={`0 0 ${W} ${H}`} aria-hidden="true">
|
|
67
|
-
<path d={arcStroke(cx, cy, r, a0, a1)} fill="none" stroke="
|
|
67
|
+
<path d={arcStroke(cx, cy, r, a0, a1)} fill="none" stroke="rgb(var(--ink-rgb, 255 255 255) / 0.07)" stroke-width="18" stroke-linecap="round" />
|
|
68
68
|
{pct > 0 && <path class="gc__arc" d={arcStroke(cx, cy, r, a0, a0 + Math.PI * pct)} fill="none" stroke={color} stroke-width="18" stroke-linecap="round" />}
|
|
69
69
|
<text class="cf-label" x={cx - r} y={H - 2} text-anchor="middle">0</text>
|
|
70
70
|
<text class="cf-label" x={cx + r} y={H - 2} text-anchor="middle">{fmt(max)}</text>
|
|
@@ -117,7 +117,7 @@ const fill = (v: number) => `color-mix(in srgb, ${color} ${Math.round(12 + t(v)
|
|
|
117
117
|
}
|
|
118
118
|
.hm__cell:hover { transform: scale(1.06); }
|
|
119
119
|
.hm__cell:focus-visible { outline: 2px solid var(--c-text-1, #fff); outline-offset: 1px; }
|
|
120
|
-
.hm__v { font-size: 0.6875rem; color:
|
|
120
|
+
.hm__v { font-size: 0.6875rem; color: rgb(var(--ink-rgb, 255 255 255) / 0.7); font-variant-numeric: tabular-nums; }
|
|
121
121
|
.hm__v--strong { color: #fff; font-weight: 650; }
|
|
122
122
|
.hm__scale {
|
|
123
123
|
display: flex;
|
|
@@ -104,7 +104,7 @@ const fmt = (v: number) => formatValue(v, prefix, suffix);
|
|
|
104
104
|
}
|
|
105
105
|
.hb__row:hover,
|
|
106
106
|
.hb__row:focus-visible {
|
|
107
|
-
background:
|
|
107
|
+
background: rgb(var(--ink-rgb, 255 255 255) / 0.04);
|
|
108
108
|
}
|
|
109
109
|
.hb__row:focus-visible {
|
|
110
110
|
outline: 2px solid var(--c-primary-light, #d4a017);
|
|
@@ -120,7 +120,7 @@ const fmt = (v: number) => formatValue(v, prefix, suffix);
|
|
|
120
120
|
.hb__track {
|
|
121
121
|
height: 10px;
|
|
122
122
|
border-radius: 4px;
|
|
123
|
-
background:
|
|
123
|
+
background: rgb(var(--ink-rgb, 255 255 255) / 0.04);
|
|
124
124
|
overflow: hidden;
|
|
125
125
|
}
|
|
126
126
|
.hb__bar {
|
|
@@ -75,13 +75,13 @@ const good = invert ? !up : up;
|
|
|
75
75
|
transition: border-color 0.25s ease, transform 0.25s ease;
|
|
76
76
|
}
|
|
77
77
|
.kpi--glass {
|
|
78
|
-
background: linear-gradient(160deg,
|
|
79
|
-
border: 1px solid var(--c-border,
|
|
78
|
+
background: linear-gradient(160deg, rgb(var(--ink-rgb, 255 255 255) / 0.05), rgb(var(--ink-rgb, 255 255 255) / 0.015));
|
|
79
|
+
border: 1px solid var(--c-border, rgb(var(--ink-rgb, 255 255 255) / 0.07));
|
|
80
80
|
backdrop-filter: blur(14px);
|
|
81
81
|
}
|
|
82
|
-
.kpi--solid { background: var(--chart-surface, #0d0d0f); border: 1px solid
|
|
82
|
+
.kpi--solid { background: var(--chart-surface, #0d0d0f); border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08); }
|
|
83
83
|
.kpi--ghost { background: transparent; border: 1px solid transparent; padding-inline: 0; }
|
|
84
|
-
.kpi--glass:hover, .kpi--solid:hover { border-color:
|
|
84
|
+
.kpi--glass:hover, .kpi--solid:hover { border-color: rgb(var(--ink-rgb, 255 255 255) / 0.16); transform: translateY(-2px); }
|
|
85
85
|
.kpi--sm { --kpi-pad: var(--sp-4, 1rem); --kpi-val: 1.5rem; }
|
|
86
86
|
.kpi--lg { --kpi-pad: var(--sp-8, 2rem); --kpi-val: 2.5rem; }
|
|
87
87
|
.kpi__head { display: flex; justify-content: space-between; align-items: center; gap: 0.75rem; }
|
|
@@ -18,7 +18,7 @@ const {
|
|
|
18
18
|
{ label: 'SSR Execution', value: 45, color: '#d4a017' },
|
|
19
19
|
{ label: 'Asset Caching', value: 25, color: '#38bdf8' },
|
|
20
20
|
{ label: 'Edge Worker', value: 15, color: '#a855f7' },
|
|
21
|
-
{ label: 'Free Headroom', value: 15, color: '
|
|
21
|
+
{ label: 'Free Headroom', value: 15, color: 'rgb(var(--ink-rgb, 255 255 255) / 0.1)' },
|
|
22
22
|
],
|
|
23
23
|
total = '100%',
|
|
24
24
|
} = Astro.props;
|
|
@@ -64,9 +64,9 @@ const totalSum = segments.reduce((acc, s) => acc + s.value, 0) || 100;
|
|
|
64
64
|
width: 100%;
|
|
65
65
|
max-width: 440px;
|
|
66
66
|
padding: var(--sp-6, 1.5rem);
|
|
67
|
-
background:
|
|
67
|
+
background: rgb(var(--ink-rgb, 255 255 255) / 0.02);
|
|
68
68
|
backdrop-filter: blur(16px);
|
|
69
|
-
border: 1px solid
|
|
69
|
+
border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08);
|
|
70
70
|
border-radius: var(--r-xl, 20px);
|
|
71
71
|
font-family: var(--font-sans, system-ui, sans-serif);
|
|
72
72
|
}
|
|
@@ -94,7 +94,7 @@ const totalSum = segments.reduce((acc, s) => acc + s.value, 0) || 100;
|
|
|
94
94
|
height: 10px;
|
|
95
95
|
border-radius: var(--r-full, 9999px);
|
|
96
96
|
overflow: hidden;
|
|
97
|
-
background:
|
|
97
|
+
background: rgb(var(--ink-rgb, 255 255 255) / 0.05);
|
|
98
98
|
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.5);
|
|
99
99
|
}
|
|
100
100
|
|
|
@@ -101,16 +101,16 @@ const fmt = (v: number) => formatValue(v, prefix, suffix, false);
|
|
|
101
101
|
.md__table { width: 100%; border-collapse: collapse; font-size: 0.8125rem; font-variant-numeric: tabular-nums; }
|
|
102
102
|
.md__table th, .md__table td {
|
|
103
103
|
padding: 0.7rem 0.6rem;
|
|
104
|
-
border-bottom: 1px solid
|
|
104
|
+
border-bottom: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.06);
|
|
105
105
|
text-align: left;
|
|
106
106
|
vertical-align: middle;
|
|
107
107
|
}
|
|
108
108
|
.md__table thead th { font-size: 0.6875rem; font-weight: 600; color: var(--c-text-3, #8a8a8a); text-transform: uppercase; letter-spacing: 0.04em; }
|
|
109
109
|
.md__table tbody tr { transition: background 0.2s ease; }
|
|
110
|
-
.md__table tbody tr:hover { background:
|
|
110
|
+
.md__table tbody tr:hover { background: rgb(var(--ink-rgb, 255 255 255) / 0.03); }
|
|
111
111
|
.md__table tbody th { font-weight: 500; min-width: 9rem; }
|
|
112
112
|
.md__label { display: block; color: var(--c-text-1, #fff); margin-bottom: 0.35rem; }
|
|
113
|
-
.md__bar { display: block; height: 4px; border-radius: 2px; background:
|
|
113
|
+
.md__bar { display: block; height: 4px; border-radius: 2px; background: rgb(var(--ink-rgb, 255 255 255) / 0.05); overflow: hidden; }
|
|
114
114
|
.md__bar span { display: block; height: 100%; border-radius: 2px; }
|
|
115
115
|
.md__num { text-align: right !important; white-space: nowrap; color: var(--c-text-2, #a3a3a3); }
|
|
116
116
|
.md__strong { color: var(--c-text-1, #fff); font-weight: 650; }
|
|
@@ -112,9 +112,9 @@ const dataPoints = data
|
|
|
112
112
|
flex-direction: column;
|
|
113
113
|
align-items: center;
|
|
114
114
|
padding: var(--sp-6, 1.5rem);
|
|
115
|
-
background:
|
|
115
|
+
background: rgb(var(--ink-rgb, 255 255 255) / 0.02);
|
|
116
116
|
backdrop-filter: blur(16px);
|
|
117
|
-
border: 1px solid
|
|
117
|
+
border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08);
|
|
118
118
|
border-radius: var(--r-xl, 24px);
|
|
119
119
|
width: 100%;
|
|
120
120
|
max-width: fit-content;
|
|
@@ -136,12 +136,12 @@ const dataPoints = data
|
|
|
136
136
|
|
|
137
137
|
.radar-web {
|
|
138
138
|
fill: none;
|
|
139
|
-
stroke:
|
|
139
|
+
stroke: rgb(var(--ink-rgb, 255 255 255) / 0.08);
|
|
140
140
|
stroke-width: 1;
|
|
141
141
|
}
|
|
142
142
|
|
|
143
143
|
.radar-spoke {
|
|
144
|
-
stroke:
|
|
144
|
+
stroke: rgb(var(--ink-rgb, 255 255 255) / 0.08);
|
|
145
145
|
stroke-width: 1;
|
|
146
146
|
}
|
|
147
147
|
|
|
@@ -67,7 +67,7 @@ const rings = items.slice(0, 8).map((it, i) => {
|
|
|
67
67
|
{rings.map((r) => (
|
|
68
68
|
<g class="cf-mark cf-dim" tabindex="0" role="img" aria-label={`${r.label}: ${Math.round(r.pct * 100)}%`}
|
|
69
69
|
data-tip-title={r.label} data-tip={`${r.color}::${r.value}${r.max ? ` / ${r.max}` : '%'}`}>
|
|
70
|
-
<path d={arcStroke(cx, cy, r.r, start, start + sweepRad)} fill="none" stroke="
|
|
70
|
+
<path d={arcStroke(cx, cy, r.r, start, start + sweepRad)} fill="none" stroke="rgb(var(--ink-rgb, 255 255 255) / 0.06)" stroke-width={stroke} stroke-linecap="round" />
|
|
71
71
|
{r.pct > 0 && (
|
|
72
72
|
<path class="rb__arc" d={arcStroke(cx, cy, r.r, start, start + sweepRad * r.pct)} fill="none" stroke={r.color} stroke-width={stroke} stroke-linecap="round" />
|
|
73
73
|
)}
|
|
@@ -114,10 +114,10 @@ const avg = cols.map((_, i) => {
|
|
|
114
114
|
padding: 0.55rem 0.4rem;
|
|
115
115
|
text-align: center;
|
|
116
116
|
border-radius: 4px;
|
|
117
|
-
color:
|
|
117
|
+
color: rgb(var(--ink-rgb, 255 255 255) / 0.78);
|
|
118
118
|
}
|
|
119
119
|
.rc__cell[data-strong] { color: #fff; font-weight: 650; }
|
|
120
|
-
.rc__empty { background:
|
|
120
|
+
.rc__empty { background: rgb(var(--ink-rgb, 255 255 255) / 0.02); border-radius: 4px; }
|
|
121
121
|
.rc__avg { text-align: center; color: var(--c-text-1, #fff); font-weight: 600; padding-top: 0.5rem; }
|
|
122
122
|
.sr-only {
|
|
123
123
|
position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
|
|
@@ -84,7 +84,7 @@ const GAP = 2;
|
|
|
84
84
|
{showLabel && (
|
|
85
85
|
<>
|
|
86
86
|
<text x={r.x + 10} y={r.y + 20} fill="#fff" font-size="12" font-weight="650">{it.label}</text>
|
|
87
|
-
<text x={r.x + 10} y={r.y + 36} fill="
|
|
87
|
+
<text x={r.x + 10} y={r.y + 36} fill="rgb(var(--ink-rgb, 255 255 255) / 0.8)" font-size="11">{fmt(it.value)}</text>
|
|
88
88
|
</>
|
|
89
89
|
)}
|
|
90
90
|
</g>
|