{"_id":"@adnap/krysalicss","_rev":"2-27937e49d239e4bb4969488fbda77d9f","name":"@adnap/krysalicss","dist-tags":{"latest":"0.1.0"},"versions":{"0.0.1":{"name":"@adnap/krysalicss","version":"0.0.1","keywords":["css","scss","sass","css-framework","framework","modular","responsive","flexbox","themes","dark-mode","css-variables"],"author":{"name":"adnap"},"license":"MIT","_id":"@adnap/krysalicss@0.0.1","maintainers":[{"name":"nainterceptor","email":"gael+npmjs@demette.fr"}],"homepage":"https://krysalicss.eu","bugs":{"url":"https://gitlab.com/adnap/krysalicss/-/issues"},"dist":{"shasum":"5394ce3ac581d73f6c2ceeed14da6f640e97f6c7","tarball":"https://registry.npmjs.org/@adnap/krysalicss/-/krysalicss-0.0.1.tgz","fileCount":172,"integrity":"sha512-Nd5quxTVerJ6LFwzR62hrsAgHbhDz2Rr7MizJXGfzrCX3mpikC0/mbdLWzzhJF+DC+qCiOvd7JQCfcUjuPUwuA==","signatures":[{"sig":"MEUCIQCBws5KP4joOoV9ifCR23NGCJZkoyps4NIWusL+F+7XwQIgM02//Rbtf7x8l8m3D0rS+btuJm9csjSjasr+YyA8dls=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":413696},"main":"dist/krysalicss.css","sass":"src/krysalicss.scss","type":"module","_from":"file:adnap-krysalicss-0.0.1.tgz","style":"dist/krysalicss.min.css","unpkg":"dist/krysalicss.min.css","engines":{"node":">=24"},"exports":{".":{"sass":"./src/krysalicss.scss","style":"./dist/krysalicss.min.css","default":"./dist/krysalicss.css"},"./*":{"sass":"./src/*/_index.scss","style":"./dist/*.min.css","default":"./dist/*.css"},"./min":{"style":"./dist/krysalicss.min.css","default":"./dist/krysalicss.min.css"},"./helper/*":{"sass":"./src/helper/_*.scss","style":"./dist/helper/*.min.css","default":"./dist/helper/*.css"},"./package.json":"./package.json"},"scripts":{"lint":"deno lint","test":"pnpm test:snapshots","build":"pnpm build:prod && pnpm build:dev","check":"pnpm format:check && pnpm lint && pnpm typecheck","watch":"tsx tools/watch.ts","format":"deno fmt","docs:dev":"pnpm --filter @adnap/krysalicss-docs dev","test:vue":"pnpm --filter @adnap/krysalicss-vue test","build:dev":"tsx tools/build.ts dev","build:vue":"pnpm --filter @adnap/krysalicss-vue build","test:a11y":"pnpm --filter @adnap/krysalicss-docs build && playwright test tests/a11y/ --project=a11y","typecheck":"tsc --noEmit","build:prod":"tsx tools/build.ts prod","docs:build":"pnpm --filter @adnap/krysalicss-docs build","docs:check":"pnpm --filter @adnap/krysalicss-docs check","lint:flags":"tsx tools/lint-feature-flags.ts","test:react":"pnpm --filter @adnap/krysalicss-react test","build:react":"pnpm --filter @adnap/krysalicss-react build","lint:motion":"tsx tools/lint-reduced-motion.ts","test:visual":"pnpm --filter @adnap/krysalicss-docs build && playwright test tests/visual/","bundle:check":"tsx tools/bundle-size.ts","docs:preview":"pnpm --filter @adnap/krysalicss-docs preview","format:check":"deno fmt --check","tokens:build":"tsx tools/export-tokens.ts","smoke:imports":"tsx tools/smoke-imports.ts","test:snapshots":"tsx tools/test-snapshots.ts","test:visual:wipe":"rm -rf tests/visual/__screenshots__","test:visual:podman":"tsx tools/test-visual-podman.ts","test:visual:update":"pnpm --filter @adnap/krysalicss-docs build && playwright test tests/visual/ --update-snapshots","test:visual:podman:update":"tsx tools/test-visual-podman.ts --update"},"_npmUser":{"name":"nainterceptor","email":"gael+npmjs@demette.fr"},"_resolved":"/private/var/folders/0v/5085l7257431ltz4j4h2svbw0000gn/T/11b09dde63eaed764462372f6c6afd1a/adnap-krysalicss-0.0.1.tgz","_integrity":"sha512-Nd5quxTVerJ6LFwzR62hrsAgHbhDz2Rr7MizJXGfzrCX3mpikC0/mbdLWzzhJF+DC+qCiOvd7JQCfcUjuPUwuA==","repository":{"url":"git+https://gitlab.com/adnap/krysalicss.git","type":"git"},"_npmVersion":"11.12.1","description":"A modern, extremely modular, multi-theme CSS framework with first-class theming via CSS custom properties.","directories":{},"sideEffects":["*.css","*.scss"],"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","cssnano":"^8.0.0","postcss":"^8.5.14","typescript":"^6.0.3","@types/node":"^24.12.2","autoprefixer":"^10.5.0","sass-embedded":"^1.99.0","@playwright/test":"^1.59.1","@axe-core/playwright":"^4.11.3"},"_npmOperationalInternal":{"tmp":"tmp/krysalicss_0.0.1_1778491749076_0.23517320303245537","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@adnap/krysalicss","version":"0.1.0","type":"module","description":"A modern, extremely modular, multi-theme CSS framework with first-class theming via CSS custom properties.","license":"MIT","author":{"name":"adnap"},"repository":{"type":"git","url":"git+https://gitlab.com/adnap/krysalicss.git"},"bugs":{"url":"https://gitlab.com/adnap/krysalicss/-/issues"},"homepage":"https://krysalicss.eu","main":"dist/krysalicss.css","style":"dist/krysalicss.min.css","sass":"src/krysalicss.scss","unpkg":"dist/krysalicss.min.css","sideEffects":["*.css","*.scss"],"exports":{".":{"sass":"./src/krysalicss.scss","style":"./dist/krysalicss.min.css","default":"./dist/krysalicss.css"},"./min":{"style":"./dist/krysalicss.min.css","default":"./dist/krysalicss.min.css"},"./helper/*":{"sass":"./src/helper/_*.scss","style":"./dist/helper/*.min.css","default":"./dist/helper/*.css"},"./*":{"sass":"./src/*/_index.scss","style":"./dist/*.min.css","default":"./dist/*.css"},"./package.json":"./package.json"},"keywords":["css","scss","sass","css-framework","framework","modular","responsive","flexbox","themes","dark-mode","css-variables"],"devDependencies":{"@axe-core/playwright":"^4.11.3","@changesets/cli":"^2.31.0","@playwright/test":"^1.59.1","@types/node":"^24.12.2","autoprefixer":"^10.5.0","cssnano":"^8.0.0","postcss":"^8.5.14","sass-embedded":"^1.99.0","tsx":"^4.21.0","typescript":"^6.0.3"},"engines":{"node":">=24"},"scripts":{"build":"pnpm build:prod && pnpm build:dev","build:prod":"tsx tools/build.ts prod","build:dev":"tsx tools/build.ts dev","build:api":"tsx tools/build-scss-api.ts","watch":"tsx tools/watch.ts","test":"pnpm test:snapshots","test:snapshots":"tsx tools/test-snapshots.ts","test:visual":"pnpm --filter @adnap/krysalicss-docs build && playwright test tests/visual/","test:visual:wipe":"rm -rf tests/visual/__screenshots__","test:visual:update":"pnpm --filter @adnap/krysalicss-docs build && playwright test tests/visual/ --update-snapshots","test:visual:podman":"tsx tools/test-visual-podman.ts","test:visual:podman:update":"tsx tools/test-visual-podman.ts --update","visual:refresh":"bash tools/skills/visual-baseline.sh","test:a11y":"pnpm --filter @adnap/krysalicss-docs build && playwright test tests/a11y/ --project=a11y","bundle:check":"tsx tools/bundle-size.ts","lint":"deno lint","lint:flags":"tsx tools/lint-feature-flags.ts","lint:motion":"tsx tools/lint-reduced-motion.ts","smoke:imports":"tsx tools/smoke-imports.ts","tokens:build":"tsx tools/export-tokens.ts","format":"deno fmt","format:check":"deno fmt --check","typecheck":"tsc --noEmit","check":"pnpm format:check && pnpm lint && pnpm typecheck","docs:dev":"pnpm --filter @adnap/krysalicss-docs dev","docs:build":"pnpm --filter @adnap/krysalicss-docs build","docs:preview":"pnpm --filter @adnap/krysalicss-docs preview","docs:check":"pnpm --filter @adnap/krysalicss-docs check","build:vue":"pnpm --filter @adnap/krysalicss-vue build","test:vue":"pnpm --filter @adnap/krysalicss-vue test","build:react":"pnpm --filter @adnap/krysalicss-react build","test:react":"pnpm --filter @adnap/krysalicss-react test","changeset":"changeset","version":"changeset version","release":"pnpm build && changeset publish"},"_id":"@adnap/krysalicss@0.1.0","_integrity":"sha512-3Hl8bFR3Vwb4mgs08iBHwVfX7DcL4n1gVPY7+SaxGt266cyymRBZS924ODNsbgOyQdx8Um0ifYZo329k+MUfwg==","_resolved":"/tmp/2429b7dbbef4445e738f7e04ebe3036f/adnap-krysalicss-0.1.0.tgz","_from":"file:adnap-krysalicss-0.1.0.tgz","_nodeVersion":"24.20.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-3Hl8bFR3Vwb4mgs08iBHwVfX7DcL4n1gVPY7+SaxGt266cyymRBZS924ODNsbgOyQdx8Um0ifYZo329k+MUfwg==","shasum":"e1448b44450e75b1c7d1d47c9cd39dbe5f9771a4","tarball":"https://registry.npmjs.org/@adnap/krysalicss/-/krysalicss-0.1.0.tgz","fileCount":306,"unpackedSize":1057090,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDEirN3yYwh4ZeyPPMFvOtyMgSjcRY2iLoCio+sbrAwzgIgRXzYV4h5/iiwemNtya95jTAeP5UgDMNVwByOvQLedH4="}]},"_npmUser":{"name":"nainterceptor","email":"gael+npmjs@demette.fr"},"directories":{},"maintainers":[{"name":"nainterceptor","email":"gael+npmjs@demette.fr"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/krysalicss_0.1.0_1788904078091_0.7536627501810846"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-11T09:29:08.980Z","modified":"2026-09-08T21:47:58.475Z","0.0.1":"2026-05-11T09:29:09.257Z","0.1.0":"2026-09-08T21:47:58.277Z"},"bugs":{"url":"https://gitlab.com/adnap/krysalicss/-/issues"},"author":{"name":"adnap"},"license":"MIT","homepage":"https://krysalicss.eu","keywords":["css","scss","sass","css-framework","framework","modular","responsive","flexbox","themes","dark-mode","css-variables"],"repository":{"type":"git","url":"git+https://gitlab.com/adnap/krysalicss.git"},"description":"A modern, extremely modular, multi-theme CSS framework with first-class theming via CSS custom properties.","maintainers":[{"name":"nainterceptor","email":"gael+npmjs@demette.fr"}],"readme":"<p align=\"center\">\n  <img src=\"./assets/logo.svg\" alt=\"Krysalicss\" width=\"96\" height=\"96\" />\n</p>\n\n# Krysalicss\n\nA modern, extremely modular, multi-theme CSS framework. JS-free output,\nSCSS-native authoring, runtime-switchable themes via CSS custom properties.\n\n## Install\n\n```sh\n# pnpm (recommended)\npnpm add @adnap/krysalicss\n\n# npm\nnpm install @adnap/krysalicss\n\n# yarn\nyarn add @adnap/krysalicss\n\n# bun\nbun add @adnap/krysalicss\n\n# deno\ndeno add npm:@adnap/krysalicss\n```\n\n## Quick start\n\n```scss\n// app.scss\n@use \"@adnap/krysalicss\";\n```\n\nThat ships every component plus the default + dark themes. To compile only what\nyou use:\n\n```scss\n@use \"@adnap/krysalicss\" with (\n  $feature-list: (\n    element-button, module-card, layout-flex, typography-base, typography-title\n  ),\n);\n```\n\nTo bring your own theme, skip the batteries-included entry and pull what you\nneed:\n\n```scss\n@use \"@adnap/krysalicss\";\n@use \"@adnap/krysalicss/theme/dark\";\n```\n\n## Features\n\n- **Modular by default.** Every component is a self-contained SCSS plugin\n  (`_variables.scss` + `_plugin.scss`) gated by a feature flag.\n- **Multi-theme.** Light + dark out of the box. Themes are CSS custom property\n  layers; switch at runtime by toggling a class — no rebuild.\n- **SCSS-native.** Modern `@use` / `@forward` only. No `@import`.\n- **Intrusive _and_ scoped.** Every selector is a configurable variable — apply\n  globally to bare HTML tags or rescope to a class prefix or web-component\n  shadow root.\n\n## Documentation\n\nFull docs: [krysalicss.eu](https://krysalicss.eu). The site follows the\n[Diátaxis](https://diataxis.fr) framework: tutorials, how-to guides, reference,\nand explanation. Start with the\n[first-page tutorial](https://krysalicss.eu/tutorials/first-page) for a\n10-minute walkthrough, or jump to the\n[component reference](https://krysalicss.eu/reference/) for class names and\nvariables.\n\n## Browser support target\n\nEvergreen Chrome, Firefox, Safari, Edge. No IE.\n\n## Visual regression tests\n\nPlaywright `toHaveScreenshot()` against `astro preview` (port 4321). Browsers ×\nviewports × themes matrix; per-component crops via `data-testid`.\n\n### Run loop\n\n```sh\npnpm docs:build                   # required once before snapshotting\npnpm test:visual                  # runs the suite\npnpm test:visual:update           # rewrite snapshots after a deliberate change\n```\n\n`webServer` boots `astro preview` automatically; `reuseExistingServer` is on\nlocally and off in CI.\n\n### When a test fails\n\n1. Inspect `test-results/` and `playwright-report/` (HTML report in CI\n   artifact).\n2. Diff PNGs sit next to the test result; eyeball the change.\n3. If the visual change is **intentional** (component refactor, theme tweak):\n   re-run with `pnpm test:visual:update`, review the diff in your VCS, commit.\n4. If the change is **unintentional**: fix the source (do not update snapshots).\n\n### First-run behaviour\n\n- **Local**: missing snapshots are written on first run; a passing run after\n  `--update-snapshots` is the baseline you commit.\n- **CI (MR branches)**: missing baselines fail the job. Generate baselines\n  locally (or in a one-off CI run with `--update-snapshots`) and commit them on\n  `develop`.\n\n### WebKit on Linux gotcha\n\nWebKit-Linux (CI image `mcr.microsoft.com/playwright:v1.59.1-jammy`) renders\nfonts slightly differently from WebKit-macOS (local). If you see false diffs on\nthe `webkit-*` projects only, accept the CI snapshot as the canonical baseline:\ntrigger a manual CI run with `--update-snapshots`, download the artifact, commit\nthose PNGs.\n\n## Acknowledgements\n\nKrysalicss is indebted to the following open-source projects for spirit, class\nnaming, and API shape. Each is MIT-licensed; thanks to their authors.\n\n- [Bulma](https://bulma.io/) —\n  [MIT](https://github.com/jgthms/bulma/blob/master/LICENSE)\n- [Picnic CSS](https://picnicss.com/) —\n  [MIT](https://github.com/franciscop/picnic/blob/master/LICENSE)\n\n`src/base/reset/_plugin.scss` adapts a few lines from\n[minireset.css](https://github.com/jgthms/minireset.css) (MIT). The banner\ncomment is preserved in the ported file.\n\n## License\n\n[MIT](./LICENSE) — Copyright (c) 2026 adnap.\n","readmeFilename":"README.md"}