@f-ewald/components 0.7.0 → 1.0.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.
Files changed (46) hide show
  1. package/README.md +70 -47
  2. package/custom-elements.json +2236 -966
  3. package/dist/calendar-entry.d.ts +33 -0
  4. package/dist/calendar-entry.d.ts.map +1 -0
  5. package/dist/calendar-entry.js +64 -0
  6. package/dist/calendar-entry.js.map +1 -0
  7. package/dist/calendar-month.d.ts +67 -0
  8. package/dist/calendar-month.d.ts.map +1 -0
  9. package/dist/calendar-month.js +455 -0
  10. package/dist/calendar-month.js.map +1 -0
  11. package/dist/calendar-year.d.ts +43 -0
  12. package/dist/calendar-year.d.ts.map +1 -0
  13. package/dist/calendar-year.js +136 -0
  14. package/dist/calendar-year.js.map +1 -0
  15. package/dist/form-select.d.ts +21 -2
  16. package/dist/form-select.d.ts.map +1 -1
  17. package/dist/form-select.js +431 -27
  18. package/dist/form-select.js.map +1 -1
  19. package/dist/index.d.ts +3 -1
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +3 -1
  22. package/dist/index.js.map +1 -1
  23. package/dist/map-circle.d.ts +3 -0
  24. package/dist/map-circle.d.ts.map +1 -1
  25. package/dist/map-circle.js +3 -0
  26. package/dist/map-circle.js.map +1 -1
  27. package/dist/tokens.css +4 -0
  28. package/dist/tokens.d.ts.map +1 -1
  29. package/dist/tokens.js +3 -0
  30. package/dist/tokens.js.map +1 -1
  31. package/dist/utils/calendar.d.ts +77 -0
  32. package/dist/utils/calendar.d.ts.map +1 -0
  33. package/dist/utils/calendar.js +135 -0
  34. package/dist/utils/calendar.js.map +1 -0
  35. package/docs/calendar-entry.md +53 -0
  36. package/docs/calendar-month.md +77 -0
  37. package/docs/calendar-year.md +53 -0
  38. package/docs/form-select.md +15 -3
  39. package/docs/map-circle.md +4 -0
  40. package/llms.txt +117 -28
  41. package/package.json +10 -2
  42. package/dist/map-point.d.ts +0 -31
  43. package/dist/map-point.d.ts.map +0 -1
  44. package/dist/map-point.js +0 -83
  45. package/dist/map-point.js.map +0 -1
  46. package/docs/map-point.md +0 -44
