scb-wc 0.1.18 → 0.1.20

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,103 +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-chip/scb-chip.js';
20
- import './mvc/components/scb-collapse/scb-collapse.js';
21
- import './mvc/components/scb-cookies-consent/scb-cookies-consent.js';
22
- import './mvc/components/scb-dialog/scb-dialog.js';
23
- import './mvc/components/scb-divider/scb-divider.js';
24
- import './mvc/components/scb-drawer/scb-drawer.js';
25
- import './mvc/components/scb-drop-zone/scb-drop-zone.js';
26
- import './mvc/components/scb-dropdown/scb-dropdown.js';
27
- import './mvc/components/scb-fab/scb-fab.js';
28
- import './mvc/components/scb-fact-card/scb-fact-card-content.js';
29
- import './mvc/components/scb-fact-card/scb-fact-card.js';
30
- import './mvc/components/scb-footer/scb-footer-section.js';
31
- import './mvc/components/scb-footer/scb-footer.js';
32
- import './mvc/components/scb-gallery-grid/scb-gallery-grid.js';
33
- import './mvc/components/scb-grid/scb-grid-item.js';
34
- import './mvc/components/scb-grid/scb-grid.js';
35
- import './mvc/components/scb-grid/scb-stack.js';
36
- import './mvc/components/scb-header/scb-header-menu-group.js';
37
- import './mvc/components/scb-header/scb-header-menu-item.js';
38
- import './mvc/components/scb-header/scb-header-tab.js';
39
- import './mvc/components/scb-header/scb-header-utility.js';
40
- import './mvc/components/scb-header/scb-header.js';
41
- import './mvc/components/scb-horizontal-scroller/scb-horizontal-scroller.js';
42
- import './mvc/components/scb-icon-button/scb-icon-button.js';
43
- import './mvc/components/scb-keyfigure-card/scb-keyfigure-card.js';
44
- import './mvc/components/scb-link/scb-link.js';
45
- import './mvc/components/scb-list/scb-list-item.js';
46
- import './mvc/components/scb-list/scb-list.js';
47
- import './mvc/components/scb-menu/scb-menu-item.js';
48
- import './mvc/components/scb-menu/scb-menu-section.js';
49
- import './mvc/components/scb-menu/scb-menu.js';
50
- import './mvc/components/scb-menu/scb-sub-menu.js';
51
- import './mvc/components/scb-nav/scb-nav-item.js';
52
- import './mvc/components/scb-nav/scb-nav.js';
53
- import './mvc/components/scb-notification-card/scb-notification-card.js';
54
- import './mvc/components/scb-options-menu/scb-options-menu-item.js';
55
- import './mvc/components/scb-options-menu/scb-options-menu.js';
56
- import './mvc/components/scb-options-menu/scb-options-sub-menu.js';
57
- import './mvc/components/scb-overlay/scb-overlay.js';
58
- import './mvc/components/scb-pagination/scb-pagination.js';
59
- import './mvc/components/scb-progress-indicator/scb-progress-indicator.js';
60
- import './mvc/components/scb-progress-stepper/scb-progress-step.js';
61
- import './mvc/components/scb-progress-stepper/scb-progress-stepper.js';
62
- import './mvc/components/scb-radio-button/scb-radio-button.js';
63
- import './mvc/components/scb-radio-button/scb-radio-group.js';
64
- import './mvc/components/scb-scrollspy/scb-scrollspy.js';
65
- import './mvc/components/scb-search/scb-search.js';
66
- import './mvc/components/scb-segmented-button/scb-segmented-button.js';
67
- import './mvc/components/scb-segmented-button/scb-segmented-item.js';
68
- import './mvc/components/scb-select/scb-select-option.js';
69
- import './mvc/components/scb-select/scb-select.js';
70
- import './mvc/components/scb-skeleton/scb-skeleton.js';
71
- import './mvc/components/scb-slider/scb-slider.js';
72
- import './mvc/components/scb-snackbar/scb-snackbar.js';
73
- import './mvc/components/scb-status-pill/scb-status-pill.js';
74
- import './mvc/components/scb-stepper/scb-step.js';
75
- import './mvc/components/scb-stepper/scb-stepper.js';
76
- import './mvc/components/scb-switch/scb-switch.js';
77
- import './mvc/components/scb-table/scb-table.js';
78
- import './mvc/components/scb-table-advanced/scb-table-advanced.js';
79
- import './mvc/components/scb-tabs/scb-primary-tab.js';
80
- import './mvc/components/scb-tabs/scb-secondary-tab.js';
81
- import './mvc/components/scb-tabs/scb-tabs.js';
82
- import './mvc/components/scb-textfield/scb-textfield.js';
83
- import './mvc/components/scb-toc/scb-toc-item.js';
84
- import './mvc/components/scb-toc/scb-toc.js';
85
- import './mvc/components/scb-tooltip/scb-tooltip.js';
86
- import './mvc/components/scb-viz/scb-viz-actions-runtime.js';
87
- import './mvc/components/scb-viz/scb-viz-print-runtime.js';
88
- import './mvc/components/scb-viz/scb-viz-series-differentiation-registry.js';
89
- import './mvc/components/scb-viz/scb-viz-series-differentiation-runtime.js';
90
- import './mvc/components/scb-viz/scb-viz-table-runtime.js';
91
- import './mvc/components/scb-viz/scb-viz.js';
92
- import './mvc/scb-blazor-bridge.js';
93
- import './mvc/vendor/assertClassBrand.js';
94
- import './mvc/vendor/classPrivateFieldGet2.js';
95
- import './mvc/vendor/decorate.js';
96
- import './mvc/vendor/preload-helper.js';
97
- import './mvc/vendor/scb-chevron.js';
98
- import './mvc/vendor/vendor-lit.js';
99
- import './mvc/vendor/vendor-material.js';
100
- import './mvc/vendor/vendor.js';
101
1
  import './scb-accordion/scb-accordion-item.js';
