Security News
New Python Packaging Proposal Aims to Solve Phantom Dependency Problem with SBOMs
PEP 770 proposes adding SBOM support to Python packages to improve transparency and catch hidden non-Python dependencies that security tools often miss.
@primer/primitives
Advanced tools
Typography, spacing, and color primitives for Primer design system
This repo contains values for color, spacing, and typography primitives for use with Primer, GitHub's design system.
This repository is distributed on npm. After installing npm, you can install @primer/primitives
with this command.
npm install --save @primer/primitives
See Primitives documentation for more information on theming and using CSS variables.
Data is served from the dist/
folder:
dist/css
contains CSS files with values available as CSS variablesAll available imports:
/* size/typography */
@import '@primer/primitives/dist/css/base/size/size.css';
@import '@primer/primitives/dist/css/base/typography/typography.css';
@import '@primer/primitives/dist/css/functional/size/border.css';
@import '@primer/primitives/dist/css/functional/size/breakpoints.css';
@import '@primer/primitives/dist/css/functional/size/size.css';
@import '@primer/primitives/dist/css/functional/size/viewport.css';
@import '@primer/primitives/dist/css/functional/typography/typography.css';
/* color */
@import '@primer/primitives/dist/css/functional/themes/light.css';
@import '@primer/primitives/dist/css/functional/themes/light-tritanopia.css';
@import '@primer/primitives/dist/css/functional/themes/light-high-contrast.css';
@import '@primer/primitives/dist/css/functional/themes/light-colorblind.css';
@import '@primer/primitives/dist/css/functional/themes/dark.css';
@import '@primer/primitives/dist/css/functional/themes/dark-colorblind.css';
@import '@primer/primitives/dist/css/functional/themes/dark-dimmed.css';
@import '@primer/primitives/dist/css/functional/themes/dark-high-contrast.css';
@import '@primer/primitives/dist/css/functional/themes/dark-tritanopia.css';
Design token data is stored in the src/tokens directory. These tokens are compiled with style dictionary in scripts/buildTokens.ts.
To make working with tokens easier, we added some additional functionality on top of what style dictionary comes with:
We have two main color modes: light
and dark
. Additionally we have specific accessibility modes based on those, such as light high contrast
.
We added a way to create a mode by only including the changes from the main mode. We call this overrides
.
Overrides
are cerated in src/tokens/functional/color/[light|dark]/overrides/
and have to be added to themes.config.ts to work.
In the individual files, e.g. light.high-contrast.json5
you can now add tokens in the same structure as in any main file, e.g. primitives-light.json5
to replace them.
You can create color tokens that inherit a color but have a different alpha value by adding the alpha
property.
Note: The original alpha value will be replaced by your value. If you add alpha: 0.4
to a color, it doesn't matter if the color you reference has no alpha
or alpha: 0.7
, the new token will always have newly the defined value of alpha: 0.4
.
{
muted: {
$value: '{base.color.blue.3}',
alpha: 0.4, // the opacity value of the color === 40% opaque
$type: 'color',
},
}
According to the w3c design token specs, the $extensions
property is used for additional meta data.
For our Figma export we use the following meta data:
collection
the collection that the token is added to within Figmamode
the mode that the token is added to within the collection in Figmascopes
the scopes that are assigned to the token in Figma, the actual Figma compatible scopes
are retreive from an object in the figmaAttributes transformerCode example
bgColor: {
$value: '{borderColor.accent.muted}',
$type: 'color',
$extensions: {
'org.primer.figma': {
collection: 'pattern/mode',
mode: 'light',
scopes: ['bgColor'],
},
},
}
Token names have to be in camelCase or kebab-case and may only include letters, numbers and -
. This is enforced by the token validation (npm run lint:tokens
).
The only acception is the @
-hack. This is used when you want to have a default value and sub-values, e.g. bgColor.accent
and bgColor.accent.muted
.
In this case you can create the follwing structure. The @
will be removed from the name and act as the default value.
{
bgColor: {
accent: {
'@': {
// values for bgColor-accent (default)
},
muted: {
// values for bgColor-accent-muted
},
},
},
}
10.3.2
24aa6fc
Thanks @lukasoppermann! - Add 100ms duration for very short transitionsFAQs
Typography, spacing, and color primitives for Primer design system
The npm package @primer/primitives receives a total of 24,167 weekly downloads. As such, @primer/primitives popularity was classified as popular.
We found that @primer/primitives demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PEP 770 proposes adding SBOM support to Python packages to improve transparency and catch hidden non-Python dependencies that security tools often miss.
Security News
Socket CEO Feross Aboukhadijeh discusses open source security challenges, including zero-day attacks and supply chain risks, on the Cyber Security Council podcast.
Security News
Research
Socket researchers uncover how threat actors weaponize Out-of-Band Application Security Testing (OAST) techniques across the npm, PyPI, and RubyGems ecosystems to exfiltrate sensitive data.