@fastnd/components 1.0.30 → 1.0.32

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.
Files changed (57) hide show
  1. package/dist/components/QuickAccessCard/QuickAccessCard.d.ts +12 -0
  2. package/dist/components/ScoreBar/ScoreBar.d.ts +8 -0
  3. package/dist/components/index.d.ts +2 -0
  4. package/dist/examples/dashboard/StatusDonutChart/StatusDonutChart.tsx +41 -56
  5. package/dist/examples/data-visualization/CardCarouselPanel/CardCarouselPanel.tsx +171 -0
  6. package/dist/examples/data-visualization/CellRenderers/CellRenderers.tsx +175 -0
  7. package/dist/examples/data-visualization/ColumnConfigPopover/ColumnConfigPopover.tsx +124 -0
  8. package/dist/examples/data-visualization/DataCardView/DataCardView.tsx +223 -0
  9. package/dist/examples/data-visualization/DataExplorerPagination/DataExplorerPagination.tsx +143 -0
  10. package/dist/examples/data-visualization/DataExplorerToolbar/DataExplorerToolbar.tsx +88 -0
  11. package/dist/examples/data-visualization/DataListView/DataListView.tsx +246 -0
  12. package/dist/examples/data-visualization/DataTableView/DataTableView.tsx +449 -0
  13. package/dist/examples/data-visualization/DataVisualizationPage/DataVisualizationPage.tsx +140 -0
  14. package/dist/examples/data-visualization/FilterChipGroup/FilterChipGroup.tsx +125 -0
  15. package/dist/examples/data-visualization/MoreFiltersPopover/MoreFiltersPopover.tsx +132 -0
  16. package/dist/examples/data-visualization/constants.ts +587 -0
  17. package/dist/examples/data-visualization/hooks/use-column-config.ts +76 -0
  18. package/dist/examples/data-visualization/hooks/use-data-explorer-state.ts +313 -0
  19. package/dist/examples/data-visualization/index.ts +1 -0
  20. package/dist/examples/data-visualization/types.ts +99 -0
  21. package/dist/examples/quickaccess/QuickAccess/QuickAccess.tsx +97 -0
  22. package/dist/examples/quickaccess/index.ts +2 -0
  23. package/dist/examples/quickaccess/types.ts +11 -0
  24. package/dist/fastnd-components.js +5708 -5590
  25. package/package.json +1 -1
  26. package/dist/examples/data-explorer/CardCarouselPanel/CardCarouselPanel.tsx +0 -197
  27. package/dist/examples/data-explorer/CardView/CardView.tsx +0 -168
  28. package/dist/examples/data-explorer/ColumnConfigPopover/ColumnConfigPopover.tsx +0 -157
  29. package/dist/examples/data-explorer/DataExplorerEmpty/DataExplorerEmpty.tsx +0 -56
  30. package/dist/examples/data-explorer/DataExplorerPage/DataExplorerPage.tsx +0 -101
  31. package/dist/examples/data-explorer/DataExplorerPagination/DataExplorerPagination.tsx +0 -129
  32. package/dist/examples/data-explorer/DataExplorerToolbar/DataExplorerToolbar.tsx +0 -143
  33. package/dist/examples/data-explorer/DomainSwitcher/DomainSwitcher.tsx +0 -36
  34. package/dist/examples/data-explorer/ExpansionRows/ExpansionRows.tsx +0 -180
  35. package/dist/examples/data-explorer/FilterChip/FilterChip.tsx +0 -85
  36. package/dist/examples/data-explorer/FilterPopoverContent/FilterPopoverContent.tsx +0 -73
  37. package/dist/examples/data-explorer/ListView/ListView.tsx +0 -305
  38. package/dist/examples/data-explorer/MoreFiltersPopover/MoreFiltersPopover.tsx +0 -113
  39. package/dist/examples/data-explorer/TableView/TableView.tsx +0 -193
  40. package/dist/examples/data-explorer/cells/CellRenderer.tsx +0 -147
  41. package/dist/examples/data-explorer/cells/CurrencyCell.tsx +0 -31
  42. package/dist/examples/data-explorer/cells/DoubleTextCell.tsx +0 -27
  43. package/dist/examples/data-explorer/cells/ExpandButton.tsx +0 -67
  44. package/dist/examples/data-explorer/cells/InventoryBadgeCell.tsx +0 -52
  45. package/dist/examples/data-explorer/cells/LinkCell.tsx +0 -42
  46. package/dist/examples/data-explorer/cells/ScoreBar.tsx +0 -50
  47. package/dist/examples/data-explorer/cells/StatusBadgeCell.tsx +0 -39
  48. package/dist/examples/data-explorer/cells/TextCell.tsx +0 -35
  49. package/dist/examples/data-explorer/cells/index.ts +0 -26
  50. package/dist/examples/data-explorer/domains/applications.ts +0 -225
  51. package/dist/examples/data-explorer/domains/customers.ts +0 -267
  52. package/dist/examples/data-explorer/domains/index.ts +0 -26
  53. package/dist/examples/data-explorer/domains/products.ts +0 -1116
  54. package/dist/examples/data-explorer/domains/projects.ts +0 -205
  55. package/dist/examples/data-explorer/hooks/use-data-explorer-state.ts +0 -371
  56. package/dist/examples/data-explorer/index.ts +0 -3
  57. package/dist/examples/data-explorer/types.ts +0 -239
