scb-wc 0.1.17 → 0.1.19

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/all.js CHANGED
@@ -1,104 +1,3 @@
1
- import './all.js';
2
- import './blazor/scb-blazor-bridge.js';
3
- import './index.js';
4
- import './mvc/components/all.js';
5
- import './mvc/components/scb-accordion/scb-accordion-item.js';
6
- import './mvc/components/scb-accordion/scb-accordion.js';
7
- import './mvc/components/scb-app-bar/scb-app-bar.js';
8
- import './mvc/components/scb-avatar/scb-avatar.js';
9
- import './mvc/components/scb-badge/scb-badge.js';
10
- import './mvc/components/scb-breadcrumb/scb-breadcrumb-item.js';
11
- import './mvc/components/scb-breadcrumb/scb-breadcrumb.js';
12
- import './mvc/components/scb-button/scb-button.js';
13
- import './mvc/components/scb-calendar/scb-calendar-event.js';
14
- import './mvc/components/scb-calendar/scb-calendar.js';
15
- import './mvc/components/scb-calendar-card/scb-calendar-card.js';
16
- import './mvc/components/scb-card/scb-card.js';
17
- import './mvc/components/scb-checkbox/scb-checkbox-group.js';
18
- import './mvc/components/scb-checkbox/scb-checkbox.js';
19
- import './mvc/components/scb-chevron/scb-chevron.js';
20
- import './mvc/components/scb-chip/scb-chip.js';
21
- import './mvc/components/scb-collapse/scb-collapse.js';
22
- import './mvc/components/scb-cookies-consent/scb-cookies-consent.js';
23
- import './mvc/components/scb-datepicker/scb-datepicker.js';
24
- import './mvc/components/scb-dialog/scb-dialog.js';
25
- import './mvc/components/scb-divider/scb-divider.js';
26
- import './mvc/components/scb-drawer/scb-drawer.js';
27
- import './mvc/components/scb-drop-zone/scb-drop-zone.js';
28
- import './mvc/components/scb-dropdown/scb-dropdown.js';
29
- import './mvc/components/scb-fab/scb-fab.js';
30
- import './mvc/components/scb-fact-card/scb-fact-card-content.js';
31
- import './mvc/components/scb-fact-card/scb-fact-card.js';
32
- import './mvc/components/scb-footer/scb-footer-section.js';
33
- import './mvc/components/scb-footer/scb-footer.js';
34
- import './mvc/components/scb-gallery-grid/scb-gallery-grid.js';
35
- import './mvc/components/scb-grid/scb-grid-item.js';
36
- import './mvc/components/scb-grid/scb-grid.js';
37
- import './mvc/components/scb-grid/scb-stack.js';
38
- import './mvc/components/scb-header/scb-header-menu-group.js';
39
- import './mvc/components/scb-header/scb-header-menu-item.js';
40
- import './mvc/components/scb-header/scb-header-tab.js';
41
- import './mvc/components/scb-header/scb-header-utility.js';
42
- import './mvc/components/scb-header/scb-header.js';
43
- import './mvc/components/scb-horizontal-scroller/scb-horizontal-scroller.js';
44
- import './mvc/components/scb-icon-button/scb-icon-button.js';
45
- import './mvc/components/scb-keyfigure-card/scb-keyfigure-card.js';
46
- import './mvc/components/scb-link/scb-link.js';
47
- import './mvc/components/scb-list/scb-list-item.js';
48
- import './mvc/components/scb-list/scb-list.js';
49
- import './mvc/components/scb-menu/scb-menu-item.js';
50
- import './mvc/components/scb-menu/scb-menu-section.js';
51
- import './mvc/components/scb-menu/scb-menu.js';
52
- import './mvc/components/scb-menu/scb-sub-menu.js';
53
- import './mvc/components/scb-nav/scb-nav-item.js';
54
- import './mvc/components/scb-nav/scb-nav.js';
55
- import './mvc/components/scb-notification-card/scb-notification-card.js';
56
- import './mvc/components/scb-options-menu/scb-options-menu-item.js';
57
- import './mvc/components/scb-options-menu/scb-options-menu.js';
58
- import './mvc/components/scb-options-menu/scb-options-sub-menu.js';
59
- import './mvc/components/scb-overlay/scb-overlay.js';
60
- import './mvc/components/scb-pagination/scb-pagination.js';
61
- import './mvc/components/scb-progress-indicator/scb-progress-indicator.js';
62
- import './mvc/components/scb-progress-stepper/scb-progress-step.js';
63
- import './mvc/components/scb-progress-stepper/scb-progress-stepper.js';
64
- import './mvc/components/scb-radio-button/scb-radio-button.js';
65
- import './mvc/components/scb-radio-button/scb-radio-group.js';
66
- import './mvc/components/scb-scrollspy/scb-scrollspy.js';
67
- import './mvc/components/scb-search/scb-search.js';
68
- import './mvc/components/scb-segmented-button/scb-segmented-button.js';
69
- import './mvc/components/scb-segmented-button/scb-segmented-item.js';
70
- import './mvc/components/scb-select/scb-select-option.js';
71
- import './mvc/components/scb-select/scb-select.js';
72
- import './mvc/components/scb-skeleton/scb-skeleton.js';
73
- import './mvc/components/scb-slider/scb-slider.js';
74
- import './mvc/components/scb-snackbar/scb-snackbar.js';
75
- import './mvc/components/scb-status-pill/scb-status-pill.js';
76
- import './mvc/components/scb-stepper/scb-step.js';
77
- import './mvc/components/scb-stepper/scb-stepper.js';
78
- import './mvc/components/scb-switch/scb-switch.js';
79
- import './mvc/components/scb-table/scb-table.js';
80
- import './mvc/components/scb-table-advanced/scb-table-advanced.js';
81
- import './mvc/components/scb-tabs/scb-primary-tab.js';
82
- import './mvc/components/scb-tabs/scb-secondary-tab.js';
83
- import './mvc/components/scb-tabs/scb-tabs.js';
84
- import './mvc/components/scb-textfield/scb-textfield.js';
85
- import './mvc/components/scb-toc/scb-toc-item.js';
86
- import './mvc/components/scb-toc/scb-toc.js';
87
- import './mvc/components/scb-tooltip/scb-tooltip.js';
88
- import './mvc/components/scb-viz/scb-viz-actions-runtime.js';
89
- import './mvc/components/scb-viz/scb-viz-print-runtime.js';
90
- import './mvc/components/scb-viz/scb-viz-series-differentiation-registry.js';
91
- import './mvc/components/scb-viz/scb-viz-series-differentiation-runtime.js';
92
- import './mvc/components/scb-viz/scb-viz-table-runtime.js';
93
- import './mvc/components/scb-viz/scb-viz.js';
94
- import './mvc/scb-blazor-bridge.js';
95
- import './mvc/vendor/assertClassBrand.js';
96
- import './mvc/vendor/classPrivateFieldGet2.js';
97
- import './mvc/vendor/decorate.js';
98
- import './mvc/vendor/preload-helper.js';
99
- import './mvc/vendor/vendor-lit.js';
100
- import './mvc/vendor/vendor-material.js';
101
- import './mvc/vendor/vendor.js';
102
1
  import './scb-accordion/scb-accordion-item.js';
