comark-table 0.8.2 → 0.9.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.
@@ -1,4 +1,4 @@
1
- import { n as theme } from "./theme-WGjRIAmX.mjs";
1
+ import { n as theme } from "./theme-BWzo3v5O.mjs";
2
2
  //#region src/styles.ts
3
3
  /**
4
4
  * A table that scrolls sideways in place, with a Copy button and a menu of formats above it and headers that sort, on the shared
package/dist/client.mjs CHANGED
@@ -1 +1 @@
1
- export { t as bar, r as css, n as start } from "./client-CDdgxJF0.mjs";
1
+ export { t as bar, r as css, n as start } from "./client-CyGGJRSr.mjs";
package/dist/html.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { n as src_default, t as TABLE_TAG } from "./src-BV7IF9ld.mjs";
2
- import { n as start, r as css, t as bar } from "./client-CDdgxJF0.mjs";
1
+ import { n as src_default, t as TABLE_TAG } from "./src-CHjETtBS.mjs";
2
+ import { n as start, r as css, t as bar } from "./client-CyGGJRSr.mjs";
3
3
  //#region src/html.ts
4
4
  const started = /* @__PURE__ */ new WeakSet();
5
5
  /** The table script as one inline `<script>`, once per render. */
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- export { t as TABLE_TAG, n as default } from "./src-BV7IF9ld.mjs";
1
+ export { t as TABLE_TAG, n as default } from "./src-CHjETtBS.mjs";
package/dist/react.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { n as src_default, t as TABLE_TAG } from "./src-BV7IF9ld.mjs";
2
- import { n as start, r as css, t as bar } from "./client-CDdgxJF0.mjs";
1
+ import { n as src_default, t as TABLE_TAG } from "./src-CHjETtBS.mjs";
2
+ import { n as start, r as css, t as bar } from "./client-CyGGJRSr.mjs";
3
3
  import { createElement, useEffect } from "react";
4
4
  //#region src/react.ts
5
5
  /** Tables for `@comark/react`. */
@@ -1,4 +1,4 @@
1
- import { t as statusColor } from "./theme-WGjRIAmX.mjs";
1
+ import { t as statusColor } from "./theme-BWzo3v5O.mjs";
2
2
  import { defineComarkPlugin } from "comark";
3
3
  import { resolveAttributes } from "comark/render";
