{"id":21296710,"url":"https://github.com/eccenca/gui-elements","last_synced_at":"2026-02-24T12:00:49.143Z","repository":{"id":37822941,"uuid":"294119961","full_name":"eccenca/gui-elements","owner":"eccenca","description":"GUI elements for React applications","archived":false,"fork":false,"pushed_at":"2026-02-12T14:19:57.000Z","size":7343,"stargazers_count":5,"open_issues_count":10,"forks_count":3,"subscribers_count":6,"default_branch":"develop","last_synced_at":"2026-02-12T18:53:25.725Z","etag":null,"topics":["react","storybook"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eccenca.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-09-09T13:22:22.000Z","updated_at":"2026-01-12T14:03:14.000Z","dependencies_parsed_at":"2023-12-21T10:46:07.059Z","dependency_job_id":"88dfb2cf-0ca3-4526-a4a7-7ec03f2177e4","html_url":"https://github.com/eccenca/gui-elements","commit_stats":{"total_commits":1405,"total_committers":18,"mean_commits":78.05555555555556,"dds":"0.45195729537366547","last_synced_commit":"2b54c6238925fd83e8a7f198f1bf6ed9b39e3f22"},"previous_names":[],"tags_count":113,"template":false,"template_full_name":null,"purl":"pkg:github/eccenca/gui-elements","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eccenca%2Fgui-elements","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eccenca%2Fgui-elements/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eccenca%2Fgui-elements/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eccenca%2Fgui-elements/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eccenca","download_url":"https://codeload.github.com/eccenca/gui-elements/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eccenca%2Fgui-elements/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29781194,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-24T10:45:18.109Z","status":"ssl_error","status_checked_at":"2026-02-24T10:45:09.911Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["react","storybook"],"created_at":"2024-11-21T14:29:08.442Z","updated_at":"2026-02-24T12:00:49.137Z","avatar_url":"https://github.com/eccenca.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# eccenca GUI elements\n\nCollection of React elements based on [Palantir BlueprintJS](https://blueprintjs.com/) and [IBM Carbon](https://www.carbondesignsystem.com/), used for [eccenca Corporate Memory](https://eccenca.com/products/enterprise-knowledge-graph-platform-corporate-memory) applications.\n\n## Usage\n\n### Installation\n\nWe provide a [package via npmjs registry](https://www.npmjs.com/package/@eccenca/gui-elements), install it by:\n\n```\nyarn add @eccenca/gui-elements\n```\n\nIt could be also included as Git submodule to your projects and used via yarn link or yarn workspaces.\n\nAs long as IBM Carbon does not support TypeScript it is necessary to install `@types/carbon-components-react` as development dependency:\n\n```\nyarn add --dev @types/carbon-components-react\n```\n\n### Inclusion\n\n-   To include SCSS styles for all basic components add `@import \"~@eccenca/gui-elements/index\";` into your main SCSS file.\n-   To use extensions and special Corporate Memory components the include of `@eccenca/gui-elements/extensions` and `@eccenca/gui-elements/cmem` is necessary\n-   To include only the default configuration add `@import \"~@eccenca/gui-elements/src/configuration/variables;` into your SCSS file.\n\n### Configuration\n\nAll [configuration variables](https://github.com/eccenca/gui-elements/blob/develop/src/configuration/_variables.scss) can be set before importing the full library or the default configuration but for the main properties you should need to change only a few parameters\n\n#### Colors\n\nSince v25 we use a color palette as basic foundation for color configurations. The palette is defined in 4 sections containing various color tints, each tint includes 5 different weights from 100 (light color) to 900 (dark color).\n\nThe default palette can be overwritten if it is defined before the configuration or full library is imported to your Sass styles. The palette need to be defined entirely, we currently don't support overwriting it partly.\n\n```\n$eccgui-color-palette-light: (\n    \"identity\": (\n        \"brand\": #fae1cc #f8cd99 #f6b966 #f4a533 #f29100,\n        \"accent\": #e5f4fb #aecfe3 #77abca #4186b2 #0a6199,\n        \"text\": #f8f8f8 #bcbcbc #818181 #434343 #090909,\n        \"background\": #fff #e8e8e8 #d6d6d6 #d4d4d4 #d3d3d3,\n    ),\n    \"semantic\": (\n        \"info\": #e5f4fb #aecfe3 #77aaca #4086b2 #096199,\n        \"success\": #e8f5e9 #b2c6b4 #7c967e #466749 #103713,\n        \"warning\": #fff3e0 #fad2b3 #f5b287 #f0915a #eb702d,\n        \"danger\": #fff5f6 #edbfc0 #db8989 #c95253 #b71c1c,\n    ),\n    \"layout\": (\n        \"yellow\": #fff6d5 #f1ecb5 #e3db79 #d4c93c #c1a500,\n        \"purple\": #f4ddf3 #c8a2d1 #9d6eb8 #71378f #480e75,\n        \"magenta\": #ffd8e8 #f5a6c3 #e276a4 #be4c80 #59122d,\n        \"pink\": #fde4f1 #e6b4ce #d08aae #bb5f8e #711c4d,\n        \"violet\": #f4e3f4 #d8b0d8 #b377b3 #904490 #570057,\n        \"indigo\": #efe4fb #b89ee0 #8f72c5 #6547aa #3b1e8f,\n        \"cyan\": #dff9fc #86d6e5 #5abfd4 #2da9c4 #0092b3,\n        \"teal\": #d4f2ec #a3ddd3 #6dc0b2 #479d8d #104c42,\n        \"lime\": #cde0d6 #bce3c2 #9dcd99 #7ba66c #87b347,\n        \"amber\": #ffe7b8 #ffe9c4 #f9cd8d #eeb757 #ef8f00,\n        \"vermilion\": #ffd8cc #e4c4ba #b27a6b #8c4b3a #651c09,\n        \"grey\": #f5f6f7 #b7b7b7 #808080 #484848 #1c2329,\n    ),\n    \"extra\": (\n        \"gold\": #fff7d5 #ebd893 #dfc670 #d3b44e #c7a22b,\n        \"silver\": #f0f0f0 #dedede #ccc #bababa #a8a8a8,\n        \"bronze\": #fbe9db #f2d6bc #eac29d #e1af7e #d89b5f,\n    ),\n);\n```\n\nAll palette colors will be transformed into CSS custom properties automatically and can be referenced by name scheme `--eccgui-color-palette-{groupname}-{colortint}-{colorweight}`, e.g. `--eccgui-color-palette-identity-brand-100`.\n\nAll other colors are based on the palette but it is still possible to set them before the default values are used by importing the configuration or the full library.\n\n-   `$eccgui-color-primary`: color for very important buttons and switches\n-   `$eccgui-color-primary-contrast`: readable text color used on primary color areas\n-   `$eccgui-color-accent`: color for most conformation buttons, links, etc\n-   `$eccgui-color-accent-contrast`: readable text color used on accent color areas\n-   `$eccgui-color-applicationheader-text`\n-   `$eccgui-color-applicationheader-background`\n-   `$eccgui-color-workspace-text`\n-   `$eccgui-color-workspace-background`\n\n#### Sizes\n\n-   `$eccgui-size-typo-base`: size including absolute unit, currently only `px` is supported\n-   `$eccgui-size-typo-base-lineheight`: only ratio to font size, no unit!\n-   `$eccgui-size-type-levelratio`: ratio without unit! used to calculate different text sizes based on `$eccgui-size-typo-base`\n-   `$eccgui-size-block-whitespace`: white space between block level elements, currently only `px` is supported\n\n## Development\n\n### Branch management\n\nWe have 4 types of major branches representing the current state:\n\n-   `main`: contains the latest official release, only `release/*` branches will be merged into this branch\n-   `develop`: contains the latest state of development, `feature/*`, `bugfix/*` and `next` branches will be merged into `develop`\n-   `next`: development tree for an upcoming new major version, it will be merged into `develop` at some point, `feature/*`, `bugfix/*` and `release/*` branches will be merged into it\n-   `legacy`: development tree for the predecessor of the current major version, only `bugfix/*` and `hotfix/*` branches will be merged into it\n\nWe allow a few more prefixes for valid branchnames:\n\n-   `feature/*`: extend functionality\n-   `fix/*`, `bugfix/*`, `hotfix/*`: fix functionality\n-   `release/*`: branches to finalize releases, also used to publish release candidate packages\n-   `change/*`, `temp/*`, `test/*`: unspecific changes, maybe only created to test something that won't end necessarily in a PR\n-   `maintain/*`: maintain dependencies, changes created in publishing process\n\n`next` and `legacy` only exist if necessary, otherwise we do not maintain those branches. Merges into `main`, `develop`, `next` and `legacy` are always managed by pull requests.\n\n### Running tests\n\nRun the Jest tests with `yarn test`, for test coverage information run `yarn test:coverage`.\nYou can check easily code for code errors by `yarn compile` (JS/Typescript) and `yarn compile-scss` (SASS).\n\nIf you run Jest tests in your app using our library you need to install `@babel/plugin-transform-runtime` as development dependeny and add it to your Babel plugins configuration.\n\n### Running Storybook\n\nAll story source files are kept in the respective components, extensions and cmem folders, using `*.stories.tsx` file name pattern.\nRun the storybook by\n\n```\nyarn install\nyarn storybook\n```\n\nIf you want to include Jest test results into the Storybook, run `yarn test:generate-output` before `yarn storybook`.\nIf the stories and the tests share exactly the compononent name in the file names, e.g. `Button.stories.tsx` and `Button.`, then tests are included automazically when the test output is available.\nIn case the file names cannot match by pattern then test file names need to be configured in the stories:\n\n```javascript\nDefault.parameters = {\n    jest: \"MyTestFile.test.tsx\",\n};\n```\n\n### Naming conventions\n\n-   Use a `*Props` suffix for component interfaces.\n-   Use a `*Utils` suffix for objects providing helper functions to compoents.\n    Name should start with a lowercase letter.\n\nDon't forget to export them.\nThey need to be available via simple import from `@eccenca/gui-elements`.\n\nExample: if you have your `SimpleComponent` then provide at least `SimpleComponentProps`, maybe `simpleComponentUtils`.\n\n### Use via yalc\n\nIf necessary you can use [yalc](https://github.com/wclr/yalc) to develop gui elements and your application side by side.\n\n1. Install yalc globally via npm or yarn\n2. Checkout [@eccenca/gui-elements](https://github.com/eccenca/gui-elements)\n3. Inside gui elements folder: `yarn build:all \u0026\u0026 yalc publish --push`\n4. Inside your applications folder: `yalc add @eccenca/gui-elements`\n5. After updates to the gui elements rebuild and update the applications yalc folder: `yarn build:all \u0026\u0026 yalc publish --push` (you usually are not required to fire another `yalc add` in your applications folder)\n\nAfter you tested the GUI elements package locally you can Clean up your applications folder by `yalc remove --all \u0026\u0026 git checkout -- pakage.json yarn.lock`.\n\n### Process for pull requests and publishing releases\n\n1. `feature/*` and `bugfix/*` branches are merged into `develop` (or `next` and `legacy`) via pull request\n    - to test out specific features or bugfixes via npm packages, the can be pre-released by using the [\"Publish: feature/fix pre-release\" action](https://github.com/eccenca/gui-elements/actions/workflows/publish-featurefix-prerelease.yml)\n2. `release/*`branch is created from `develop` (or `next` and `legacy`) via [\"Create: release branch\"](https://github.com/eccenca/gui-elements/actions/workflows/create-release-branch.yml), there will be created a pull request automatically\n    - publish release candidates from this release branch by triggering the [\"Publish: release candidate\"](https://github.com/eccenca/gui-elements/actions/workflows/publish-release-candidate.yml)\n3. Pull request from release branch into `main` need to be approved\n    - then [\"Publish: final release \"](https://github.com/eccenca/gui-elements/actions/workflows/publish-final-release.yml) can be used on `main` (or `next` and `legacy`) to publish final release packages\n    - another PR is automatically created for changes done during publishing process\n\n## License\n\nApache License, Version 2.0, January 2004\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feccenca%2Fgui-elements","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feccenca%2Fgui-elements","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feccenca%2Fgui-elements/lists"}