@tacc/core-styles 0.5.1
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/.postcssrc.base.yml +48 -0
- package/README.md +244 -0
- package/bin/build.js +40 -0
- package/bin/config.js +90 -0
- package/bin/version.js +24 -0
- package/cli.js +77 -0
- package/dist/branding_logos.css +2 -0
- package/dist/components/README.css +1 -0
- package/dist/components/bootstrap.container.css +2 -0
- package/dist/components/bootstrap.figure.css +2 -0
- package/dist/components/bootstrap.pagination.css +2 -0
- package/dist/components/c-button.css +2 -0
- package/dist/components/c-callout.css +2 -0
- package/dist/components/c-card.css +2 -0
- package/dist/components/c-data-list.css +2 -0
- package/dist/components/c-footer.css +2 -0
- package/dist/components/c-image-map.css +2 -0
- package/dist/components/c-image-map.skin.css +1 -0
- package/dist/components/c-image-map.structure.css +2 -0
- package/dist/components/c-nav.css +2 -0
- package/dist/components/c-page.css +2 -0
- package/dist/components/c-recognition.css +2 -0
- package/dist/components/c-see-all-link.css +2 -0
- package/dist/components/c-show-more.css +2 -0
- package/dist/elements/README.css +1 -0
- package/dist/elements/figure.css +2 -0
- package/dist/elements/html-elements.css +2 -0
- package/dist/elements/tacc-search-bar.css +2 -0
- package/dist/generics/README.css +1 -0
- package/dist/objects/README.css +1 -0
- package/dist/objects/o-flex-item-table-wrap.css +2 -0
- package/dist/objects/o-grid.css +2 -0
- package/dist/objects/o-offset-content.css +2 -0
- package/dist/objects/o-section.css +2 -0
- package/dist/objects/o-site.css +2 -0
- package/dist/settings/README.css +1 -0
- package/dist/settings/border.css +2 -0
- package/dist/settings/color.css +2 -0
- package/dist/settings/font.css +2 -0
- package/dist/settings/max-width.css +2 -0
- package/dist/settings/space.css +2 -0
- package/dist/tools/README.css +1 -0
- package/dist/tools/media-queries.css +1 -0
- package/dist/tools/x-article-link.css +2 -0
- package/dist/tools/x-center.css +2 -0
- package/dist/tools/x-fake-border.css +2 -0
- package/dist/tools/x-grid.css +1 -0
- package/dist/tools/x-layout.css +2 -0
- package/dist/tools/x-overlay.css +1 -0
- package/dist/tools/x-truncate.css +2 -0
- package/dist/trumps/README.css +1 -0
- package/dist/trumps/icon.css +2 -0
- package/dist/trumps/icon.fonts.css +2 -0
- package/dist/trumps/s-article-list.css +2 -0
- package/dist/trumps/s-article-preview.css +2 -0
- package/dist/trumps/s-blockquote.css +2 -0
- package/dist/trumps/s-breadcrumbs.css +2 -0
- package/dist/trumps/s-cms-nav.css +1 -0
- package/dist/trumps/s-document.css +2 -0
- package/dist/trumps/s-footer.css +2 -0
- package/dist/trumps/s-guide-doc.css +2 -0
- package/dist/trumps/s-header.css +2 -0
- package/dist/trumps/s-inline-dl.css +2 -0
- package/dist/trumps/s-portal-nav.css +2 -0
- package/dist/trumps/s-style-guide.css +2 -0
- package/dist/trumps/s-system-specs.css +2 -0
- package/dist/trumps/tacc-search-bar.css +2 -0
- package/dist/trumps/u-empty.css +1 -0
- package/dist/trumps/u-hide.css +2 -0
- package/dist/trumps/u-nested-text-content.css +2 -0
- package/index.js +45 -0
- package/package.json +49 -0
- package/source/README.md +8 -0
- package/source/_imports/README.md +47 -0
- package/source/_imports/branding_logos.css +73 -0
- package/source/_imports/components/README.css +26 -0
- package/source/_imports/components/bootstrap.container.css +23 -0
- package/source/_imports/components/bootstrap.figure.css +17 -0
- package/source/_imports/components/bootstrap.pagination.css +29 -0
- package/source/_imports/components/c-button.css +210 -0
- package/source/_imports/components/c-button.html +31 -0
- package/source/_imports/components/c-callout.css +183 -0
- package/source/_imports/components/c-callout.html +52 -0
- package/source/_imports/components/c-card.css +57 -0
- package/source/_imports/components/c-card.html +32 -0
- package/source/_imports/components/c-data-list.css +222 -0
- package/source/_imports/components/c-data-list.html +145 -0
- package/source/_imports/components/c-footer.css +67 -0
- package/source/_imports/components/c-footer.html +3 -0
- package/source/_imports/components/c-image-map.css +26 -0
- package/source/_imports/components/c-image-map.html +4 -0
- package/source/_imports/components/c-image-map.skin.css +1 -0
- package/source/_imports/components/c-image-map.structure.css +285 -0
- package/source/_imports/components/c-nav.css +164 -0
- package/source/_imports/components/c-nav.html +45 -0
- package/source/_imports/components/c-page.css +95 -0
- package/source/_imports/components/c-page.html +192 -0
- package/source/_imports/components/c-recognition.css +102 -0
- package/source/_imports/components/c-see-all-link.css +52 -0
- package/source/_imports/components/c-show-more.css +50 -0
- package/source/_imports/elements/README.css +47 -0
- package/source/_imports/elements/figure.css +23 -0
- package/source/_imports/elements/html-elements.css +386 -0
- package/source/_imports/elements/tacc-search-bar.css +19 -0
- package/source/_imports/elements/tacc-search-bar.md +20 -0
- package/source/_imports/generics/README.css +24 -0
- package/source/_imports/generics/README.md +9 -0
- package/source/_imports/objects/README.css +22 -0
- package/source/_imports/objects/o-flex-item-table-wrap.css +50 -0
- package/source/_imports/objects/o-grid.css +131 -0
- package/source/_imports/objects/o-grid.html +64 -0
- package/source/_imports/objects/o-offset-content.css +51 -0
- package/source/_imports/objects/o-section.css +270 -0
- package/source/_imports/objects/o-section.html +73 -0
- package/source/_imports/objects/o-site.css +26 -0
- package/source/_imports/objects/o-site.html +11 -0
- package/source/_imports/settings/README.css +65 -0
- package/source/_imports/settings/border.css +15 -0
- package/source/_imports/settings/color.css +30 -0
- package/source/_imports/settings/font.css +49 -0
- package/source/_imports/settings/max-width.css +31 -0
- package/source/_imports/settings/space.css +36 -0
- package/source/_imports/tools/README.css +17 -0
- package/source/_imports/tools/media-queries.css +48 -0
- package/source/_imports/tools/x-article-link.css +62 -0
- package/source/_imports/tools/x-center.css +60 -0
- package/source/_imports/tools/x-fake-border.css +72 -0
- package/source/_imports/tools/x-grid.css +116 -0
- package/source/_imports/tools/x-layout.css +86 -0
- package/source/_imports/tools/x-overlay.css +28 -0
- package/source/_imports/tools/x-truncate.css +47 -0
- package/source/_imports/trumps/README.css +79 -0
- package/source/_imports/trumps/icon.css +31 -0
- package/source/_imports/trumps/icon.fonts.css +316 -0
- package/source/_imports/trumps/s-article-list.css +240 -0
- package/source/_imports/trumps/s-article-list.html +20 -0
- package/source/_imports/trumps/s-article-preview.css +253 -0
- package/source/_imports/trumps/s-article-preview.html +30 -0
- package/source/_imports/trumps/s-blockquote.css +45 -0
- package/source/_imports/trumps/s-breadcrumbs.css +69 -0
- package/source/_imports/trumps/s-cms-nav.css +11 -0
- package/source/_imports/trumps/s-cms-nav.html +41 -0
- package/source/_imports/trumps/s-document.css +142 -0
- package/source/_imports/trumps/s-footer.css +16 -0
- package/source/_imports/trumps/s-footer.html +3 -0
- package/source/_imports/trumps/s-guide-doc.css +77 -0
- package/source/_imports/trumps/s-header.css +181 -0
- package/source/_imports/trumps/s-header.html +46 -0
- package/source/_imports/trumps/s-inline-dl.css +35 -0
- package/source/_imports/trumps/s-portal-nav.css +20 -0
- package/source/_imports/trumps/s-portal-nav.html +37 -0
- package/source/_imports/trumps/s-style-guide.css +52 -0
- package/source/_imports/trumps/s-system-specs.css +123 -0
- package/source/_imports/trumps/tacc-search-bar.css +108 -0
- package/source/_imports/trumps/tacc-search-bar.html +11 -0
- package/source/_imports/trumps/u-empty.css +18 -0
- package/source/_imports/trumps/u-hide.css +27 -0
- package/source/_imports/trumps/u-nested-text-content.css +14 -0
- package/source/_tests/README.md +33 -0
- package/source/_tests/postcss-extend.css +80 -0
- package/source/_tests/postcss-preset-env.css +75 -0
- package/source/_tests.css +12 -0
- package/source/_themes/README.md +5 -0
- package/source/_themes/TODO.md +4 -0
- package/source/_themes/default.json +21 -0
- package/source/_themes/has-dark-logo.json +21 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
plugins:
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
postcss-import:
|
|
5
|
+
path:
|
|
6
|
+
- 'source'
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
postcss-extend: {}
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
# https://github.com/TACC/Core-CMS/blob/70a1ca3/conf/css/.postcssrc.yml#L6-L12
|
|
13
|
+
postcss-env-function:
|
|
14
|
+
importFrom:
|
|
15
|
+
- 'source/_themes/default.json'
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
postcss-preset-env:
|
|
19
|
+
|
|
20
|
+
# https://github.com/csstools/postcss-preset-env#features
|
|
21
|
+
stage: false
|
|
22
|
+
|
|
23
|
+
# https://github.com/csstools/postcss-preset-env/blob/master/src/lib/plugins-by-id.js#L35
|
|
24
|
+
features:
|
|
25
|
+
custom-media-queries: true
|
|
26
|
+
media-query-ranges: true
|
|
27
|
+
# RFE: Fix bug on the Internet so we can use these reliably
|
|
28
|
+
# SEE: https://github.com/postcss/postcss-custom-selectors/issues/40
|
|
29
|
+
custom-selectors: true
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
cssnano:
|
|
33
|
+
preset:
|
|
34
|
+
- 'default'
|
|
35
|
+
-
|
|
36
|
+
# Both of these are disabled to allow manual CSS build tests
|
|
37
|
+
# The `discardDuplicates` is disabled to prevent hiding duplicate CSS
|
|
38
|
+
discardDuplicates:
|
|
39
|
+
exclude: true
|
|
40
|
+
mergeRules:
|
|
41
|
+
exclude: true
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
postcss-banner:
|
|
46
|
+
banner: 'no build id'
|
|
47
|
+
inline: true
|
|
48
|
+
important: true
|
package/README.md
ADDED
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
# TACC Core Styles
|
|
2
|
+
|
|
3
|
+
The shared styles for TACC WMA Workspace Portals & Websites
|
|
4
|
+
|
|
5
|
+
> __Notice__: Currently only [Core CMS] is using these styles.
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
## Related Repositories
|
|
9
|
+
|
|
10
|
+
- [Core CMS], the base CMS code for TACC WMA CMS Websites
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
## External Project Usage
|
|
14
|
+
|
|
15
|
+
### CLI
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
Usage: core-styles [options] [command]
|
|
19
|
+
|
|
20
|
+
Options:
|
|
21
|
+
-V, --version output the version number
|
|
22
|
+
-h, --help display help for command
|
|
23
|
+
|
|
24
|
+
Commands:
|
|
25
|
+
build [options] build stylesheets with TACC standard process:
|
|
26
|
+
- "post-css" plugins
|
|
27
|
+
- custom input path
|
|
28
|
+
- custom output path
|
|
29
|
+
- custom configs
|
|
30
|
+
- prepend build id
|
|
31
|
+
|
|
32
|
+
help [command] display help for command
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
#### Build Command
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
Usage: core-styles build [options]
|
|
39
|
+
|
|
40
|
+
build stylesheets with TACC standard process:
|
|
41
|
+
- "post-css" plugins
|
|
42
|
+
- custom input path
|
|
43
|
+
- custom output path
|
|
44
|
+
- custom configs
|
|
45
|
+
- prepend build id
|
|
46
|
+
|
|
47
|
+
Options:
|
|
48
|
+
-i, --input <path> parse source at which path¹
|
|
49
|
+
-o, --output <path> output CSS files to which path¹
|
|
50
|
+
-v, --verbose print more info during build process
|
|
51
|
+
-c, --custom-configs <paths...> extend base config with YAML files²³
|
|
52
|
+
-b, --build-id <identifier> any value to identify the build (default: version of app)
|
|
53
|
+
-m, --base-mirror-dir <path> if input folder structure is mirrored, this path is not⁴
|
|
54
|
+
-h, --help display help for command
|
|
55
|
+
|
|
56
|
+
Notes:
|
|
57
|
+
¹ Folder structure of "--input-dir" mirrored in "--output-dir" i.e.
|
|
58
|
+
|
|
59
|
+
given input
|
|
60
|
+
- "input_dir/x.css"
|
|
61
|
+
- "input_dir/sub_dir_a/y.css"
|
|
62
|
+
- "input_dir"
|
|
63
|
+
- "input_dir/**/*"
|
|
64
|
+
|
|
65
|
+
expect output
|
|
66
|
+
- "output_dir/x.css"
|
|
67
|
+
- "output_dir/sub_dir_a/y.css"
|
|
68
|
+
- "output_dir/..." (all files from input not in sub-directories)
|
|
69
|
+
- "output_dir/.../..." (all files from input as nested)
|
|
70
|
+
|
|
71
|
+
² The file formats are like ".postcssrc.yml" from
|
|
72
|
+
https://github.com/postcss/postcss-load-config#postcssrc
|
|
73
|
+
|
|
74
|
+
³ The first file is merged on top of the base config.
|
|
75
|
+
Each successive file overwrites the file before it.
|
|
76
|
+
|
|
77
|
+
⁴ Given '-i "a/b*" -o "x/" -m "a/"' output is "x/b/...".
|
|
78
|
+
Given '-i "a/b*" -o "x/" -m "a/b/"' output is "x/...".
|
|
79
|
+
Given '-i "a/b*" -o "x/" -m "not-a/"' output is "x/abs-path-to-input/...".
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Module
|
|
83
|
+
|
|
84
|
+
1. Install the package with any package manager e.g.:
|
|
85
|
+
- `npm install TACC/Core-Styles`
|
|
86
|
+
- `yarn add TACC/Core-Styles`
|
|
87
|
+
|
|
88
|
+
2. Import stylesheets of either type:
|
|
89
|
+
- pre-compiled, from `/dist`
|
|
90
|
+
- source files, from `/source`
|
|
91
|
+
|
|
92
|
+
#### Build Script
|
|
93
|
+
|
|
94
|
+
```js
|
|
95
|
+
const buildStylesheets = require('core-styles');
|
|
96
|
+
|
|
97
|
+
buildStylesheets(
|
|
98
|
+
// Parse CSS files from which directory (required)
|
|
99
|
+
`path/to/your/css/src`,
|
|
100
|
+
// Output CSS files to which directory (required)
|
|
101
|
+
`path/to/put/css/output`, {
|
|
102
|
+
// List of YAML config files (optional)
|
|
103
|
+
// (The first file is merged on top of the base config.)
|
|
104
|
+
// (Each successive file overwrites the file before it.)
|
|
105
|
+
// SEE: https://github.com/postcss/postcss-load-config#postcssrc
|
|
106
|
+
customConfigs: [
|
|
107
|
+
// The "base" config is `/.postcssrc.base.yml`
|
|
108
|
+
`path/to/custom/configthat/extends/base/.postcssrc.yml`,
|
|
109
|
+
`path/to/custom/config/that/extends/above/.postcssrc.yml`
|
|
110
|
+
],
|
|
111
|
+
// Print more info from build log (optional, default: false)
|
|
112
|
+
verbose: true,
|
|
113
|
+
// Print version of this software (optional, default: false)
|
|
114
|
+
version: true,
|
|
115
|
+
// Extension of CSS files to parse (optional, default: "css")
|
|
116
|
+
fileExt: 'css',
|
|
117
|
+
// Any value to help identify the build (optional, default: app version)
|
|
118
|
+
buildId: process.env.npm_package_version + someUniqueId
|
|
119
|
+
}
|
|
120
|
+
);
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Local Development Setup
|
|
124
|
+
|
|
125
|
+
### Prequisites for Building the Styles
|
|
126
|
+
|
|
127
|
+
* Nodejs 16.x
|
|
128
|
+
|
|
129
|
+
> __Future__: The Core Styles will be rendered via a pattern library software.
|
|
130
|
+
|
|
131
|
+
### Code Configuration
|
|
132
|
+
|
|
133
|
+
Code configuration happens in repos that use these styles.
|
|
134
|
+
|
|
135
|
+
### Previewing the Styles
|
|
136
|
+
|
|
137
|
+
1. [Install][npm-install] the dependencies:
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
npm ci
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
> __Future__:
|
|
144
|
+
>
|
|
145
|
+
> 2. Build stylesheets + Run the pattern library:
|
|
146
|
+
>
|
|
147
|
+
> ```bash
|
|
148
|
+
> npm start
|
|
149
|
+
> ```
|
|
150
|
+
>
|
|
151
|
+
> 3. Open the web interface.
|
|
152
|
+
>
|
|
153
|
+
> The build command will output the URL (and may even open it for you).
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
[npm-install]: https://docs.npmjs.com/cli/v8/commands/npm-ci
|
|
157
|
+
|
|
158
|
+
### Source Files
|
|
159
|
+
|
|
160
|
+
If you changes files in a `source/` directory, you may need to follow some of these steps.
|
|
161
|
+
|
|
162
|
+
#### Quick Start
|
|
163
|
+
|
|
164
|
+
1. _(optional)_ Make changes to `/source` files.
|
|
165
|
+
2. Build the styles: `npm run build`
|
|
166
|
+
|
|
167
|
+
> __Future__: 2. Build and preview the styles: `npm start`
|
|
168
|
+
|
|
169
|
+
3. _(to debug)_ Review respective `/dist` files' content.
|
|
170
|
+
|
|
171
|
+
#### How to Just Build Stylesheets
|
|
172
|
+
|
|
173
|
+
You can build stylesheets __from__ source files __in__ `source` directory __to__ compiled files __in__ `dist` directory.
|
|
174
|
+
|
|
175
|
+
0. (Optional) Set version (for preserved comment):
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
npm run version -- --build-id="$(git describe --always)"
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
1. Build stylesheets:
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
npm run build
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
## Testing
|
|
189
|
+
|
|
190
|
+
Plugin testing is done manually. Run `npm run build` from root folder in this project, then review output in `/dist/_tests.css`, to ensure plugins are working correctly.
|
|
191
|
+
|
|
192
|
+
Style testing is done manually. Run `npm start` from root folder in this project, then review output at web interface, to ensure styles are rendering correctly.
|
|
193
|
+
|
|
194
|
+
### Production Deployment
|
|
195
|
+
|
|
196
|
+
The Core Styles are not deployed alone _yet_. ¹
|
|
197
|
+
|
|
198
|
+
_For now_, the stylesheets are acquired or accessed by other repositories.
|
|
199
|
+
|
|
200
|
+
| Repo | Usage |
|
|
201
|
+
| - | - |
|
|
202
|
+
| __[Core CMS]__ | via CLI installed on test branch |
|
|
203
|
+
| __[Core CMS Pattern Library]__ | not accessing styles [_yet_][research-pattern-lib] ¹ |
|
|
204
|
+
|
|
205
|
+
<sub>¹ A repo that is, or will be, in [Core CMS Pattern Library] should load these styles __and__ build a pattern library.</sub>
|
|
206
|
+
|
|
207
|
+
[Core CMS Pattern Library]: https://github.com/wesleyboar/Core-CMS-Pattern-Library
|
|
208
|
+
[research-pattern-lib]: https://confluence.tacc.utexas.edu/x/FADMBQ
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
## Contributing
|
|
212
|
+
|
|
213
|
+
### Development Workflow
|
|
214
|
+
|
|
215
|
+
We use a modifed version of [GitFlow](https://datasift.github.io/gitflow/IntroducingGitFlow.html) as our development workflow. Our [development site](https://dev.cep.tacc.utexas.edu) (accessible behind the TACC Network) is always up-to-date with `main`, while the [production site](https://prod.cep.tacc.utexas.edu) is built to a hashed commit tag.
|
|
216
|
+
- Feature branches contain major updates, bug fixes, and hot fixes with respective branch prefixes:
|
|
217
|
+
- `task/` for features and updates
|
|
218
|
+
- `bug/` for bugfixes
|
|
219
|
+
- `fix/` for hotfixes
|
|
220
|
+
|
|
221
|
+
### Best Practices
|
|
222
|
+
|
|
223
|
+
Sign your commits ([see this link](https://help.github.com/en/github/authenticating-to-github/managing-commit-signature-verification) for help)
|
|
224
|
+
|
|
225
|
+
### Publishing Workflow
|
|
226
|
+
|
|
227
|
+
1. Create new branch for version bump.
|
|
228
|
+
1. Update `CHANGELOG.md`.
|
|
229
|
+
1. Update version in `package.json`.
|
|
230
|
+
1. Update version in `package-lock.json` by running `npm i --package-lock-only`.
|
|
231
|
+
1. Commit, push, PR, review, merge.
|
|
232
|
+
1. Create new GitHub Release.
|
|
233
|
+
|
|
234
|
+
### Resources
|
|
235
|
+
|
|
236
|
+
* [Learn Markdown](https://bitbucket.org/tutorials/markdowndemo)
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
<!-- Link Aliases -->
|
|
240
|
+
|
|
241
|
+
[Core Portal Deployments]: https://github.com/TACC/Core-Portal-Deployments
|
|
242
|
+
[Camino]: https://github.com/TACC/Camino
|
|
243
|
+
[Core CMS]: https://github.com/TACC/Core-CMS
|
|
244
|
+
[Core Portal]: https://github.com/TACC/Core-Portal
|
package/bin/build.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/** Export internal function used by this package to build styles */
|
|
4
|
+
|
|
5
|
+
const cmd = require('node-cmd');
|
|
6
|
+
|
|
7
|
+
// SEE: https://stackoverflow.com/a/63530170
|
|
8
|
+
process.env.FORCE_COLOR = true
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Build stylesheets from source CSS
|
|
14
|
+
* @param {string} input - Parse CSS files from which path
|
|
15
|
+
* @param {string} output - Output CSS files to which path
|
|
16
|
+
* @param {object} [opts={}] - Options
|
|
17
|
+
* @param {string} [opts.baseMirrorDir] - Do not add this path when mirroring
|
|
18
|
+
* @param {string} [opts.configDir] - Custom config directory
|
|
19
|
+
* @param {boolean} [opts.verbose=false] - To print more info from build log
|
|
20
|
+
* @param {boolean} [opts.verbose=false] - To print more info from build log
|
|
21
|
+
*/
|
|
22
|
+
function build(input, output, opts = {}) {
|
|
23
|
+
// Get data
|
|
24
|
+
const configDir = opts.configDir || `${__dirname}/../`;
|
|
25
|
+
const verbose = (opts.verbose === true) ? '--verbose' : '';
|
|
26
|
+
const base = (opts.baseMirrorDir) ? `--base "${opts.baseMirrorDir}"` : '';
|
|
27
|
+
|
|
28
|
+
// Build command
|
|
29
|
+
const command = `postcss "${input}" --dir "${output}" ${verbose} --config "${configDir}" ${base}`;
|
|
30
|
+
|
|
31
|
+
console.log(`Building stylesheet(s) to ${output}`);
|
|
32
|
+
|
|
33
|
+
// Run command
|
|
34
|
+
cmd.runSync(command);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
// Export
|
|
40
|
+
module.exports = build;
|
package/bin/config.js
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/** Export internal function used by this package to configure build */
|
|
4
|
+
|
|
5
|
+
const fs = require('fs');
|
|
6
|
+
const merge = require('merge-lite');
|
|
7
|
+
const yaml = require('js-yaml');
|
|
8
|
+
|
|
9
|
+
const BASE_CONFIG_FILE = `${__dirname}/../.postcssrc.base.yml`;
|
|
10
|
+
const NEW_CONFIG_FILE = `${__dirname}/../.postcssrc.yml`;
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Save base config as auto-loaded file (also can overwrite with custom values)
|
|
16
|
+
* @param {array.string} [customConfigFiles=[]] - List of YAML config file paths
|
|
17
|
+
* (The first file is merged on top of the base config.)
|
|
18
|
+
* (Each successive file overwrites the file before it.)
|
|
19
|
+
* @param {string} [cssVersion] - A versioning identifier for this build
|
|
20
|
+
* @see https://github.com/postcss/postcss-load-config#postcssrc
|
|
21
|
+
*/
|
|
22
|
+
function config(customConfigFiles = [], cssVersion) {
|
|
23
|
+
// Prepare data
|
|
24
|
+
const configFiles = [ BASE_CONFIG_FILE, ...customConfigFiles ];
|
|
25
|
+
const configObjects = [];
|
|
26
|
+
let newJson;
|
|
27
|
+
|
|
28
|
+
// Initialize final config file
|
|
29
|
+
emptyOrCreateFile( NEW_CONFIG_FILE );
|
|
30
|
+
|
|
31
|
+
// Merge configs in order
|
|
32
|
+
configFiles.forEach( nextFile => {
|
|
33
|
+
newJson = getConfigObject( nextFile );
|
|
34
|
+
configObjects.push( newJson );
|
|
35
|
+
});
|
|
36
|
+
mergedJson = merge( ...configObjects );
|
|
37
|
+
|
|
38
|
+
// Update version property
|
|
39
|
+
const updatedJson = updateVersion( mergedJson, cssVersion );
|
|
40
|
+
const configYaml = yaml.dump( updatedJson );
|
|
41
|
+
|
|
42
|
+
// Write final config file
|
|
43
|
+
fs.writeFileSync( NEW_CONFIG_FILE, configYaml, 'utf8');
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Update the value for the CSS version in given config data
|
|
50
|
+
* @param {object} config - The config data in which to update the version
|
|
51
|
+
* @param {string} version - The version identifier
|
|
52
|
+
* @return {object} - Updated config
|
|
53
|
+
*/
|
|
54
|
+
function updateVersion( config, version ) {
|
|
55
|
+
console.log(`Tagging CSS version as ${version}`);
|
|
56
|
+
|
|
57
|
+
config['plugins']['postcss-banner']['banner'] = version;
|
|
58
|
+
|
|
59
|
+
return config;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Get JSON from YAML config file
|
|
66
|
+
* @param {string} filePath - YAML config file
|
|
67
|
+
* @return {object} - Config as JSON
|
|
68
|
+
*/
|
|
69
|
+
function getConfigObject( filePath ) {
|
|
70
|
+
const config = fs.readFileSync( filePath, 'utf8');
|
|
71
|
+
const json = yaml.load( config );
|
|
72
|
+
|
|
73
|
+
return json;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* If file exists, empty it; otherwise, create it
|
|
80
|
+
* @param {string} [filePath] - The file to empty or create
|
|
81
|
+
* @see https://stackoverflow.com/a/29016268/11817077
|
|
82
|
+
*/
|
|
83
|
+
function emptyOrCreateFile( filePath ) {
|
|
84
|
+
fs.closeSync( fs.openSync( filePath, 'w') );
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
// Export
|
|
90
|
+
module.exports = config;
|
package/bin/version.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/** Create CSS version based on lifecycle app data and given data */
|
|
4
|
+
|
|
5
|
+
const package = require(process.env.npm_package_json || '../package.json');
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Create version from app data and given data
|
|
10
|
+
* @param {string} [buildId] - Any value to identify the build
|
|
11
|
+
*/
|
|
12
|
+
function create(buildId) {
|
|
13
|
+
const appName = package.name;
|
|
14
|
+
const appVersion = buildId || package.version + '+';
|
|
15
|
+
const appLicense = package.license;
|
|
16
|
+
const appWebsite = package.homepage.replace('https://', '');
|
|
17
|
+
|
|
18
|
+
return `${appName} ${appVersion} | ${appLicense} | ${appWebsite}`;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
// Export
|
|
24
|
+
module.exports = create;
|
package/cli.js
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/** CLI to custom build stylesheets and create a version stylesheet */
|
|
4
|
+
|
|
5
|
+
const { program, Option } = require('commander');
|
|
6
|
+
|
|
7
|
+
const package = require(process.env.npm_package_json || './package.json');
|
|
8
|
+
|
|
9
|
+
const { buildStylesheets } = require('./index.js');
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
// Setup
|
|
14
|
+
program
|
|
15
|
+
.name('core-styles')
|
|
16
|
+
.version(package.version)
|
|
17
|
+
.showHelpAfterError('(add --help for additional information)');
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
// Build Command
|
|
22
|
+
program
|
|
23
|
+
.command('build')
|
|
24
|
+
.description(`build stylesheets with TACC standard process:
|
|
25
|
+
- "post-css" plugins
|
|
26
|
+
- custom input path
|
|
27
|
+
- custom output path
|
|
28
|
+
- custom configs
|
|
29
|
+
- prepend build id
|
|
30
|
+
`)
|
|
31
|
+
.requiredOption('-i, --input <path>',
|
|
32
|
+
'parse source at which path¹')
|
|
33
|
+
.requiredOption('-o, --output <path>',
|
|
34
|
+
'output CSS files to which path¹')
|
|
35
|
+
.option('-v, --verbose',
|
|
36
|
+
'print more info during build process')
|
|
37
|
+
.option('-c, --custom-configs <paths...>',
|
|
38
|
+
`extend base config with YAML files²³`)
|
|
39
|
+
.option('-b, --build-id <identifier>',
|
|
40
|
+
'any value to identify the build (default: version of app)')
|
|
41
|
+
.option('-m, --base-mirror-dir <path>',
|
|
42
|
+
'if input folder structure is mirrored, this path is not⁴')
|
|
43
|
+
.addHelpText('after', `
|
|
44
|
+
Notes:
|
|
45
|
+
¹ Folder structure of "--input-dir" mirrored in "--output-dir" i.e.
|
|
46
|
+
|
|
47
|
+
given input
|
|
48
|
+
- "input_dir/x.css"
|
|
49
|
+
- "input_dir/sub_dir_a/y.css"
|
|
50
|
+
- "input_dir"
|
|
51
|
+
- "input_dir/**/*"
|
|
52
|
+
|
|
53
|
+
expect output
|
|
54
|
+
- "output_dir/x.css"
|
|
55
|
+
- "output_dir/sub_dir_a/y.css"
|
|
56
|
+
- "output_dir/..." (all files from input not in sub-directories)
|
|
57
|
+
- "output_dir/.../..." (all files from input as nested)
|
|
58
|
+
|
|
59
|
+
² The file formats are like ".postcssrc.yml" from
|
|
60
|
+
https://github.com/postcss/postcss-load-config#postcssrc
|
|
61
|
+
|
|
62
|
+
³ The first file is merged on top of the base config.
|
|
63
|
+
Each successive file overwrites the file before it.
|
|
64
|
+
|
|
65
|
+
⁴ Given '-i "a/b*" -o "x/" -m "a/"' output is "x/b/...".
|
|
66
|
+
Given '-i "a/b*" -o "x/" -m "a/b/"' output is "x/...".
|
|
67
|
+
Given '-i "a/b*" -o "x/" -m "not-a/"' output is "x/abs-path-to-input/...".
|
|
68
|
+
`).action( programOpts => {
|
|
69
|
+
const { input, output, ...opts } = programOpts;
|
|
70
|
+
|
|
71
|
+
buildStylesheets( input, output, opts );
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
// Parse
|
|
77
|
+
program.parse(process.argv);
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! @tacc/core-styles 2.0.0+ | MIT | github.com/TACC/Core-Styles */
|
|
2
|
+
.branding-header{--branding-logo-height:24px;display:flex;align-items:center;justify-content:center;height:49px;background-color:var(--global-color-primary--xx-dark);color:var(--global-color-primary--xx-light);border-bottom:1px solid var(--global-color-primary--normal)}.branding-seperator{width:1px;height:100%;max-height:var(--branding-logo-height);border-left:1px solid var(--global-color-primary--xx-light);margin:0 15px;vertical-align:middle}.branding-logo{height:30px;margin:0;padding:0;border:none}.branding-logo--short{height:var(--branding-logo-height)}.branding-logo--tall{height:35px}.branding-nsf{height:35px}.branding-tacc{height:var(--branding-logo-height)}.branding-utaustin{height:var(--branding-logo-height)}.portal-logo{float:left;height:40px;margin:0;padding:0;border:none}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! @tacc/core-styles 2.0.0+ | MIT | github.com/TACC/Core-Styles */
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! @tacc/core-styles 2.0.0+ | MIT | github.com/TACC/Core-Styles */
|
|
2
|
+
.figure>img,figure>img{margin-bottom:20px}.figure-caption,figcaption{color:var(--global-color-primary--dark);font-size:var(--global-font-size--medium);border-top:var(--global-border-width--normal) solid var(--global-color-primary--normal);padding-top:12px}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! @tacc/core-styles 2.0.0+ | MIT | github.com/TACC/Core-Styles */
|
|
2
|
+
.c-page-list,.pagination{--item-width:2em;--item-buffer:3px;--item-border:var(--global-border-width--normal)}.c-page-list,.pagination{display:flex;flex-direction:row;align-items:baseline;list-style:none;font-size:14px}ul.c-page-list{list-style:none}.c-page-link--always-click{position:relative;box-sizing:content-box}.c-page-link--always-click:after,.c-page-link--always-click:before{--width:var(--item-buffer);--vert-offset:calc(var(--item-border)*-1);--horz-offset:calc(100% + var(--item-border));content:"";width:var(--width);position:absolute;top:var(--vert-offset);bottom:var(--vert-offset)}.c-page-link--always-click.c-button{overflow:visible}.c-page-link--always-click:before{right:var(--horz-offset)}.c-page-link--always-click:after{left:var(--horz-offset)}.c-page-item{margin-inline:var(--item-buffer)}.c-page-item:first-child{margin-left:0}.c-page-item:last-child{margin-right:0}.c-page-item--etcetera{min-width:var(--item-width);margin-inline:2px;text-align:center;cursor:default}.c-page-end,.pagination a,.pagination span{padding:4px 12px}.c-page-link{padding:5px 0;min-width:var(--item-width);line-height:1.2}.pagination{margin-block:var(--global-space--x-large);width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;margin-inline:auto}.pagination a,.pagination span{padding-block:0}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! @tacc/core-styles 2.0.0+ | MIT | github.com/TACC/Core-Styles */
|
|
2
|
+
[class*=c-button]{--min-width:75px;--mid-width:110px;--max-width:130px}.c-button{display:inline-block;border-width:var(--global-border-width--normal);border-style:solid;font-weight:500;font-size:.75rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.c-button:disabled{opacity:.5;pointer-events:none}.c-button:not(:disabled){cursor:pointer}.c-button:active:not(:disabled){transform:translateY(1px)}.c-button--primary,.c-button--secondary{padding:6px 18px;min-width:var(--min-width);max-width:var(--max-width)}.c-button--primary:hover{color:var(--global-color-primary--xx-light);background-color:var(--global-color-accent--dark);border-color:var(--global-color-accent--dark)}.c-button--primary:active{color:var(--global-color-primary--xx-light);background-color:var(--global-color-accent--x-dark);border-color:var(--global-color-accent--dark);border-width:var(--global-border-width--normal);outline:var(--global-border-width--normal) solid var(--global-color-accent--dark)}.c-button--primary:focus:not(:active){color:var(--global-color-primary--xx-light);background-color:var(--global-color-accent--normal);border-color:var(--global-color-primary--xx-light);outline:var(--global-border-width--normal) solid var(--global-color-accent--light)}.c-button--primary:not(.c-button:hover,.c-button:focus,.c-button:active){color:var(--global-color-primary--xx-light);background-color:var(--global-color-accent--normal);border-color:var(--global-color-accent--normal)}.c-button--secondary:hover{color:var(--global-color-primary--xx-dark);background-color:var(--global-color-primary--light);border-color:var(--global-color-accent--dark)}.c-button--secondary:active{color:var(--global-color-primary--xx-dark);background-color:var(--global-color-accent--x-light);border-color:var(--global-color-accent--dark);border-width:var(--global-border-width--normal);outline:var(--global-border-width--normal) solid var(--global-color-accent--dark)}.c-button--secondary:focus:not(:active){color:var(--global-color-primary--xx-dark);background-color:var(--global-color-primary--light);border-color:var(--global-color-primary--xx-dark);outline:var(--global-border-width--thick) solid var(--global-color-accent--light)}.c-button--secondary:not(.c-button:hover,.c-button:focus,.c-button:active){color:var(--global-color-primary--xx-dark);background-color:var(--global-color-primary--xx-light);border-color:var(--global-color-primary--xx-dark)}.c-button--is-active:not(.c-button:hover,.c-button:focus,.c-button:active){background-color:var(--global-color-accent--x-light)}.c-button--as-link{color:var(--global-color-accent--dark);background:unset;border:unset;padding-inline:unset}.c-button--as-link:not(:disabled):hover{text-decoration:underline}.c-button--width-short{width:var(--min-width)}.c-button--width-medium{width:var(--mid-width)}.c-button--width-long{width:var(--max-width)}.c-button--size-small{min-width:0;padding:3px 9px;line-height:1}.c-button__icon--before{margin-right:.5em}.c-button__icon--after{margin-left:.5em}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! @tacc/core-styles 2.0.0+ | MIT | github.com/TACC/Core-Styles */
|
|
2
|
+
.x-article-link-stretch{position:absolute;height:100%;width:100%;top:0;left:0;overflow:hidden}.x-article-link-stretch--gapless{width:calc(100% + 30px);left:-15px}.x-article-link-hover,a.c-callout:hover{--outline-offset:1em;outline:1px solid var(--global-color-accent--normal);outline-offset:var(--outline-offset)}.x-article-link-hover--gapless{--outline-offset:0}a.c-callout:active{outline:1px dotted var(--global-color-accent--normal)}.c-callout{--figure-width--no-units:310;--figure-height--no-units:130;display:grid}.c-callout>:is(img,figure){grid-area:figure}.c-callout>:is(h1,h2,h3,h4,h5,h6){grid-area:title}.c-callout>p{grid-area:desc}.c-callout>p{margin-top:0}.c-callout>figure>img,.c-callout>img{-o-object-fit:cover;object-fit:cover;aspect-ratio:var(--figure-width--no-units)/var(--figure-height--no-units)}.c-callout>figure{width:-webkit-min-content;width:-moz-min-content;width:min-content}@media only screen and (min-width:768px){.c-callout{padding:20px;text-align:left;grid-template-columns:-webkit-min-content auto;grid-template-columns:min-content auto;grid-template-rows:auto -webkit-min-content;grid-template-rows:auto min-content;grid-template-areas:"figure title" "figure desc"}.c-callout>figure{margin:0}.c-callout>:is(img,figure){margin-right:40px}.c-callout>figure>img,.c-callout>img{width:calc(var(--figure-width--no-units)*1px);max-width:-webkit-fit-content;max-width:-moz-fit-content;max-width:fit-content}.c-callout>img{min-height:100%}}@media only screen and (max-width:767px){.c-callout{padding:20px 40px;text-align:center;grid-template-areas:"figure" "title" "desc"}.c-callout>figure{margin:0}.c-callout>:is(img,figure){margin-bottom:20px}.c-callout>figure>img,.c-callout>img{height:calc(var(--figure-height--no-units)*1px);max-height:-webkit-fit-content;max-height:-moz-fit-content;max-height:fit-content}.c-callout>img{min-width:100%}}.c-callout>:is(img,figure){place-self:center}.c-callout>p{padding-right:1%}.c-callout{background-color:var(--global-color-link-on-light--normal)}.c-callout>:is(h1,h2,h3,h4,h5,h6){margin-top:0;padding-bottom:12px;margin-bottom:12px;border-bottom:1px solid var(--global-color-primary--xx-light);font-size:var(--global-font-size--x-large);font-weight:var(--medium)}.c-callout>:is(h1,h2,h3,h4,h5,h6),[class*=o-section--style] .c-callout>:is(h1,h2,h3,h4,h5,h6){color:var(--global-color-primary--xx-light)}.c-callout>:not(h1,h2,h3,h4,h5,h6){color:var(--global-color-primary--xx-light)}.c-callout>:not(h1,h2,h3,h4,h5,h6,figure){font-size:var(--global-font-size--large);font-weight:var(--medium)}a.c-callout:hover{text-decoration:none}a.c-callout:focus{text-decoration:none}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! @tacc/core-styles 2.0.0+ | MIT | github.com/TACC/Core-Styles */
|
|
2
|
+
.x-article-link-stretch{position:absolute;height:100%;width:100%;top:0;left:0;overflow:hidden}.x-article-link-stretch--gapless{width:calc(100% + 30px);left:-15px}.x-article-link-hover,a.c-card--frontera-about-page:hover{--outline-offset:1em;outline:1px solid var(--global-color-accent--normal);outline-offset:var(--outline-offset)}.x-article-link-hover--gapless{--outline-offset:0}a.c-card--frontera-about-page:active{outline:1px dotted var(--global-color-accent--normal)}.c-card--frontera-about-page{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;border-bottom:var(--global-border-width--normal) solid var(--global-color-primary--dark);margin-bottom:4.6rem}a.c-card--frontera-about-page{display:inline-block;text-decoration:none}.c-card--frontera-about-page img+h3{margin-top:1.6rem}.c-card--frontera-about-page img~:last-child{margin-bottom:1.25rem}.c-card--frontera-about-page figure{margin:0}.c-card--frontera-about-page figcaption{color:var(--global-color-primary--xx-dark);font-size:var(--global-font-size--x-large);font-weight:var(--bold);margin-top:1.6rem;margin-bottom:1.25rem}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! @tacc/core-styles 2.0.0+ | MIT | github.com/TACC/Core-Styles */
|
|
2
|
+
.x-truncate--many-lines{--lines:2;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;-webkit-line-clamp:var(--lines)}.x-untruncate--many-lines{overflow:visible;-webkit-line-clamp:inherit}.c-data-list--should-truncate-values .c-data-list__value,.c-data-list__key,.x-truncate--one-line{text-overflow:var(--text-overflow,ellipsis);overflow:hidden;white-space:nowrap}.x-untruncate--one-line{overflow:visible;white-space:normal}table.c-data-list{border-left:0;border-right:0}@supports(text-overflow:":"){.c-data-list__key:not(th){--text-overflow:":"}}td.c-data-list__value,th.c-data-list__key{padding-block:.5em}.c-data-list__key:not(th):after{content:":";display:inline;padding-right:.25em}th.c-data-list__key{padding-right:.25em}.c-data-list--is-horz{display:flex;flex-direction:row}.c-data-list--is-horz dd.c-data-list__value,dl.c-data-list--is-horz{margin-bottom:0}table.c-data-list--is-horz tbody,table.c-data-list--is-horz tr{min-width:0;display:flex;flex-direction:row}.c-data-list--is-horz:not(table).c-data-list--is-narrow>.c-data-list__key~.c-data-list__key:before{padding-left:.5em;padding-right:.5em}.c-data-list--is-horz:not(table).c-data-list--is-wide>.c-data-list__key~.c-data-list__key:before{padding-left:1em;padding-right:1em}table.c-data-list--is-horz.c-data-list--is-narrow tr:not(:first-child) th.c-data-list__key{padding-left:.5em}table.c-data-list--is-horz.c-data-list--is-narrow td.c-data-list__value{margin-right:.5em}table.c-data-list--is-horz.c-data-list--is-wide tr:not(:first-child) th.c-data-list__key{padding-left:1em}table.c-data-list--is-horz.c-data-list--is-wide td.c-data-list__value{margin-right:1em}table.c-data-list--is-vert{width:100%;table-layout:fixed}.c-data-list--is-vert:not(table)>.c-data-list__value{margin-left:0}.c-data-list--is-vert:not(table).c-data-list--is-narrow>.c-data-list__value,table.c-data-list--is-vert.c-data-list--is-narrow td.c-data-list__value{padding-left:0}.c-data-list--is-vert:not(table).c-data-list--is-wide>.c-data-list__value,table.c-data-list--is-vert.c-data-list--is-wide td.c-data-list__value{padding-left:2.5em}table.c-data-list--is-vert th.c-data-list__key,td.c-data-list__value{border-left:0;border-right:0}table.c-data-list--is-horz td.c-data-list__value,table.c-data-list--is-horz th.c-data-list__key{border-top:0;border-bottom:0}table.c-data-list--is-horz tr:first-child th.c-data-list__key{border-left:0}table.c-data-list--is-horz th.c-data-list__key{border-right:0}.c-data-list--is-horz:not(table)>.c-data-list__key~.c-data-list__key:before{content:"|";display:inline-block}.c-data-list--is-horz:not(table){align-items:baseline}table.c-data-list--is-horz tr{align-items:baseline}table.c-data-list--is-vert td.c-data-list__value,table.c-data-list--is-vert th.c-data-list__key{vertical-align:baseline}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! @tacc/core-styles 2.0.0+ | MIT | github.com/TACC/Core-Styles */
|
|
2
|
+
.c-footer{--line-height:1.5;--min-line-count:2;box-sizing:content-box;min-height:calc(var(--line-height)*var(--min-line-count)*1em);display:flex;flex-direction:column;justify-content:center;padding-top:20px;padding-bottom:20px;color:var(--global-color-primary--xx-light);background-color:var(--global-color-primary--xx-dark);font-size:12px;text-align:center}@media only screen and (max-width:640px){.c-footer{padding-left:5%;padding-right:5%}}@media only screen and (min-width:641px) and (max-width:767px){.c-footer{padding-left:7.5%;padding-right:7.5%}}@media only screen and (min-width:768px) and (max-width:991px){.c-footer{padding-left:10%;padding-right:10%}}@media only screen and (min-width:992px) and (max-width:1199px){.c-footer{padding-left:12.5%;padding-right:12.5%}}@media only screen and (min-width:1200px){.c-footer{padding-left:15%;padding-right:15%}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! @tacc/core-styles 2.0.0+ | MIT | github.com/TACC/Core-Styles */
|
|
2
|
+
.c-image-map{--button-shape-size:50px;--toggle-shape-size:60px;--caption-width:100%}.c-image-map--has-caption-toggle-alignment{--caption-toggle-offset-horz:0px;--caption-toggle-offset-vert:calc(var(--toggle-shape-size)/2 + 1em)}.c-image-map{display:table}@media only screen and (max-width:991px){.c-image-map{margin:0 auto}}.c-image-map__image{display:block;width:100%;max-width:495px}.c-image-map__item{width:100%}.c-image-map__item-caption{width:var(--caption-width)}@media only screen and (min-width:992px){.c-image-map__item-close{display:none!important}}.c-image-map__item-toggle{width:var(--toggle-shape-size);height:var(--toggle-shape-size);margin-top:calc(var(--toggle-shape-size)*-1/2);margin-left:calc(var(--toggle-shape-size)*-1/2)}.c-image-map{position:relative}.c-image-map:not(.c-image-map--should-position-items) .c-image-map__item{position:relative}.c-image-map:not(.c-image-map--should-position-items) .c-image-map__items{position:absolute;top:0;left:0;right:0}.c-image-map__item-caption{position:relative}@media only screen and (max-width:991px){.c-image-map__item-toggle{cursor:pointer}}.c-image-map__item-toggle~.c-image-map__item-caption{visibility:hidden}.c-image-map:not(:focus-within) .c-image-map__item:target .c-image-map__item-caption,.c-image-map__item-toggle:focus~.c-image-map__item-caption,.c-image-map__item:focus-within .c-image-map__item-caption{visibility:visible}@media only screen and (min-width:992px){.c-image-map__item-caption{visibility:visible!important}}button.c-image-map__item-close:hover,button.c-image-map__item-toggle:hover{cursor:pointer}a.c-image-map__item-close:hover,a.c-image-map__item-toggle:hover{text-decoration:none}button.c-image-map__item-close,button.c-image-map__item-toggle{border:none}.c-image-map--has-item-counters .c-image-map__item:before,.c-image-map__item-close,.c-image-map__item-toggle{display:flex;justify-content:center;align-items:center}.c-image-map--should-position-items .c-image-map__item,.c-image-map--should-position-items .c-image-map__item-toggle{position:absolute}.c-image-map--has-toggle-counters{counter-reset:items}.c-image-map--has-toggle-counters .c-image-map__item{counter-increment:items}.c-image-map--has-toggle-counters .c-image-map__item-toggle:before{content:counter(items)}.c-image-map--has-item-counters{counter-reset:items}.c-image-map--has-item-counters .c-image-map__item{counter-increment:items}.c-image-map--has-item-counters .c-image-map__item:before{content:counter(items)}@media only screen and (max-width:991px){.c-image-map--has-item-counters .c-image-map__item:before{display:none}}.c-image-map--has-item-counters .c-image-map__item--unmapped:before{display:none}.c-image-map--has-caption-toggle-alignment .c-image-map__item{scroll-snap-align:start;scroll-margin:var(--caption-toggle-offset-vert)}.c-image-map--has-caption-toggle-alignment .c-image-map__item-caption{left:var(--caption-toggle-offset-horz)}@media only screen and (max-width:991px){.c-image-map--has-caption-toggle-alignment .c-image-map__item--unmapped .c-image-map__item-toggle{left:50%!important}}@media only screen and (min-width:992px){.c-image-map--has-caption-toggle-alignment .c-image-map__item--unmapped .c-image-map__item-toggle{left:calc(var(--caption-toggle-offset-horz) + var(--caption-width))!important}}@media only screen and (max-width:991px){.c-image-map--has-caption-toggle-alignment .c-image-map__item-caption{z-index:1;margin-top:var(--caption-toggle-offset-vert)}}@media only screen and (min-width:992px){.c-image-map--has-caption-toggle-alignment .c-image-map__item-toggle{z-index:1}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! @tacc/core-styles 2.0.0+ | MIT | github.com/TACC/Core-Styles */
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! @tacc/core-styles 2.0.0+ | MIT | github.com/TACC/Core-Styles */
|
|
2
|
+
.c-image-map{--button-shape-size:50px;--toggle-shape-size:60px;--caption-width:100%}.c-image-map--has-caption-toggle-alignment{--caption-toggle-offset-horz:0px;--caption-toggle-offset-vert:calc(var(--toggle-shape-size)/2 + 1em)}.c-image-map{display:table}@media only screen and (max-width:991px){.c-image-map{margin:0 auto}}.c-image-map__image{display:block;width:100%;max-width:495px}.c-image-map__item{width:100%}.c-image-map__item-caption{width:var(--caption-width)}@media only screen and (min-width:992px){.c-image-map__item-close{display:none!important}}.c-image-map__item-toggle{width:var(--toggle-shape-size);height:var(--toggle-shape-size);margin-top:calc(var(--toggle-shape-size)*-1/2);margin-left:calc(var(--toggle-shape-size)*-1/2)}.c-image-map{position:relative}.c-image-map:not(.c-image-map--should-position-items) .c-image-map__item{position:relative}.c-image-map:not(.c-image-map--should-position-items) .c-image-map__items{position:absolute;top:0;left:0;right:0}.c-image-map__item-caption{position:relative}@media only screen and (max-width:991px){.c-image-map__item-toggle{cursor:pointer}}.c-image-map__item-toggle~.c-image-map__item-caption{visibility:hidden}.c-image-map:not(:focus-within) .c-image-map__item:target .c-image-map__item-caption,.c-image-map__item-toggle:focus~.c-image-map__item-caption,.c-image-map__item:focus-within .c-image-map__item-caption{visibility:visible}@media only screen and (min-width:992px){.c-image-map__item-caption{visibility:visible!important}}button.c-image-map__item-close:hover,button.c-image-map__item-toggle:hover{cursor:pointer}a.c-image-map__item-close:hover,a.c-image-map__item-toggle:hover{text-decoration:none}button.c-image-map__item-close,button.c-image-map__item-toggle{border:none}.c-image-map--has-item-counters .c-image-map__item:before,.c-image-map__item-close,.c-image-map__item-toggle{display:flex;justify-content:center;align-items:center}.c-image-map--should-position-items .c-image-map__item,.c-image-map--should-position-items .c-image-map__item-toggle{position:absolute}.c-image-map--has-toggle-counters{counter-reset:items}.c-image-map--has-toggle-counters .c-image-map__item{counter-increment:items}.c-image-map--has-toggle-counters .c-image-map__item-toggle:before{content:counter(items)}.c-image-map--has-item-counters{counter-reset:items}.c-image-map--has-item-counters .c-image-map__item{counter-increment:items}.c-image-map--has-item-counters .c-image-map__item:before{content:counter(items)}@media only screen and (max-width:991px){.c-image-map--has-item-counters .c-image-map__item:before{display:none}}.c-image-map--has-item-counters .c-image-map__item--unmapped:before{display:none}.c-image-map--has-caption-toggle-alignment .c-image-map__item{scroll-snap-align:start;scroll-margin:var(--caption-toggle-offset-vert)}.c-image-map--has-caption-toggle-alignment .c-image-map__item-caption{left:var(--caption-toggle-offset-horz)}@media only screen and (max-width:991px){.c-image-map--has-caption-toggle-alignment .c-image-map__item--unmapped .c-image-map__item-toggle{left:50%!important}}@media only screen and (min-width:992px){.c-image-map--has-caption-toggle-alignment .c-image-map__item--unmapped .c-image-map__item-toggle{left:calc(var(--caption-toggle-offset-horz) + var(--caption-width))!important}}@media only screen and (max-width:991px){.c-image-map--has-caption-toggle-alignment .c-image-map__item-caption{z-index:1;margin-top:var(--caption-toggle-offset-vert)}}@media only screen and (min-width:992px){.c-image-map--has-caption-toggle-alignment .c-image-map__item-toggle{z-index:1}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! @tacc/core-styles 2.0.0+ | MIT | github.com/TACC/Core-Styles */
|
|
2
|
+
nav.c-nav{--link-padding:0.5em}nav.c-nav--boxed{--indent-small:calc(var(--global-space--list-indent)/4);--indent-medium:calc(var(--global-space--list-indent)/2);--indent-large:var(--global-space--list-indent);width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;border:var(--global-border--normal)}nav.c-nav--boxed :is(ul,ol){margin:0}nav.c-nav--boxed ul{list-style-type:none;padding-left:var(--indent-medium);padding-right:var(--indent-large)}@media (min-width:992px){nav.c-nav--boxed{padding-block:var(--indent-medium)}nav.c-nav--boxed ol{padding-left:var(--indent-large);padding-right:calc(var(--indent-large) - var(--link-padding))}}@media (max-width:991px){nav.c-nav--boxed{padding-block:var(--indent-small)}nav.c-nav--boxed ol{padding-left:calc(var(--indent-medium) - var(--link-padding));padding-right:calc(var(--indent-large) - var(--link-padding))}}nav.c-nav--boxed.c-nav--no-list{padding-left:var(--indent-medium);padding-right:var(--indent-large)}nav.c-nav{--space-between-inline-items:0.5em}nav.c-nav a{display:inline-block;padding-inline:var(--link-padding)}nav.c-nav--no-list{display:flex;flex-wrap:wrap}nav.c-nav--no-list>a{margin-right:var(--space-between-inline-items)}@media (max-width:991px){nav.c-nav a{line-height:2.5}nav.c-nav :is(ul,ol){display:flex;flex-wrap:wrap;list-style-position:inside}nav.c-nav :is(ul,ol):not(.c-nav--boxed :is(ul,ol)){padding-left:unset}nav.c-nav :is(ul,ol) li{margin-right:var(--space-between-inline-items)}nav.c-nav ul{list-style-type:none}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! @tacc/core-styles 2.0.0+ | MIT | github.com/TACC/Core-Styles */
|
|
2
|
+
.c-page-list{--item-width:2em;--item-buffer:3px;--item-border:var(--global-border-width--normal)}.c-page-list{display:flex;flex-direction:row;align-items:baseline;list-style:none;font-size:14px}ul.c-page-list{list-style:none}.c-page-link--always-click{position:relative;box-sizing:content-box}.c-page-link--always-click:after,.c-page-link--always-click:before{--width:var(--item-buffer);--vert-offset:calc(var(--item-border)*-1);--horz-offset:calc(100% + var(--item-border));content:"";width:var(--width);position:absolute;top:var(--vert-offset);bottom:var(--vert-offset)}.c-page-link--always-click.c-button{overflow:visible}.c-page-link--always-click:before{right:var(--horz-offset)}.c-page-link--always-click:after{left:var(--horz-offset)}.c-page-item{margin-inline:var(--item-buffer)}.c-page-item:first-child{margin-left:0}.c-page-item:last-child{margin-right:0}.c-page-item--etcetera{min-width:var(--item-width);margin-inline:2px;text-align:center;cursor:default}.c-page-end{padding:4px 12px}.c-page-link{padding:5px 0;min-width:var(--item-width);line-height:1.2}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! @tacc/core-styles 2.0.0+ | MIT | github.com/TACC/Core-Styles */
|
|
2
|
+
.c-recognition{font-size:var(--global-font-size--small)}.c-recognition{padding:0 2.14em;overflow:auto}.c-recognition h3{margin-top:.7em}.c-recognition>p:last-child{margin-bottom:1.4em}.c-recognition--style-dark{color:var(--global-color-primary--xx-light);background-color:var(--global-color-primary--xx-dark)}.c-recognition--style-dark a{color:var(--global-color-link-on-dark--normal)}.c-recognition--style-dark h1,.c-recognition--style-dark h2,.c-recognition--style-dark h3,.c-recognition--style-dark h4,.c-recognition--style-dark h5,.c-recognition--style-dark h6{color:var(--global-color-accent--normal)}.c-recognition--style-light{color:var(--global-color-primary--dark);background-color:var(--global-color-primary--xx-light);border-left:0 solid var(--global-color-primary--xx-dark);border-bottom:var(--global-border-width--normal) solid var(--global-color-primary--xx-dark);border-right:0 solid var(--global-color-primary--xx-dark);border-top:var(--global-border-width--normal) solid var(--global-color-primary--xx-dark)}.c-recognition--style-light a{color:var(--global-color-link-on-light--normal)}.c-recognition--style-light h1,.c-recognition--style-light h2,.c-recognition--style-light h3,.c-recognition--style-light h4,.c-recognition--style-light h5,.c-recognition--style-light h6{color:var(--global-color-primary--xx-dark)}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! @tacc/core-styles 2.0.0+ | MIT | github.com/TACC/Core-Styles */
|
|
2
|
+
.x-truncate--many-lines{--lines:2;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;-webkit-line-clamp:var(--lines)}.x-untruncate--many-lines{overflow:visible;-webkit-line-clamp:inherit}.c-see-all-link,.x-truncate--one-line{text-overflow:var(--text-overflow,ellipsis);overflow:hidden;white-space:nowrap}.x-untruncate--one-line{overflow:visible;white-space:normal}.c-see-all-link{display:inline-block;padding-top:1em;padding-right:1em;padding-bottom:1em;margin-bottom:-1em;max-width:100%;font-size:1.2rem;font-weight:var(--bold)}.c-see-all-link__icon{margin-right:.75em;font-size:1.167em;vertical-align:text-bottom;display:inline-block}.c-see-all-link__text{font-size:1em}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! @tacc/core-styles 2.0.0+ | MIT | github.com/TACC/Core-Styles */
|
|
2
|
+
.c-show-more--many-lines .c-show-more__target,.x-truncate--many-lines{--lines:2;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;-webkit-line-clamp:var(--lines)}.c-show-more--many-lines .c-show-more__state:checked~.c-show-more__target,.x-untruncate--many-lines{overflow:visible;-webkit-line-clamp:inherit}.c-show-more--one-line .c-show-more__target,.x-truncate--one-line{text-overflow:var(--text-overflow,ellipsis);overflow:hidden;white-space:nowrap}.c-show-more--one-line .c-show-more__state:checked~.c-show-more__target,.x-untruncate--one-line{overflow:visible;white-space:normal}.c-show-more__off-text,.c-show-more__on-text,.c-show-more__state{display:none}.c-show-more__state:checked~.c-show-more__toggle .c-show-more__off-text,.c-show-more__state:not(:checked)~.c-show-more__toggle .c-show-more__on-text{display:block}.c-show-more__toggle{cursor:pointer}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! @tacc/core-styles 2.0.0+ | MIT | github.com/TACC/Core-Styles */
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! @tacc/core-styles 2.0.0+ | MIT | github.com/TACC/Core-Styles */
|
|
2
|
+
figure>img{margin-bottom:20px}figcaption{color:var(--global-color-primary--dark);font-size:var(--global-font-size--medium);border-top:var(--global-border-width--normal) solid var(--global-color-primary--normal);padding-top:12px}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! @tacc/core-styles 2.0.0+ | MIT | github.com/TACC/Core-Styles */
|
|
2
|
+
html{font-size:62.5%}body,html{height:100%}body{min-width:290px;color:var(--global-color-primary--x-dark);font-family:var(--global-font-family);font-size:var(--global-font-size--medium);line-height:1.4}main{padding-bottom:var(--global-space--section-gap)}h1,h2,h3,h4,h5,h6{margin-top:revert;font-weight:var(--bold);color:var(--global-color-primary--xx-dark)}h1{font-size:var(--global-font-size--xxx-large)}h2{font-size:var(--global-font-size--xx-large)}h3,h4,h5,h6{margin-bottom:15px}h3{font-size:var(--global-font-size--x-large)}h4{font-size:var(--global-font-size--large)}h4,h5{text-transform:uppercase}h5,h6{font-size:var(--global-font-size--medium)}p{margin-bottom:2rem}dl dl,ol,ul{padding-left:var(--global-space--list-indent)}ol ol,ol ul,ul ol,ul ul{margin:revert}dt{margin-bottom:.5rem;font-weight:400}li{line-height:1.6}hr{margin-block:var(--global-space--hr-margin)}a,a:hover{color:var(--global-color-link-on-light--normal)}a:focus{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}code,kbd,pre,samp,var{font-family:var(--global-font-family--mono)}code kbd{display:inline-block;padding:.1rem .2rem;margin-left:.2rem;margin-right:.2rem;font-size:inherit}code,pre>samp{color:unset}:not(pre)>code{display:inline-block;padding:var(--global-space--xx-small) var(--global-space--x-small)}pre>code,pre>samp{display:inline-block;padding:var(--global-space--x-small) var(--global-space--small)}pre[style]>code,pre[style]>samp{min-width:100%}pre samp{opacity:.75;text-decoration:none}pre code u{opacity:.5;text-decoration:none}table,td,th{border:var(--global-border--normal)}details{margin-top:0;margin-bottom:1rem}
|