103
2
  import './scb-accordion/scb-accordion.js';
104
3
  import './scb-app-bar/scb-app-bar.js';
@@ -107,9 +6,9 @@ import './scb-badge/scb-badge.js';
107
6
  import './scb-breadcrumb/scb-breadcrumb-item.js';
108
7
  import './scb-breadcrumb/scb-breadcrumb.js';
109
8
  import './scb-button/scb-button.js';
9
+ import './scb-calendar-card/scb-calendar-card.js';
110
10
  import './scb-calendar/scb-calendar-event.js';
111
11
  import './scb-calendar/scb-calendar.js';
112
- import './scb-calendar-card/scb-calendar-card.js';
113
12
  import './scb-card/scb-card.js';
114
13
  import './scb-checkbox/scb-checkbox-group.js';
115
14
  import './scb-checkbox/scb-checkbox.js';
@@ -173,8 +72,8 @@ import './scb-status-pill/scb-status-pill.js';
173
72
  import './scb-stepper/scb-step.js';
174
73
  import './scb-stepper/scb-stepper.js';
175
74
  import './scb-switch/scb-switch.js';
176
- import './scb-table/scb-table.js';
177
75
  import './scb-table-advanced/scb-table-advanced.js';
76
+ import './scb-table/scb-table.js';
178
77
  import './scb-tabs/scb-primary-tab.js';
