@echodial/deck 0.1.0 → 0.1.3

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,6 +1,10 @@
1
1
  # Deck
2
2
 
3
- **Deck is a CSS framework that ships as one 26.7 KB Brotli (32.7 KB gzip) stylesheet: buttons, forms,
3
+ [![npm version](https://img.shields.io/npm/v/@echodial/deck)](https://www.npmjs.com/package/@echodial/deck)
4
+ [![Packagist version](https://img.shields.io/packagist/v/echodial/deck)](https://packagist.org/packages/echodial/deck)
5
+ [![License: MIT](https://img.shields.io/npm/l/@echodial/deck)](LICENSE)
6
+
7
+ **Deck is a CSS framework that ships as one 26.8 KB Brotli (32.7 KB gzip) stylesheet: buttons, forms,
4
8
  tables, a data grid, charts, overlays, an icon sprite, and a full color system. You add it
5
9
  with one `<link>` tag. There is no build step, no config file, and zero dependencies.**
6
10
 
@@ -19,25 +23,25 @@ That is the whole install. Nothing to compile, nothing to purge, nothing to conf
19
23
  whole page with no second stylesheet.
20
24
  - **Zero runtime dependencies.** The JavaScript is optional and dependency-free.
21
25
 
22
- Version 0.1.0 · MIT · Chrome 117+, Edge 117+, Safari 17.4+, Firefox 128+
26
+ Version 0.1.3 · MIT · Chrome 117+, Edge 117+, Safari 17.4+, Firefox 128+
23
27
 
24
28
  ## What Deck weighs
25
29
 
26
- A page that loads the stylesheet, the icon sprite, and the optional JavaScript transfers **62.7 KB** Brotli, or **76.3 KB** gzip. Every browser Deck supports sends `br` in
30
+ A page that loads the stylesheet, the icon sprite, and the optional JavaScript transfers **62.8 KB** Brotli, or **76.3 KB** gzip. Every browser Deck supports sends `br` in
27
31
  `Accept-Encoding`, and Cloudflare, Vercel, Netlify, and nginx with `ngx_brotli` negotiate
28
32
  it for text by default, so Brotli is what most users actually receive.
29
33
 
30
34
  | File | Brotli | gzip |
31
35
  | --- | --- | --- |
32
- | `deck.min.css` | **26.7 KB** | 32.7 KB |
36
+ | `deck.min.css` | **26.8 KB** | 32.7 KB |
33
37
  | `deck-icons.svg` | **27.1 KB** | 33.6 KB |
34
38
  | `deck.min.js` | **8.9 KB** | 10.0 KB |
35
- | **All three** | **62.7 KB** | **76.3 KB** |
39
+ | **All three** | **62.8 KB** | **76.3 KB** |
36
40
 
37
41
  The sprite is the largest single file, slightly bigger than the stylesheet — worth stating
38
42
  plainly rather than leaving you to find it in devtools. Swapping `deck.min.js` for the full
39
- `deck.bundle.min.js` (adds the date picker, combobox, data grid, toasts, QR encoder)
40
- makes the JavaScript 17.3 KB and the total 71.1 KB Brotli (85.8 KB gzip).
43
+ `deck.bundle.min.js` (adds the carousel, drawer, mega menu, copy button, QR encoder, editor and library adapters)
44
+ makes the JavaScript 17.3 KB and the total 71.2 KB Brotli (85.8 KB gzip).
41
45
 
42
46
  ### The sprite is a manifest, not a fixed cost
43
47
 
@@ -70,9 +74,9 @@ brand marks through from the previous sprite, and dropping them drops the marks.
70
74
 
71
75
  | File | Brotli | gzip | What it is |
72
76
  | --- | --- | --- | --- |
73
- | `deck.min.css` | 26.7 KB | 32.7 KB | The whole framework |
77
+ | `deck.min.css` | 26.8 KB | 32.7 KB | The whole framework |
74
78
  | `deck.min.js` | 8.9 KB | 10.0 KB | Optional behaviour, no dependencies |
75
- | `deck-extras.min.js` | 5.7 KB | 6.5 KB | Date picker, combobox, data grid, toasts, QR encoder |
79
+ | `deck-extras.min.js` | 5.7 KB | 6.5 KB | Carousel, drawer, mega menu, copy button, QR encoder, editor |
76
80
  | `deck-adapters.min.js` | 4.0 KB | 4.5 KB | Optional library integrations, inert unless one is loaded |
77
81
  | `deck.bundle.min.js` | 17.3 KB | 19.5 KB | All three scripts in one file |
78
82
  | `deck-icons.svg` | 27.1 KB | 33.6 KB | 152 symbols: 75 icons at two weights, plus two brand marks |
@@ -150,18 +154,21 @@ npm start # php -S localhost:4321 -t public_html
150
154
 
151
155
  ## Install
152
156
 
153
- Deck ships three ways. Pick whichever matches how the project already works.
157
+ Deck is published to npm as `@echodial/deck` and to Packagist as `echodial/deck`, and the
158
+ CDNs mirror npm. That makes four ways to install it; pick whichever matches how the
159
+ project already works.
154
160
 
155
161
  ### 1. Just the files
156
162
 
157
- Download `deck.css` and `deck-icons.svg`, drop them next to your other assets, and add
158
- one line. No package manager, no build step, no Node on the server.
163
+ Put `deck.css` and `deck-icons.svg` next to your other assets and add one line. No
164
+ package manager in the project, no build step, no Node on the server.
159
165
 
160
166
  ```html
161
- <link rel="stylesheet" href="/assets/deck.css">
167
+ <link rel="stylesheet" href="/assets/deck/deck.css">
162
168
  ```
163
169
 
164
- Or let the CLI put them there for you this does not install anything permanently:
170
+ The CLI copies them for you. It runs straight from npm and adds nothing to your
171
+ dependencies:
165
172
 
166
173
  ```bash
167
174
  npx @echodial/deck init public/assets/deck
@@ -176,9 +183,12 @@ npm install @echodial/deck
176
183
 
177
184
  ```js
178
185
  import '@echodial/deck/css';
179
- import Deck from '@echodial/deck';
186
+ import '@echodial/deck/bundle'; // sets window.Deck
180
187
  ```
181
188
 
189
+ In 0.1.2, `import Deck from '@echodial/deck'` does not build: the file it resolves to ends in
190
+ an export that is not valid JavaScript. Import the bundle for its side effect instead.
191
+
182
192
  Subpath exports, so you can take only what you need:
183
193
 
184
194
  | Import | What it is |
@@ -186,8 +196,8 @@ Subpath exports, so you can take only what you need:
186
196
  | `@echodial/deck/css` | the whole stylesheet |
187
197
  | `@echodial/deck/css/min` | minified |
188
198
  | `@echodial/deck/icons` | the sprite |
189
- | `@echodial/deck/js` | core behaviour |
190
- | `@echodial/deck/extras` | datepicker, combobox, grid, toasts, QR |
199
+ | `@echodial/deck/js` | core behaviour: toasts, theme switch, date picker, combobox, data grid |
200
+ | `@echodial/deck/extras` | carousel, drawer, mega menu, copy button, QR, editor |
191
201
  | `@echodial/deck/adapters` | optional library integrations |
192
202
  | `@echodial/deck/bundle` | all three in one file |
193
203
  | `@echodial/deck/layers/tokens.css` | one layer at a time |
@@ -199,11 +209,24 @@ reasonable way to adopt it into an existing app one screen at a time.
199
209
 
200
210
  ### 3. CDN
201
211
 
202
- Publishing to npm makes the CDNs work with no extra step:
212
+ jsDelivr and unpkg mirror every version published to npm:
203
213
 
204
214
  ```html
205
215
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@echodial/deck@0.1/dist/deck.min.css">
206
- <script src="https://cdn.jsdelivr.net/npm/@echodial/deck@0.1/dist/deck.bundle.min.js" defer></script>
216
+ <script src="https://cdn.jsdelivr.net/npm/@echodial/deck@0.1/dist/deck.bundle.min.js" data-deck-icons="/assets/deck/deck-icons.svg" defer></script>
217
+ ```
218
+
219
+ Pin the version to `@0.1`, as above. It follows every 0.1.x release and never moves to 0.2.
220
+ Never use `@latest`, or leave the version off, which means the same thing: either one moves
221
+ your page onto the next breaking release the day it is published, with nothing in your code
222
+ to show why.
223
+
224
+ The icon sprite is the one file a CDN cannot serve. Browsers refuse an SVG `<use>` whose
225
+ `href` is on another origin, so serve `deck-icons.svg` from your own site and point
226
+ `data-deck-icons` at it:
227
+
228
+ ```bash
229
+ curl -sSL --create-dirs -o public/assets/deck/deck-icons.svg https://cdn.jsdelivr.net/npm/@echodial/deck@0.1/dist/deck-icons.svg
207
230
  ```
208
231
 
209
232
  ### 4. Composer
@@ -212,11 +235,21 @@ Publishing to npm makes the CDNs work with no extra step:
212
235
  composer require echodial/deck
213
236
  ```
214
237
 
215
- Assets cannot be served out of `vendor/`, so the package publishes them into your public
216
- directory on install. Configure the destination in your own `composer.json`:
238
+ On its own, that installs Deck into `vendor/` and nothing else. A browser cannot read
239
+ `vendor/`, and Composer never runs scripts from a package you install, only the ones in
240
+ your own `composer.json`, so no assets are copied and `composer deck-publish` is not a
241
+ command yet (`Command "deck-publish" is not defined.`). Get the files into your public
242
+ folder one of three ways.
243
+
244
+ **Opt-in scripts.** Add these to your own `composer.json`, then run `composer require`:
217
245
 
218
246
  ```json
219
247
  {
248
+ "scripts": {
249
+ "post-install-cmd": ["EchoDial\\Deck\\Installer::postInstall"],
250
+ "post-update-cmd": ["EchoDial\\Deck\\Installer::postInstall"],
251
+ "deck-publish": "EchoDial\\Deck\\Installer::publish"
252
+ },
220
253
  "extra": {
221
254
  "deck": {
222
255
  "publish-to": "public/assets/deck",
@@ -226,16 +259,40 @@ directory on install. Configure the destination in your own `composer.json`:
226
259
  }
227
260
  ```
228
261
 
229
- Or run it whenever you like:
262
+ `composer require`, and every `composer install` and `composer update` after it, copies the
263
+ eight asset files into `publish-to`, skipping any that have not changed. If Deck is already
264
+ installed when you add the scripts, run `composer deck-publish` once;
265
+ `composer deck-publish -- public/static/deck` publishes somewhere else for one run. With
266
+ `auto-publish` left out or `false`, the install and update hooks print a reminder instead
267
+ of copying. Take the scripts out if you remove Deck: without the class to call, every
268
+ install prints `Class EchoDial\Deck\Installer is not autoloadable, can not call
269
+ post-install-cmd script`.
270
+
271
+ > **Set `publish-to` to the folder your web server serves.** The default,
272
+ > `public/assets/deck`, is right for Laravel and Symfony, whose document root is `public/`.
273
+ > On cPanel hosting and Helm sites the document root is `public_html/`, so use
274
+ > `public_html/assets/deck`. Deck cannot tell which folder is served; if `publish-to` names
275
+ > the wrong one, the files land where no URL reaches.
276
+
277
+ **Copy by hand**, with no scripts at all:
230
278
 
231
279
  ```bash
232
- composer deck-publish
233
- composer deck-publish -- public/static/deck
234
- composer deck-publish -- --link # symlink during development
280
+ mkdir -p public/assets/deck
281
+ cp -r vendor/echodial/deck/dist/* public/assets/deck/
235
282
  ```
236
283
 
237
- Publishing skips files that have not changed, so a redeploy does not churn mtimes and
238
- invalidate every cache-busting URL for nothing.
284
+ That copies everything in `dist/`: 50 files and 3.2 MB, where a page needs four of them.
285
+ `api.json` alone is 1.4 MB of build data that no browser requests. Run it again after every
286
+ `composer update`.
287
+
288
+ **npx**, if Node is on the machine: `npx @echodial/deck init public/assets/deck`, as in
289
+ [option 1](#1-just-the-files), copies the five files a page uses. It takes them from npm,
290
+ not from `vendor/`, so make sure the two are the same version.
291
+
292
+ Deck's own `composer.json` defines no scripts. Scripts in a dependency never run for the
293
+ project that installs it; the ones Deck used to define could only fire inside Deck's own
294
+ repository, and did, publishing a copy of Deck into itself. The installer also refuses to
295
+ publish whenever the root package is `echodial/deck`.
239
296
 
240
297
  #### The PHP helper
241
298
 
@@ -1203,11 +1260,15 @@ that job over while keeping its own markup, classes, and styling.
1203
1260
  <script src="/assets/deck-extras.js" defer></script>
1204
1261
  <script src="/assets/deck-adapters.js" defer></script>
1205
1262
 
1206
- <!-- add only what you want -->
1207
- <script src="https://cdn.jsdelivr.net/npm/@floating-ui/dom" defer></script>
1208
- <script src="https://cdn.jsdelivr.net/npm/sortablejs" defer></script>
1263
+ <!-- add only what you want, each pinned to its major version -->
1264
+ <script src="https://cdn.jsdelivr.net/npm/@floating-ui/core@1" defer></script>
1265
+ <script src="https://cdn.jsdelivr.net/npm/@floating-ui/dom@1" defer></script>
1266
+ <script src="https://cdn.jsdelivr.net/npm/sortablejs@1" defer></script>
1209
1267
  ```
1210
1268
 
1269
+ Floating UI's DOM build expects its core to be loaded first. Without it, `FloatingUIDOM`
1270
+ exists but has no `computePosition`, and the script throws.
1271
+
1211
1272
  | Job | Deck alone | With a library | Verdict |
1212
1273
  |---|---|---|---|
1213
1274
  | Placement | CSS anchor positioning | Floating UI (~9 KB) | Library only where anchor positioning is missing |
package/build.mjs CHANGED
@@ -27,6 +27,17 @@ const DIST = path.join(root, 'dist');
27
27
 
28
28
  const pkg = JSON.parse(await readFile(path.join(root, 'package.json'), 'utf8'));
29
29
 
30
+ // php/Deck.php carries the version as a constant, for PHP that has no business
31
+ // parsing package.json, and `composer deck-publish` prints it. A release with
32
+ // the two out of step would announce the wrong version, so refuse to build.
33
+ // php/ is not shipped to npm, so an install without it skips the check.
34
+ const deckPhp = await readFile(path.join(root, 'php', 'Deck.php'), 'utf8').catch(() => null);
35
+ const phpVersion = deckPhp && /const VERSION = '([^']+)'/.exec(deckPhp)?.[1];
36
+ if (deckPhp && phpVersion !== pkg.version) {
37
+ console.error(` php/Deck.php has VERSION = '${phpVersion}' but package.json is ${pkg.version}. Make them match.`);
38
+ process.exit(1);
39
+ }
40
+
30
41
  const BANNER = `/*! ==========================================================================
31
42
  * Deck v${pkg.version} — the CSS framework for Keel
32
43
  * Mobile first. One file. No build step. No config. No dependencies.
@@ -276,7 +287,7 @@ async function build() {
276
287
  `/* Deck v${pkg.version} — ES module entry.\n` +
277
288
  ` The scripts attach Deck to globalThis; this re-exports it so that\n` +
278
289
  ` \`import Deck from '@echodial/deck'\` behaves the way you expect. */\n` +
279
- bundle + '\nexport default globalThis.Deck;\nexport { globalThis as __deckGlobal };\n');
290
+ bundle + '\nexport default globalThis.Deck;\n');
280
291
 
281
292
  // ---- Sizes ---------------------------------------------------------------
282
293
  // One place for every published figure. dist/sizes.json is the single source
@@ -332,6 +343,24 @@ async function build() {
332
343
  if (err.code !== 'ERR_MODULE_NOT_FOUND') throw err;
333
344
  }
334
345
 
346
+ // ---- Site files -------------------------------------------------------------
347
+ // sitemap.xml, robots.txt and llms.txt are served as they are, so they cannot
348
+ // ask PHP for the base URL the pages print. tools/site.mjs writes it into them
349
+ // from the same inputs, and generates the sitemap from the pages on disk.
350
+ try {
351
+ const { writeSiteFiles } = await import('./tools/site.mjs');
352
+ const site = await writeSiteFiles(pkg, root);
353
+ console.log(` ${'sitemap.xml'.padEnd(22)} ${String(site.pages).padStart(6)} pages ${site.base}/ (${site.source})`);
354
+ console.log(` ${'robots.txt'.padEnd(22)} ${String(site.groups).padStart(6)} groups, one rule set, Sitemap line written`);
355
+ console.log(` ${'llms.txt'.padEnd(22)} ${String(site.links).padStart(6)} site links written`);
356
+ if (site.source === 'DECK_SITE_BASE') {
357
+ console.log(` ${''.padEnd(22)} DECK_SITE_BASE is set: these three files now name ${site.base}, not package.json's homepage`);
358
+ }
359
+ } catch (err) {
360
+ // tools/ and public_html/ are not shipped to npm.
361
+ if (err.code !== 'ERR_MODULE_NOT_FOUND') throw err;
362
+ }
363
+
335
364
  console.log('\nDone.\n');
336
365
  }
337
366
 
@@ -965,7 +965,7 @@
965
965
  "layer": "deck.components",
966
966
  "file": "07-components.css",
967
967
  "line": 431,
968
- "uses": 12
968
+ "uses": 14
969
969
  },
970
970
  "accordion-body": {
971
971
  "bucket": "public",
@@ -975,7 +975,7 @@
975
975
  "layer": "deck.components",
976
976
  "file": "07-components.css",
977
977
  "line": 460,
978
- "uses": 23
978
+ "uses": 25
979
979
  },
980
980
  "actions-cq": {
981
981
  "bucket": "public",
@@ -1005,7 +1005,7 @@
1005
1005
  "layer": "deck.components",
1006
1006
  "file": "07-components.css",
1007
1007
  "line": 146,
1008
- "uses": 56
1008
+ "uses": 60
1009
1009
  },
1010
1010
  "alert-bad": {
1011
1011
  "bucket": "public",
@@ -1015,7 +1015,7 @@
1015
1015
  "layer": "deck.components",
1016
1016
  "file": "07-components.css",
1017
1017
  "line": 169,
1018
- "uses": 10
1018
+ "uses": 12
1019
1019
  },
1020
1020
  "alert-body": {
1021
1021
  "bucket": "public",
@@ -1025,7 +1025,7 @@
1025
1025
  "layer": "deck.components",
1026
1026
  "file": "07-components.css",
1027
1027
  "line": 160,
1028
- "uses": 45
1028
+ "uses": 49
1029
1029
  },
1030
1030
  "alert-good": {
1031
1031
  "bucket": "public",
@@ -1045,7 +1045,7 @@
1045
1045
  "layer": "deck.components",
1046
1046
  "file": "07-components.css",
1047
1047
  "line": 163,
1048
- "uses": 16
1048
+ "uses": 18
1049
1049
  },
1050
1050
  "alert-title": {
1051
1051
  "bucket": "public",
@@ -1055,7 +1055,7 @@
1055
1055
  "layer": "deck.components",
1056
1056
  "file": "07-components.css",
1057
1057
  "line": 157,
1058
- "uses": 45
1058
+ "uses": 49
1059
1059
  },
1060
1060
  "alert-warn": {
1061
1061
  "bucket": "public",
@@ -1185,7 +1185,7 @@
1185
1185
  "layer": "deck.components",
1186
1186
  "file": "07-components.css",
1187
1187
  "line": 81,
1188
- "uses": 204
1188
+ "uses": 196
1189
1189
  },
1190
1190
  "badge-bad": {
1191
1191
  "bucket": "public",
@@ -1225,7 +1225,7 @@
1225
1225
  "layer": "deck.components",
1226
1226
  "file": "07-components.css",
1227
1227
  "line": 98,
1228
- "uses": 48
1228
+ "uses": 46
1229
1229
  },
1230
1230
  "badge-solid": {
1231
1231
  "bucket": "public",
@@ -1245,7 +1245,7 @@
1245
1245
  "layer": "deck.components",
1246
1246
  "file": "07-components.css",
1247
1247
  "line": 100,
1248
- "uses": 28
1248
+ "uses": 22
1249
1249
  },
1250
1250
  "banner": {
1251
1251
  "bucket": "public",
@@ -1485,7 +1485,7 @@
1485
1485
  "layer": "deck.components",
1486
1486
  "file": "05-buttons.css",
1487
1487
  "line": 7,
1488
- "uses": 564
1488
+ "uses": 568
1489
1489
  },
1490
1490
  "btn-3d": {
1491
1491
  "bucket": "public",
@@ -1595,7 +1595,7 @@
1595
1595
  "layer": "deck.components",
1596
1596
  "file": "05-buttons.css",
1597
1597
  "line": 72,
1598
- "uses": 121
1598
+ "uses": 123
1599
1599
  },
1600
1600
  "btn-round": {
1601
1601
  "bucket": "public",
@@ -2275,7 +2275,7 @@
2275
2275
  "layer": "deck.components",
2276
2276
  "file": "06-forms.css",
2277
2277
  "line": 175,
2278
- "uses": 128
2278
+ "uses": 129
2279
2279
  },
2280
2280
  "check-card": {
2281
2281
  "bucket": "public",
@@ -2355,7 +2355,7 @@
2355
2355
  "layer": "deck.layout",
2356
2356
  "file": "04-layout.css",
2357
2357
  "line": 74,
2358
- "uses": 367
2358
+ "uses": 369
2359
2359
  },
2360
2360
  "cluster-between": {
2361
2361
  "bucket": "public",
@@ -2635,7 +2635,7 @@
2635
2635
  "layer": "deck.layout",
2636
2636
  "file": "04-layout.css",
2637
2637
  "line": 11,
2638
- "uses": 99
2638
+ "uses": 101
2639
2639
  },
2640
2640
  "container-full": {
2641
2641
  "bucket": "public",
@@ -3795,7 +3795,7 @@
3795
3795
  "layer": "deck.mobile",
3796
3796
  "file": "08-mobile.css",
3797
3797
  "line": 183,
3798
- "uses": 60
3798
+ "uses": 61
3799
3799
  },
3800
3800
  "emoji-grid": {
3801
3801
  "bucket": "public",
@@ -4995,7 +4995,7 @@
4995
4995
  "layer": "deck.mobile",
4996
4996
  "file": "08-mobile.css",
4997
4997
  "line": 134,
4998
- "uses": 616
4998
+ "uses": 627
4999
4999
  },
5000
5000
  "icon-fill": {
5001
5001
  "bucket": "public",
@@ -5005,7 +5005,7 @@
5005
5005
  "layer": "deck.mobile",
5006
5006
  "file": "08-mobile.css",
5007
5007
  "line": 156,
5008
- "uses": 12
5008
+ "uses": 14
5009
5009
  },
5010
5010
  "icon-follow": {
5011
5011
  "bucket": "public",
@@ -5025,7 +5025,7 @@
5025
5025
  "layer": "deck.mobile",
5026
5026
  "file": "08-mobile.css",
5027
5027
  "line": 154,
5028
- "uses": 85
5028
+ "uses": 89
5029
5029
  },
5030
5030
  "icon-muted": {
5031
5031
  "bucket": "public",
@@ -5975,7 +5975,7 @@
5975
5975
  "layer": "deck.type",
5976
5976
  "file": "03-type.css",
5977
5977
  "line": 29,
5978
- "uses": 210
5978
+ "uses": 212
5979
5979
  },
5980
5980
  "lg": {
5981
5981
  "bucket": "public",
@@ -7985,7 +7985,7 @@
7985
7985
  "layer": "deck.components",
7986
7986
  "file": "06-forms.css",
7987
7987
  "line": 288,
7988
- "uses": 50
7988
+ "uses": 59
7989
7989
  },
7990
7990
  "range-pair": {
7991
7991
  "bucket": "public",
@@ -8445,7 +8445,7 @@
8445
8445
  "layer": "deck.layout",
8446
8446
  "file": "04-layout.css",
8447
8447
  "line": 161,
8448
- "uses": 86
8448
+ "uses": 88
8449
8449
  },
8450
8450
  "segmented": {
8451
8451
  "bucket": "public",
@@ -8895,7 +8895,7 @@
8895
8895
  "layer": "deck.utilities",
8896
8896
  "file": "09-utilities.css",
8897
8897
  "line": 182,
8898
- "uses": 127
8898
+ "uses": 137
8899
8899
  },
8900
8900
  "stack": {
8901
8901
  "bucket": "public",
@@ -8935,7 +8935,7 @@
8935
8935
  "layer": "deck.layout",
8936
8936
  "file": "04-layout.css",
8937
8937
  "line": 63,
8938
- "uses": 485
8938
+ "uses": 487
8939
8939
  },
8940
8940
  "stack-3": {
8941
8941
  "bucket": "public",
@@ -8945,7 +8945,7 @@
8945
8945
  "layer": "deck.layout",
8946
8946
  "file": "04-layout.css",
8947
8947
  "line": 65,
8948
- "uses": 2144
8948
+ "uses": 2150
8949
8949
  },
8950
8950
  "stack-4": {
8951
8951
  "bucket": "public",
@@ -8955,7 +8955,7 @@
8955
8955
  "layer": "deck.layout",
8956
8956
  "file": "04-layout.css",
8957
8957
  "line": 67,
8958
- "uses": 312
8958
+ "uses": 314
8959
8959
  },
8960
8960
  "stack-6": {
8961
8961
  "bucket": "public",
@@ -8965,7 +8965,7 @@
8965
8965
  "layer": "deck.layout",
8966
8966
  "file": "04-layout.css",
8967
8967
  "line": 69,
8968
- "uses": 140
8968
+ "uses": 142
8969
8969
  },
8970
8970
  "stack-8": {
8971
8971
  "bucket": "public",
@@ -9245,7 +9245,7 @@
9245
9245
  "layer": "deck.components",
9246
9246
  "file": "07-components.css",
9247
9247
  "line": 241,
9248
- "uses": 114
9248
+ "uses": 124
9249
9249
  },
9250
9250
  "table-compact": {
9251
9251
  "bucket": "public",
@@ -9265,7 +9265,7 @@
9265
9265
  "layer": "deck.components",
9266
9266
  "file": "07-components.css",
9267
9267
  "line": 274,
9268
- "uses": 102
9268
+ "uses": 112
9269
9269
  },
9270
9270
  "table-wrap": {
9271
9271
  "bucket": "public",
@@ -9275,7 +9275,7 @@
9275
9275
  "layer": "deck.components",
9276
9276
  "file": "07-components.css",
9277
9277
  "line": 231,
9278
- "uses": 111
9278
+ "uses": 121
9279
9279
  },
9280
9280
  "tabs": {
9281
9281
  "bucket": "public",
@@ -9605,7 +9605,7 @@
9605
9605
  "layer": "deck.components",
9606
9606
  "file": "13-toasts.css",
9607
9607
  "line": 49,
9608
- "uses": 36
9608
+ "uses": 38
9609
9609
  },
9610
9610
  "toast-action": {
9611
9611
  "bucket": "internal",
package/dist/deck.css CHANGED
@@ -1,5 +1,5 @@
1
1
  /*! ==========================================================================
2
- * Deck v0.1.0 — the CSS framework for Keel
2
+ * Deck v0.1.3 — the CSS framework for Keel
3
3
  * Mobile first. One file. No build step. No config. No dependencies.
4
4
  *
5
5
  * <link rel="stylesheet" href="/assets/deck.css">
@@ -12,7 +12,7 @@
12
12
  * deck.mobile, deck.motion, deck.effects, deck.utilities, deck.rtl,
13
13
  * deck.print, then app.base, app.components, app.pages, app.overrides
14
14
  *
15
- * MIT licence. https://get-keel.dev/deck
15
+ * MIT licence. https://get-deck.dev
16
16
  * ======================================================================== */
17
17
 
18
18
  /* ==========================================================================
package/dist/deck.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- /* Deck v0.1.0 — ES module entry.
1
+ /* Deck v0.1.3 — ES module entry.
2
2
  The scripts attach Deck to globalThis; this re-exports it so that
3
3
  `import Deck from '@echodial/deck'` behaves the way you expect. */
4
4
  /*! ==========================================================================
@@ -2641,4 +2641,3 @@ if (typeof module !== 'undefined' && module.exports) module.exports = Deck;
2641
2641
  : typeof Deck !== 'undefined' ? Deck : null);
2642
2642
 
2643
2643
  export default globalThis.Deck;
2644
- export { globalThis as __deckGlobal };