@luquimbo/bi-superpowers 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +8 -0
- package/.mcp.json +25 -0
- package/AGENTS.md +244 -0
- package/CHANGELOG.md +265 -0
- package/LICENSE +21 -0
- package/README.md +211 -0
- package/bin/build-plugin.js +30 -0
- package/bin/cli.js +1064 -0
- package/bin/commands/add.js +533 -0
- package/bin/commands/add.test.js +77 -0
- package/bin/commands/build-desktop.js +166 -0
- package/bin/commands/changelog.js +443 -0
- package/bin/commands/diff.js +325 -0
- package/bin/commands/lint.js +419 -0
- package/bin/commands/lint.test.js +103 -0
- package/bin/commands/mcp-setup.js +246 -0
- package/bin/commands/pull.js +287 -0
- package/bin/commands/pull.test.js +36 -0
- package/bin/commands/push.js +231 -0
- package/bin/commands/push.test.js +14 -0
- package/bin/commands/search.js +344 -0
- package/bin/commands/search.test.js +115 -0
- package/bin/commands/setup.js +545 -0
- package/bin/commands/setup.test.js +46 -0
- package/bin/commands/sync-profile.js +405 -0
- package/bin/commands/sync-profile.test.js +14 -0
- package/bin/commands/sync-source.js +418 -0
- package/bin/commands/sync-source.test.js +14 -0
- package/bin/commands/watch.js +206 -0
- package/bin/lib/generators/claude-plugin.js +266 -0
- package/bin/lib/generators/claude-plugin.test.js +110 -0
- package/bin/lib/generators/index.js +116 -0
- package/bin/lib/generators/shared.js +282 -0
- package/bin/lib/licensing/index.js +35 -0
- package/bin/lib/licensing/storage.js +364 -0
- package/bin/lib/licensing/storage.test.js +55 -0
- package/bin/lib/licensing/validator.js +213 -0
- package/bin/lib/licensing/validator.test.js +137 -0
- package/bin/lib/microsoft-mcp.js +176 -0
- package/bin/lib/microsoft-mcp.test.js +106 -0
- package/bin/lib/skills.js +84 -0
- package/bin/mcp/powerbi-modeling-launcher.js +38 -0
- package/bin/postinstall.js +44 -0
- package/bin/utils/errors.js +159 -0
- package/bin/utils/git.js +298 -0
- package/bin/utils/logger.js +142 -0
- package/bin/utils/mcp-detect.js +274 -0
- package/bin/utils/mcp-detect.test.js +105 -0
- package/bin/utils/pbix.js +305 -0
- package/bin/utils/pbix.test.js +37 -0
- package/bin/utils/profiles.js +312 -0
- package/bin/utils/projects.js +168 -0
- package/bin/utils/readline.js +206 -0
- package/bin/utils/readline.test.js +47 -0
- package/bin/utils/tui.js +314 -0
- package/bin/utils/tui.test.js +127 -0
- package/commands/contributions.md +265 -0
- package/commands/data-model-design.md +468 -0
- package/commands/dax-doctor.md +248 -0
- package/commands/fabric-scripts.md +452 -0
- package/commands/migration-assistant.md +290 -0
- package/commands/model-documenter.md +242 -0
- package/commands/pbi-connect.md +239 -0
- package/commands/project-kickoff.md +905 -0
- package/commands/report-layout.md +296 -0
- package/commands/rls-design.md +533 -0
- package/commands/theme-tweaker.md +624 -0
- package/config.example.json +23 -0
- package/config.json +23 -0
- package/desktop-extension/manifest.json +37 -0
- package/desktop-extension/package.json +10 -0
- package/desktop-extension/server.js +95 -0
- package/docs/openrouter-free-models.md +92 -0
- package/library/examples/README.md +151 -0
- package/library/examples/finance-reporting/README.md +351 -0
- package/library/examples/finance-reporting/data-model.md +267 -0
- package/library/examples/finance-reporting/measures.dax +557 -0
- package/library/examples/hr-analytics/README.md +371 -0
- package/library/examples/hr-analytics/data-model.md +315 -0
- package/library/examples/hr-analytics/measures.dax +460 -0
- package/library/examples/marketing-analytics/README.md +37 -0
- package/library/examples/marketing-analytics/data-model.md +62 -0
- package/library/examples/marketing-analytics/measures.dax +110 -0
- package/library/examples/retail-analytics/README.md +439 -0
- package/library/examples/retail-analytics/data-model.md +288 -0
- package/library/examples/retail-analytics/measures.dax +481 -0
- package/library/examples/supply-chain/README.md +37 -0
- package/library/examples/supply-chain/data-model.md +69 -0
- package/library/examples/supply-chain/measures.dax +77 -0
- package/library/examples/udf-library/README.md +228 -0
- package/library/examples/udf-library/functions.dax +571 -0
- package/library/snippets/dax/README.md +292 -0
- package/library/snippets/dax/business-domains.md +576 -0
- package/library/snippets/dax/calculate-patterns.md +276 -0
- package/library/snippets/dax/calculation-groups.md +489 -0
- package/library/snippets/dax/error-handling.md +495 -0
- package/library/snippets/dax/iterators-and-aggregations.md +474 -0
- package/library/snippets/dax/kpis-and-metrics.md +293 -0
- package/library/snippets/dax/rankings-and-topn.md +235 -0
- package/library/snippets/dax/security-patterns.md +413 -0
- package/library/snippets/dax/text-and-formatting.md +316 -0
- package/library/snippets/dax/time-intelligence.md +196 -0
- package/library/snippets/dax/user-defined-functions.md +477 -0
- package/library/snippets/dax/virtual-tables.md +546 -0
- package/library/snippets/excel-formulas/README.md +84 -0
- package/library/snippets/excel-formulas/aggregations.md +330 -0
- package/library/snippets/excel-formulas/dates-and-times.md +361 -0
- package/library/snippets/excel-formulas/dynamic-arrays.md +314 -0
- package/library/snippets/excel-formulas/lookups.md +169 -0
- package/library/snippets/excel-formulas/text-functions.md +363 -0
- package/library/snippets/governance/naming-conventions.md +97 -0
- package/library/snippets/governance/review-checklists.md +107 -0
- package/library/snippets/power-query/README.md +389 -0
- package/library/snippets/power-query/api-integration.md +707 -0
- package/library/snippets/power-query/connections.md +434 -0
- package/library/snippets/power-query/data-cleaning.md +298 -0
- package/library/snippets/power-query/error-handling.md +526 -0
- package/library/snippets/power-query/parameters.md +350 -0
- package/library/snippets/power-query/performance.md +506 -0
- package/library/snippets/power-query/transformations.md +330 -0
- package/library/snippets/report-design/accessibility.md +78 -0
- package/library/snippets/report-design/chart-selection.md +54 -0
- package/library/snippets/report-design/layout-patterns.md +87 -0
- package/library/templates/data-models/README.md +93 -0
- package/library/templates/data-models/finance-model.md +627 -0
- package/library/templates/data-models/retail-star-schema.md +473 -0
- package/library/templates/excel/README.md +83 -0
- package/library/templates/excel/budget-tracker.md +432 -0
- package/library/templates/excel/data-entry-form.md +533 -0
- package/library/templates/power-bi/README.md +72 -0
- package/library/templates/power-bi/finance-report.md +449 -0
- package/library/templates/power-bi/kpi-scorecard.md +461 -0
- package/library/templates/power-bi/sales-dashboard.md +281 -0
- package/library/themes/excel/README.md +436 -0
- package/library/themes/power-bi/README.md +271 -0
- package/library/themes/power-bi/accessible.json +307 -0
- package/library/themes/power-bi/bi-superpowers-default.json +858 -0
- package/library/themes/power-bi/corporate-blue.json +291 -0
- package/library/themes/power-bi/dark-mode.json +291 -0
- package/library/themes/power-bi/minimal.json +292 -0
- package/library/themes/power-bi/print-friendly.json +309 -0
- package/package.json +93 -0
- package/skills/contributions/SKILL.md +267 -0
- package/skills/data-model-design/SKILL.md +470 -0
- package/skills/data-modeling/SKILL.md +254 -0
- package/skills/data-quality/SKILL.md +664 -0
- package/skills/dax/SKILL.md +708 -0
- package/skills/dax-doctor/SKILL.md +250 -0
- package/skills/dax-udf/SKILL.md +489 -0
- package/skills/deployment/SKILL.md +320 -0
- package/skills/excel-formulas/SKILL.md +463 -0
- package/skills/fabric-scripts/SKILL.md +454 -0
- package/skills/fast-standard/SKILL.md +509 -0
- package/skills/governance/SKILL.md +205 -0
- package/skills/migration-assistant/SKILL.md +292 -0
- package/skills/model-documenter/SKILL.md +244 -0
- package/skills/pbi-connect/SKILL.md +241 -0
- package/skills/power-query/SKILL.md +406 -0
- package/skills/project-kickoff/SKILL.md +907 -0
- package/skills/query-performance/SKILL.md +480 -0
- package/skills/report-design/SKILL.md +207 -0
- package/skills/report-layout/SKILL.md +298 -0
- package/skills/rls-design/SKILL.md +535 -0
- package/skills/semantic-model/SKILL.md +237 -0
- package/skills/testing-validation/SKILL.md +643 -0
- package/skills/theme-tweaker/SKILL.md +626 -0
- package/src/content/base.md +237 -0
- package/src/content/mcp-requirements.json +69 -0
- package/src/content/routing.md +203 -0
- package/src/content/skills/contributions.md +259 -0
- package/src/content/skills/data-model-design.md +462 -0
- package/src/content/skills/data-modeling.md +246 -0
- package/src/content/skills/data-quality.md +656 -0
- package/src/content/skills/dax-doctor.md +242 -0
- package/src/content/skills/dax-udf.md +481 -0
- package/src/content/skills/dax.md +700 -0
- package/src/content/skills/deployment.md +312 -0
- package/src/content/skills/excel-formulas.md +455 -0
- package/src/content/skills/fabric-scripts.md +446 -0
- package/src/content/skills/fast-standard.md +501 -0
- package/src/content/skills/governance.md +197 -0
- package/src/content/skills/migration-assistant.md +284 -0
- package/src/content/skills/model-documenter.md +236 -0
- package/src/content/skills/pbi-connect.md +233 -0
- package/src/content/skills/power-query.md +398 -0
- package/src/content/skills/project-kickoff.md +899 -0
- package/src/content/skills/query-performance.md +472 -0
- package/src/content/skills/report-design.md +199 -0
- package/src/content/skills/report-layout.md +290 -0
- package/src/content/skills/rls-design.md +527 -0
- package/src/content/skills/semantic-model.md +229 -0
- package/src/content/skills/testing-validation.md +635 -0
- package/src/content/skills/theme-tweaker.md +618 -0
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
# Sales Dashboard Template
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
A comprehensive sales analytics dashboard for tracking revenue, performance metrics, and sales trends across regions, products, and time periods.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Target Audience
|
|
10
|
+
|
|
11
|
+
- Sales Managers
|
|
12
|
+
- Regional Directors
|
|
13
|
+
- C-Level Executives
|
|
14
|
+
- Revenue Operations Teams
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Data Requirements
|
|
19
|
+
|
|
20
|
+
### Required Tables
|
|
21
|
+
|
|
22
|
+
| Table | Description | Key Columns |
|
|
23
|
+
|-------|-------------|-------------|
|
|
24
|
+
| **FactSales** | Transaction-level sales data | SalesID, Date, ProductID, CustomerID, Quantity, UnitPrice, TotalAmount, Discount |
|
|
25
|
+
| **DimDate** | Date dimension | Date, Year, Quarter, Month, MonthName, WeekNum, DayOfWeek, IsWeekend, IsHoliday |
|
|
26
|
+
| **DimProduct** | Product master | ProductID, ProductName, Category, SubCategory, Brand, UnitCost |
|
|
27
|
+
| **DimCustomer** | Customer master | CustomerID, CustomerName, Segment, Region, Country, City |
|
|
28
|
+
| **DimSalesRep** | Sales representative | SalesRepID, Name, Team, Manager, HireDate |
|
|
29
|
+
|
|
30
|
+
### Optional Tables
|
|
31
|
+
|
|
32
|
+
| Table | Description | Use Case |
|
|
33
|
+
|-------|-------------|----------|
|
|
34
|
+
| **FactTargets** | Sales targets | Target vs Actual comparison |
|
|
35
|
+
| **DimGeography** | Geographic hierarchy | Map visualizations |
|
|
36
|
+
| **FactReturns** | Product returns | Net sales calculation |
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Recommended Measures
|
|
41
|
+
|
|
42
|
+
### Core Sales Metrics
|
|
43
|
+
|
|
44
|
+
```dax
|
|
45
|
+
// Total Revenue
|
|
46
|
+
Total Revenue =
|
|
47
|
+
SUM(FactSales[TotalAmount])
|
|
48
|
+
|
|
49
|
+
// Total Quantity Sold
|
|
50
|
+
Total Quantity =
|
|
51
|
+
SUM(FactSales[Quantity])
|
|
52
|
+
|
|
53
|
+
// Average Order Value
|
|
54
|
+
Average Order Value =
|
|
55
|
+
DIVIDE([Total Revenue], DISTINCTCOUNT(FactSales[SalesID]))
|
|
56
|
+
|
|
57
|
+
// Total Cost
|
|
58
|
+
Total Cost =
|
|
59
|
+
SUMX(
|
|
60
|
+
FactSales,
|
|
61
|
+
FactSales[Quantity] * RELATED(DimProduct[UnitCost])
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
// Gross Profit
|
|
65
|
+
Gross Profit =
|
|
66
|
+
[Total Revenue] - [Total Cost]
|
|
67
|
+
|
|
68
|
+
// Gross Margin %
|
|
69
|
+
Gross Margin % =
|
|
70
|
+
DIVIDE([Gross Profit], [Total Revenue])
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Time Intelligence
|
|
74
|
+
|
|
75
|
+
```dax
|
|
76
|
+
// Revenue YTD
|
|
77
|
+
Revenue YTD =
|
|
78
|
+
TOTALYTD([Total Revenue], DimDate[Date])
|
|
79
|
+
|
|
80
|
+
// Revenue Previous Year
|
|
81
|
+
Revenue PY =
|
|
82
|
+
CALCULATE(
|
|
83
|
+
[Total Revenue],
|
|
84
|
+
SAMEPERIODLASTYEAR(DimDate[Date])
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
// Revenue YoY Growth %
|
|
88
|
+
Revenue YoY % =
|
|
89
|
+
DIVIDE(
|
|
90
|
+
[Total Revenue] - [Revenue PY],
|
|
91
|
+
[Revenue PY]
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
// Revenue MTD
|
|
95
|
+
Revenue MTD =
|
|
96
|
+
TOTALMTD([Total Revenue], DimDate[Date])
|
|
97
|
+
|
|
98
|
+
// Revenue Rolling 12 Months
|
|
99
|
+
Revenue R12M =
|
|
100
|
+
CALCULATE(
|
|
101
|
+
[Total Revenue],
|
|
102
|
+
DATESINPERIOD(DimDate[Date], MAX(DimDate[Date]), -12, MONTH)
|
|
103
|
+
)
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Target Comparison
|
|
107
|
+
|
|
108
|
+
```dax
|
|
109
|
+
// Target Amount
|
|
110
|
+
Target Amount =
|
|
111
|
+
SUM(FactTargets[TargetAmount])
|
|
112
|
+
|
|
113
|
+
// Target Achievement %
|
|
114
|
+
Target Achievement % =
|
|
115
|
+
DIVIDE([Total Revenue], [Target Amount])
|
|
116
|
+
|
|
117
|
+
// Variance to Target
|
|
118
|
+
Variance to Target =
|
|
119
|
+
[Total Revenue] - [Target Amount]
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Page Structure
|
|
125
|
+
|
|
126
|
+
### Page 1: Executive Summary
|
|
127
|
+
|
|
128
|
+
**Purpose:** High-level KPIs and trends for leadership
|
|
129
|
+
|
|
130
|
+
| Visual | Position | Content |
|
|
131
|
+
|--------|----------|---------|
|
|
132
|
+
| Card | Top-left | Total Revenue (current period) |
|
|
133
|
+
| Card | Top-center-left | Revenue YoY % with conditional arrow |
|
|
134
|
+
| Card | Top-center-right | Gross Margin % |
|
|
135
|
+
| Card | Top-right | Total Orders |
|
|
136
|
+
| Line Chart | Middle-left (60% width) | Revenue trend by month with PY comparison |
|
|
137
|
+
| Donut Chart | Middle-right (40% width) | Revenue by Region |
|
|
138
|
+
| Clustered Bar | Bottom-left (50% width) | Top 10 Products by Revenue |
|
|
139
|
+
| Table | Bottom-right (50% width) | Regional Summary with sparklines |
|
|
140
|
+
|
|
141
|
+
**Slicers:**
|
|
142
|
+
- Date range (relative date slicer)
|
|
143
|
+
- Region (dropdown)
|
|
144
|
+
- Product Category (dropdown)
|
|
145
|
+
|
|
146
|
+
### Page 2: Sales Performance
|
|
147
|
+
|
|
148
|
+
**Purpose:** Detailed sales rep and team performance
|
|
149
|
+
|
|
150
|
+
| Visual | Position | Content |
|
|
151
|
+
|--------|----------|---------|
|
|
152
|
+
| Matrix | Top (full width) | Sales Rep performance with Target, Actual, Variance, Achievement % |
|
|
153
|
+
| Clustered Column | Middle-left | Monthly performance by team |
|
|
154
|
+
| Scatter Chart | Middle-right | Sales Rep: Revenue vs Orders (bubble: margin) |
|
|
155
|
+
| Waterfall | Bottom | Revenue bridge: Target to Actual |
|
|
156
|
+
|
|
157
|
+
### Page 3: Product Analysis
|
|
158
|
+
|
|
159
|
+
**Purpose:** Product performance and profitability
|
|
160
|
+
|
|
161
|
+
| Visual | Position | Content |
|
|
162
|
+
|--------|----------|---------|
|
|
163
|
+
| Treemap | Top-left | Revenue by Category > SubCategory |
|
|
164
|
+
| Table | Top-right | Product details with conditional formatting |
|
|
165
|
+
| Line & Clustered Column | Middle | Monthly trend: Revenue (bars) + Units (line) |
|
|
166
|
+
| Scatter | Bottom-left | Price vs Volume analysis |
|
|
167
|
+
| Matrix | Bottom-right | Category performance by region |
|
|
168
|
+
|
|
169
|
+
### Page 4: Customer Insights
|
|
170
|
+
|
|
171
|
+
**Purpose:** Customer segmentation and behavior
|
|
172
|
+
|
|
173
|
+
| Visual | Position | Content |
|
|
174
|
+
|--------|----------|---------|
|
|
175
|
+
| Card | Top row | Customer Count, New Customers, Avg Revenue per Customer |
|
|
176
|
+
| Pie Chart | Middle-left | Revenue by Customer Segment |
|
|
177
|
+
| Bar Chart | Middle-center | Top 10 Customers |
|
|
178
|
+
| Map | Middle-right | Revenue by geography |
|
|
179
|
+
| Table | Bottom | Customer detail with recency, frequency metrics |
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## Visual Specifications
|
|
184
|
+
|
|
185
|
+
### Color Palette (IBCS-inspired)
|
|
186
|
+
|
|
187
|
+
| Purpose | Color | Usage |
|
|
188
|
+
|---------|-------|-------|
|
|
189
|
+
| Primary | #1B1B1B | Current period data |
|
|
190
|
+
| Comparison | #A0A0A0 | Previous period / secondary |
|
|
191
|
+
| Positive | #2E7D32 | Positive variance |
|
|
192
|
+
| Negative | #C62828 | Negative variance |
|
|
193
|
+
| Accent | #0078D4 | Highlights, selections |
|
|
194
|
+
|
|
195
|
+
### Conditional Formatting Rules
|
|
196
|
+
|
|
197
|
+
**For YoY/Variance columns:**
|
|
198
|
+
```
|
|
199
|
+
IF value >= 0 THEN background: light green, icon: up arrow
|
|
200
|
+
IF value < 0 THEN background: light red, icon: down arrow
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
**For Achievement %:**
|
|
204
|
+
```
|
|
205
|
+
IF value >= 100% THEN green
|
|
206
|
+
IF value >= 90% THEN yellow
|
|
207
|
+
IF value < 90% THEN red
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Interactivity
|
|
213
|
+
|
|
214
|
+
### Cross-filtering
|
|
215
|
+
|
|
216
|
+
- Region selection filters all pages
|
|
217
|
+
- Product selection filters customer and sales views
|
|
218
|
+
- Date selection filters all visuals
|
|
219
|
+
|
|
220
|
+
### Drillthrough
|
|
221
|
+
|
|
222
|
+
- Product drillthrough from any product visual to Product Detail page
|
|
223
|
+
- Customer drillthrough from customer table to Customer 360 page
|
|
224
|
+
- Sales Rep drillthrough to individual performance page
|
|
225
|
+
|
|
226
|
+
### Bookmarks
|
|
227
|
+
|
|
228
|
+
- "Current Year" - Resets all slicers to current year
|
|
229
|
+
- "Comparison View" - Shows PY comparison charts
|
|
230
|
+
- "Export View" - Simplified layout for PDF export
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## Performance Optimization
|
|
235
|
+
|
|
236
|
+
### Recommended Practices
|
|
237
|
+
|
|
238
|
+
1. **Pre-aggregate** monthly summaries for trend charts
|
|
239
|
+
2. **Use SUMMARIZE** for customer/product rollups
|
|
240
|
+
3. **Limit card visuals** to 4-6 per page
|
|
241
|
+
4. **Implement incremental refresh** for FactSales
|
|
242
|
+
5. **Create calculation groups** for time intelligence reuse
|
|
243
|
+
|
|
244
|
+
### Query Reduction
|
|
245
|
+
|
|
246
|
+
```dax
|
|
247
|
+
// Create a summary table for trends
|
|
248
|
+
SalesSummary =
|
|
249
|
+
SUMMARIZE(
|
|
250
|
+
FactSales,
|
|
251
|
+
DimDate[Year],
|
|
252
|
+
DimDate[MonthNum],
|
|
253
|
+
DimDate[MonthName],
|
|
254
|
+
DimProduct[Category],
|
|
255
|
+
DimCustomer[Region],
|
|
256
|
+
"Revenue", SUM(FactSales[TotalAmount]),
|
|
257
|
+
"Quantity", SUM(FactSales[Quantity]),
|
|
258
|
+
"Orders", DISTINCTCOUNT(FactSales[SalesID])
|
|
259
|
+
)
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
## Implementation Checklist
|
|
265
|
+
|
|
266
|
+
- [ ] Create star schema with proper relationships
|
|
267
|
+
- [ ] Build date dimension with fiscal calendar if needed
|
|
268
|
+
- [ ] Implement core measures in dedicated Measures table
|
|
269
|
+
- [ ] Apply theme from BI Agent Superpowers (corporate-blue or custom)
|
|
270
|
+
- [ ] Configure row-level security if multi-tenant
|
|
271
|
+
- [ ] Test cross-filtering behavior
|
|
272
|
+
- [ ] Optimize report for 1920x1080 display
|
|
273
|
+
- [ ] Document slicers and interactions for end users
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
## Related Resources
|
|
278
|
+
|
|
279
|
+
- [DAX Time Intelligence Patterns](../../snippets/dax/time-intelligence.md)
|
|
280
|
+
- [Star Schema Best Practices](../../snippets/data-modeling/)
|
|
281
|
+
- [Corporate Blue Theme](../../styles/power-bi/corporate-blue.json)
|
|
@@ -0,0 +1,436 @@
|
|
|
1
|
+
# Excel Styles Guide
|
|
2
|
+
|
|
3
|
+
Comprehensive formatting standards and visual design guidelines for professional Excel workbooks.
|
|
4
|
+
|
|
5
|
+
## Color Palette
|
|
6
|
+
|
|
7
|
+
### Primary Colors (Corporate)
|
|
8
|
+
|
|
9
|
+
| Purpose | Color | Hex | RGB |
|
|
10
|
+
|---------|-------|-----|-----|
|
|
11
|
+
| Primary Blue | Blue | #0078D4 | 0, 120, 212 |
|
|
12
|
+
| Primary Dark | Dark Blue | #002050 | 0, 32, 80 |
|
|
13
|
+
| Accent | Teal | #00BCF2 | 0, 188, 242 |
|
|
14
|
+
| Neutral | Gray | #605E5C | 96, 94, 92 |
|
|
15
|
+
|
|
16
|
+
### Status Colors
|
|
17
|
+
|
|
18
|
+
| Purpose | Color | Hex | RGB | Usage |
|
|
19
|
+
|---------|-------|-----|-----|-------|
|
|
20
|
+
| Positive | Green | #107C10 | 16, 124, 16 | Favorable variance, growth |
|
|
21
|
+
| Negative | Red | #D13438 | 209, 52, 56 | Unfavorable, decline |
|
|
22
|
+
| Warning | Amber | #FFB900 | 255, 185, 0 | Caution, attention needed |
|
|
23
|
+
| Neutral | Gray | #A0A0A0 | 160, 160, 160 | Unchanged, N/A |
|
|
24
|
+
|
|
25
|
+
### Background Colors
|
|
26
|
+
|
|
27
|
+
| Purpose | Color | Hex | Usage |
|
|
28
|
+
|---------|-------|-----|-------|
|
|
29
|
+
| Header | Light Gray | #F3F2F1 | Table headers, section titles |
|
|
30
|
+
| Alternate Row | Very Light Gray | #FAF9F8 | Alternating row shading |
|
|
31
|
+
| Input Cell | Light Yellow | #FFF8DC | User input areas |
|
|
32
|
+
| Locked Cell | Light Gray | #E6E6E6 | Protected/calculated cells |
|
|
33
|
+
| Highlight | Light Blue | #DEECF9 | Selected or focus areas |
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Typography
|
|
38
|
+
|
|
39
|
+
### Font Recommendations
|
|
40
|
+
|
|
41
|
+
| Use Case | Font | Size | Weight |
|
|
42
|
+
|----------|------|------|--------|
|
|
43
|
+
| **Primary** | Segoe UI | 10pt | Regular |
|
|
44
|
+
| **Headers** | Segoe UI | 11pt | Semibold |
|
|
45
|
+
| **Titles** | Segoe UI | 14pt | Semibold |
|
|
46
|
+
| **Data** | Segoe UI | 10pt | Regular |
|
|
47
|
+
| **Small Text** | Segoe UI | 9pt | Regular |
|
|
48
|
+
| **Monospace** | Consolas | 10pt | Regular |
|
|
49
|
+
|
|
50
|
+
### Alternative Fonts
|
|
51
|
+
|
|
52
|
+
For cross-platform compatibility:
|
|
53
|
+
- Windows: Segoe UI
|
|
54
|
+
- Mac: SF Pro, Helvetica Neue
|
|
55
|
+
- Web: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto
|
|
56
|
+
|
|
57
|
+
### Font Colors
|
|
58
|
+
|
|
59
|
+
| Element | Color | Hex |
|
|
60
|
+
|---------|-------|-----|
|
|
61
|
+
| Primary Text | Dark Gray | #252423 |
|
|
62
|
+
| Secondary Text | Medium Gray | #605E5C |
|
|
63
|
+
| Muted Text | Light Gray | #A0A0A0 |
|
|
64
|
+
| Link | Blue | #0078D4 |
|
|
65
|
+
| Error | Red | #D13438 |
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Number Formats
|
|
70
|
+
|
|
71
|
+
### Currency
|
|
72
|
+
|
|
73
|
+
| Format Code | Example | Usage |
|
|
74
|
+
|-------------|---------|-------|
|
|
75
|
+
| `$#,##0` | $1,234 | Whole dollars |
|
|
76
|
+
| `$#,##0.00` | $1,234.56 | Dollars and cents |
|
|
77
|
+
| `$#,##0,"K"` | $1,235K | Thousands |
|
|
78
|
+
| `$#,##0.0,,"M"` | $1.2M | Millions |
|
|
79
|
+
| `($#,##0)` | ($1,234) | Accounting format |
|
|
80
|
+
|
|
81
|
+
### Percentages
|
|
82
|
+
|
|
83
|
+
| Format Code | Example | Usage |
|
|
84
|
+
|-------------|---------|-------|
|
|
85
|
+
| `0%` | 25% | Whole percentages |
|
|
86
|
+
| `0.0%` | 25.5% | One decimal |
|
|
87
|
+
| `0.00%` | 25.55% | Two decimals |
|
|
88
|
+
| `+0.0%;-0.0%` | +5.2% / -3.1% | With sign |
|
|
89
|
+
|
|
90
|
+
### Numbers
|
|
91
|
+
|
|
92
|
+
| Format Code | Example | Usage |
|
|
93
|
+
|-------------|---------|-------|
|
|
94
|
+
| `#,##0` | 1,234 | Whole numbers |
|
|
95
|
+
| `#,##0.00` | 1,234.56 | Two decimals |
|
|
96
|
+
| `#,##0.0,"K"` | 1.2K | Thousands |
|
|
97
|
+
| `0.0E+0` | 1.2E+6 | Scientific |
|
|
98
|
+
|
|
99
|
+
### Dates
|
|
100
|
+
|
|
101
|
+
| Format Code | Example | Usage |
|
|
102
|
+
|-------------|---------|-------|
|
|
103
|
+
| `YYYY-MM-DD` | 2024-01-15 | ISO format |
|
|
104
|
+
| `MM/DD/YYYY` | 01/15/2024 | US format |
|
|
105
|
+
| `DD-MMM-YYYY` | 15-Jan-2024 | International |
|
|
106
|
+
| `MMMM D, YYYY` | January 15, 2024 | Long format |
|
|
107
|
+
| `MMM 'YY` | Jan '24 | Abbreviated |
|
|
108
|
+
|
|
109
|
+
### Times
|
|
110
|
+
|
|
111
|
+
| Format Code | Example | Usage |
|
|
112
|
+
|-------------|---------|-------|
|
|
113
|
+
| `HH:MM` | 14:30 | 24-hour |
|
|
114
|
+
| `H:MM AM/PM` | 2:30 PM | 12-hour |
|
|
115
|
+
| `HH:MM:SS` | 14:30:45 | With seconds |
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Table Formatting
|
|
120
|
+
|
|
121
|
+
### Standard Table Style
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
Headers:
|
|
125
|
+
- Background: #F3F2F1
|
|
126
|
+
- Font: Segoe UI Semibold, 11pt, #252423
|
|
127
|
+
- Alignment: Center or Left
|
|
128
|
+
- Borders: Bottom border 1pt #E6E6E6
|
|
129
|
+
|
|
130
|
+
Data Rows:
|
|
131
|
+
- Background: White (#FFFFFF)
|
|
132
|
+
- Alt Background: #FAF9F8
|
|
133
|
+
- Font: Segoe UI Regular, 10pt, #252423
|
|
134
|
+
- Alignment: Left (text), Right (numbers)
|
|
135
|
+
- Borders: Horizontal 1pt #E6E6E6
|
|
136
|
+
|
|
137
|
+
Totals Row:
|
|
138
|
+
- Background: #F3F2F1
|
|
139
|
+
- Font: Segoe UI Semibold, 10pt, #252423
|
|
140
|
+
- Borders: Top border 2pt #0078D4
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Row Heights and Column Widths
|
|
144
|
+
|
|
145
|
+
| Element | Height/Width |
|
|
146
|
+
|---------|--------------|
|
|
147
|
+
| Header Row | 25 pts |
|
|
148
|
+
| Data Row | 20 pts |
|
|
149
|
+
| Title Row | 30 pts |
|
|
150
|
+
| Standard Column | 80-120 pts |
|
|
151
|
+
| Narrow Column | 40-60 pts |
|
|
152
|
+
| Wide Column | 150-200 pts |
|
|
153
|
+
|
|
154
|
+
### Cell Padding
|
|
155
|
+
|
|
156
|
+
Achieved through alignment and indentation:
|
|
157
|
+
- Indent: 1-2 characters from edge
|
|
158
|
+
- Use alignment options, not spaces
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Conditional Formatting Rules
|
|
163
|
+
|
|
164
|
+
### Variance Highlighting
|
|
165
|
+
|
|
166
|
+
**Positive Variance (Good):**
|
|
167
|
+
```
|
|
168
|
+
Background: #E8F5E9 (light green)
|
|
169
|
+
Font Color: #107C10 (green)
|
|
170
|
+
Icon: Up arrow (optional)
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
**Negative Variance (Bad):**
|
|
174
|
+
```
|
|
175
|
+
Background: #FFEBEE (light red)
|
|
176
|
+
Font Color: #D13438 (red)
|
|
177
|
+
Icon: Down arrow (optional)
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
**Neutral:**
|
|
181
|
+
```
|
|
182
|
+
Background: None
|
|
183
|
+
Font Color: #605E5C (gray)
|
|
184
|
+
Icon: Dash (optional)
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Data Bars
|
|
188
|
+
|
|
189
|
+
```
|
|
190
|
+
Positive:
|
|
191
|
+
- Color: #0078D4 (blue) or #107C10 (green)
|
|
192
|
+
- Fill: Gradient
|
|
193
|
+
- Border: Same color, solid
|
|
194
|
+
|
|
195
|
+
Negative:
|
|
196
|
+
- Color: #D13438 (red)
|
|
197
|
+
- Fill: Gradient
|
|
198
|
+
- Border: Same color, solid
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### Icon Sets
|
|
202
|
+
|
|
203
|
+
**Traffic Lights (3 icons):**
|
|
204
|
+
```
|
|
205
|
+
Green circle: >= 100% (or positive)
|
|
206
|
+
Yellow circle: >= 90% and < 100%
|
|
207
|
+
Red circle: < 90% (or negative)
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
**Arrows (3 icons):**
|
|
211
|
+
```
|
|
212
|
+
Up arrow (green): > 0 or above threshold
|
|
213
|
+
Horizontal dash: = 0 or at target
|
|
214
|
+
Down arrow (red): < 0 or below threshold
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### Color Scales
|
|
218
|
+
|
|
219
|
+
```
|
|
220
|
+
2-Color Scale:
|
|
221
|
+
- Minimum: White (#FFFFFF)
|
|
222
|
+
- Maximum: Blue (#0078D4)
|
|
223
|
+
|
|
224
|
+
3-Color Scale:
|
|
225
|
+
- Minimum: Red (#FFEBEE)
|
|
226
|
+
- Midpoint: White (#FFFFFF)
|
|
227
|
+
- Maximum: Green (#E8F5E9)
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## Chart Formatting
|
|
233
|
+
|
|
234
|
+
### Color Sequence
|
|
235
|
+
|
|
236
|
+
Use these colors in order for chart series:
|
|
237
|
+
|
|
238
|
+
1. `#0078D4` - Blue (primary)
|
|
239
|
+
2. `#00BCF2` - Cyan
|
|
240
|
+
3. `#00B294` - Teal
|
|
241
|
+
4. `#FFB900` - Amber
|
|
242
|
+
5. `#E81123` - Red
|
|
243
|
+
6. `#5C2D91` - Purple
|
|
244
|
+
7. `#002050` - Dark Blue
|
|
245
|
+
8. `#008272` - Dark Teal
|
|
246
|
+
|
|
247
|
+
### Chart Elements
|
|
248
|
+
|
|
249
|
+
```
|
|
250
|
+
Title:
|
|
251
|
+
- Font: Segoe UI Semibold, 14pt
|
|
252
|
+
- Color: #252423
|
|
253
|
+
- Alignment: Left
|
|
254
|
+
|
|
255
|
+
Axis Labels:
|
|
256
|
+
- Font: Segoe UI Regular, 10pt
|
|
257
|
+
- Color: #605E5C
|
|
258
|
+
|
|
259
|
+
Data Labels:
|
|
260
|
+
- Font: Segoe UI Regular, 9pt
|
|
261
|
+
- Color: #252423 or White (on dark)
|
|
262
|
+
|
|
263
|
+
Legend:
|
|
264
|
+
- Font: Segoe UI Regular, 10pt
|
|
265
|
+
- Position: Top or Right
|
|
266
|
+
- Color: #605E5C
|
|
267
|
+
|
|
268
|
+
Gridlines:
|
|
269
|
+
- Color: #E6E6E6
|
|
270
|
+
- Weight: 0.5pt
|
|
271
|
+
- Style: Solid
|
|
272
|
+
|
|
273
|
+
Plot Area:
|
|
274
|
+
- Background: White or None
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
### Chart Best Practices
|
|
278
|
+
|
|
279
|
+
1. **Limit colors** - Use 3-5 colors maximum
|
|
280
|
+
2. **Remove clutter** - No 3D effects, minimal gridlines
|
|
281
|
+
3. **Direct labeling** - Label data points, avoid legends when possible
|
|
282
|
+
4. **Consistent sizing** - Same dimensions across related charts
|
|
283
|
+
5. **White space** - Leave breathing room around charts
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## Dashboard Layout
|
|
288
|
+
|
|
289
|
+
### Grid System
|
|
290
|
+
|
|
291
|
+
Use a 12-column grid for dashboard layouts:
|
|
292
|
+
|
|
293
|
+
```
|
|
294
|
+
+--+--+--+--+--+--+--+--+--+--+--+--+
|
|
295
|
+
| 1| 2| 3| 4| 5| 6| 7| 8| 9|10|11|12|
|
|
296
|
+
+--+--+--+--+--+--+--+--+--+--+--+--+
|
|
297
|
+
|
|
298
|
+
Full width: 12 columns
|
|
299
|
+
Half width: 6 columns
|
|
300
|
+
Third width: 4 columns
|
|
301
|
+
Quarter width: 3 columns
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
### Standard Dashboard Page
|
|
305
|
+
|
|
306
|
+
```
|
|
307
|
+
+----------------------------------------+
|
|
308
|
+
| TITLE [Date] |
|
|
309
|
+
+----------------------------------------+
|
|
310
|
+
| KPI 1 | KPI 2 | KPI 3 | KPI 4 |
|
|
311
|
+
+--------+--------+--------+-------------+
|
|
312
|
+
| |
|
|
313
|
+
| Main Chart (8 cols) | Side |
|
|
314
|
+
| | Chart |
|
|
315
|
+
| |(4 cols)|
|
|
316
|
+
+----------------------------------------+
|
|
317
|
+
| Table or Detail Section |
|
|
318
|
+
+----------------------------------------+
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
### Spacing
|
|
322
|
+
|
|
323
|
+
| Element | Spacing |
|
|
324
|
+
|---------|---------|
|
|
325
|
+
| Section margin | 10-15 pts |
|
|
326
|
+
| Between charts | 10 pts |
|
|
327
|
+
| Chart padding | 5 pts |
|
|
328
|
+
| KPI card spacing | 5-10 pts |
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
332
|
+
## Input Forms
|
|
333
|
+
|
|
334
|
+
### Input Cell Formatting
|
|
335
|
+
|
|
336
|
+
```
|
|
337
|
+
Background: #FFF8DC (light yellow)
|
|
338
|
+
Border: 1pt solid #D4A017 (gold)
|
|
339
|
+
Protection: Unlocked
|
|
340
|
+
Validation: As appropriate
|
|
341
|
+
Font: Same as data (Segoe UI, 10pt)
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
### Labels
|
|
345
|
+
|
|
346
|
+
```
|
|
347
|
+
Position: Left of input cell
|
|
348
|
+
Alignment: Right-aligned
|
|
349
|
+
Font: Segoe UI Regular, 10pt, #605E5C
|
|
350
|
+
Required indicator: Red asterisk (*)
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
### Error States
|
|
354
|
+
|
|
355
|
+
```
|
|
356
|
+
Invalid Input:
|
|
357
|
+
- Border: 2pt solid #D13438
|
|
358
|
+
- Background: #FFEBEE
|
|
359
|
+
- Show error message
|
|
360
|
+
|
|
361
|
+
Valid Input:
|
|
362
|
+
- Border: 1pt solid #107C10
|
|
363
|
+
- Optional checkmark icon
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
---
|
|
367
|
+
|
|
368
|
+
## Print Formatting
|
|
369
|
+
|
|
370
|
+
### Page Setup
|
|
371
|
+
|
|
372
|
+
| Setting | Value |
|
|
373
|
+
|---------|-------|
|
|
374
|
+
| Orientation | Landscape (dashboards), Portrait (reports) |
|
|
375
|
+
| Margins | 0.5" all sides |
|
|
376
|
+
| Header | Document title, date |
|
|
377
|
+
| Footer | Page X of Y, confidentiality |
|
|
378
|
+
| Scaling | Fit to 1 page wide |
|
|
379
|
+
|
|
380
|
+
### Print-Specific Adjustments
|
|
381
|
+
|
|
382
|
+
- Remove background colors if printing in B&W
|
|
383
|
+
- Ensure sufficient contrast (4.5:1 minimum)
|
|
384
|
+
- Use solid borders instead of gridlines
|
|
385
|
+
- Include print titles (repeat headers)
|
|
386
|
+
|
|
387
|
+
---
|
|
388
|
+
|
|
389
|
+
## Accessibility
|
|
390
|
+
|
|
391
|
+
### Color Contrast
|
|
392
|
+
|
|
393
|
+
Minimum contrast ratios (WCAG AA):
|
|
394
|
+
- Normal text: 4.5:1
|
|
395
|
+
- Large text (14pt+): 3:1
|
|
396
|
+
- UI components: 3:1
|
|
397
|
+
|
|
398
|
+
### Colorblind-Friendly Palette
|
|
399
|
+
|
|
400
|
+
| Standard | Colorblind Alternative |
|
|
401
|
+
|----------|------------------------|
|
|
402
|
+
| Red/Green | Blue/Orange |
|
|
403
|
+
| #D13438 / #107C10 | #D16900 / #0078D4 |
|
|
404
|
+
|
|
405
|
+
### Best Practices
|
|
406
|
+
|
|
407
|
+
1. Never use color alone to convey meaning
|
|
408
|
+
2. Add patterns or icons alongside colors
|
|
409
|
+
3. Use clear labels and data labels
|
|
410
|
+
4. Provide alt text for charts
|
|
411
|
+
5. Use logical tab order for forms
|
|
412
|
+
|
|
413
|
+
---
|
|
414
|
+
|
|
415
|
+
## Quick Reference
|
|
416
|
+
|
|
417
|
+
### Named Styles to Create
|
|
418
|
+
|
|
419
|
+
| Style Name | Font | Size | Background | Use |
|
|
420
|
+
|------------|------|------|------------|-----|
|
|
421
|
+
| Header1 | Segoe UI Semibold | 14pt | None | Page titles |
|
|
422
|
+
| Header2 | Segoe UI Semibold | 12pt | None | Section titles |
|
|
423
|
+
| TableHeader | Segoe UI Semibold | 11pt | #F3F2F1 | Table headers |
|
|
424
|
+
| DataCell | Segoe UI Regular | 10pt | None | Standard data |
|
|
425
|
+
| InputCell | Segoe UI Regular | 10pt | #FFF8DC | User input |
|
|
426
|
+
| TotalRow | Segoe UI Semibold | 10pt | #F3F2F1 | Totals |
|
|
427
|
+
| Positive | Segoe UI Regular | 10pt | #E8F5E9 | Good values |
|
|
428
|
+
| Negative | Segoe UI Regular | 10pt | #FFEBEE | Bad values |
|
|
429
|
+
|
|
430
|
+
---
|
|
431
|
+
|
|
432
|
+
## Related Resources
|
|
433
|
+
|
|
434
|
+
- [Excel Templates](../../templates/excel/) - Workbook specifications
|
|
435
|
+
- [Excel Formula Snippets](../../snippets/excel-formulas/) - Formula patterns
|
|
436
|
+
- [Power BI Themes](../power-bi/) - Coordinated BI styling
|