4
4
  //#region ../../shared/text.ts
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- @layer comark{:where(.ctb){--_comark-background:var(--comark-background,var(--ui-bg,var(--background,#fff)));--_comark-foreground:var(--comark-foreground,var(--ui-text-highlighted,var(--foreground,#0a0a0a)));--_comark-muted:var(--comark-muted,var(--ui-text-muted,var(--muted-foreground,#737373)));--_comark-border:var(--comark-border,var(--ui-border,var(--border,#e5e5e5)));--_comark-accent:var(--comark-accent,var(--ui-bg-elevated,var(--accent,#f5f5f5)));--_comark-ring:var(--comark-ring,var(--ui-primary,var(--ring,#a1a1a1)));--_comark-shadow:var(--comark-shadow,0 4px 12px rgb(0 0 0/.12));--_comark-radius:var(--comark-radius,calc(var(--ui-radius,calc(var(--radius,.625rem)/2))*2));--_comark-font:var(--comark-font,var(--font-sans,ui-sans-serif,system-ui,sans-serif))}@media (prefers-color-scheme:dark){:where(.ctb){--_comark-background:var(--comark-background,var(--ui-bg,var(--background,#0a0a0a)));--_comark-foreground:var(--comark-foreground,var(--ui-text-highlighted,var(--foreground,#fafafa)));--_comark-muted:var(--comark-muted,var(--ui-text-muted,var(--muted-foreground,#a1a1a1)));--_comark-border:var(--comark-border,var(--ui-border,var(--border,rgb(255 255 255/.1))));--_comark-accent:var(--comark-accent,var(--ui-bg-elevated,var(--accent,#262626)));--_comark-ring:var(--comark-ring,var(--ui-primary,var(--ring,#737373)));--_comark-shadow:var(--comark-shadow,0 4px 12px rgb(0 0 0/.5))}}:where(.light,.light *):where(.ctb){--_comark-shadow:var(--comark-shadow,0 4px 12px rgb(0 0 0/.12))}:where(.dark,.dark *):where(.ctb){--_comark-shadow:var(--comark-shadow,0 4px 12px rgb(0 0 0/.5))}.ctb{margin:1.5rem 0}.ctb-scroll{overflow-x:auto}.ctb-scroll>table{margin:0}.ctb-bar{display:flex;align-items:center;justify-content:flex-end;gap:.25rem;margin-bottom:.375rem;font:500 .75rem/1rem var(--_comark-font)}html:not([data-table-ready]) .ctb-bar{display:none}.ctb-copy{position:relative;display:inline-flex;border:1px solid var(--_comark-border);border-radius:calc(var(--_comark-radius) - 4px);background:var(--_comark-background)}.ctb-copy>button{display:inline-grid;place-items:center;height:1.625rem;padding:0;border:0;background:none;color:var(--_comark-muted);font:inherit;cursor:pointer;transition:background-color .15s,color .15s}.ctb-copy-main{width:1.75rem;border-radius:calc(var(--_comark-radius) - 5px) 0 0 calc(var(--_comark-radius) - 5px)}.ctb-copy>.ctb-copy-more{width:1.25rem;border-inline-start:1px solid var(--_comark-border);border-radius:0 calc(var(--_comark-radius) - 5px) calc(var(--_comark-radius) - 5px) 0}.ctb-copy-more svg{width:.75rem;height:.75rem}.ctb-copy-more[aria-expanded=true]{background:var(--_comark-accent);color:var(--_comark-foreground)}@media (hover:hover){.ctb-copy>button:hover,.ctb-menu button:hover{background:var(--_comark-accent);color:var(--_comark-foreground)}}.ctb-copy-main svg+svg,.ctb-copy-main[data-state=done] svg:first-child{display:none}.ctb-copy-main[data-state=done] svg+svg{display:block}.ctb-menu{position:absolute;top:calc(100% + .25rem);right:-1px;z-index:10;display:grid;min-width:15rem;padding:.25rem;border:1px solid var(--_comark-border);border-radius:var(--_comark-radius);background:var(--_comark-background);box-shadow:var(--_comark-shadow)}.ctb-menu[hidden]{display:none}.ctb-menu button{display:grid;grid-template-columns:.875rem 1fr;gap:.5rem;align-items:start;padding:.375rem .5rem;border:0;border-radius:calc(var(--_comark-radius) - 4px);background:none;color:var(--_comark-foreground);font:inherit;text-align:start;cursor:pointer}.ctb-menu button:focus-visible{outline:none;background:var(--_comark-accent)}.ctb-menu svg{margin-top:.125rem}.ctb-menu b{display:block;font-weight:500}.ctb-menu small{display:block;color:var(--_comark-muted);font-size:.75rem;font-weight:400;line-height:1rem}.ctb-status{margin-inline-end:.25rem;color:var(--_comark-muted)}.ctb-sort{all:unset}.ctb-sort{margin:0!important;padding:0!important;border:0!important;background:none!important;box-shadow:none!important;font:inherit!important;color:inherit!important;text-align:inherit!important}html[data-table-ready] .ctb-sort{display:inline-flex;align-items:center;gap:.25rem;cursor:pointer}html[data-table-ready] .ctb-sort::after{content:'↕';color:var(--_comark-muted);font-weight:400}html[data-table-ready] [aria-sort='ascending']>.ctb-sort::after{content:'↑';color:inherit}html[data-table-ready] [aria-sort='descending']>.ctb-sort::after{content:'↓';color:inherit}.ctb-copy>button:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--_comark-ring) 50%,transparent)!important}.ctb-sort:focus-visible{outline:none;border-radius:calc(var(--_comark-radius) - 4px);box-shadow:0 0 0 3px color-mix(in srgb,var(--_comark-ring) 50%,transparent)!important}@media print{.ctb-bar{display:none}.ctb-sort::after{content:none!important}}}
1
+ @layer comark{:where(.ctb){--_comark-background:var(--comark-background,var(--ui-bg,var(--background,#fff)));--_comark-foreground:var(--comark-foreground,var(--ui-text-highlighted,var(--foreground,#0a0a0a)));--_comark-muted:var(--comark-muted,var(--ui-text-muted,var(--muted-foreground,#737373)));--_comark-border:var(--comark-border,var(--ui-border,var(--border,#e5e5e5)));--_comark-accent:var(--comark-accent,var(--ui-bg-elevated,var(--accent,#f5f5f5)));--_comark-ring:var(--comark-ring,var(--ui-primary,var(--ring,#a1a1a1)));--_comark-shadow:var(--comark-shadow,0 4px 12px rgb(0 0 0/.12));--_comark-radius:var(--comark-radius,calc(var(--ui-radius,calc(var(--radius,.625rem)/2))*2));--_comark-font:var(--comark-font,var(--font-sans,ui-sans-serif,system-ui,sans-serif))}@media (prefers-color-scheme:dark){:where(:not(.light,.light *)):is(:where(.ctb)){--_comark-background:var(--comark-background,var(--ui-bg,var(--background,#0a0a0a)));--_comark-foreground:var(--comark-foreground,var(--ui-text-highlighted,var(--foreground,#fafafa)));--_comark-muted:var(--comark-muted,var(--ui-text-muted,var(--muted-foreground,#a1a1a1)));--_comark-border:var(--comark-border,var(--ui-border,var(--border,rgb(255 255 255/.1))));--_comark-accent:var(--comark-accent,var(--ui-bg-elevated,var(--accent,#262626)));--_comark-ring:var(--comark-ring,var(--ui-primary,var(--ring,#737373)));--_comark-shadow:var(--comark-shadow,0 4px 12px rgb(0 0 0/.5))}}:where(.dark,.dark *):is(:where(.ctb)){--_comark-background:var(--comark-background,var(--ui-bg,var(--background,#0a0a0a)));--_comark-foreground:var(--comark-foreground,var(--ui-text-highlighted,var(--foreground,#fafafa)));--_comark-muted:var(--comark-muted,var(--ui-text-muted,var(--muted-foreground,#a1a1a1)));--_comark-border:var(--comark-border,var(--ui-border,var(--border,rgb(255 255 255/.1))));--_comark-accent:var(--comark-accent,var(--ui-bg-elevated,var(--accent,#262626)));--_comark-ring:var(--comark-ring,var(--ui-primary,var(--ring,#737373)));--_comark-shadow:var(--comark-shadow,0 4px 12px rgb(0 0 0/.5))}.ctb{margin:1.5rem 0}.ctb-scroll{overflow-x:auto}.ctb-scroll>table{margin:0}.ctb-bar{display:flex;align-items:center;justify-content:flex-end;gap:.25rem;margin-bottom:.375rem;font:500 .75rem/1rem var(--_comark-font)}html:not([data-table-ready]) .ctb-bar{display:none}.ctb-copy{position:relative;display:inline-flex;border:1px solid var(--_comark-border);border-radius:calc(var(--_comark-radius) - 4px);background:var(--_comark-background)}.ctb-copy>button{display:inline-grid;place-items:center;height:1.625rem;padding:0;border:0;background:none;color:var(--_comark-muted);font:inherit;cursor:pointer;transition:background-color .15s,color .15s}.ctb-copy-main{width:1.75rem;border-radius:calc(var(--_comark-radius) - 5px) 0 0 calc(var(--_comark-radius) - 5px)}.ctb-copy>.ctb-copy-more{width:1.25rem;border-inline-start:1px solid var(--_comark-border);border-radius:0 calc(var(--_comark-radius) - 5px) calc(var(--_comark-radius) - 5px) 0}.ctb-copy-more svg{width:.75rem;height:.75rem}.ctb-copy-more[aria-expanded=true]{background:var(--_comark-accent);color:var(--_comark-foreground)}@media (hover:hover){.ctb-copy>button:hover,.ctb-menu button:hover{background:var(--_comark-accent);color:var(--_comark-foreground)}}.ctb-copy-main svg+svg,.ctb-copy-main[data-state=done] svg:first-child{display:none}.ctb-copy-main[data-state=done] svg+svg{display:block}.ctb-menu{position:absolute;top:calc(100% + .25rem);right:-1px;z-index:10;display:grid;min-width:15rem;padding:.25rem;border:1px solid var(--_comark-border);border-radius:var(--_comark-radius);background:var(--_comark-background);box-shadow:var(--_comark-shadow)}.ctb-menu[hidden]{display:none}.ctb-menu button{display:grid;grid-template-columns:.875rem 1fr;gap:.5rem;align-items:start;padding:.375rem .5rem;border:0;border-radius:calc(var(--_comark-radius) - 4px);background:none;color:var(--_comark-foreground);font:inherit;text-align:start;cursor:pointer}.ctb-menu button:focus-visible{outline:none;background:var(--_comark-accent)}.ctb-menu svg{margin-top:.125rem}.ctb-menu b{display:block;font-weight:500}.ctb-menu small{display:block;color:var(--_comark-muted);font-size:.75rem;font-weight:400;line-height:1rem}.ctb-status{margin-inline-end:.25rem;color:var(--_comark-muted)}.ctb-sort{all:unset}.ctb-sort{margin:0!important;padding:0!important;border:0!important;background:none!important;box-shadow:none!important;font:inherit!important;color:inherit!important;text-align:inherit!important}html[data-table-ready] .ctb-sort{display:inline-flex;align-items:center;gap:.25rem;cursor:pointer}html[data-table-ready] .ctb-sort::after{content:'↕';color:var(--_comark-muted);font-weight:400}html[data-table-ready] [aria-sort='ascending']>.ctb-sort::after{content:'↑';color:inherit}html[data-table-ready] [aria-sort='descending']>.ctb-sort::after{content:'↓';color:inherit}.ctb-copy>button:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--_comark-ring) 50%,transparent)!important}.ctb-sort:focus-visible{outline:none;border-radius:calc(var(--_comark-radius) - 4px);box-shadow:0 0 0 3px color-mix(in srgb,var(--_comark-ring) 50%,transparent)!important}@media print{.ctb-bar{display:none}.ctb-sort::after{content:none!important}}}
@@ -120,10 +120,18 @@ function statusColor(name) {
120
120
  return chain(colors[name], 3);
121
121
  }
122
122
  /**
123
+ * `declarations` on `selector` in dark mode: the system's, unless a `.light` class sits on the element or above it, or
124
+ * a `.dark` class there whatever the system says. Either class pins a page's scheme.
125
+ */
126
+ function dark(selector, declarations) {
127
+ return `@media (prefers-color-scheme:dark){:where(:not(.light,.light *)):is(${selector}){${declarations}}}:where(.dark,.dark *):is(${selector}){${declarations}}`;
128
+ }
129
+ /**
123
130
  * Resolves the `--comark-*` tokens on `selector`, falling back to Nuxt UI's variables, then shadcn/ui's, then shadcn's
124
131
  * neutral theme. Nuxt UI's corners are twice its `--ui-radius`, so the radius halves shadcn's to double it back.
125
- * They resolve on the component rather than `:root`, so a `.dark` class anywhere above it switches the theme, and a
126
- * `--comark-*` set on any ancestor still inherits down. `:where()` keeps them at zero specificity.
132
+ * They resolve on the component rather than `:root`, so a `--comark-*` set on any ancestor still inherits down.
133
+ * `:where()` keeps them at zero specificity. The neutral theme follows the system's color mode, and a `.light` or
134
+ * `.dark` class on the component or above it pins one (see `dark()`).
127
135
  *
128
136
  * Every block gets the core tokens. Name `"status"` for `--comark-success`, `-danger`, `-warning`, and `-info`,
129
137
  * `"primary"` for `--comark-primary`, `-primary-foreground`, and `-secondary`, and `"shadow"` for `--comark-shadow`, so
@@ -131,11 +139,8 @@ function statusColor(name) {
131
139
  */
132
140
  function theme(selector, ...extras) {
133
141
  const where = `:where(${selector})`;
134
- const added = extras.flatMap((name) => groups[name]);
135
- const list = [...tokens, ...added];
136
- const schemed = added.filter((token) => token[3] !== token[4]);
137
- const classes = schemed.length ? `:where(.light,.light *)${where}{${resolve(schemed, 3)}}:where(.dark,.dark *)${where}{${resolve(schemed, 4)}}` : "";
138
- return `${where}{${resolve(list, 3)};--_comark-radius:var(--comark-radius,calc(var(--ui-radius,calc(var(--radius,.625rem)/2))*2));--_comark-font:var(--comark-font,var(--font-sans,ui-sans-serif,system-ui,sans-serif))}@media (prefers-color-scheme:dark){${where}{${resolve(list, 4)}}}` + classes;
142
+ const list = [...tokens, ...extras.flatMap((name) => groups[name])];
143
+ return `${where}{${resolve(list, 3)};--_comark-radius:var(--comark-radius,calc(var(--ui-radius,calc(var(--radius,.625rem)/2))*2));--_comark-font:var(--comark-font,var(--font-sans,ui-sans-serif,system-ui,sans-serif))}` + dark(where, resolve(list, 4));
139
144
  }
140
145
  //#endregion
141
146
  export { theme as n, statusColor as t };
package/dist/vue.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { n as src_default, t as TABLE_TAG } from "./src-BV7IF9ld.mjs";
2
- import { n as start, r as css, t as bar } from "./client-CDdgxJF0.mjs";
1
+ import { n as src_default, t as TABLE_TAG } from "./src-CHjETtBS.mjs";
2
+ import { n as start, r as css, t as bar } from "./client-CyGGJRSr.mjs";
3
3
  import { defineComponent, h, onBeforeUnmount, onMounted } from "vue";
4
4
  //#region src/vue.ts
5
5
  /** Tables for `@comark/vue`. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "comark-table",
3
- "version": "0.8.2",
3
+ "version": "0.9.1",
4
4
  "description": "Tables from CSV, TSV, and JSON files or fences, read while parsing, with copy buttons and sortable headers. A Comark plugin.",
5
5
  "keywords": [
6
6
  "comark",
@@ -57,7 +57,7 @@
57
57
  "react-dom": "^19.3.1",
58
58
  "svelte": "^5.57.2",
59
59
  "vue": "^3.5.44",
60
- "comark-zoom": "0.8.2"
60
+ "comark-zoom": "0.9.1"
61
61
  },
62
62
  "peerDependencies": {
63
63
  "@comark/html": "^0.8.0",