@feugene/granularity 0.38.0 → 0.39.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 +39 -0
- package/dist/web-types.json +1 -1
- package/package.json +7 -5
package/README.md
CHANGED
|
@@ -86,12 +86,51 @@ For a finer setup take the layers apart — `@feugene/granularity/styles/tokens.
|
|
|
86
86
|
preset. There is no per-component stylesheet to import: a component that has CSS of its own imports it
|
|
87
87
|
from its own chunk, so a granular import already brings everything it needs.
|
|
88
88
|
|
|
89
|
+
## Granular imports, in numbers
|
|
90
|
+
|
|
91
|
+
<!-- entry-sizes:generated:start lang=en -->
|
|
92
|
+
| What you import | gzip | of the barrel |
|
|
93
|
+
| --- | ---: | ---: |
|
|
94
|
+
| the whole package from the root | 542.9 kB | 100 % |
|
|
95
|
+
| the lightest component — `GrButtonGroup` | 1.8 kB | < 1 % |
|
|
96
|
+
| the median component — `GrNavbar` | 15.4 kB | 3 % |
|
|
97
|
+
| the 5 heaviest together | 171.1 kB | 32 % |
|
|
98
|
+
|
|
99
|
+
These numbers **do not add up**: shared code is counted again in every row but paid for once, which is why
|
|
100
|
+
the set is shown as a union rather than a sum. They are an upper bound — the gzip of everything a subpath
|
|
101
|
+
pulls out of `dist`, before the application bundler shakes it further and minifies it again.
|
|
102
|
+
|
|
103
|
+
The weight of every component — [`docs/entry-sizes.md`](./docs/entry-sizes.md).
|
|
104
|
+
<!-- entry-sizes:generated:end -->
|
|
105
|
+
|
|
106
|
+
## The rest of the family
|
|
107
|
+
|
|
108
|
+
The core ships the general-purpose components. Anything that carries a heavy dependency, belongs to a
|
|
109
|
+
domain of its own, or is needed by a minority of consumers lives in a companion package with a `peer`
|
|
110
|
+
on this one — the core stays lean, and you install only what you reach for.
|
|
111
|
+
|
|
112
|
+
<!-- ecosystem:generated:start -->
|
|
113
|
+
| Package | Version | What it adds |
|
|
114
|
+
| --- | --- | --- |
|
|
115
|
+
| [`@feugene/granularity-charts`](../granularity-charts) | 0.10.1 | Charts — own SVG, zero dependencies, drawn with theme tokens. |
|
|
116
|
+
| [`@feugene/granularity-chrono`](../granularity-chrono) | 0.10.0 | Calendar, date and time components — no third-party date widget, no date library. |
|
|
117
|
+
| [`@feugene/granularity-dashboard`](../granularity-dashboard) | 0.6.0 | Widget grid — drag, resize, breakpoints and layout persistence, zero dependencies. |
|
|
118
|
+
| [`@feugene/granularity-datasource`](../granularity-datasource) | 0.1.2 | List state: sorting, filters, paging, URL sync and race-free fetching behind one composable. |
|
|
119
|
+
| [`@feugene/granularity-devtools`](../granularity-devtools) | 0.3.1 | Vue DevTools panel — where a prop value came from, the overlay layer stack and design-system warnings. |
|
|
120
|
+
| [`@feugene/granularity-editor`](../granularity-editor) | 0.3.1 | Rich-text editing: a TipTap-backed GrRichText field with a design-system toolbar. |
|
|
121
|
+
| [`@feugene/granularity-forms-schema`](../granularity-forms-schema) | 0.4.0 | Schema-driven forms — zod and JSON Schema into real form fields, zero dependencies. |
|
|
122
|
+
| [`@feugene/granularity-media`](../granularity-media) | 0.7.1 | Media components: image cropping, camera capture, code scanning and video playback. |
|
|
123
|
+
| [`@feugene/granularity-test-kit`](../granularity-test-kit) | 0.8.1 | Test gates for @feugene/granularity design-system packages — token, registry and defaults contracts as reusable factories. |
|
|
124
|
+
| [`@feugene/unplugin-granularity`](../unplugin-granularity) | 0.7.1 | unplugin-vue-components resolver — granular auto-import for components and directives. |
|
|
125
|
+
<!-- ecosystem:generated:end -->
|
|
126
|
+
|
|
89
127
|
## Documentation
|
|
90
128
|
|
|
91
129
|
- [`docs/README.md`](./docs/README.md) — overview and documentation map
|
|
92
130
|
- [`docs/installation.md`](./docs/installation.md) — installation, public entrypoints, and adoption strategies
|
|
93
131
|
- [`docs/styling.md`](./docs/styling.md) — style layers, themes, and import order
|
|
94
132
|
- [`docs/tokens.md`](./docs/tokens.md) — design token reference (generated from `tokens/*.json`)
|
|
133
|
+
- [`docs/entry-sizes.md`](./docs/entry-sizes.md) — the weight of every component as a subpath (generated from the build)
|
|
95
134
|
- [`docs/theming.md`](./docs/theming.md) — building a custom theme (roles, contrast rules, wiring)
|
|
96
135
|
- [`docs/keyboard.md`](./docs/keyboard.md) — keyboard contract per component
|
|
97
136
|
- [`docs/overlays.md`](./docs/overlays.md) — overlay contract: portal, layer stack, Esc, `inert`, focus
|
package/dist/web-types.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
|
|
3
3
|
"name": "@feugene/granularity",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.39.0",
|
|
5
5
|
"framework": "vue",
|
|
6
6
|
"js-types-syntax": "typescript",
|
|
7
7
|
"description-markup": "markdown",
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@feugene/granularity",
|
|
3
3
|
"description": "Granularity design system package with Vue 3 components, consumed via the `@feugene/unocss-preset-granular` preset.",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.39.0",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Evgeniy Fureev",
|
|
@@ -608,7 +608,7 @@
|
|
|
608
608
|
"@antfu/eslint-config": "^9.3.0",
|
|
609
609
|
"@feugene/fint-i18n": "^0.7.0",
|
|
610
610
|
"@feugene/granularity-test-kit": "^0.8.1",
|
|
611
|
-
"@feugene/unocss-preset-granular": "^0.
|
|
611
|
+
"@feugene/unocss-preset-granular": "^0.15.0",
|
|
612
612
|
"@floating-ui/dom": "^1.8.0",
|
|
613
613
|
"@iconify-json/lucide": "^1.2.126",
|
|
614
614
|
"@types/node": "^25.9.5",
|
|
@@ -629,15 +629,17 @@
|
|
|
629
629
|
"vue-tsc": "^3.3.11"
|
|
630
630
|
},
|
|
631
631
|
"scripts": {
|
|
632
|
-
"build": "vite build && gr-check-dist-dev-guard && node scripts/check-dist-no-tests.mjs && node scripts/generate-web-types.mjs && vue-tsc -p tsconfig.build.json && node scripts/check-dist-exports.mjs",
|
|
632
|
+
"build": "vite build && gr-check-dist-dev-guard && node scripts/check-dist-no-tests.mjs && node scripts/generate-web-types.mjs && vue-tsc -p tsconfig.build.json && node scripts/check-dist-exports.mjs && node scripts/check-entry-isolation.mjs",
|
|
633
633
|
"check:messages": "fint-i18n-check-messages src/i18n/locales",
|
|
634
634
|
"dev": "vite build --watch",
|
|
635
|
-
"doctor": "granular
|
|
635
|
+
"doctor": "node ../../scripts/granular-doctor.mjs ./granular.options.mjs",
|
|
636
636
|
"generate:registry": "node scripts/generate-registry.mjs",
|
|
637
637
|
"generate:tokens": "node --experimental-strip-types scripts/generate-tokens.mjs",
|
|
638
638
|
"lint": "eslint . --cache",
|
|
639
639
|
"lint:fix": "eslint . --cache --fix",
|
|
640
|
-
"sizes": "node scripts/report-entry-sizes.mjs",
|
|
640
|
+
"sizes": "node ../../scripts/report-entry-sizes.mjs .",
|
|
641
|
+
"sizes:docs": "node ../../scripts/generate-entry-sizes.mjs .",
|
|
642
|
+
"isolation": "node scripts/check-entry-isolation.mjs",
|
|
641
643
|
"test": "vitest --config vitest.config.ts",
|
|
642
644
|
"test:coverage": "vitest run --config vitest.config.ts --coverage",
|
|
643
645
|
"test:run": "vitest run --config vitest.config.ts",
|