crumb-widget 1.3.0 → 1.4.1

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 CHANGED
@@ -1,33 +1,85 @@
1
1
  <p align="center">
2
- <img src="pages/crumb-logo.svg" alt="Crumb Widget logo" width="128" height="128">
2
+ <img src="docs/crumb-logo.svg" alt="Crumb Widget logo" width="128" height="128">
3
3
  </p>
4
4
 
5
- # Crumb Widget
5
+ <h1 align="center">Crumb Widget</h1>
6
6
 
7
- [![test](https://github.com/bmlt-enabled/crumb-widget/actions/workflows/test.yml/badge.svg)](https://github.com/bmlt-enabled/crumb-widget/actions/workflows/test.yml)
8
- [![codecov](https://codecov.io/gh/bmlt-enabled/crumb-widget/graph/badge.svg)](https://codecov.io/gh/bmlt-enabled/crumb-widget)
9
- [![npm](https://img.shields.io/npm/v/crumb-widget)](https://www.npmjs.com/package/crumb-widget)
10
- [![docs](https://img.shields.io/badge/docs-crumb.bmlt.app-blue)](https://crumb.bmlt.app/)
7
+ <p align="center">
8
+ <a href="https://github.com/bmlt-enabled/crumb-widget/actions/workflows/test.yml"><img src="https://github.com/bmlt-enabled/crumb-widget/actions/workflows/test.yml/badge.svg" alt="test"></a>
9
+ <a href="https://codecov.io/gh/bmlt-enabled/crumb-widget"><img src="https://codecov.io/gh/bmlt-enabled/crumb-widget/graph/badge.svg" alt="codecov"></a>
10
+ <a href="https://www.npmjs.com/package/crumb-widget"><img src="https://img.shields.io/npm/v/crumb-widget" alt="npm"></a>
11
+ <a href="https://crumb.bmlt.app/"><img src="https://img.shields.io/badge/docs-crumb.bmlt.app-blue" alt="docs"></a>
12
+ </p>
13
+
14
+ <p align="center">
15
+ 🌐 English | <a href="docs/intl/README.es.md">Español</a> | <a href="docs/intl/README.pt-BR.md">Português (Brasil)</a> | <a href="docs/intl/README.fr.md">Français</a> | <a href="docs/intl/README.de.md">Deutsch</a> | <a href="docs/intl/README.it.md">Italiano</a> | <a href="docs/intl/README.sv.md">Svenska</a> | <a href="docs/intl/README.da.md">Dansk</a> | <a href="docs/intl/README.pl.md">Polski</a> | <a href="docs/intl/README.el.md">Ελληνικά</a> | <a href="docs/intl/README.ru.md">Русский</a> | <a href="docs/intl/README.ja.md">日本語</a> | <a href="docs/intl/README.fa.md">فارسی</a>
16
+ </p>
17
+
18
+ <p align="center">
19
+ <strong>👉 Live demo:</strong> <a href="https://crumb.bmlt.app/meetings.html">crumb.bmlt.app/meetings.html</a>
20
+ </p>
21
+
22
+ <p align="center">
23
+ <img src="docs/screenshot-carousel.gif" alt="Crumb Widget — list, map, and meeting detail views" width="550">
24
+ </p>
25
+
26
+ An embeddable NA meeting finder widget. Built with Svelte 5, distributed as a single self-contained JavaScript file. Available as a [WordPress plugin](https://wordpress.org/plugins/crumb/), [Drupal module](https://github.com/bmlt-enabled/crumb-drupal), [Joomla extension](https://github.com/bmlt-enabled/crumb-joomla), [CDN script](https://cdn.aws.bmlt.app/crumb-widget.js), or [npm package](https://www.npmjs.com/package/crumb-widget).
27
+
28
+ ## Which version should I use?
11
29
 
12
- An embeddable NA meeting finder widget. Built with Svelte 5, distributed as a single self-contained JavaScript file. Available as a [WordPress plugin](https://wordpress.org/plugins/crumb/), [Drupal module](https://github.com/bmlt-enabled/crumb-drupal), [CDN script](https://cdn.aws.bmlt.app/crumb-widget.js), or [npm package](https://www.npmjs.com/package/crumb-widget).
30
+ | Your site | Use this |
31
+ |-------------------------------------------------------|--------------------------------------------------------------------------|
32
+ | **WordPress** | [WordPress plugin](https://wordpress.org/plugins/crumb/) |
33
+ | **Drupal** 10.3+ or 11 | [Drupal module](https://github.com/bmlt-enabled/crumb-drupal) |
34
+ | **Joomla** 4, 5, or 6 | [Joomla extension](https://github.com/bmlt-enabled/crumb-joomla) |
35
+ | **Wix, Squarespace, Google Sites, or plain HTML** | Paste the [CDN snippet](#quick-start) into a code block |
36
+ | **A JS/TS app** (React, Svelte, Vue, Vite, etc.) | `npm install crumb-widget` ([docs](https://crumb.bmlt.app/#npm-package)) |
13
37
 
14
38
  ## Features
15
39
 
16
40
  - List and map views with real-time search and filters
17
41
  - Meeting detail with directions, virtual join link, and formats
18
- - Geolocation-based nearby search
42
+ - Geolocation-based nearby search, plus typed location search by city, postal code, or address
19
43
  - Individual meeting links via built-in router
20
- - Multi-language support (12 languages, including RTL layout for Persian)
44
+ - 13 built-in languages (English, Español, Português (Brasil), Français, Deutsch, Italiano, Svenska, Dansk, Polski, Ελληνικά, Русский, 日本語, فارسی — including RTL layout for Persian)
21
45
  - Configurable columns, map tiles, and custom markers
46
+ - Optional "Update Meeting Info" link on each meeting detail — point at a [bmlt-workflow](https://github.com/bmlt-enabled/bmlt-workflow) form, any custom form, or a `mailto:` URL ([docs](https://crumb.bmlt.app/#update-url))
22
47
  - Printer-friendly list view
23
48
 
24
49
  ## Quick Start
25
50
 
51
+ **What you'll need:**
52
+
53
+ 1. Your **BMLT server URL** — usually something like `https://bmlt.example.org/main_server/`. Ask your service body's webservant if you don't have it.
54
+ 2. (Optional) A **service body ID** to filter to a specific area or region. [How to find it →](https://crumb.bmlt.app/#find-service-body)
55
+
56
+ **Minimum viable embed** (paste into any HTML page, Squarespace code block, Wix HTML embed, etc.):
57
+
58
+ ```html
59
+ <div id="crumb-widget" data-server="https://myserver.com/main_server/"></div>
60
+ <script type="module" src="https://cdn.aws.bmlt.app/crumb-widget.js"></script>
61
+ ```
62
+
63
+ **Filter to a single service body:**
64
+
26
65
  ```html
27
- <div id="crumb-widget" data-server="https://myserver.com/main_server/" data-service-body="3"></div>
66
+ <div id="crumb-widget"
67
+ data-server="https://myserver.com/main_server/"
68
+ data-service-body="3"
69
+ ></div>
28
70
  <script type="module" src="https://cdn.aws.bmlt.app/crumb-widget.js"></script>
29
71
  ```
30
72
 
73
+ ## Documentation
74
+
75
+ Check out the full Crumb documentation — including configuration options, examples, and a getting started guide at **[crumb.bmlt.app](https://crumb.bmlt.app/)**.
76
+
77
+ ## Need help?
78
+
79
+ - 🐛 **Bug or feature request:** open an issue on [GitHub](https://github.com/bmlt-enabled/crumb-widget/issues)
80
+ - 📧 **Email:** [help@bmlt.app](mailto:help@bmlt.app)
81
+ - 💬 **Community:** the [BMLT Facebook group](https://www.facebook.com/groups/bmltapp/)
82
+
31
83
  ## License
32
84
 
33
85
  MIT
package/dist/module.d.ts CHANGED
@@ -1,59 +1,22 @@
1
- export declare type Column = 'time' | 'name' | 'location' | 'address' | 'service_body';
2
-
3
- export declare interface CrumbWidgetConfig {
4
- language?: string;
5
- view?: 'list' | 'map' | 'both';
6
- columns?: Column[];
7
- geolocation?: boolean;
8
- geolocationRadius?: number;
9
- distanceOptions?: number[];
10
- distanceUnit?: 'mi' | 'km';
11
- height?: number;
12
- darkMode?: 'auto' | true | false;
13
- nowOffset?: number;
14
- hideHeader?: boolean;
15
- /** Base path for History API routing (e.g. '/meetings'). Enables clean URLs without '#'. */
16
- basePath?: string;
17
- map?: {
18
- tiles?: TilesConfig;
19
- tiles_dark?: TilesConfig;
20
- markers?: {
21
- location?: MarkerConfig;
22
- };
23
- };
24
- }
25
-
26
- declare interface MarkerConfig {
27
- html: string;
28
- width: number;
29
- height: number;
30
- }
31
-
32
- /**
33
- * Mount the Crumb Widget into the given element.
34
- *
35
- * @example
36
- * ```ts
37
- * import { mountCrumbWidget } from 'crumb-widget';
38
- *
39
- * mountCrumbWidget(document.getElementById('my-widget'), {
40
- * serverUrl: 'https://bmlt.example.org/main_server/',
41
- * serviceBodyIds: [1, 2, 3],
42
- * });
43
- * ```
44
- */
45
- export declare function mountCrumbWidget(el: HTMLElement, options: MountOptions): void;
46
-
47
- export declare interface MountOptions extends CrumbWidgetConfig {
48
- /** URL of the BMLT server (required) */
49
- serverUrl: string;
50
- /** Service body IDs to filter by (defaults to all) */
51
- serviceBodyIds?: number[];
52
- }
53
-
54
- declare interface TilesConfig {
55
- url: string;
56
- attribution: string;
57
- }
58
-
59
- export { }
1
+ import { CrumbWidgetConfig, Column } from './types';
2
+ export type { CrumbWidgetConfig, Column };
3
+ export interface MountOptions extends CrumbWidgetConfig {
4
+ /** URL of the BMLT server (required) */
5
+ serverUrl: string;
6
+ /** Service body IDs to filter by (defaults to all) */
7
+ serviceBodyIds?: number[];
8
+ }
9
+ /**
10
+ * Mount the Crumb Widget into the given element.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * import { mountCrumbWidget } from 'crumb-widget';
15
+ *
16
+ * mountCrumbWidget(document.getElementById('my-widget'), {
17
+ * serverUrl: 'https://bmlt.example.org/main_server/',
18
+ * serviceBodyIds: [1, 2, 3],
19
+ * });
20
+ * ```
21
+ */
22
+ export declare function mountCrumbWidget(el: HTMLElement, options: MountOptions): void;