@@ -0,0 +1,587 @@
1
+ import type { ColumnDef, DomainConfig, DomainKey, DomainLayout } from './types'
2
+
3
+ // ===== PRODUCT DOMAIN =====
4
+
5
+ const PRODUCT_COLUMNS: Record<string, ColumnDef> = {
6
+ product_category: { label: 'Produktkategorie', type: 'text', sortable: true, filterable: true, primaryFilter: true, visible: true, searchable: true },
7
+ product_group: { label: 'Produktgruppe', type: 'text', sortable: true, filterable: true, primaryFilter: true, visible: true, searchable: true },
8
+ part_number: { label: 'Produkt', type: 'double-text', sortable: true, filterable: false, visible: true, secondary: 'product_family_name', searchable: true },
9
+ manufacturer_name: { label: 'Hersteller', type: 'link', sortable: true, filterable: true, primaryFilter: false, visible: true, searchable: true },
10
+ description: { label: 'Beschreibung', type: 'text', sortable: false, filterable: false, visible: true, searchable: true, rowLines: 2 },
11
+ lifecycle: {
12
+ label: 'Status',
13
+ type: 'status-badge',
14
+ sortable: true,
15
+ filterable: true,
16
+ primaryFilter: true,
17
+ visible: true,
18
+ hideTablet: true,
19
+ statusMap: { Active: 'active', NRND: 'nrnd', EOL: 'eol', Production: 'production' },
20
+ },
21
+ alternatives: {
22
+ label: 'Alternativen',
23
+ type: 'expand',
24
+ sortable: false,
25
+ filterable: false,
26
+ visible: true,
27
+ hideMobile: true,
28
+ headerIcon: 'arrowLeftRight',
29
+ headerTooltip: 'Alternative Produkte',
30
+ expandIcon: 'arrowLeftRight',
31
+ expandLabel: 'Alternativen',
32
+ expandColumns: [
33
+ { key: 'alt_product_category', label: 'Kategorie', mapTo: 'product_category' },
34
+ { key: 'alt_family_name', label: 'Familie', mapTo: 'product_group' },
35
+ { key: 'alt_part_number', label: 'Teilenummer', bold: true, mapTo: 'part_number', secondaryKey: 'alt_product_family_name' },
36
+ { key: 'alt_manufacturer', label: 'Hersteller', mapTo: 'manufacturer_name' },
37
+ { key: 'alt_description', label: 'Beschreibung', mapTo: 'description' },
38
+ { key: 'alt_lifecycle', label: 'Status', mapTo: 'lifecycle' },
39
+ { key: 'match_score', label: 'Übereinstimmung', type: 'score-bar' },
40
+ ],
41
+ expandTitleFn: (row) => `Alternativen für ${row.part_number}`,
42
+ },
43
+ cross_sells: {
44
+ label: 'Empfehlungen',
45
+ type: 'expand',
46
+ sortable: false,
47
+ filterable: false,
48
+ visible: true,
49
+ hideMobile: true,
50
+ headerIcon: 'sparkles',
51
+ headerTooltip: 'Cross-Sell Empfehlungen',
52
+ expandIcon: 'sparkles',
53
+ expandLabel: 'Empfehlungen',
54
+ expandColumns: [
55
+ { key: 'cross_sell_product_category', label: 'Kategorie', mapTo: 'product_category' },
56
+ { key: 'cross_sell_family_name', label: 'Familie', mapTo: 'product_group' },
57
+ { key: 'cross_sell_part_number', label: 'Teilenummer', bold: true, mapTo: 'part_number', secondaryKey: 'cross_sell_product_family_name' },
58
+ { key: 'cross_sell_manufacturer', label: 'Hersteller', mapTo: 'manufacturer_name' },
59
+ { key: 'cross_sell_description', label: 'Beschreibung', mapTo: 'description' },
60
+ { key: 'recommendation_source', label: 'Quelle', muted: true, mapTo: 'lifecycle' },
61
+ { key: 'recommendation_score', label: 'Score', type: 'score-bar' },
62
+ ],
63
+ expandTitleFn: (row) => `Cross-Sell Empfehlungen für ${row.part_number}`,
64
+ },
65
+ price: { label: 'Preis', type: 'currency', sortable: true, filterable: false, visible: false, currencyField: 'currency' },
66
+ lead_time: { label: 'Lieferzeit', type: 'text', sortable: true, filterable: false, visible: false, hideMobile: true },
67
+ inventory: {
68
+ label: 'Lagerbestand',
69
+ type: 'inventory',
70
+ sortable: true,
71
+ filterable: true,
72
+ primaryFilter: false,
73
+ visible: false,
74
+ hideMobile: true,
75
+ levelFn: (v) => (v > 10000 ? 'high' : v >= 1000 ? 'medium' : 'low'),
76
+ formatFn: (v) => (v >= 1000 ? (v / 1000).toFixed(v >= 10000 ? 0 : 1) + 'k' : String(v)),
77
+ labelMap: { high: 'Verfügbar', medium: 'Begrenzt', low: 'Knapp' },
78
+ filterOptions: ['Hoch (> 10.000)', 'Mittel (1.000–10.000)', 'Niedrig (< 1.000)'],
79
+ filterFn: (row, val) => {
80
+ const v = row.inventory as number
81
+ if (val.startsWith('Hoch')) return v > 10000
82
+ if (val.startsWith('Mittel')) return v >= 1000 && v <= 10000
83
+ return v < 1000
84
+ },
85
+ },
86
+ }
87
+
88
+ const PRODUCT_LAYOUT: DomainLayout = {
89
+ list: {
90
+ titleField: 'part_number',
91
+ metaFields: ['product_category', 'product_group', 'manufacturer_name'],
92
+ badgeFields: ['lifecycle'],
93
+ valueField: null,
94
+ expandFields: ['alternatives', 'cross_sells'],
95
+ },
96
+ card: {
97
+ titleField: 'part_number',
98
+ subtitleField: 'description',
99
+ badgeFields: ['lifecycle'],
100
+ rows: [
101
+ { label: 'Familie', field: 'product_family_name' },
102
+ { label: 'Kategorie', field: 'product_category' },
103
+ { label: 'Gruppe', field: 'product_group' },
104
+ { label: 'Hersteller', field: 'manufacturer_name' },
105
+ ],
106
+ footerField: 'manufacturer_name',
107
+ expandFields: ['alternatives', 'cross_sells'],
108
+ },
109
+ }
110
+
111
+ export const MOCK_PRODUCTS: Record<string, unknown>[] = [
112
+ {
113
+ id: 'p1', part_number: 'TPS54360B', tenant_part_number: 'FN-DC-0012', product_category: 'Halbleiter', product_group: 'Spannungsregler', product_family_name: 'DC-DC Converter', manufacturer_name: 'Texas Instruments',
114
+ description: 'Abwärtswandler 4,5–60V, 3,5A, einstellbar, integrierter Gate-Treiber, 150 kHz–2,5 MHz schaltbar',
115
+ price: 3.45, currency: 'EUR', inventory: 12500, lead_time: '8 Wochen', lifecycle: 'Active', favorite: true,
116
+ alternatives: [
117
+ { alt_part_number: 'LM2596S-ADJ/NOPB', alt_product_category: 'Halbleiter', alt_product_family_name: 'Simple Switcher Regulator', alt_family_name: 'Spannungsregler', alt_manufacturer: 'ON Semiconductor', alt_description: 'Einstellbarer Abwärtswandler 3A, 150kHz, TO-263-5 Gehäuse', alt_lifecycle: 'Active', match_score: 0.89 },
118
+ { alt_part_number: 'MP2315GJ-Z', alt_product_category: 'Halbleiter', alt_product_family_name: 'Synchronous Step-Down Converter', alt_family_name: 'Spannungsregler', alt_manufacturer: 'Monolithic Power Systems', alt_description: 'Synchroner Abwärtswandler 3A, 500kHz, QFN-12 mit integriertem Bootstrap', alt_lifecycle: 'Active', match_score: 0.82 },
119
+ ],
120
+ cross_sells: [
121
+ { cross_sell_part_number: 'LM2596S-3.3/NOPB', cross_sell_product_category: 'Halbleiter', cross_sell_product_family_name: 'Simple Switcher Regulator', cross_sell_family_name: 'Spannungsregler', cross_sell_manufacturer: 'ON Semiconductor', cross_sell_description: 'Festspannungsregler 3,3V Variante für Kombi-Designs', recommendation_score: 0.92, recommendation_source: 'AI Model' },
122
+ { cross_sell_part_number: 'ADP5054ACPZ-R7', cross_sell_product_category: 'Halbleiter', cross_sell_product_family_name: 'ADP505x Quad-Channel PMIC', cross_sell_family_name: 'Power Management', cross_sell_manufacturer: 'Analog Devices', cross_sell_description: 'Quad-Kanal PMIC für komplexere Power-Architekturen', recommendation_score: 0.85, recommendation_source: 'Manual' },
123
+ { cross_sell_part_number: 'MP2315GJ-P', cross_sell_product_category: 'Halbleiter', cross_sell_product_family_name: 'Synchronous Step-Down Converter', cross_sell_family_name: 'Spannungsregler', cross_sell_manufacturer: 'Monolithic Power Systems', cross_sell_description: 'Kompakte Alternative für platzkritische Designs mit integrierter Induktivität', recommendation_score: 0.78, recommendation_source: 'AI Model' },
124
+ ],
125
+ },
126
+ {
127
+ id: 'p2', part_number: 'LM2596S-5.0', tenant_part_number: 'FN-DC-0034', product_category: 'Halbleiter', product_group: 'Spannungsregler', product_family_name: 'Simple Switcher Voltage Regulator Series', manufacturer_name: 'ON Semiconductor',
128
+ description: 'Festspannungsregler 5V, 3A, TO-263, 150 kHz, thermisch robustes Gehäuse für Industrieumgebungen',
129
+ price: 1.82, currency: 'EUR', inventory: 45200, lead_time: '12 Wochen', lifecycle: 'Active', favorite: false,
130
+ alternatives: [
131
+ { alt_part_number: 'TPS54360B', alt_product_category: 'Halbleiter', alt_product_family_name: 'DC-DC Converter', alt_family_name: 'DC-DC Converter', alt_manufacturer: 'Texas Instruments', alt_description: 'Flexibler Abwärtswandler 4,5–60V einstellbar, ideal als Drop-in-Ersatz', alt_lifecycle: 'Active', match_score: 0.91 },
132
+ { alt_part_number: 'LM2676S-5.0/NOPB', alt_product_category: 'Halbleiter', alt_product_family_name: 'Simple Switcher Regulator', alt_family_name: 'Spannungsregler', alt_manufacturer: 'Texas Instruments', alt_description: '5V Simple Switcher 3A, TO-263, verbesserte Nachfolgergeneration', alt_lifecycle: 'Active', match_score: 0.84 },
133
+ ],
134
+ cross_sells: [
135
+ { cross_sell_part_number: 'TPS54360B', cross_sell_product_category: 'Halbleiter', cross_sell_product_family_name: 'DC-DC Converter', cross_sell_family_name: 'DC-DC Converter', cross_sell_manufacturer: 'Texas Instruments', cross_sell_description: 'Einstellbare Variante für flexiblere Ausgangsspannungen', recommendation_score: 0.91, recommendation_source: 'AI Model' },
136
+ { cross_sell_part_number: 'LM317T-DT', cross_sell_product_category: 'Halbleiter', cross_sell_product_family_name: 'LM317 Linear Voltage Regulator', cross_sell_family_name: 'Linearregler', cross_sell_manufacturer: 'STMicroelectronics', cross_sell_description: 'Linearer Spannungsregler als rauscharme Ergänzung für analoge Sektionen', recommendation_score: 0.72, recommendation_source: 'Manual' },
137
+ ],
138
+ },
139
+ {
140
+ id: 'p3', part_number: 'ADP5054ACPZ', tenant_part_number: 'FN-PM-0087', product_category: 'Halbleiter', product_group: 'Power Management', product_family_name: 'PMIC Multikanal-Regler mit programmierbarer Sequenz', manufacturer_name: 'Analog Devices',
141
+ description: 'Quad-Kanal PMIC mit konfigurierbarem Power-Sequencing, Soft-Start und Fehlerüberwachung, 48-LFCSP',
142
+ price: 8.9, currency: 'EUR', inventory: 3200, lead_time: '16 Wochen', lifecycle: 'Active', favorite: false,
143
+ alternatives: [
144
+ { alt_part_number: 'TPS65263RHAT', alt_product_category: 'Halbleiter', alt_product_family_name: 'TPS652xx Triple Buck Converter', alt_family_name: 'Power Management', alt_manufacturer: 'Texas Instruments', alt_description: 'Triple Synchron-Abwärtswandler mit I²C-Steuerung, 32-QFN Gehäuse', alt_lifecycle: 'Active', match_score: 0.85 },
145
+ { alt_part_number: 'MAX77714GTL+', alt_product_category: 'Halbleiter', alt_product_family_name: 'MAX777xx Multi-Output PMIC', alt_family_name: 'PMIC', alt_manufacturer: 'Maxim / ADI', alt_description: '9-Output PMIC mit LDOs und Buck-Wandlern für komplexe SoC-Versorgung', alt_lifecycle: 'Active', match_score: 0.78 },
146
+ ],
147
+ cross_sells: [
148
+ { cross_sell_part_number: 'TPS65263RHAT', cross_sell_product_category: 'Halbleiter', cross_sell_product_family_name: 'TPS652xx Triple Buck Converter', cross_sell_family_name: 'Power Management', cross_sell_manufacturer: 'Texas Instruments', cross_sell_description: 'Kompaktere Alternative mit I²C-Schnittstelle für FPGA-Power-Designs', recommendation_score: 0.88, recommendation_source: 'AI Model' },
149
+ ],
150
+ },
151
+ {
152
+ id: 'p4', part_number: 'STM32F407VGT6', tenant_part_number: 'FN-MC-0201', product_category: 'Halbleiter', product_group: 'Mikrocontroller', product_family_name: 'STM32F4', manufacturer_name: 'STMicroelectronics',
153
+ description: 'ARM Cortex-M4 mit FPU, 168 MHz, 1 MB Flash, 192 KB RAM, Ethernet MAC, LQFP-100',
154
+ price: 12.35, currency: 'EUR', inventory: 8700, lead_time: '10 Wochen', lifecycle: 'Active', favorite: true,
155
+ alternatives: [
156
+ { alt_part_number: 'STM32F405RGT6', alt_product_category: 'Halbleiter', alt_product_family_name: 'STM32F4', alt_family_name: 'STM32F4', alt_manufacturer: 'STMicroelectronics', alt_description: 'Pin-kompatible Variante ohne Ethernet, gleicher Cortex-M4 Kern, LQFP-64', alt_lifecycle: 'Active', match_score: 0.95 },
157
+ { alt_part_number: 'MIMXRT1062DVJ6B', alt_product_category: 'Halbleiter', alt_product_family_name: 'i.MX RT1060 Crossover MCU', alt_family_name: 'i.MX RT', alt_manufacturer: 'NXP', alt_description: 'Crossover MCU 600 MHz, FlexSPI, USB HS, umfangreiches Peripherie-Set', alt_lifecycle: 'Active', match_score: 0.74 },
158
+ { alt_part_number: 'GD32F407VGT6', alt_product_category: 'Halbleiter', alt_product_family_name: 'GD32F4', alt_family_name: 'GD32F4', alt_manufacturer: 'GigaDevice', alt_description: 'Pinkompatibles Derivat mit 168 MHz, 1 MB Flash, deutlich günstigere Beschaffung', alt_lifecycle: 'Active', match_score: 0.88 },
159
+ ],
160
+ cross_sells: [
161
+ { cross_sell_part_number: 'STM32F407IGT6', cross_sell_product_category: 'Halbleiter', cross_sell_product_family_name: 'STM32F4', cross_sell_family_name: 'STM32F4', cross_sell_manufacturer: 'STMicroelectronics', cross_sell_description: 'LQFP-176 Variante mit mehr I/O für pinreiche Designs', recommendation_score: 0.94, recommendation_source: 'AI Model' },
162
+ { cross_sell_part_number: 'STLINK-V3SET', cross_sell_product_category: 'Halbleiter', cross_sell_product_family_name: 'ST-Link Debugging Tools', cross_sell_family_name: 'Debugging Tools', cross_sell_manufacturer: 'STMicroelectronics', cross_sell_description: 'Offizieller ST-Link V3 JTAG/SWD-Debugger für STM32-Entwicklung', recommendation_score: 0.87, recommendation_source: 'Manual' },
163
+ { cross_sell_part_number: 'STM32F746NGH6', cross_sell_product_category: 'Halbleiter', cross_sell_product_family_name: 'STM32F7', cross_sell_family_name: 'STM32F7', cross_sell_manufacturer: 'STMicroelectronics', cross_sell_description: 'Upgrade-Pfad auf Cortex-M7 mit doppelter Performance und SDRAM-Interface', recommendation_score: 0.79, recommendation_source: 'AI Model' },
164
+ { cross_sell_part_number: 'NUCLEO-F407ZG', cross_sell_product_category: 'Halbleiter', cross_sell_product_family_name: 'Nucleo Development Boards', cross_sell_family_name: 'Entwicklungsboards', cross_sell_manufacturer: 'STMicroelectronics', cross_sell_description: 'Nucleo-144 Evaluierungsboard für schnellen Prototypenstart', recommendation_score: 0.72, recommendation_source: 'Manual' },
165
+ ],
166
+ },
167
+ {
168
+ id: 'p5', part_number: 'IRF540NPBF', tenant_part_number: 'FN-TR-0045', product_category: 'Halbleiter', product_group: 'Transistoren', product_family_name: 'N-Channel MOSFET', manufacturer_name: 'Infineon',
169
+ description: 'N-Kanal MOSFET 100V, 33A, Rds(on)=44mΩ, TO-220AB, geeignet für Hochstrom-Schalter',
170
+ price: 0.95, currency: 'EUR', inventory: 67000, lead_time: '4 Wochen', lifecycle: 'Active', favorite: false,
171
+ alternatives: [
172
+ { alt_part_number: 'STP36NF06L', alt_product_category: 'Halbleiter', alt_product_family_name: 'STripFET N-Channel MOSFET', alt_family_name: 'N-Channel MOSFET', alt_manufacturer: 'STMicroelectronics', alt_description: '60V/30A N-Kanal MOSFET in TO-220, Logic-Level Gate kompatibel', alt_lifecycle: 'Active', match_score: 0.87 },
173
+ { alt_part_number: 'FDP8N60NZ-F085', alt_product_category: 'Halbleiter', alt_product_family_name: 'Super Junction N-Channel MOSFET', alt_family_name: 'N-Channel MOSFET', alt_manufacturer: 'Fairchild / ON Semi', alt_description: '600V/8A Super Junction MOSFET für High-Efficiency Konverter, D2PAK', alt_lifecycle: 'Active', match_score: 0.81 },
174
+ ],
175
+ cross_sells: [
176
+ { cross_sell_part_number: 'IR2110STRPBF', cross_sell_product_category: 'Halbleiter', cross_sell_product_family_name: 'IR2110 Gate Driver', cross_sell_family_name: 'Gate-Treiber', cross_sell_manufacturer: 'Infineon', cross_sell_description: 'High- und Low-Side Gate-Treiber passend für H-Brücken mit IRF540N', recommendation_score: 0.83, recommendation_source: 'AI Model' },
177
+ { cross_sell_part_number: 'UCC27524DGNR', cross_sell_product_category: 'Halbleiter', cross_sell_product_family_name: 'UCC275xx Dual Gate Driver', cross_sell_family_name: 'Gate-Treiber', cross_sell_manufacturer: 'Texas Instruments', cross_sell_description: 'Dual 5A Gate-Treiber mit einstellbarer Totzeit für synchrone Schaltnetzteile', recommendation_score: 0.76, recommendation_source: 'Manual' },
178
+ ],
179
+ },
180
+ {
181
+ id: 'p6', part_number: 'AD7124-8BCPZ', tenant_part_number: 'FN-ADC-0033', product_category: 'Halbleiter', product_group: 'Datenerfassung', product_family_name: 'Sigma-Delta ADC', manufacturer_name: 'Analog Devices',
182
+ description: '8-Kanal 24-Bit Sigma-Delta ADC mit programmierbarem Gain-Verstärker (PGA), Low-Power-Modi, 32-LFCSP',
183
+ price: 15.6, currency: 'EUR', inventory: 1200, lead_time: '20 Wochen', lifecycle: 'NRND', favorite: false,
184
+ alternatives: [
185
+ { alt_part_number: 'ADS1256IDBR', alt_product_category: 'Halbleiter', alt_product_family_name: 'ADS125x Delta-Sigma ADC', alt_family_name: 'Delta-Sigma ADC', alt_manufacturer: 'Texas Instruments', alt_description: '8-Kanal 24-Bit ADC mit 30 kSPS Datenrate und SPI-Interface, SSOP-28', alt_lifecycle: 'Active', match_score: 0.86 },
186
+ { alt_part_number: 'MCP3912A1T-E/SS', alt_product_category: 'Halbleiter', alt_product_family_name: 'MCP391x Energy Metering ADC', alt_family_name: 'Delta-Sigma ADC', alt_manufacturer: 'Microchip', alt_description: 'Dual-Kanal 24-Bit ADC mit Delta-Sigma für Energiemessanwendungen, SSOP-20', alt_lifecycle: 'Active', match_score: 0.79 },
187
+ ],
188
+ cross_sells: [
189
+ { cross_sell_part_number: 'AD8237ARMZ-R7', cross_sell_product_category: 'Halbleiter', cross_sell_product_family_name: 'AD823x Zero-Drift Instrumentation Amplifier', cross_sell_family_name: 'Instrumentenverstärker', cross_sell_manufacturer: 'Analog Devices', cross_sell_description: 'Zero-Drift Instrumentenverstärker als Eingangsstufe vor dem AD7124 in Sensoranwendungen', recommendation_score: 0.81, recommendation_source: 'AI Model' },
190
+ { cross_sell_part_number: 'REF5050AIDR', cross_sell_product_category: 'Halbleiter', cross_sell_product_family_name: 'REF50xx Precision Voltage Reference', cross_sell_family_name: 'Spannungsreferenz', cross_sell_manufacturer: 'Texas Instruments', cross_sell_description: 'Hochpräzise 5V-Referenz 0,05% für rauscharme ADC-Versorgung', recommendation_score: 0.74, recommendation_source: 'Manual' },
191
+ ],
192
+ },
193
+ {
194
+ id: 'p7', part_number: 'MAX232CPE+', tenant_part_number: 'FN-IF-0011', product_category: 'Halbleiter', product_group: 'Interface', product_family_name: 'RS-232 Transceiver', manufacturer_name: 'Maxim / ADI',
195
+ description: 'Dual RS-232 Transceiver mit integrierter Ladungspumpe, 5V Versorgung, DIP-16, Industriestandard',
196
+ price: 2.1, currency: 'EUR', inventory: 320, lead_time: '14 Wochen', lifecycle: 'EOL', favorite: false,
197
+ alternatives: [
198
+ { alt_part_number: 'SP3232EEN-L/TR', alt_product_category: 'Halbleiter', alt_product_family_name: 'SP3232 RS-232 Transceiver', alt_family_name: 'RS-232 Transceiver', alt_manufacturer: 'Exar / MaxLinear', alt_description: '3,0–5,5V RS-232 Transceiver, 250 kbps, 16-SOIC als direkter EOL-Nachfolger empfohlen', alt_lifecycle: 'Active', match_score: 0.93 },
199
+ { alt_part_number: 'ST232ABDR', alt_product_category: 'Halbleiter', alt_product_family_name: 'ST232 RS-232 Transceiver', alt_family_name: 'RS-232 Transceiver', alt_manufacturer: 'STMicroelectronics', alt_description: 'Dual RS-232 Transceiver 5V mit 120 kbps, SOP-16, weite Betriebstemperatur', alt_lifecycle: 'Active', match_score: 0.89 },
200
+ ],
201
+ cross_sells: [
202
+ { cross_sell_part_number: 'SP3232EEN-L/TR', cross_sell_product_category: 'Halbleiter', cross_sell_product_family_name: 'SP3232 RS-232 Transceiver', cross_sell_family_name: 'RS-232 Transceiver', cross_sell_manufacturer: 'Exar / MaxLinear', cross_sell_description: 'Direkter Nachfolger für EOL MAX232, empfohlener Migrationsschritt laut Datenblatt', recommendation_score: 0.93, recommendation_source: 'AI Model' },
203
+ { cross_sell_part_number: 'ICL3232CPZ-T', cross_sell_product_category: 'Halbleiter', cross_sell_product_family_name: 'ICL3232 RS-232 Transceiver', cross_sell_family_name: 'RS-232 Transceiver', cross_sell_manufacturer: 'Renesas', cross_sell_description: 'Low-Power RS-232 Transceiver mit 0,1 µA Shutdown-Modus für batteriebetriebene Geräte', recommendation_score: 0.85, recommendation_source: 'Manual' },
204
+ ],
205
+ },
206
+ {
207
+ id: 'p8', part_number: 'BQ25895RTWR', tenant_part_number: 'FN-PM-0156', product_category: 'Halbleiter', product_group: 'Power Management', product_family_name: 'Battery Charger', manufacturer_name: 'Texas Instruments',
208
+ description: 'I²C-gesteuertes Li-Ion/Li-Po Schnelllade-IC mit MaxCharge, 14V/5A Eingang, 5A Ladestrom, WQFN-24',
209
+ price: 4.75, currency: 'EUR', inventory: 5800, lead_time: '6 Wochen', lifecycle: 'Active', favorite: false,
210
+ alternatives: [
211
+ { alt_part_number: 'MP2639AGQD-Z', alt_product_category: 'Halbleiter', alt_product_family_name: 'MP263x Battery Charger', alt_family_name: 'Battery Charger', alt_manufacturer: 'Monolithic Power Systems', alt_description: '5A Single-Cell Li-Ion Lader mit I²C und OTG-Funktion, QFN-20', alt_lifecycle: 'Active', match_score: 0.84 },
212
+ { alt_part_number: 'ISL9238HRTZ-T', alt_product_category: 'Halbleiter', alt_product_family_name: 'ISL9238 Multiprotocol Notebook Charger', alt_family_name: 'Notebook Charger', alt_manufacturer: 'Renesas', alt_description: 'Multiprotokoll-Lader für Notebook-Akkus mit BC1.2 und USB-PD-Unterstützung', alt_lifecycle: 'Active', match_score: 0.77 },
213
+ ],
214
+ cross_sells: [
215
+ { cross_sell_part_number: 'BQ27441DRZR-G1B', cross_sell_product_category: 'Halbleiter', cross_sell_product_family_name: 'BQ274xx Fuel Gauge', cross_sell_family_name: 'Fuel Gauge', cross_sell_manufacturer: 'Texas Instruments', cross_sell_description: 'I²C-Akku-Fuel-Gauge mit Impedance Track für präzise Ladestandsmessung', recommendation_score: 0.88, recommendation_source: 'AI Model' },
216
+ { cross_sell_part_number: 'BQ2970DSGR', cross_sell_product_category: 'Halbleiter', cross_sell_product_family_name: 'BQ297x Battery Protection IC', cross_sell_family_name: 'Battery Protection', cross_sell_manufacturer: 'Texas Instruments', cross_sell_description: 'Sekundärschutz-IC für Li-Ion-Packs gegen Über- und Unterspannung', recommendation_score: 0.75, recommendation_source: 'Manual' },
217
+ ],
218
+ },
219
+ {
220
+ id: 'p9', part_number: 'ATMEGA328P-AU', tenant_part_number: 'FN-MC-0098', product_category: 'Halbleiter', product_group: 'Mikrocontroller', product_family_name: 'megaAVR', manufacturer_name: 'Microchip',
221
+ description: '8-Bit AVR MCU, 32 KB Flash, 2 KB SRAM, 1 KB EEPROM, 23 GPIO, TQFP-32, Arduino-kompatibel',
222
+ price: 2.45, currency: 'EUR', inventory: 18900, lead_time: '8 Wochen', lifecycle: 'Production', favorite: false,
223
+ alternatives: [
224
+ { alt_part_number: 'ATTINY88-MU', alt_product_category: 'Halbleiter', alt_product_family_name: 'ATtiny tinyAVR', alt_family_name: 'tinyAVR', alt_manufacturer: 'Microchip', alt_description: '8-Bit AVR 8 KB Flash, 512B SRAM, 28 GPIO, pinreduzierte Variante, MLF-32', alt_lifecycle: 'Active', match_score: 0.72 },
225
+ { alt_part_number: 'STM8S003F3P6TR', alt_product_category: 'Halbleiter', alt_product_family_name: 'STM8S Value Line MCU', alt_family_name: 'STM8S', alt_manufacturer: 'STMicroelectronics', alt_description: '8-Bit MCU 8 KB Flash, 1 KB RAM, TSSOP-20, kostengünstige Alternative für einfache Steuerungen', alt_lifecycle: 'Active', match_score: 0.68 },
226
+ ],
227
+ cross_sells: [
228
+ { cross_sell_part_number: 'ATMEGA2560-16AU', cross_sell_product_category: 'Halbleiter', cross_sell_product_family_name: 'megaAVR', cross_sell_family_name: 'megaAVR', cross_sell_manufacturer: 'Microchip', cross_sell_description: 'Upgrade auf 256 KB Flash und 86 GPIO für komplexere Applikationen', recommendation_score: 0.82, recommendation_source: 'AI Model' },
229
+ { cross_sell_part_number: 'MCP2200T-I/SS', cross_sell_product_category: 'Halbleiter', cross_sell_product_family_name: 'MCP2200 USB-to-UART Bridge', cross_sell_family_name: 'USB Interface', cross_sell_manufacturer: 'Microchip', cross_sell_description: 'USB-zu-UART Bridge IC als Kommunikationserweiterung für ATMEGA-Boards', recommendation_score: 0.71, recommendation_source: 'Manual' },
230
+ ],
231
+ },
232
+ {
233
+ id: 'p10', part_number: 'SN74LVC1G14DBVR', tenant_part_number: 'FN-LG-0007', product_category: 'Halbleiter', product_group: 'Logik-ICs', product_family_name: 'Single Gate Logic', manufacturer_name: 'Texas Instruments',
234
+ description: 'Einfach-Schmitt-Trigger-Inverter, 1,65–5,5V, 32 mA Ausgangsstrom, SOT-23-5',
235
+ price: 0.28, currency: 'EUR', inventory: 142000, lead_time: '2 Wochen', lifecycle: 'Active', favorite: false,
236
+ alternatives: [
237
+ { alt_part_number: 'NC7SZ14P5X', alt_product_category: 'Halbleiter', alt_product_family_name: 'TinyLogic UHS Single Gate', alt_family_name: 'TinyLogic UHS', alt_manufacturer: 'Fairchild / ON Semi', alt_description: 'UltraHighSpeed Single Schmitt-Trigger Inverter, 5-SC70, EMV-optimiert', alt_lifecycle: 'Active', match_score: 0.92 },
238
+ { alt_part_number: '74LVC1G14GW-Q100', alt_product_category: 'Halbleiter', alt_product_family_name: '74LVC1G Single Gate Logic', alt_family_name: 'LVC-Logic', alt_manufacturer: 'Nexperia', alt_description: 'Automotive-qualifiziertes Einzelgatters, TSSOP-5 Gehäuse, AEC-Q100 Grade 1', alt_lifecycle: 'Active', match_score: 0.88 },
239
+ ],
240
+ cross_sells: [
241
+ { cross_sell_part_number: 'SN74LVC1G08DBVR', cross_sell_product_category: 'Halbleiter', cross_sell_product_family_name: 'SN74LVC1G Single Gate Logic', cross_sell_family_name: 'Single Gate Logic', cross_sell_manufacturer: 'Texas Instruments', cross_sell_description: 'Einzelgatters AND-Gate aus gleicher LVC-Familie, ideal für Signalkonditionierung', recommendation_score: 0.79, recommendation_source: 'AI Model' },
242
+ { cross_sell_part_number: 'SN74LVC2G14DCUR', cross_sell_product_category: 'Halbleiter', cross_sell_product_family_name: 'SN74LVC2G Dual Gate Logic', cross_sell_family_name: 'Single Gate Logic', cross_sell_manufacturer: 'Texas Instruments', cross_sell_description: 'Dual-Schmitt-Trigger in VSSOP-8, spart Platine wenn zwei Kanäle benötigt', recommendation_score: 0.68, recommendation_source: 'Manual' },
243
+ ],
244
+ },
245
+ {
246
+ id: 'p11', part_number: 'NCV7356D1R2G', tenant_part_number: 'FN-IF-0088', product_category: 'Halbleiter', product_group: 'Interface', product_family_name: 'Single Wire CAN', manufacturer_name: 'ON Semiconductor',
247
+ description: 'Single-Wire CAN Transceiver nach GM LAN Standard, 3,3V/5V Betrieb, SO-8',
248
+ price: 1.55, currency: 'EUR', inventory: 7400, lead_time: '6 Wochen', lifecycle: 'Active', favorite: false,
249
+ alternatives: [
250
+ { alt_part_number: 'TJA1021T/20/C,118', alt_product_category: 'Halbleiter', alt_product_family_name: 'TJA1021 Single Wire CAN Transceiver', alt_family_name: 'Single Wire CAN', alt_manufacturer: 'NXP', alt_description: 'Single Wire CAN Transceiver kompatibel zu SAE J2411, SOIC-8 Gehäuse', alt_lifecycle: 'Active', match_score: 0.91 },
251
+ { alt_part_number: 'AU5780D', alt_product_category: 'Halbleiter', alt_product_family_name: 'AU5780 Single Wire CAN Transceiver', alt_family_name: 'Single Wire CAN', alt_manufacturer: 'Microchip', alt_description: 'SAE J2411 kompatibler Single Wire CAN Transceiver mit Fault-Toleranz-Modus', alt_lifecycle: 'NRND', match_score: 0.76 },
252
+ ],
253
+ cross_sells: [
254
+ { cross_sell_part_number: 'TJA1021T/20/C,118', cross_sell_product_category: 'Halbleiter', cross_sell_product_family_name: 'TJA1021 Single Wire CAN Transceiver', cross_sell_family_name: 'Single Wire CAN', cross_sell_manufacturer: 'NXP', cross_sell_description: 'NXP Alternative mit gleichem Pin-out, gut gepflegter Lieferkette', recommendation_score: 0.9, recommendation_source: 'AI Model' },
255
+ { cross_sell_part_number: 'TCAN1042VDRQ1', cross_sell_product_category: 'Halbleiter', cross_sell_product_family_name: 'TCAN1042 CAN FD Transceiver', cross_sell_family_name: 'CAN FD Transceiver', cross_sell_manufacturer: 'Texas Instruments', cross_sell_description: 'CAN FD fähiger Nachfolger für zukünftige Netzwerk-Upgrades, AEC-Q100', recommendation_score: 0.73, recommendation_source: 'AI Model' },
256
+ ],
257
+ },
258
+ {
259
+ id: 'p12', part_number: 'OPA2340UA', tenant_part_number: 'FN-AMP-0023', product_category: 'Halbleiter', product_group: 'Verstärker', product_family_name: 'Rail-to-Rail Op-Amp', manufacturer_name: 'Texas Instruments',
260
+ description: 'Dual Rail-to-Rail Ein-/Ausgang Op-Amp, 5,5 MHz GBW, 2,5–5,5V Versorgung, SO-8',
261
+ price: 1.9, currency: 'EUR', inventory: 95, lead_time: '18 Wochen', lifecycle: 'NRND', favorite: false,
262
+ alternatives: [
263
+ { alt_part_number: 'MCP6002T-I/SN', alt_product_category: 'Halbleiter', alt_product_family_name: 'MCP600x Rail-to-Rail Op-Amp', alt_family_name: 'Rail-to-Rail Op-Amp', alt_manufacturer: 'Microchip', alt_description: 'Dual Rail-to-Rail Op-Amp 1,8–6V, 1 MHz GBW, CMOS-Eingang, SN-Tape Reel', alt_lifecycle: 'Active', match_score: 0.88 },
264
+ { alt_part_number: 'LMV358IDGKR', alt_product_category: 'Halbleiter', alt_product_family_name: 'LMV358 Rail-to-Rail Op-Amp', alt_family_name: 'Rail-to-Rail Op-Amp', alt_manufacturer: 'Texas Instruments', alt_description: 'Dual RRIO Op-Amp 1 MHz, 2,7–5V, MSOP-8, kostengünstigere Ersatzoption', alt_lifecycle: 'Active', match_score: 0.83 },
265
+ ],
266
+ cross_sells: [
267
+ { cross_sell_part_number: 'OPA2344UA', cross_sell_product_category: 'Halbleiter', cross_sell_product_family_name: 'OPA234x Rail-to-Rail Op-Amp', cross_sell_family_name: 'Rail-to-Rail Op-Amp', cross_sell_manufacturer: 'Texas Instruments', cross_sell_description: 'Nachfolger mit verbessertem Offset und niedrigerem Rauschen, gleicher Footprint', recommendation_score: 0.9, recommendation_source: 'AI Model' },
268
+ { cross_sell_part_number: 'MCP6002T-I/SN', cross_sell_product_category: 'Halbleiter', cross_sell_product_family_name: 'MCP600x Rail-to-Rail Op-Amp', cross_sell_family_name: 'Rail-to-Rail Op-Amp', cross_sell_manufacturer: 'Microchip', cross_sell_description: 'NRND-sicherer Lageraufbau während Umstieg auf Nachfolgertyp', recommendation_score: 0.85, recommendation_source: 'AI Model' },
269
+ ],
270
+ },
271
+ {
272
+ id: 'p13', part_number: 'XMC4800-F144K2048-AA-LONGVARIANT-REVB', tenant_part_number: 'FN-MC-0312', product_category: 'Halbleiter', product_group: 'Mikrocontroller', product_family_name: 'XMC4000 Industrial Microcontroller mit EtherCAT-Slave-Knoten', manufacturer_name: 'Infineon',
273
+ description: 'ARM Cortex-M4F 144 MHz, 2 MB Flash, 352 KB RAM, integrierter EtherCAT-Slave-Knoten, LQFP-144, AEC-Q100',
274
+ price: 24875.99, currency: 'EUR', inventory: 4, lead_time: '52 Wochen', lifecycle: 'NRND', favorite: false,
275
+ alternatives: [
276
+ { alt_part_number: 'XMC4700-F144K2048-AA', alt_product_category: 'Halbleiter', alt_product_family_name: 'XMC4000 Industrial MCU', alt_family_name: 'XMC4000', alt_manufacturer: 'Infineon', alt_description: 'Pin-kompatible aktive Variante ohne NRND-Status, gleicher EtherCAT-Slave-Block', alt_lifecycle: 'Active', match_score: 0.97 },
277
+ { alt_part_number: 'STM32H743ZIT6', alt_product_category: 'Halbleiter', alt_product_family_name: 'STM32H7', alt_family_name: 'STM32H7', alt_manufacturer: 'STMicroelectronics', alt_description: 'Cortex-M7 480 MHz, 2 MB Flash, Ethernet MAC, LQFP-144 als leistungsstärkere Alternative', alt_lifecycle: 'Active', match_score: 0.79 },
278
+ ],
279
+ cross_sells: [],
280
+ },
281
+ ]
282
+
283
+ // ===== PROJECT DOMAIN =====
284
+
285
+ const PROJECT_COLUMNS: Record<string, ColumnDef> = {
286
+ favorite: { label: 'Favorit', type: 'favorite', sortable: false, filterable: false, visible: true },
287
+ name: { label: 'Projektname', type: 'double-text', sortable: true, filterable: false, visible: true, secondary: 'customer_name', searchable: true },
288
+ customer_name: { label: 'Kunde', type: 'link', sortable: true, filterable: true, primaryFilter: true, visible: true, searchable: true },
289
+ status: {
290
+ label: 'Status',
291
+ type: 'status-badge',
292
+ sortable: true,
293
+ filterable: true,
294
+ primaryFilter: true,
295
+ visible: true,
296
+ hideTablet: true,
297
+ statusMap: { Open: 'active', Won: 'production', Lost: 'eol', Negotiation: 'nrnd', Qualified: 'active' },
298
+ },
299
+ expected_closing: { label: 'Closing', type: 'text', sortable: true, filterable: false, visible: true, hideMobile: true },
300
+ project_lifetime_quantity: {
301
+ label: 'Lifetime Qty',
302
+ type: 'inventory',
303
+ sortable: true,
304
+ filterable: true,
305
+ primaryFilter: true,
306
+ visible: true,
307
+ hideMobile: true,
308
+ levelFn: (v) => (v >= 100000 ? 'high' : v >= 10000 ? 'medium' : 'low'),
309
+ formatFn: (v) => (v >= 1000 ? (v / 1000).toFixed(v >= 100000 ? 0 : 1) + 'k' : String(v)),
310
+ labelMap: { high: 'Hoch', medium: 'Mittel', low: 'Gering' },
311
+ filterOptions: ['Hoch (\u2265 100k)', 'Mittel (10k\u2013100k)', 'Gering (< 10k)'],
312
+ filterFn: (row, val) => {
313
+ const v = row.project_lifetime_quantity as number
314
+ if (val.startsWith('Hoch')) return v >= 100000
315
+ if (val.startsWith('Mittel')) return v >= 10000 && v < 100000
316
+ return v < 10000
317
+ },
318
+ },
319
+ }
320
+
321
+ const PROJECT_LAYOUT: DomainLayout = {
322
+ list: {
323
+ titleField: 'name',
324
+ metaFields: ['expected_closing'],
325
+ badgeFields: ['status', 'project_lifetime_quantity'],
326
+ valueField: null,
327
+ },
328
+ card: {
329
+ titleField: 'name',
330
+ subtitleField: 'customer_name',
331
+ badgeFields: ['status'],
332
+ rows: [
333
+ { label: 'Closing', field: 'expected_closing' },
334
+ { label: 'Lifetime Qty', field: 'project_lifetime_quantity', rendererOverride: 'inventory-label' },
335
+ ],
336
+ footerField: 'customer_name',
337
+ },
338
+ }
339
+
340
+ export const MOCK_PROJECTS: Record<string, unknown>[] = [
341
+ { id: 'pj1', name: 'ADAS Kameramodul Gen3', customer_name: 'Continental AG', status: 'Open', expected_closing: '2025-09-30', project_lifetime_quantity: 250000, favorite: true },
342
+ { id: 'pj2', name: 'EV Ladesteuerung 22kW', customer_name: 'Webasto SE', status: 'Won', expected_closing: '2025-03-15', project_lifetime_quantity: 80000, favorite: false },
343
+ { id: 'pj3', name: 'Industrie-Gateway IoT Protokollkonverter', customer_name: 'Siemens AG', status: 'Negotiation', expected_closing: '2025-12-01', project_lifetime_quantity: 15000, favorite: false },
344
+ { id: 'pj4', name: 'Patientenmonitor V5', customer_name: 'Dräger AG', status: 'Qualified', expected_closing: '2026-02-28', project_lifetime_quantity: 5000, favorite: true },
345
+ { id: 'pj5', name: 'Smart Meter Modul', customer_name: 'Landis+Gyr AG', status: 'Open', expected_closing: '2025-11-15', project_lifetime_quantity: 500000, favorite: false },
346
+ { id: 'pj6', name: 'Robotersteuerung R200', customer_name: 'KUKA AG', status: 'Won', expected_closing: '2025-01-20', project_lifetime_quantity: 12000, favorite: false },
347
+ { id: 'pj7', name: 'BMS 48V Mild-Hybrid Batteriesystem für Nutzfahrzeuge', customer_name: 'ZF Friedrichshafen AG', status: 'Lost', expected_closing: '2025-06-30', project_lifetime_quantity: 180000, favorite: false },
348
+ { id: 'pj8', name: 'Sensorknoten Agrar', customer_name: 'CLAAS KGaA', status: 'Open', expected_closing: '2026-03-31', project_lifetime_quantity: 8000, favorite: false },
349
+ { id: 'pj9', name: 'Radar-Frontend 77GHz', customer_name: 'Continental AG', status: 'Negotiation', expected_closing: '2025-10-15', project_lifetime_quantity: 320000, favorite: true },
350
+ { id: 'pj10', name: 'Wallbox Premium 11kW', customer_name: 'Webasto SE', status: 'Qualified', expected_closing: '2025-08-30', project_lifetime_quantity: 45000, favorite: false },
351
+ { id: 'pj11', name: 'Autonomes Fahrzeug-Plattform Generation 4', customer_name: 'BMW Group', status: 'Negotiation', expected_closing: '2027-06-30', project_lifetime_quantity: 1750000, favorite: false },
352
+ ]
353
+
354
+ // ===== CUSTOMER DOMAIN =====
355
+
356
+ const CUSTOMER_COLUMNS: Record<string, ColumnDef> = {
357
+ favorite: { label: 'Favorit', type: 'favorite', sortable: false, filterable: false, visible: true },
358
+ name: { label: 'Kunde', type: 'double-text', sortable: true, filterable: false, visible: true, secondary: 'main_customer', searchable: true },
359
+ category: { label: 'Kategorie', type: 'text', sortable: true, filterable: true, primaryFilter: true, visible: true, searchable: true },
360
+ region: { label: 'Region', type: 'text', sortable: true, filterable: true, primaryFilter: true, visible: true, hideTablet: true },
361
+ country_code: { label: 'Land', type: 'text', sortable: true, filterable: true, primaryFilter: false, visible: true, hideMobile: true },
362
+ city: { label: 'Stadt', type: 'text', sortable: true, filterable: false, visible: true, hideMobile: true, searchable: true },
363
+ url: { label: 'Website', type: 'link', sortable: false, filterable: false, visible: true, hideMobile: true },
364
+ active_projects: {
365
+ label: 'Projekte',
366
+ type: 'expand',
367
+ sortable: false,
368
+ filterable: false,
369
+ visible: true,
370
+ hideMobile: true,
371
+ expandLabel: 'Projekte',
372
+ expandColumns: [
373
+ { key: 'project_name', label: 'Projekt', bold: true, mapTo: 'name' },
374
+ { key: 'status', label: 'Status', muted: true, mapTo: 'category' },
375
+ { key: 'volume', label: 'Volumen', mapTo: 'city' },
376
+ { key: 'expected_closing', label: 'Closing', mapTo: 'region' },
377
+ ],
378
+ expandTitleFn: (row) => `Aktive Projekte von ${row.name}`,
379
+ },
380
+ }
381
+
382
+ const CUSTOMER_LAYOUT: DomainLayout = {
383
+ list: {
384
+ titleField: 'name',
385
+ metaFields: ['main_customer', 'category', 'city'],
386
+ badgeFields: [],
387
+ valueField: null,
388
+ expandField: 'active_projects',
389
+ },
390
+ card: {
391
+ titleField: 'name',
392
+ subtitleField: 'main_customer',
393
+ badgeFields: [],
394
+ rows: [
395
+ { label: 'Kategorie', field: 'category' },
396
+ { label: 'Region', field: 'region' },
397
+ { label: 'Stadt', field: 'city' },
398
+ ],
399
+ footerField: 'url',
400
+ expandField: 'active_projects',
401
+ },
402
+ }
403
+
404
+ export const MOCK_CUSTOMERS: Record<string, unknown>[] = [
405
+ { id: 'c1', name: 'Continental AG', main_customer: 'Continental Gruppe', category: 'Automotive', region: 'EMEA', country_code: 'DE', city: 'Hannover', url: 'continental.com', favorite: true, active_projects: [{ project_name: 'ADAS Kameramodul Gen3', status: 'Open', volume: '250k Stk./Jahr', expected_closing: '2025-09-30' }, { project_name: 'Radar-Frontend 77GHz', status: 'Negotiation', volume: '320k Stk./Jahr', expected_closing: '2025-10-15' }] },
406
+ { id: 'c2', name: 'Webasto SE', main_customer: 'Webasto Gruppe', category: 'Automotive', region: 'EMEA', country_code: 'DE', city: 'Stockdorf', url: 'webasto.com', favorite: false, active_projects: [{ project_name: 'EV Ladesteuerung 22kW', status: 'Won', volume: '80k Stk./Jahr', expected_closing: '2025-03-15' }, { project_name: 'Wallbox Premium 11kW', status: 'Qualified', volume: '45k Stk./Jahr', expected_closing: '2025-08-30' }] },
407
+ { id: 'c3', name: 'Siemens AG', main_customer: 'Siemens Konzern', category: 'Industrial', region: 'EMEA', country_code: 'DE', city: 'München', url: 'siemens.com', favorite: true, active_projects: [{ project_name: 'Industrie-Gateway IoT Protokollkonverter', status: 'Negotiation', volume: '15k Stk./Jahr', expected_closing: '2025-12-01' }] },
408
+ { id: 'c4', name: 'Dräger Medical Devices & Safety AG', main_customer: 'Drägerwerk AG & Co. KGaA', category: 'Medical', region: 'EMEA', country_code: 'DE', city: 'Lübeck', url: 'draeger.com', favorite: false, active_projects: [{ project_name: 'Patientenmonitor V5', status: 'Qualified', volume: '5k Stk./Jahr', expected_closing: '2026-02-28' }] },
409
+ { id: 'c5', name: 'Landis+Gyr AG', main_customer: 'Landis+Gyr Group', category: 'Energy', region: 'EMEA', country_code: 'CH', city: 'Zug', url: 'landisgyr.com', favorite: false, active_projects: [{ project_name: 'Smart Meter Modul', status: 'Open', volume: '500k Stk./Jahr', expected_closing: '2025-11-15' }] },
410
+ { id: 'c6', name: 'KUKA AG', main_customer: 'KUKA Gruppe', category: 'Industrial', region: 'EMEA', country_code: 'DE', city: 'Augsburg', url: 'kuka.com', favorite: false, active_projects: [{ project_name: 'Robotersteuerung R200', status: 'Won', volume: '12k Stk./Jahr', expected_closing: '2025-01-20' }] },
411
+ { id: 'c7', name: 'ZF Friedrichshafen AG', main_customer: 'ZF Group', category: 'Automotive', region: 'EMEA', country_code: 'DE', city: 'Friedrichshafen', url: 'zf.com', favorite: false, active_projects: [{ project_name: 'BMS 48V Mild-Hybrid Batteriesystem für Nutzfahrzeuge', status: 'Lost', volume: '180k Stk./Jahr', expected_closing: '2025-06-30' }] },
412
+ { id: 'c8', name: 'CLAAS KGaA mbH', main_customer: 'CLAAS Gruppe', category: 'Agriculture', region: 'EMEA', country_code: 'DE', city: 'Harsewinkel', url: 'claas.com', favorite: false, active_projects: [{ project_name: 'Sensorknoten Agrar', status: 'Open', volume: '8k Stk./Jahr', expected_closing: '2026-03-31' }] },
413
+ { id: 'c9', name: 'Robert Bosch Sensortec GmbH', main_customer: 'Robert Bosch GmbH', category: 'Automotive', region: 'EMEA', country_code: 'DE', city: 'Reutlingen', url: 'bosch-sensortec.com', favorite: true, active_projects: [] },
414
+ { id: 'c10', name: 'Schneider Electric Industries SAS', main_customer: 'Schneider Electric SE', category: 'Energy', region: 'EMEA', country_code: 'FR', city: 'Rueil-Malmaison', url: 'se.com', favorite: false, active_projects: [] },
415
+ { id: 'c11', name: 'BMW Group', main_customer: 'Automotive OEM', category: 'Automotive', region: 'EMEA/APAC/NAFTA', country_code: 'DE', city: 'München', url: 'bmwgroup.com', favorite: false, active_projects: [{ project_name: 'Autonomes Fahrzeug-Plattform Generation 4', status: 'Negotiation', volume: '1,75M Stk./Jahr', expected_closing: '2027-06-30' }, { project_name: 'ADAS Kameramodul Gen3', status: 'Open', volume: '250k Stk./Jahr', expected_closing: '2025-09-30' }] },
416
+ ]
417
+
418
+ // ===== APPLICATION DOMAIN =====
419
+
420
+ const APPLICATION_COLUMNS: Record<string, ColumnDef> = {
421
+ favorite: { label: 'Favorit', type: 'favorite', sortable: false, filterable: false, visible: true },
422
+ name: { label: 'Applikation', type: 'double-text', sortable: true, filterable: false, visible: true, secondary: 'description', searchable: true },
423
+ url: { label: 'Referenz', type: 'link', sortable: false, filterable: false, visible: true, hideMobile: true },
424
+ trends: { label: 'Trend', type: 'text', sortable: true, filterable: true, primaryFilter: true, visible: true, hideTablet: true, searchable: true },
425
+ product_families: {
426
+ label: 'Produktfamilien',
427
+ type: 'expand',
428
+ sortable: false,
429
+ filterable: false,
430
+ visible: true,
431
+ hideMobile: true,
432
+ expandLabel: 'Produktfamilien',
433
+ expandColumns: [
434
+ { key: 'family_name', label: 'Produktfamilie', bold: true, mapTo: 'name' },
435
+ { key: 'category', label: 'Kategorie', mapTo: 'trends' },
436
+ { key: 'typical_products', label: 'Typische Produkte', mapTo: 'url' },
437
+ ],
438
+ expandTitleFn: (row) => `Typische Produktfamilien für ${row.name}`,
439
+ },
440
+ }
441
+
442
+ const APPLICATION_LAYOUT: DomainLayout = {
443
+ list: {
444
+ titleField: 'name',
445
+ metaFields: ['trends'],
446
+ badgeFields: [],
447
+ valueField: null,
448
+ expandField: 'product_families',
449
+ },
450
+ card: {
451
+ titleField: 'name',
452
+ subtitleField: 'description',
453
+ badgeFields: [],
454
+ rows: [
455
+ { label: 'Trend', field: 'trends' },
456
+ { label: 'Referenz', field: 'url' },
457
+ ],
458
+ footerField: 'trends',
459
+ expandField: 'product_families',
460
+ },
461
+ }
462
+
463
+ export const MOCK_APPLICATIONS: Record<string, unknown>[] = [
464
+ {
465
+ id: 'a1', name: 'ADAS Kameramodul', description: 'Kamerabasiertes Fahrerassistenzsystem für Level 2/3 Autonomie', url: 'https://www.continentalautomotive.com/adas', trends: 'Autonomous Driving', favorite: true,
466
+ product_families: [
467
+ { family_name: 'ARM Cortex-M4 Mikrocontroller', category: 'Mikrocontroller', typical_products: 'STM32F4, STM32F7, XMC4000' },
468
+ { family_name: 'DC-DC Abwärtswandler', category: 'Spannungsregler', typical_products: 'TPS543x, LM2596, MP2315' },
469
+ { family_name: 'Hochauflösende ADCs', category: 'Datenerfassung', typical_products: 'AD7124, ADS1256, MCP3912' },
470
+ ],
471
+ },
472
+ {
473
+ id: 'a2', name: 'EV Battery Management System für Hochvolttraktionsbatterien', description: 'Funktionssicheres Batteriemanagement für Hochvolt-Elektrofahrzeuge (BEV/PHEV) nach ISO 26262', url: 'https://www.webasto.com/ev-solutions', trends: 'Electromobility', favorite: true,
474
+ product_families: [
475
+ { family_name: 'Li-Ion Ladecontroller', category: 'Power Management', typical_products: 'BQ2589x, MP2639A, ISL9238' },
476
+ { family_name: 'Quad-Kanal PMICs', category: 'Power Management', typical_products: 'ADP5054, TPS65263, MAX77714' },
477
+ { family_name: 'N-Channel Power MOSFETs', category: 'Transistoren', typical_products: 'IRF540N, STP36NF06L, FDP8N60NZ' },
478
+ ],
479
+ },
480
+ {
481
+ id: 'a3', name: 'Smart Meter Gateway', description: 'Kommunikations-Gateway für intelligente Energiezähler nach BSI TR-03109 (MUC)', url: 'https://www.landisgyr.com/smart-grid', trends: 'Smart Grid', favorite: false,
482
+ product_families: [
483
+ { family_name: '8-Bit AVR Mikrocontroller', category: 'Mikrocontroller', typical_products: 'ATMEGA328P, ATTINY88, ATMEGA2560' },
484
+ { family_name: 'Single-Wire CAN Transceiver', category: 'Interface', typical_products: 'NCV7356, TJA1021T' },
485
+ ],
486
+ },
487
+ {
488
+ id: 'a4', name: 'Industrie-PLC Compact', description: 'Kompakte speicherprogrammierbare Steuerung für Maschinen und Anlagen', url: 'https://www.siemens.com/plc', trends: 'Industry 4.0', favorite: false,
489
+ product_families: [
490
+ { family_name: 'ARM Cortex-M4 Industrial MCUs', category: 'Mikrocontroller', typical_products: 'XMC4800, XMC4700, STM32H743' },
491
+ { family_name: 'ARM Cortex-M4 Allzweck-MCUs', category: 'Mikrocontroller', typical_products: 'STM32F407, STM32F405, GD32F407' },
492
+ { family_name: 'Schmitt-Trigger Logik-ICs', category: 'Logik-ICs', typical_products: 'SN74LVC1G14, SN74AHC1G14' },
493
+ ],
494
+ },
495
+ {
496
+ id: 'a5', name: 'Wearable Vitalsensor Kontinuierliche Patientenüberwachung', description: 'Tragbarer Biosensor für ambulante und stationäre kontinuierliche Patientenüberwachung', url: 'https://www.draeger.com/digital-health', trends: 'Digital Health', favorite: false,
497
+ product_families: [
498
+ { family_name: '24-Bit Sigma-Delta ADCs', category: 'Datenerfassung', typical_products: 'AD7124, ADS1256, MCP3912' },
499
+ { family_name: 'Rail-to-Rail Operationsverstärker', category: 'Verstärker', typical_products: 'OPA2340, MCP6002, LMV358' },
500
+ ],
501
+ },
502
+ {
503
+ id: 'a6', name: 'Wallbox AC/DC', description: 'Bidirektionale Ladestation für Elektrofahrzeuge mit Vehicle-to-Grid (V2G) Unterstützung', url: 'https://www.webasto.com/wallbox', trends: 'Electromobility', favorite: false,
504
+ product_families: [
505
+ { family_name: 'N-Channel Power MOSFETs', category: 'Transistoren', typical_products: 'IRF540N, STP36NF06L' },
506
+ { family_name: 'Li-Ion Ladecontroller', category: 'Power Management', typical_products: 'BQ2589x, MP2639A' },
507
+ { family_name: 'DC-DC Abwärtswandler', category: 'Spannungsregler', typical_products: 'TPS543x, LM2596, LM2676' },
508
+ ],
509
+ },
510
+ {
511
+ id: 'a7', name: 'CAN-FD Sternkoppler Automotive', description: 'Aktiver CAN-FD Sternkoppler für Fahrzeugbusnetzwerke nach ISO 11898-1', url: 'https://www.nxp.com/can', trends: 'Autonomous Driving', favorite: false,
512
+ product_families: [
513
+ { family_name: 'Single-Wire CAN Transceiver', category: 'Interface', typical_products: 'NCV7356, TJA1021T, TJA1043' },
514
+ { family_name: 'Schmitt-Trigger Logik-ICs', category: 'Logik-ICs', typical_products: 'SN74LVC1G14, SN74AHC1G14' },
515
+ ],
516
+ },
517
+ {
518
+ id: 'a8', name: 'Precision Agriculture Node', description: 'IoT-Feldknoten für Bodenfeuchte-, GPS- und Wetterdatenerfassung mit LoRaWAN', url: 'https://www.claas.com/precision-farming', trends: 'Smart Agriculture', favorite: false,
519
+ product_families: [
520
+ { family_name: '8-Bit AVR Mikrocontroller', category: 'Mikrocontroller', typical_products: 'ATMEGA328P, ATTINY88' },
521
+ { family_name: '24-Bit Sigma-Delta ADCs', category: 'Datenerfassung', typical_products: 'AD7124, ADS1256' },
522
+ { family_name: 'Schmitt-Trigger Logik-ICs', category: 'Logik-ICs', typical_products: 'SN74LVC1G14' },
523
+ ],
524
+ },
525
+ {
526
+ id: 'a9', name: 'Roboter-Motorcontroller Mehrachsig', description: 'Mehrachsiger Servo- und Schrittmotorregler für kollaborative Industrieroboter (ISO 10218)', url: 'https://www.kuka.com/cobots', trends: 'Industry 4.0', favorite: true,
527
+ product_families: [
528
+ { family_name: 'ARM Cortex-M4 Industrial MCUs mit EtherCAT', category: 'Mikrocontroller', typical_products: 'XMC4800, XMC4700' },
529
+ { family_name: 'N-Channel Power MOSFETs', category: 'Transistoren', typical_products: 'IRF540N, STP36NF06L, FDP8N60NZ' },
530
+ ],
531
+ },
532
+ {
533
+ id: 'a10', name: 'RS232-Legacy-Bridge', description: 'Protokollbrücke von RS-232 auf moderne Feldbusse (Modbus RTU/TCP) für Retrofit-Projekte', url: 'https://www.siemens.com/legacy-automation', trends: 'Industry 4.0', favorite: false,
534
+ product_families: [
535
+ { family_name: 'RS-232 Transceiver', category: 'Interface', typical_products: 'MAX232, SP3232, ST232' },
536
+ ],
537
+ },
538
+ {
539
+ id: 'a11', name: 'Hochvolt-Batteriemanagement ASIL-D Traktionsbatterie', description: 'Funktionssicheres BMS nach ISO 26262 ASIL-D für Hochvolt-Traktionsbatterien in BEV und FCEV-Plattformen', url: 'https://www.zf.com/hv-bms', trends: 'Electromobility/Safety', favorite: false,
540
+ product_families: [
541
+ { family_name: 'Li-Ion Ladecontroller', category: 'Power Management', typical_products: 'BQ2589x, MP2639A, ISL9238' },
542
+ { family_name: 'Quad-Kanal PMICs', category: 'Power Management', typical_products: 'ADP5054, TPS65263' },
543
+ { family_name: 'N-Channel Power MOSFETs', category: 'Transistoren', typical_products: 'IRF540N, STP36NF06L' },
544
+ { family_name: 'ARM Cortex-M4 Allzweck-MCUs', category: 'Mikrocontroller', typical_products: 'STM32F407, GD32F407' },
545
+ { family_name: 'ARM Cortex-M4 Industrial MCUs mit EtherCAT', category: 'Mikrocontroller', typical_products: 'XMC4800, XMC4700, STM32H743' },
546
+ ],
547
+ },
548
+ ]
549
+
550
+ // ===== DOMAIN REGISTRY =====
551
+
552
+ export const DATA_SOURCES: Record<DomainKey, DomainConfig> = {
553
+ products: {
554
+ key: 'products',
555
+ label: 'Produkte',
556
+ resultLabel: 'Produkten',
557
+ columns: PRODUCT_COLUMNS,
558
+ layout: PRODUCT_LAYOUT,
559
+ data: MOCK_PRODUCTS,
560
+ },
561
+ projects: {
562
+ key: 'projects',
563
+ label: 'Projekte',
564
+ resultLabel: 'Projekten',
565
+ columns: PROJECT_COLUMNS,
566
+ layout: PROJECT_LAYOUT,
567
+ data: MOCK_PROJECTS,
568
+ },
569
+ customers: {
570
+ key: 'customers',
571
+ label: 'Kunden',
572
+ resultLabel: 'Kunden',
573
+ columns: CUSTOMER_COLUMNS,
574
+ layout: CUSTOMER_LAYOUT,
575
+ data: MOCK_CUSTOMERS,
576
+ },
577
+ applications: {
578
+ key: 'applications',
579
+ label: 'Applikationen',
580
+ resultLabel: 'Applikationen',
581
+ columns: APPLICATION_COLUMNS,
582
+ layout: APPLICATION_LAYOUT,
583
+ data: MOCK_APPLICATIONS,
584
+ },
585
+ }
586
+
587
+ export const DOMAIN_KEYS: DomainKey[] = ['products', 'projects', 'customers', 'applications']