feat(dedicated): build summary sidebar + expanded CPU/IPv4 options
CPU upgrade ladder (standard, R440/R540/R640/R740) now 6 tiers: - Gold 6230 (baseline, included) - Gold 6244 high-clock (16C / 3.6 GHz, +$25/mo) — for per-core licensed workloads (MS SQL / Oracle) and single-threaded compute - Gold 6248 (40C / 2.5 GHz, +$35/mo) - Gold 6230R sweet-spot (52C / 2.1 GHz, +$50/mo) — Cascade Lake Refresh of the 6230, more cores at same clock, bridges baseline and 6248R - Gold 6248R (48C / 3.0 GHz, +$75/mo) - Gold 6258R (56C / 2.7 GHz, +$145/mo) R740xd CPU ladder unchanged (6230 / 6248R / 6258R / Platinum 8280). IPv4 block options extended to /24: - /29 ($12) · /28 ($36) · /27 ($80) · /26 ($145) · /25 ($275) · /24 ($499). All blocks above /29 require ARIN justification — the group description explains the policy and each tier's label carries a "justification required" tag. Build summary sidebar replaces the bottom sticky footer on the per-chassis page. New 2-column layout (configurator left, summary right, sticky); collapses to single-column on tablet/mobile with the summary stacked above the configurator so total stays visible. The summary fixes the original "Total $468 billed monthly / includes $349 setup" wording confusion by splitting into clearly labeled sections: - RECURRING: per-line itemized breakdown (baseline + each upgrade with its actual cycle-priced cost), subtotal in /mo or /yr suffix - ONE-TIME: setup fee with non-refundable note (or strikethrough + "waived" badge when cycle is semi/annual) - TOTAL: "First invoice $X" + "Then $Y/mo recurring" framing on monthly/quarterly cycles; "Total due today" + renewal preview on semi/annual Removed: ConfiguratorFooter.vue (replaced by BuildSummary). Pinned to top via position:sticky with viewport-height clamp + internal scroll for tall configs. Order CTA + Copy share link moved into the summary card. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -358,7 +358,13 @@ class ConfigOptionSeeder extends Seeder
|
||||
$gen14CpuOption = $this->seedRadioOption($gen14CpuUpgrade, 'CPU Upgrade', false, 1);
|
||||
$this->seedValues($gen14CpuOption, [
|
||||
['label' => 'Baseline: 2× Xeon Gold 6230 (40C / 2.10 GHz)', 'value' => 'gold-6230-baseline', 'monthly' => 0, 'is_default' => true],
|
||||
// High-clock SKU for per-core licensed workloads (Microsoft SQL,
|
||||
// Oracle, single-threaded compute). Fewer cores, higher base clock.
|
||||
['label' => 'High-clock: 2× Xeon Gold 6244 (16C / 3.60 GHz)', 'value' => 'gold-6244', 'monthly' => 25.00],
|
||||
['label' => 'Upgrade: 2× Xeon Gold 6248 (40C / 2.50 GHz)', 'value' => 'gold-6248', 'monthly' => 35.00],
|
||||
// Cascade Lake Refresh of the 6230 — same gen, more cores at the
|
||||
// same clock. Sweet-spot mid-tier between baseline and 6248R.
|
||||
['label' => 'Mid-tier: 2× Xeon Gold 6230R (52C / 2.10 GHz)', 'value' => 'gold-6230r', 'monthly' => 50.00],
|
||||
['label' => 'Upgrade: 2× Xeon Gold 6248R (48C / 3.00 GHz)', 'value' => 'gold-6248r', 'monthly' => 75.00],
|
||||
['label' => 'Upgrade: 2× Xeon Gold 6258R (56C / 2.70 GHz)', 'value' => 'gold-6258r', 'monthly' => 145.00],
|
||||
]);
|
||||
@@ -469,7 +475,7 @@ class ConfigOptionSeeder extends Seeder
|
||||
$gen14Ipv4 = PlanConfigGroup::updateOrCreate(
|
||||
['name' => 'Dedicated 14th Gen — IPv4 Block'],
|
||||
[
|
||||
'description' => 'Additional IPv4 addresses beyond the 1 included with every server.',
|
||||
'description' => 'Additional IPv4 addresses beyond the 1 included with every server. Blocks of /28 or larger require ARIN justification — we provide the template; you fill in your use case before the IPs are allocated.',
|
||||
'mode' => 'preset',
|
||||
'service_type' => 'dedicated',
|
||||
'is_active' => true,
|
||||
@@ -478,11 +484,17 @@ class ConfigOptionSeeder extends Seeder
|
||||
);
|
||||
|
||||
$gen14Ipv4Option = $this->seedRadioOption($gen14Ipv4, 'IPv4 Block', false, 1);
|
||||
// ARIN justification policy applies to anything above /29; the group
|
||||
// description (above) tells customers about it, so we don't repeat
|
||||
// it on every tier label.
|
||||
$this->seedValues($gen14Ipv4Option, [
|
||||
['label' => '1 included (no extra)', 'value' => '1', 'monthly' => 0, 'is_default' => true],
|
||||
['label' => '/29 (5 usable)', 'value' => '5', 'monthly' => 12.00],
|
||||
['label' => '/28 (13 usable)', 'value' => '13', 'monthly' => 36.00],
|
||||
['label' => '/27 (29 usable)', 'value' => '29', 'monthly' => 80.00],
|
||||
['label' => '/28 (13 usable) — justification required', 'value' => '13', 'monthly' => 36.00],
|
||||
['label' => '/27 (29 usable) — justification required', 'value' => '29', 'monthly' => 80.00],
|
||||
['label' => '/26 (61 usable) — justification required', 'value' => '61', 'monthly' => 145.00],
|
||||
['label' => '/25 (125 usable) — justification required', 'value' => '125', 'monthly' => 275.00],
|
||||
['label' => '/24 (253 usable) — justification required', 'value' => '253', 'monthly' => 499.00],
|
||||
]);
|
||||
|
||||
$gen14Ipv4->plans()->syncWithoutDetaching($gen14AllPlans);
|
||||
|
||||
Reference in New Issue
Block a user