package/README.md CHANGED
@@ -3,6 +3,9 @@
3
3
  [![npm](https://img.shields.io/npm/v/@f-ewald/components)](https://www.npmjs.com/package/@f-ewald/components)
4
4
  [![license](https://img.shields.io/badge/license-BSD--3--Clause-blue)](./LICENSE)
5
5
 
6
+ [Documentation](https://f-ewald.github.io/components/) ·
7
+ [Playground](https://f-ewald.github.io/components/playground/)
8
+
6
9
  A collection of self-contained [Lit](https://lit.dev) web components sharing a
7
10
  Tailwind-inspired design token system. Every component is individually
8
11
  importable and ships its own TypeScript types plus a checked-in
@@ -41,43 +44,45 @@ import "@f-ewald/components/roman-numeral.js";
41
44
 
42
45
  | Component | Docs |
43
46
  | --- | --- |
44
- | `<address-autocomplete>` | [docs/address-autocomplete.md](./docs/address-autocomplete.md) |
45
- | `<animate-confetti>` | [docs/animate-confetti.md](./docs/animate-confetti.md) |
46
- | `<autocomplete-input>` | [docs/autocomplete-input.md](./docs/autocomplete-input.md) |
47
- | `<chat-message>` | [docs/chat-message.md](./docs/chat-message.md) |
48
- | `<confirm-dialog>` | [docs/confirm-dialog.md](./docs/confirm-dialog.md) |
49
- | `<copy-link-button>` | [docs/copy-link-button.md](./docs/copy-link-button.md) |
50
- | `<data-table>` | [docs/data-table.md](./docs/data-table.md) |
51
- | `<distance-value>` | [docs/distance-value.md](./docs/distance-value.md) |
52
- | `<distribution-chart>` | [docs/distribution-chart.md](./docs/distribution-chart.md) |
53
- | `<dropdown-button>` | [docs/dropdown-button.md](./docs/dropdown-button.md) |
54
- | `<editable-text>` | [docs/editable-text.md](./docs/editable-text.md) |
55
- | `<form-select>` | [docs/form-select.md](./docs/form-select.md) |
56
- | `<frame-box>` | [docs/frame-box.md](./docs/frame-box.md) |
57
- | `<gallery-item>` | [docs/gallery-item.md](./docs/gallery-item.md) |
58
- | `<gallery-item-variant>` | [docs/gallery-item-variant.md](./docs/gallery-item-variant.md) |
59
- | `<icon-button>` | [docs/icon-button.md](./docs/icon-button.md) |
60
- | `<live-timer>` | [docs/live-timer.md](./docs/live-timer.md) |
61
- | `<map-circle>` | [docs/map-circle.md](./docs/map-circle.md) |
62
- | `<map-pin>` | [docs/map-pin.md](./docs/map-pin.md) |
63
- | `<map-point>` | [docs/map-point.md](./docs/map-point.md) |
64
- | `<percent-bar-chart>` | [docs/percent-bar-chart.md](./docs/percent-bar-chart.md) |
65
- | `<photo-gallery>` | [docs/photo-gallery.md](./docs/photo-gallery.md) |
66
- | `<popover-panel>` | [docs/popover-panel.md](./docs/popover-panel.md) |
67
- | `<price-history-chart>` | [docs/price-history-chart.md](./docs/price-history-chart.md) |
68
- | `<radio-cards>` | [docs/radio-cards.md](./docs/radio-cards.md) |
69
- | `<radio-pills>` | [docs/radio-pills.md](./docs/radio-pills.md) |
70
- | `<relative-time>` | [docs/relative-time.md](./docs/relative-time.md) |
71
- | `<reveal-button>` | [docs/reveal-button.md](./docs/reveal-button.md) |
72
- | `<roman-numeral>` | [docs/roman-numeral.md](./docs/roman-numeral.md) |
73
- | `<slide-panel>` | [docs/slide-panel.md](./docs/slide-panel.md) |
74
- | `<stat-meter>` | [docs/stat-meter.md](./docs/stat-meter.md) |
75
- | `<status-pill>` | [docs/status-pill.md](./docs/status-pill.md) |
76
- | `<tile-grid>` | [docs/tile-grid.md](./docs/tile-grid.md) |
77
- | `<toast-notification>` | [docs/toast-notification.md](./docs/toast-notification.md) |
78
- | `<ui-button>` | [docs/ui-button.md](./docs/ui-button.md) |
79
- | `<user-avatar>` | [docs/user-avatar.md](./docs/user-avatar.md) |
80
- | `<weight-bar-chart>` | [docs/weight-bar-chart.md](./docs/weight-bar-chart.md) |
47
+ | `<address-autocomplete>` | [API reference](https://f-ewald.github.io/components/docs/address-autocomplete.html) |
48
+ | `<animate-confetti>` | [API reference](https://f-ewald.github.io/components/docs/animate-confetti.html) |
49
+ | `<autocomplete-input>` | [API reference](https://f-ewald.github.io/components/docs/autocomplete-input.html) |
50
+ | `<calendar-entry>` | [API reference](https://f-ewald.github.io/components/docs/calendar-entry.html) |
51
+ | `<calendar-month>` | [API reference](https://f-ewald.github.io/components/docs/calendar-month.html) |
52
+ | `<calendar-year>` | [API reference](https://f-ewald.github.io/components/docs/calendar-year.html) |
53
+ | `<chat-message>` | [API reference](https://f-ewald.github.io/components/docs/chat-message.html) |
54
+ | `<confirm-dialog>` | [API reference](https://f-ewald.github.io/components/docs/confirm-dialog.html) |
55
+ | `<copy-link-button>` | [API reference](https://f-ewald.github.io/components/docs/copy-link-button.html) |
56
+ | `<data-table>` | [API reference](https://f-ewald.github.io/components/docs/data-table.html) |
57
+ | `<distance-value>` | [API reference](https://f-ewald.github.io/components/docs/distance-value.html) |
58
+ | `<distribution-chart>` | [API reference](https://f-ewald.github.io/components/docs/distribution-chart.html) |
59
+ | `<dropdown-button>` | [API reference](https://f-ewald.github.io/components/docs/dropdown-button.html) |
60
+ | `<editable-text>` | [API reference](https://f-ewald.github.io/components/docs/editable-text.html) |
61
+ | `<form-select>` | [API reference](https://f-ewald.github.io/components/docs/form-select.html) |
62
+ | `<frame-box>` | [API reference](https://f-ewald.github.io/components/docs/frame-box.html) |
63
+ | `<gallery-item>` | [API reference](https://f-ewald.github.io/components/docs/gallery-item.html) |
64
+ | `<gallery-item-variant>` | [API reference](https://f-ewald.github.io/components/docs/gallery-item-variant.html) |
65
+ | `<icon-button>` | [API reference](https://f-ewald.github.io/components/docs/icon-button.html) |
66
+ | `<live-timer>` | [API reference](https://f-ewald.github.io/components/docs/live-timer.html) |
67
+ | `<map-circle>` | [API reference](https://f-ewald.github.io/components/docs/map-circle.html) |
68
+ | `<map-pin>` | [API reference](https://f-ewald.github.io/components/docs/map-pin.html) |
69
+ | `<percent-bar-chart>` | [API reference](https://f-ewald.github.io/components/docs/percent-bar-chart.html) |
70
+ | `<photo-gallery>` | [API reference](https://f-ewald.github.io/components/docs/photo-gallery.html) |
71
+ | `<popover-panel>` | [API reference](https://f-ewald.github.io/components/docs/popover-panel.html) |
72
+ | `<price-history-chart>` | [API reference](https://f-ewald.github.io/components/docs/price-history-chart.html) |
73
+ | `<radio-cards>` | [API reference](https://f-ewald.github.io/components/docs/radio-cards.html) |
74
+ | `<radio-pills>` | [API reference](https://f-ewald.github.io/components/docs/radio-pills.html) |
75
+ | `<relative-time>` | [API reference](https://f-ewald.github.io/components/docs/relative-time.html) |
76
+ | `<reveal-button>` | [API reference](https://f-ewald.github.io/components/docs/reveal-button.html) |
77
+ | `<roman-numeral>` | [API reference](https://f-ewald.github.io/components/docs/roman-numeral.html) |
78
+ | `<slide-panel>` | [API reference](https://f-ewald.github.io/components/docs/slide-panel.html) |
79
+ | `<stat-meter>` | [API reference](https://f-ewald.github.io/components/docs/stat-meter.html) |
80
+ | `<status-pill>` | [API reference](https://f-ewald.github.io/components/docs/status-pill.html) |
81
+ | `<tile-grid>` | [API reference](https://f-ewald.github.io/components/docs/tile-grid.html) |
82
+ | `<toast-notification>` | [API reference](https://f-ewald.github.io/components/docs/toast-notification.html) |
83
+ | `<ui-button>` | [API reference](https://f-ewald.github.io/components/docs/ui-button.html) |
84
+ | `<user-avatar>` | [API reference](https://f-ewald.github.io/components/docs/user-avatar.html) |
85
+ | `<weight-bar-chart>` | [API reference](https://f-ewald.github.io/components/docs/weight-bar-chart.html) |
81
86
 
82
87
  Each doc lists the component's attributes/properties, events, slots, and the
83
88
  `--ui-*` CSS custom properties it consumes. For a machine-readable summary of
@@ -166,8 +171,17 @@ sources are imported directly from `src/`, so edits hot-reload.
166
171
 
167
172
  ```bash
168
173
  npm run build:demo # static build of the playground, into demo-dist/
174
+ npm run build:site # docs + playground Pages artifact, into pages-dist/
175
+ npm run preview:site # preview the exact Pages artifact locally
176
+ npm run test:site # smoke-test the built documentation and playground
169
177
  ```
170
178
 
179
+ The combined site is deployed automatically from `main` to
180
+ [GitHub Pages](https://f-ewald.github.io/components/). The workflow reads the
181
+ repository and publishes `pages-dist/`; it has no permission or persisted
182
+ credential capable of changing repository files, branches, tags, or pull
183
+ requests.
184
+
171
185
  ## Development commands
172
186
 
173
187
  | Command | Purpose |
@@ -175,11 +189,14 @@ npm run build:demo # static build of the playground, into demo-dist/
175
189
  | `npm run dev` | Start the Vite playground with HMR. |
176
190
  | `npm run build` | Compile `src/` with `tsc` into `dist/`, and generate `dist/tokens.css`. |
177
191
  | `npm run build:demo` | Build the static playground into `demo-dist/`. |
192
+ | `npm run build:site` | Build the static documentation and nested playground into `pages-dist/`. |
193
+ | `npm run preview:site` | Preview the built Pages artifact locally. |
178
194
  | `npm run icons` | Regenerate `src/icons.ts` from the Heroicons package. |
179
195
  | `npm run analyze` | Regenerate `custom-elements.json` via the custom-elements-manifest analyzer. |
180
196
  | `npm run docs` | Regenerate the manifest, `docs/*.md`, and `llms.txt`. |
181
197
  | `npm run mcp` | Run the MCP server (`dist/mcp-server.js`) directly, for manual testing. |
182
198
  | `npm run test` | Run the Playwright suite against the playground. |
199
+ | `npm run test:site` | Run the Playwright smoke suite against `pages-dist/`. |
183
200
 
184
201
  ## Contributing
185
202
 
@@ -191,25 +208,31 @@ npm run build:demo # static build of the playground, into demo-dist/
191
208
  the `tsc`-emitted `dist/` output resolves correctly for consumers.
192
209
  - Run `npm run docs` after changing any component's public API so the
193
210
  generated docs and `llms.txt` stay in sync.
211
+ - `npm run build:site` only reads those checked-in documentation inputs and
212
+ writes ignored `pages-dist/`; it never updates tracked generated files.
194
213
 
195
214
  ## Publishing
196
215
 
197
- First publish (package is not yet on the npm registry):
198
-
199
- ```bash
200
- npm login # if needed
201
- npm publish --access public
202
- ```
216
+ Releases are published automatically by
217
+ [`.github/workflows/npm-publish.yml`](./.github/workflows/npm-publish.yml)
218
+ when a strict `vX.Y.Z` tag is pushed. The workflow validates the tag against
219
+ both package manifests, runs the full `prepublishOnly` gate, and publishes via
220
+ npm Trusted Publishing with provenance—no `NPM_TOKEN` repository secret.
203
221
 
204
- Subsequent releases:
222
+ Configure the `@f-ewald/components` npmjs package once with a GitHub Actions
223
+ Trusted Publisher for owner `f-ewald`, repository `components`, workflow
224
+ `npm-publish.yml`, no environment, and **Allowed actions: npm publish**. Then
225
+ release only after all source and generated-doc changes are committed:
205
226
 
206
227
  ```bash
207
228
  npm version <patch|minor|major>
208
- npm publish
229
+ git push origin main --follow-tags
209
230
  ```
210
231
 
211
- `prepublishOnly` runs `build`, `docs`, and `test` automatically before every
212
- publish.
232
+ `npm version` must create the matching annotated `vX.Y.Z` tag on the version
233
+ commit; every version bump requires that tag, beginning with `v1.0.0`. The
234
+ initial local `v1.0.0` tag was moved to the release-workflow commit before
235
+ its first push; published tags must never be moved.
213
236
 
214
237
  ## License
215
238