102
2
  import './scb-accordion/scb-accordion.js';
103
3
  import './scb-app-bar/scb-app-bar.js';
@@ -106,17 +6,15 @@ import './scb-badge/scb-badge.js';
106
6
  import './scb-breadcrumb/scb-breadcrumb-item.js';
107
7
  import './scb-breadcrumb/scb-breadcrumb.js';
108
8
  import './scb-button/scb-button.js';
9
+ import './scb-calendar-card/scb-calendar-card.js';
109
10
  import './scb-calendar/scb-calendar-event.js';
110
11
  import './scb-calendar/scb-calendar.js';
111
- import './scb-calendar-card/scb-calendar-card.js';
112
12
  import './scb-card/scb-card.js';
113
13
  import './scb-checkbox/scb-checkbox-group.js';
114
14
  import './scb-checkbox/scb-checkbox.js';
115
- import './scb-chevron/scb-chevron.js';
116
15
  import './scb-chip/scb-chip.js';
117
16
  import './scb-collapse/scb-collapse.js';
118
17
  import './scb-cookies-consent/scb-cookies-consent.js';
119
- import './scb-datepicker/scb-datepicker.js';
120
18
  import './scb-dialog/scb-dialog.js';
121
19
  import './scb-divider/scb-divider.js';
122
20
  import './scb-drawer/scb-drawer.js';
@@ -172,8 +70,8 @@ import './scb-status-pill/scb-status-pill.js';
172
70
  import './scb-stepper/scb-step.js';
173
71
  import './scb-stepper/scb-stepper.js';
174
72
  import './scb-switch/scb-switch.js';
175
- import './scb-table/scb-table.js';
176
73
  import './scb-table-advanced/scb-table-advanced.js';
74
+ import './scb-table/scb-table.js';
177
75
  import './scb-tabs/scb-primary-tab.js';
178
76
  import './scb-tabs/scb-secondary-tab.js';
179
77
  import './scb-tabs/scb-tabs.js';
@@ -187,6 +85,3 @@ import './scb-viz/scb-viz-series-differentiation-registry.js';
187
85
  import './scb-viz/scb-viz-series-differentiation-runtime.js';
188
86
  import './scb-viz/scb-viz-table-runtime.js';
189
87
  import './scb-viz/scb-viz.js';
190
- import './starters/html/main.js';
191
- import './starters/react/vite.config.js';
192
- 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.18",
3
+ "version": "0.1.20",
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,19 +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
- "./scb-wc-public-entry": {
441
- "import": "./scb-wc-public-entry/scb-wc-public-entry.js",
442
- "require": "./scb-wc-public-entry/scb-wc-public-entry.js"
443
- },
444
- "./starters": {
445
- "import": "./starters/starters.js",
446
- "require": "./starters/starters.js"
447
- },
448
- "./_virtual": {
449
- "import": "./_virtual/_virtual.js",
450
- "require": "./_virtual/_virtual.js"
451
- },
452
418
  "./mvc/*": "./mvc/*"
453
419
  },
454
- "buildHash": "B32126D06E26D35372E5757844D5A0789C322082266E08BB3C8C60F4106FD61C"
420
+ "buildHash": "475BC647BA76E9C37A3B11F597374D824833E5AD4B05B07ADAA22D526A528619"
455
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>