179
78
  import './scb-tabs/scb-secondary-tab.js';
180
79
  import './scb-tabs/scb-tabs.js';
@@ -188,6 +87,3 @@ import './scb-viz/scb-viz-series-differentiation-registry.js';
188
87
  import './scb-viz/scb-viz-series-differentiation-runtime.js';
189
88
  import './scb-viz/scb-viz-table-runtime.js';
190
89
  import './scb-viz/scb-viz.js';
191
- import './starters/html/main.js';
192
- import './starters/react/vite.config.js';
193
- import './_virtual/_@oxc-project_runtime@0.126.0/helpers/decorate.js';
package/bin/scb-wc.mjs ADDED
@@ -0,0 +1,159 @@
1
+ #!/usr/bin/env node
2
+
3
+ import fs from 'fs';
4
+ import path from 'path';
5
+ import { fileURLToPath } from 'url';
6
+
7
+ const __filename = fileURLToPath(import.meta.url);
8
+ const __dirname = path.dirname(__filename);
9
+ const packageRoot = path.resolve(__dirname, '..');
10
+ const packageJson = JSON.parse(
11
+ fs.readFileSync(path.join(packageRoot, 'package.json'), 'utf8'),
12
+ );
13
+ const startersRoot = path.join(packageRoot, 'starters');
14
+
15
+ const usage = `
16
+ SCB Web Components
17
+
18
+ Användning:
19
+ npx scb-wc init <html|react|blazor> [mapp]
20
+
21
+ Exempel:
22
+ npx scb-wc init html my-app
23
+ npx scb-wc init react my-react-app
24
+ npx scb-wc init blazor my-blazor-app
25
+ `.trim();
26
+
27
+ const textExtensions = new Set([
28
+ '.css',
29
+ '.cs',
30
+ '.csproj',
31
+ '.html',
32
+ '.js',
33
+ '.json',
34
+ '.jsx',
35
+ '.md',
36
+ '.razor',
37
+ '.txt',
38
+ ]);
39
+
40
+ function fail(message) {
41
+ console.error(`\n${message}\n`);
42
+ process.exit(1);
43
+ }
44
+
45
+ function renameTemplateEntry(name) {
46
+ return name.startsWith('dot-') ? `.${name.slice(4)}` : name;
47
+ }
48
+
49
+ function toPascalCaseSegment(segment) {
50
+ if (!segment) return '';
51
+ return segment.charAt(0).toUpperCase() + segment.slice(1).toLowerCase();
52
+ }
53
+
54
+ function sanitizeStarterNamespace(name) {
55
+ const pascalCaseName = name
56
+ .split(/[^A-Za-z0-9]+/)
57
+ .filter(Boolean)
58
+ .map(toPascalCaseSegment)
59
+ .join('');
60
+
61
+ if (!pascalCaseName) return 'ScbStarterApp';
62
+ if (/^[0-9]/.test(pascalCaseName)) return `_${pascalCaseName}`;
63
+ return pascalCaseName;
64
+ }
65
+
66
+ function ensureTargetIsCreatable(targetDir) {
67
+ if (!fs.existsSync(targetDir)) return;
68
+ const entries = fs.readdirSync(targetDir);
69
+ if (entries.length > 0) {
70
+ fail(`Mappen ${targetDir} finns redan och är inte tom.`);
71
+ }
72
+ }
73
+
74
+ function copyTemplateDir(sourceDir, targetDir) {
75
+ fs.mkdirSync(targetDir, { recursive: true });
76
+
77
+ for (const entry of fs.readdirSync(sourceDir, { withFileTypes: true })) {
78
+ const from = path.join(sourceDir, entry.name);
79
+ const to = path.join(targetDir, renameTemplateEntry(entry.name));
80
+
81
+ if (entry.isDirectory()) {
82
+ copyTemplateDir(from, to);
83
+ continue;
84
+ }
85
+
86
+ fs.mkdirSync(path.dirname(to), { recursive: true });
87
+ fs.copyFileSync(from, to);
88
+ }
89
+ }
90
+
91
+ function replacePlaceholders(rootDir, replacements) {
92
+ const walk = (currentDir) => {
93
+ for (const entry of fs.readdirSync(currentDir, { withFileTypes: true })) {
94
+ const fullPath = path.join(currentDir, entry.name);
95
+
96
+ if (entry.isDirectory()) {
97
+ walk(fullPath);
98
+ continue;
99
+ }
100
+
101
+ const ext = path.extname(entry.name);
102
+ if (!textExtensions.has(ext)) continue;
103
+
104
+ let contents = fs.readFileSync(fullPath, 'utf8');
105
+ for (const [placeholder, value] of Object.entries(replacements)) {
106
+ contents = contents.replaceAll(placeholder, value);
107
+ }
108
+ fs.writeFileSync(fullPath, contents, 'utf8');
109
+ }
110
+ };
111
+
112
+ walk(rootDir);
113
+ }
114
+
115
+ const [, , command, template, maybeTargetDir] = process.argv;
116
+
117
+ if (!command || command === '--help' || command === '-h') {
118
+ console.log(usage);
119
+ process.exit(0);
120
+ }
121
+
122
+ if (command !== 'init') {
123
+ fail(`Okänt kommando: ${command}\n\n${usage}`);
124
+ }
125
+
126
+ if (!template || !['html', 'react', 'blazor'].includes(template)) {
127
+ fail(`Välj en starter: html, react eller blazor.\n\n${usage}`);
128
+ }
129
+
130
+ const targetDir = path.resolve(process.cwd(), maybeTargetDir || `${template}-starter`);
131
+ const sourceDir = path.join(startersRoot, template);
132
+
133
+ if (!fs.existsSync(sourceDir)) {
134
+ fail(`Hittar inte startermallen för ${template}.`);
135
+ }
136
+
137
+ ensureTargetIsCreatable(targetDir);
138
+ copyTemplateDir(sourceDir, targetDir);
139
+ replacePlaceholders(targetDir, {
140
+ '__SCB_WC_PACKAGE_NAME__': packageJson.name,
141
+ '__SCB_WC_VERSION__': packageJson.version,
142
+ '__STARTER_NAME__': path.basename(targetDir),
143
+ '__STARTER_NAMESPACE__': sanitizeStarterNamespace(path.basename(targetDir)),
144
+ });
145
+
146
+ console.log(`\nSkapade ${template}-starter i ${targetDir}\n`);
147
+
148
+ if (template === 'blazor') {
149
+ console.log('Nästa steg:');
150
+ console.log(` 1. cd ${targetDir}`);
151
+ console.log(' 2. npm install');
152
+ console.log(' 3. npm run ui:setup');
153
+ console.log(' 4. dotnet run');
154
+ } else {
155
+ console.log('Nästa steg:');
156
+ console.log(` 1. cd ${targetDir}`);
157
+ console.log(' 2. npm install');
158
+ console.log(' 3. npm run dev');
159
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "scb-wc",
3
- "version": "0.1.17",
3
+ "version": "0.1.19",
4
4
  "type": "module",
5
5
  "main": "index.js",
6
6
  "module": "index.js",
@@ -11,7 +11,13 @@
11
11
  "scb-wc": "bin/scb-wc.mjs"
12
12
  },
