setmy-info-less-extended 3.0.0 → 3.1.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/README.md +56 -0
- package/cucumber.js +4 -3
- package/dist/main.css +171 -65
- package/dist/main.min.css +1 -1
- package/jest.config.js +10 -0
- package/jest.e2e.config.js +5 -0
- package/package.json +21 -23
- package/playwright.config.js +8 -15
- package/src/main/less/main.less +26 -1
- package/src/main/less/utility/article.less +52 -0
- package/src/main/less/utility/card.less +28 -0
- package/src/main/less/utility/index.less +11 -0
- package/src/main/less/utility/modal.less +61 -0
- package/src/main/less/utility/section.less +36 -0
- package/src/test/gherkin/article.feature +11 -0
- package/src/test/gherkin/card.feature +13 -0
- package/src/test/gherkin/modal.feature +27 -0
- package/src/test/gherkin/section.feature +11 -0
- package/src/test/js/e2e/article.e2e.js +29 -0
- package/src/test/js/e2e/body.e2e.js +9 -7
- package/src/test/js/e2e/card.e2e.js +30 -0
- package/src/test/js/e2e/modal.e2e.js +42 -0
- package/src/test/js/e2e/section.e2e.js +28 -0
- package/src/test/pug/article.pug +6 -0
- package/src/test/pug/card.pug +7 -0
- package/src/test/pug/include/head.pug +0 -1
- package/src/test/pug/main.pug +0 -2
- package/src/test/pug/modal.pug +12 -0
- package/src/test/pug/section.pug +7 -0
- package/src/main/less/experimental/experimental-frames-colors.less +0 -35
- package/src/main/less/experimental/main.less +0 -3
- package/src/main/less/frames/index.less +0 -115
- package/src/test/js/bdd/given.js +0 -7
- package/src/test/js/bdd/then.js +0 -60
- package/src/test/js/bdd/when.js +0 -10
- package/src/test/js/firefoxHelper.js +0 -17
- package/src/test/js/pageHelper.js +0 -102
- package/src/test/js/pugBuild.js +0 -37
- package/src/test/js/pugTranspile.js +0 -16
- package/src/test/js/pugWatch.js +0 -23
- package/src/test/js/server.js +0 -15
- package/src/test/js/testPageName.js +0 -10
- package/src/test/js/unit/main.test.js +0 -5
- package/src/test/pug/partials/experimental-frames.pug +0 -100
package/README.md
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# setmy-info-less-extended
|
|
2
|
+
|
|
3
|
+
Extended content components on top of the base module: page sections, modal/overlay, cards, and
|
|
4
|
+
article typography. These higher-level patterns were moved out of the base package to keep the base
|
|
5
|
+
minimal (resets, tokens, single-purpose utilities). This package does **not** own the
|
|
6
|
+
NetBeans-inspired IDE frame shell — that lives in `setmy-info-less-ide`.
|
|
7
|
+
|
|
8
|
+
**For what:** Adding common content patterns (sections, modals, cards, article text) on top of the
|
|
9
|
+
base utilities.
|
|
10
|
+
|
|
11
|
+
**For who:** Front-end developers building page content on top of the base module.
|
|
12
|
+
|
|
13
|
+
## Install
|
|
14
|
+
|
|
15
|
+
```shell
|
|
16
|
+
npm i setmy-info-less-extended
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
* https://www.npmjs.com/package/setmy-info-less-extended
|
|
20
|
+
|
|
21
|
+
## Dependencies
|
|
22
|
+
|
|
23
|
+
Depends on [`setmy-info-less`](../setmy-info-less/README.md). Load base CSS before this.
|
|
24
|
+
|
|
25
|
+
## Usage
|
|
26
|
+
|
|
27
|
+
```html
|
|
28
|
+
<link rel="stylesheet" href="node_modules/setmy-info-less/dist/main.css">
|
|
29
|
+
<link rel="stylesheet" href="node_modules/setmy-info-less-extended/dist/main.css">
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Or from CDN:
|
|
33
|
+
|
|
34
|
+
```html
|
|
35
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/setmy-info-less-extended/dist/main.min.css">
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## What is included
|
|
39
|
+
|
|
40
|
+
| Group | Classes |
|
|
41
|
+
|---|---|
|
|
42
|
+
| Section | `.fullViewport`, `.pageSection`, `.pageSectionNarrow`, `.sectionContentCenter`, `.sectionContentRow` |
|
|
43
|
+
| Modal | `.overlay`, `.modal`, `.modalHeader`, `.modalBody`, `.modalFooter`, `.modalClose` |
|
|
44
|
+
| Card | `.card`, `.cardTitle`, `.cardBody`, `.cardGrid` |
|
|
45
|
+
| Article | `.articleBody`, `.codeInline`, `.codePre`, `.blockquote`, `.definitionTerm`, `.definitionDesc` |
|
|
46
|
+
|
|
47
|
+
These reference base design tokens but ship only as this package's own CSS (standalone/delta — base
|
|
48
|
+
CSS is not bundled). Load the base stylesheet before this one.
|
|
49
|
+
|
|
50
|
+
## Development
|
|
51
|
+
|
|
52
|
+
```shell
|
|
53
|
+
npm run build
|
|
54
|
+
npm run lint:less
|
|
55
|
+
npm run verify
|
|
56
|
+
```
|
package/cucumber.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
module.exports = {
|
|
2
2
|
default: [
|
|
3
3
|
`--format-options '{"snippetInterface": "synchronous"}'`,
|
|
4
|
-
'--require
|
|
5
|
-
'--require
|
|
6
|
-
'--require
|
|
4
|
+
'--require ../common/test/js/bdd/support.js',
|
|
5
|
+
'--require ../common/test/js/bdd/given.js',
|
|
6
|
+
'--require ../common/test/js/bdd/when.js',
|
|
7
|
+
'--require ../common/test/js/bdd/then.js',
|
|
7
8
|
'./src/test/gherkin'
|
|
8
9
|
].join(' ')
|
|
9
10
|
};
|
package/dist/main.css
CHANGED
|
@@ -1,76 +1,182 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Main entry point for the extended module.
|
|
3
|
+
|
|
4
|
+
Distribution model: STANDALONE / DELTA.
|
|
5
|
+
`dist/main.css` contains ONLY this package's own rules — it does not bundle the base
|
|
6
|
+
module's CSS. Consumers load the stylesheets in dependency order:
|
|
7
|
+
|
|
8
|
+
setmy-info-less -> setmy-info-less-extended
|
|
9
|
+
|
|
10
|
+
This package is currently a skeleton: it has no rules of its own yet. The base module's
|
|
11
|
+
`values/index.less` is imported for TOKENS ONLY (LESS variables produce no CSS output), so
|
|
12
|
+
future extended rules can reference shared tokens without re-emitting base styles here.
|
|
13
|
+
Stable NetBeans-style frame presets live in `setmy-info-less-ide`.
|
|
14
|
+
*/
|
|
15
|
+
/* Base tokens only (no CSS output) — gives future rules access to shared variables */
|
|
1
16
|
/* values/main.less */
|
|
2
17
|
/* values/colors/main.less */
|
|
3
18
|
/* values/fonts/main.less */
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
.
|
|
19
|
+
/* This package's own rules (empty skeleton — add files via utility/index.less) */
|
|
20
|
+
/*
|
|
21
|
+
Extended utility classes.
|
|
22
|
+
|
|
23
|
+
Higher-level content patterns moved here from the base module: page sections, modal/overlay,
|
|
24
|
+
cards, and article typography. These reference base design tokens (imported for tokens only by
|
|
25
|
+
this package's main.less) but live in the extended layer so the base module stays minimal.
|
|
26
|
+
*/
|
|
27
|
+
/* section.less */
|
|
28
|
+
/* Full viewport height — use for hero or landing sections */
|
|
29
|
+
.fullViewport {
|
|
30
|
+
height: 100vh;
|
|
10
31
|
width: 100%;
|
|
11
|
-
height: 50px;
|
|
12
32
|
}
|
|
13
|
-
|
|
33
|
+
/* Generic full-width content section with vertical padding */
|
|
34
|
+
.pageSection {
|
|
14
35
|
width: 100%;
|
|
15
|
-
|
|
36
|
+
padding-top: 20px;
|
|
37
|
+
padding-bottom: 20px;
|
|
16
38
|
}
|
|
17
|
-
|
|
39
|
+
/* Width-constrained centered content section — combine with .centerBox */
|
|
40
|
+
.pageSectionNarrow {
|
|
18
41
|
width: 100%;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
42
|
+
max-width: 1024px;
|
|
43
|
+
margin: 0 auto;
|
|
44
|
+
/* stylelint-disable-next-line declaration-property-value-no-unknown */
|
|
45
|
+
padding: 20px 10px;
|
|
46
|
+
}
|
|
47
|
+
/* Centers child content vertically and horizontally — display:table works in IE8+ */
|
|
48
|
+
.sectionContentCenter {
|
|
49
|
+
display: table;
|
|
22
50
|
width: 100%;
|
|
23
|
-
height: 25px;
|
|
24
|
-
}
|
|
25
|
-
.sectionLeft {
|
|
26
|
-
width: calc(30% - 8px - 4px);
|
|
27
|
-
height: 100%;
|
|
28
|
-
}
|
|
29
|
-
.verticalSeparator {
|
|
30
|
-
width: 8px;
|
|
31
|
-
height: 100%;
|
|
32
|
-
display: block;
|
|
33
|
-
}
|
|
34
|
-
.sectionRight {
|
|
35
|
-
width: 70%;
|
|
36
51
|
height: 100%;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
.
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
.
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
width:
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
52
|
+
text-align: center;
|
|
53
|
+
}
|
|
54
|
+
/* Clearfix for floated children arranged in a row */
|
|
55
|
+
.sectionContentRow {
|
|
56
|
+
overflow: hidden;
|
|
57
|
+
}
|
|
58
|
+
/* modal.less */
|
|
59
|
+
/* Full-screen overlay — blocks background; JS controls visibility toggle */
|
|
60
|
+
.overlay {
|
|
61
|
+
position: fixed;
|
|
62
|
+
/* stylelint-disable declaration-block-no-redundant-longhand-properties */
|
|
63
|
+
top: 0;
|
|
64
|
+
right: 0;
|
|
65
|
+
bottom: 0;
|
|
66
|
+
left: 0;
|
|
67
|
+
/* stylelint-enable declaration-block-no-redundant-longhand-properties */
|
|
68
|
+
background: rgba(0, 0, 0, 0.5);
|
|
69
|
+
z-index: 800;
|
|
70
|
+
}
|
|
71
|
+
/* Centered dialog box — JS controls open/close; LESS handles size and position only */
|
|
72
|
+
.modal {
|
|
73
|
+
position: fixed;
|
|
74
|
+
top: 50%;
|
|
75
|
+
left: 50%;
|
|
76
|
+
transform: translate(-50%, -50%);
|
|
77
|
+
max-width: 640px;
|
|
78
|
+
width: 90%;
|
|
79
|
+
max-height: 80vh;
|
|
80
|
+
overflow-y: auto;
|
|
81
|
+
background: #ffffff;
|
|
82
|
+
border-radius: 6px;
|
|
83
|
+
z-index: 900;
|
|
84
|
+
}
|
|
85
|
+
.modalHeader {
|
|
86
|
+
/* stylelint-disable-next-line declaration-property-value-no-unknown */
|
|
87
|
+
padding: 10px 20px;
|
|
88
|
+
/* stylelint-disable-next-line declaration-property-value-no-unknown */
|
|
89
|
+
border-bottom: 1px solid #cccccc;
|
|
90
|
+
font-weight: bold;
|
|
91
|
+
}
|
|
92
|
+
.modalBody {
|
|
93
|
+
padding: 20px;
|
|
94
|
+
overflow-y: auto;
|
|
95
|
+
}
|
|
96
|
+
.modalFooter {
|
|
97
|
+
/* stylelint-disable-next-line declaration-property-value-no-unknown */
|
|
98
|
+
padding: 10px 20px;
|
|
99
|
+
/* stylelint-disable-next-line declaration-property-value-no-unknown */
|
|
100
|
+
border-top: 1px solid #cccccc;
|
|
101
|
+
text-align: right;
|
|
102
|
+
}
|
|
103
|
+
/* Absolute close button — position inside .modal which has position:fixed */
|
|
104
|
+
.modalClose {
|
|
105
|
+
position: absolute;
|
|
106
|
+
top: 10px;
|
|
107
|
+
right: 10px;
|
|
108
|
+
cursor: pointer;
|
|
109
|
+
background: transparent;
|
|
110
|
+
border-style: none;
|
|
111
|
+
line-height: 1;
|
|
112
|
+
}
|
|
113
|
+
/* card.less */
|
|
114
|
+
/* Base content card */
|
|
115
|
+
.card {
|
|
116
|
+
border-style: solid;
|
|
117
|
+
border-width: 2px;
|
|
118
|
+
border-color: #cccccc;
|
|
119
|
+
border-radius: 6px;
|
|
120
|
+
padding: 20px;
|
|
121
|
+
background: #ffffff;
|
|
122
|
+
box-sizing: border-box;
|
|
123
|
+
}
|
|
124
|
+
/* Card heading */
|
|
125
|
+
.cardTitle {
|
|
126
|
+
font-weight: bold;
|
|
127
|
+
margin-bottom: 10px;
|
|
128
|
+
}
|
|
129
|
+
/* Card body text area */
|
|
130
|
+
.cardBody {
|
|
131
|
+
color: black;
|
|
132
|
+
}
|
|
133
|
+
/* Wrapping row of cards — clearfix for floated children */
|
|
134
|
+
.cardGrid {
|
|
135
|
+
overflow: hidden;
|
|
136
|
+
}
|
|
137
|
+
/* article.less */
|
|
138
|
+
/* Long-form article text container */
|
|
139
|
+
.articleBody {
|
|
140
|
+
line-height: 1.7;
|
|
141
|
+
max-width: 75ch;
|
|
142
|
+
}
|
|
143
|
+
/* Inline code span */
|
|
144
|
+
.codeInline {
|
|
145
|
+
font-family: monospace;
|
|
146
|
+
background: #f3f4f6;
|
|
147
|
+
padding-left: 4px;
|
|
148
|
+
padding-right: 4px;
|
|
149
|
+
border-radius: 3px;
|
|
150
|
+
font-size: 75%;
|
|
151
|
+
}
|
|
152
|
+
/* Block code area */
|
|
153
|
+
.codePre {
|
|
154
|
+
font-family: monospace;
|
|
155
|
+
background: #f3f4f6;
|
|
156
|
+
/* stylelint-disable-next-line declaration-property-value-no-unknown */
|
|
157
|
+
padding: 10px 20px;
|
|
158
|
+
border-radius: 6px;
|
|
159
|
+
overflow-x: auto;
|
|
160
|
+
line-height: 1.5;
|
|
161
|
+
white-space: pre;
|
|
162
|
+
}
|
|
163
|
+
/* Block quotation with left accent border */
|
|
164
|
+
.blockquote {
|
|
165
|
+
/* stylelint-disable-next-line declaration-property-value-no-unknown */
|
|
166
|
+
border-left: 4px solid #93c5fd;
|
|
167
|
+
padding-left: 20px;
|
|
168
|
+
margin-top: 10px;
|
|
169
|
+
margin-bottom: 10px;
|
|
170
|
+
color: dimgray;
|
|
171
|
+
font-style: italic;
|
|
172
|
+
}
|
|
173
|
+
/* Definition list term */
|
|
174
|
+
.definitionTerm {
|
|
175
|
+
font-weight: bold;
|
|
176
|
+
margin-top: 10px;
|
|
177
|
+
}
|
|
178
|
+
/* Definition list description */
|
|
179
|
+
.definitionDesc {
|
|
180
|
+
margin-left: 20px;
|
|
181
|
+
color: dimgray;
|
|
76
182
|
}
|
package/dist/main.min.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
.fullViewport{height:100vh;width:100%}.pageSection{width:100%;padding-top:20px;padding-bottom:20px}.pageSectionNarrow{width:100%;max-width:1024px;margin:0 auto;padding:20px 10px}.sectionContentCenter{display:table;width:100%;height:100%;text-align:center}.sectionContentRow{overflow:hidden}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.5);z-index:800}.modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);max-width:640px;width:90%;max-height:80vh;overflow-y:auto;background:#fff;border-radius:6px;z-index:900}.modalHeader{padding:10px 20px;border-bottom:1px solid #ccc;font-weight:700}.modalBody{padding:20px;overflow-y:auto}.modalFooter{padding:10px 20px;border-top:1px solid #ccc;text-align:right}.modalClose{position:absolute;top:10px;right:10px;cursor:pointer;background:0 0;border-style:none;line-height:1}.card{border-style:solid;border-width:2px;border-color:#ccc;border-radius:6px;padding:20px;background:#fff;box-sizing:border-box}.cardTitle{font-weight:700;margin-bottom:10px}.cardBody{color:#000}.cardGrid{overflow:hidden}.articleBody{line-height:1.7;max-width:75ch}.codeInline{font-family:monospace;background:#f3f4f6;padding-left:4px;padding-right:4px;border-radius:3px;font-size:75%}.codePre{font-family:monospace;background:#f3f4f6;padding:10px 20px;border-radius:6px;overflow-x:auto;line-height:1.5;white-space:pre}.blockquote{border-left:4px solid #93c5fd;padding-left:20px;margin-top:10px;margin-bottom:10px;color:#696969;font-style:italic}.definitionTerm{font-weight:700;margin-top:10px}.definitionDesc{margin-left:20px;color:#696969}
|
package/jest.config.js
ADDED
package/package.json
CHANGED
|
@@ -1,37 +1,36 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "setmy-info-less-extended",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"description": "SMI LESS project",
|
|
5
5
|
"main": "dist/main.min.css",
|
|
6
6
|
"dependencies": {
|
|
7
7
|
"setmy-info-less": "*"
|
|
8
8
|
},
|
|
9
9
|
"scripts": {
|
|
10
|
-
"build": "npm run css && npm run css-min && npm run html",
|
|
11
|
-
"build:experimental": "npm run css:experimental",
|
|
10
|
+
"build": "npm run css && npm run css-min && npm run html && npm run styleguide",
|
|
12
11
|
"css": "lessc ./src/main/less/main.less dist/main.css",
|
|
13
|
-
"css:experimental": "lessc ./src/main/less/experimental/main.less dist/experimental.css",
|
|
14
12
|
"css-min": "lessc ./src/main/less/main.less dist/main.min.css --clean-css",
|
|
15
13
|
"css:debug": "lessc --modify-var=debug=true ./src/main/less/main.less dist/main.css",
|
|
16
|
-
"html": "node
|
|
17
|
-
"start": "node
|
|
14
|
+
"html": "node ../common/test/js/pugBuild.js",
|
|
15
|
+
"start": "node ../common/test/js/server.js",
|
|
18
16
|
"watch": "less-watch-compiler ./src/main/less dist main.less",
|
|
19
|
-
"watch:pug": "node
|
|
17
|
+
"watch:pug": "node ../common/test/js/pugWatch.js",
|
|
20
18
|
"clean": "rimraf dist",
|
|
21
19
|
"clean:all": "rimraf dist node_modules",
|
|
22
20
|
"verify": "npm test && npm run e2e && npm run lint:less && npm run cucumber",
|
|
23
21
|
"test": "jest",
|
|
24
|
-
"e2e": "
|
|
25
|
-
"e2e:one": "
|
|
22
|
+
"e2e": "jest --config=jest.e2e.config.js",
|
|
23
|
+
"e2e:one": "jest --config=jest.e2e.config.js --testNamePattern",
|
|
26
24
|
"cucumber": "cucumber-js",
|
|
27
25
|
"lint:less": "stylelint ./src/main/less/**/*.less",
|
|
28
|
-
"lint:fix-less": "stylelint ./src/main/less/**/*.less --fix"
|
|
26
|
+
"lint:fix-less": "stylelint ./src/main/less/**/*.less --fix",
|
|
27
|
+
"styleguide": "kss-node --source src/main/less --destination dist/styleguide --css ../main.css"
|
|
29
28
|
},
|
|
30
29
|
"keywords": [
|
|
31
30
|
"less",
|
|
32
31
|
"css",
|
|
33
32
|
"pug",
|
|
34
|
-
"
|
|
33
|
+
"selenium",
|
|
35
34
|
"jest"
|
|
36
35
|
],
|
|
37
36
|
"author": "Imre Tabur <imre.tabur@mail.ee>",
|
|
@@ -42,19 +41,18 @@
|
|
|
42
41
|
},
|
|
43
42
|
"homepage": "https://github.com/setmy-info/setmy-info-less",
|
|
44
43
|
"devDependencies": {
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
"less": "^4.3.0",
|
|
44
|
+
"express": "^5.2.1",
|
|
45
|
+
"jest": "^30.4.2",
|
|
46
|
+
"kss": "^2.4.0",
|
|
47
|
+
"less": "^4.6.6",
|
|
50
48
|
"less-plugin-clean-css": "^1.6.0",
|
|
51
|
-
"less-watch-compiler": "^1.
|
|
52
|
-
"playwright": "^1.53.1",
|
|
49
|
+
"less-watch-compiler": "^1.17.5",
|
|
53
50
|
"postcss-less": "^6.0.0",
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"stylelint
|
|
58
|
-
"stylelint-
|
|
51
|
+
"selenium-webdriver": "^4.45.0",
|
|
52
|
+
"pug": "^3.0.4",
|
|
53
|
+
"rimraf": "^6.1.3",
|
|
54
|
+
"stylelint": "^17.13.0",
|
|
55
|
+
"stylelint-config-standard": "^40.0.0",
|
|
56
|
+
"stylelint-less": "^4.2.1"
|
|
59
57
|
}
|
|
60
58
|
}
|
package/playwright.config.js
CHANGED
|
@@ -1,16 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/*
|
|
2
|
+
LEGACY STUB — retained intentionally, kept empty on purpose (not removed).
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
use: {
|
|
11
|
-
headless: false,
|
|
12
|
-
browserName: 'firefox',
|
|
13
|
-
executablePath: firefoxPath
|
|
14
|
-
},
|
|
15
|
-
testMatch: '**/*.e2e.js'
|
|
16
|
-
});
|
|
4
|
+
Playwright is no longer used: e2e tests run via an external Selenium Grid through the Jest
|
|
5
|
+
runner (see jest.e2e.config.js and ../common/test/js/pageHelper.js). This empty config remains
|
|
6
|
+
as a marker of the migration and to avoid breaking any tooling or muscle-memory that still
|
|
7
|
+
references a playwright.config.js. It is deliberately a no-op and exports nothing meaningful.
|
|
8
|
+
*/
|
|
9
|
+
module.exports = {};
|
package/src/main/less/main.less
CHANGED
|
@@ -1,3 +1,28 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Main entry point for the extended module.
|
|
3
|
+
|
|
4
|
+
Distribution model: STANDALONE / DELTA.
|
|
5
|
+
`dist/main.css` contains ONLY this package's own rules — it does not bundle the base
|
|
6
|
+
module's CSS. Consumers load the stylesheets in dependency order:
|
|
7
|
+
|
|
8
|
+
setmy-info-less -> setmy-info-less-extended
|
|
9
|
+
|
|
10
|
+
This package is currently a skeleton: it has no rules of its own yet. The base module's
|
|
11
|
+
`values/index.less` is imported for TOKENS ONLY (LESS variables produce no CSS output), so
|
|
12
|
+
future extended rules can reference shared tokens without re-emitting base styles here.
|
|
13
|
+
Stable NetBeans-style frame presets live in `setmy-info-less-ide`.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
// Extended module
|
|
17
|
+
//
|
|
18
|
+
// Optional additions on top of `setmy-info-less`. Load the base CSS before this file.
|
|
19
|
+
//
|
|
20
|
+
// Markup: <div class="smi-frame"></div>
|
|
21
|
+
//
|
|
22
|
+
// Styleguide: packages.extended
|
|
23
|
+
|
|
24
|
+
/* Base tokens only (no CSS output) — gives future rules access to shared variables */
|
|
1
25
|
@import url("../../../../setmy-info-less/src/main/less/values/index.less");
|
|
2
|
-
@import url("frames/index.less");
|
|
3
26
|
|
|
27
|
+
/* This package's own rules (empty skeleton — add files via utility/index.less) */
|
|
28
|
+
@import url("utility/index.less");
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/* article.less */
|
|
2
|
+
|
|
3
|
+
/* Long-form article text container */
|
|
4
|
+
.articleBody {
|
|
5
|
+
line-height: @articleLineHeight;
|
|
6
|
+
max-width: 75ch;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/* Inline code span */
|
|
10
|
+
.codeInline {
|
|
11
|
+
font-family: monospace;
|
|
12
|
+
background: @gray-100;
|
|
13
|
+
padding-left: 4px;
|
|
14
|
+
padding-right: 4px;
|
|
15
|
+
border-radius: 3px;
|
|
16
|
+
font-size: @smallFontSize;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/* Block code area */
|
|
20
|
+
.codePre {
|
|
21
|
+
font-family: monospace;
|
|
22
|
+
background: @gray-100;
|
|
23
|
+
/* stylelint-disable-next-line declaration-property-value-no-unknown */
|
|
24
|
+
padding: @defaultPadding @doubleDefaultPadding;
|
|
25
|
+
border-radius: @defaultBorderRadius;
|
|
26
|
+
overflow-x: auto;
|
|
27
|
+
line-height: 1.5;
|
|
28
|
+
white-space: pre;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/* Block quotation with left accent border */
|
|
32
|
+
.blockquote {
|
|
33
|
+
/* stylelint-disable-next-line declaration-property-value-no-unknown */
|
|
34
|
+
border-left: 4px solid @blue-300;
|
|
35
|
+
padding-left: @doubleDefaultPadding;
|
|
36
|
+
margin-top: @defaultPadding;
|
|
37
|
+
margin-bottom: @defaultPadding;
|
|
38
|
+
color: @quinaryColor;
|
|
39
|
+
font-style: italic;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/* Definition list term */
|
|
43
|
+
.definitionTerm {
|
|
44
|
+
font-weight: bold;
|
|
45
|
+
margin-top: @defaultPadding;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/* Definition list description */
|
|
49
|
+
.definitionDesc {
|
|
50
|
+
margin-left: @doubleDefaultPadding;
|
|
51
|
+
color: @quinaryColor;
|
|
52
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/* card.less */
|
|
2
|
+
|
|
3
|
+
/* Base content card */
|
|
4
|
+
.card {
|
|
5
|
+
border-style: solid;
|
|
6
|
+
border-width: @defaultBorder;
|
|
7
|
+
border-color: @tertiaryColor;
|
|
8
|
+
border-radius: @defaultBorderRadius;
|
|
9
|
+
padding: @doubleDefaultPadding;
|
|
10
|
+
background: @secondaryBackgroundColor;
|
|
11
|
+
box-sizing: border-box;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/* Card heading */
|
|
15
|
+
.cardTitle {
|
|
16
|
+
font-weight: bold;
|
|
17
|
+
margin-bottom: @defaultPadding;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/* Card body text area */
|
|
21
|
+
.cardBody {
|
|
22
|
+
color: @textColor;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/* Wrapping row of cards — clearfix for floated children */
|
|
26
|
+
.cardGrid {
|
|
27
|
+
overflow: hidden;
|
|
28
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Extended utility classes.
|
|
3
|
+
|
|
4
|
+
Higher-level content patterns moved here from the base module: page sections, modal/overlay,
|
|
5
|
+
cards, and article typography. These reference base design tokens (imported for tokens only by
|
|
6
|
+
this package's main.less) but live in the extended layer so the base module stays minimal.
|
|
7
|
+
*/
|
|
8
|
+
@import url("section.less");
|
|
9
|
+
@import url("modal.less");
|
|
10
|
+
@import url("card.less");
|
|
11
|
+
@import url("article.less");
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/* modal.less */
|
|
2
|
+
|
|
3
|
+
/* Full-screen overlay — blocks background; JS controls visibility toggle */
|
|
4
|
+
.overlay {
|
|
5
|
+
position: fixed;
|
|
6
|
+
/* stylelint-disable declaration-block-no-redundant-longhand-properties */
|
|
7
|
+
top: 0;
|
|
8
|
+
right: 0;
|
|
9
|
+
bottom: 0;
|
|
10
|
+
left: 0;
|
|
11
|
+
/* stylelint-enable declaration-block-no-redundant-longhand-properties */
|
|
12
|
+
background: @overlayBackgroundColor;
|
|
13
|
+
z-index: @z-index-8;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/* Centered dialog box — JS controls open/close; LESS handles size and position only */
|
|
17
|
+
.modal {
|
|
18
|
+
position: fixed;
|
|
19
|
+
top: 50%;
|
|
20
|
+
left: 50%;
|
|
21
|
+
transform: translate(-50%, -50%);
|
|
22
|
+
max-width: 640px;
|
|
23
|
+
width: 90%;
|
|
24
|
+
max-height: 80vh;
|
|
25
|
+
overflow-y: auto;
|
|
26
|
+
background: @secondaryBackgroundColor;
|
|
27
|
+
border-radius: @defaultBorderRadius;
|
|
28
|
+
z-index: @z-index-9;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.modalHeader {
|
|
32
|
+
/* stylelint-disable-next-line declaration-property-value-no-unknown */
|
|
33
|
+
padding: @defaultPadding @doubleDefaultPadding;
|
|
34
|
+
/* stylelint-disable-next-line declaration-property-value-no-unknown */
|
|
35
|
+
border-bottom: 1px solid @tertiaryColor;
|
|
36
|
+
font-weight: bold;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.modalBody {
|
|
40
|
+
padding: @doubleDefaultPadding;
|
|
41
|
+
overflow-y: auto;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.modalFooter {
|
|
45
|
+
/* stylelint-disable-next-line declaration-property-value-no-unknown */
|
|
46
|
+
padding: @defaultPadding @doubleDefaultPadding;
|
|
47
|
+
/* stylelint-disable-next-line declaration-property-value-no-unknown */
|
|
48
|
+
border-top: 1px solid @tertiaryColor;
|
|
49
|
+
text-align: right;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/* Absolute close button — position inside .modal which has position:fixed */
|
|
53
|
+
.modalClose {
|
|
54
|
+
position: absolute;
|
|
55
|
+
top: @defaultPadding;
|
|
56
|
+
right: @defaultPadding;
|
|
57
|
+
cursor: pointer;
|
|
58
|
+
background: transparent;
|
|
59
|
+
border-style: none;
|
|
60
|
+
line-height: 1;
|
|
61
|
+
}
|