13
13
  "sideEffects": [
14
- "**/*.css"
14
+ "**/*.css",
15
+ "index.js",
16
+ "all.js",
17
+ "scb-wc.bundle.js",
18
+ "scb-*.js",
19
+ "scb-*/**/*.js",
20
+ "mvc/**/*.js"
15
21
  ],
16
22
  "peerDependencies": {
17
23
  "@material/web": "^1.5.1",
@@ -53,30 +59,6 @@
53
59
  "import": "./scb-wc.bundle.js",
54
60
  "require": "./scb-wc.bundle.js"
55
61
  },
56
- "./blazor": {
57
- "import": "./blazor/blazor.js",
58
- "require": "./blazor/blazor.js"
59
- },
60
- "./blazor/scb-blazor-bridge": {
61
- "import": "./blazor/scb-blazor-bridge.js",
62
- "require": "./blazor/scb-blazor-bridge.js"
63
- },
64
- "./fonts": {
65
- "import": "./fonts/fonts.js",
66
- "require": "./fonts/fonts.js"
67
- },
68
- "./mvc": {
69
- "import": "./mvc/mvc.js",
70
- "require": "./mvc/mvc.js"
71
- },
72
- "./mvc/scb-blazor-bridge": {
73
- "import": "./mvc/scb-blazor-bridge.js",
74
- "require": "./mvc/scb-blazor-bridge.js"
75
- },
76
- "./release": {
77
- "import": "./release/release.js",
78
- "require": "./release/release.js"
79
- },
80
62
  "./scb-accordion": {
81
63
  "import": "./scb-accordion/scb-accordion.js",
82
64
  "require": "./scb-accordion/scb-accordion.js"
@@ -145,10 +127,6 @@
145
127
  "import": "./scb-collapse/scb-collapse.js",
146
128
  "require": "./scb-collapse/scb-collapse.js"
147
129
  },
148
- "./scb-components": {
149
- "import": "./scb-components/scb-components.js",
150
- "require": "./scb-components/scb-components.js"
151
- },
152
130
  "./scb-cookies-consent": {
153
131
  "import": "./scb-cookies-consent/scb-cookies-consent.js",
154
132
  "require": "./scb-cookies-consent/scb-cookies-consent.js"
@@ -437,15 +415,7 @@
437
415
  "import": "./scb-viz/scb-viz-table-runtime.js",
438
416
  "require": "./scb-viz/scb-viz-table-runtime.js"
439
417
  },
440
- "./starters": {
441
- "import": "./starters/starters.js",
442
- "require": "./starters/starters.js"
443
- },
444
- "./_virtual": {
445
- "import": "./_virtual/_virtual.js",
446
- "require": "./_virtual/_virtual.js"
447
- },
448
418
  "./mvc/*": "./mvc/*"
449
419
  },
450
- "buildHash": "F653AED2FEEA8CBE0568F1E81003B73CCF3AF85D1EA803CD6A6E53CA4A3AB5EA"
420
+ "buildHash": "44ADB2C50C6E5BDAB65E7B9BAF51C76C49910EC111C7D597BAA8B99F88407BA1"
451
421
  }
@@ -16,18 +16,7 @@
16
16
  <body>
17
17
  <Routes @rendermode="InteractiveServer" />
18
18
 
19
- <script type="module" src="ui/components/scb-header/scb-header.js"></script>
20
- <script type="module" src="ui/components/scb-header/scb-header-tab.js"></script>
21
- <script type="module" src="ui/components/scb-header/scb-header-utility.js"></script>
22
- <script type="module" src="ui/components/scb-footer/scb-footer.js"></script>
23
- <script type="module" src="ui/components/scb-footer/scb-footer-section.js"></script>
24
- <script type="module" src="ui/components/scb-link/scb-link.js"></script>
25
- <script type="module" src="ui/components/scb-grid/scb-grid.js"></script>
26
- <script type="module" src="ui/components/scb-grid/scb-grid-item.js"></script>
27
- <script type="module" src="ui/components/scb-button/scb-button.js"></script>
28
- <script type="module" src="ui/components/scb-card/scb-card.js"></script>
29
- <script type="module" src="ui/components/scb-accordion/scb-accordion.js"></script>
30
- <script type="module" src="ui/components/scb-accordion/scb-accordion-item.js"></script>
19
+ <script type="module" src="ui/components/all.js"></script>
31
20
  <script type="module" src="ui/scb-blazor-bridge.js"></script>
32
21
  <script src="_framework/blazor.web.js"></script>
33
22
  </body>