@linkdesk/ui 0.2.1 → 0.2.14

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
@@ -2,7 +2,7 @@
2
2
 
3
3
  The LinkDesk shared UI component library — context menus, dropdowns, combo boxes, toggles, sliders, color pickers, form rows, file path inputs, theme pickers, and more.
4
4
 
5
- The component source lives in exactly one place, `src/components/shared/` in the LinkDesk shell; this package is its compiled distribution surface: **after `npm i @linkdesk/ui`, plugin authors get the same components the built-in plugins use, automatically following the host theme and glassmorphism**, with no need to care about implementation details.
5
+ **Centralized UI supply (L9, E6#123/#124):** the component source lives in exactly one place, `src/components/shared/` in the LinkDesk shell, and at runtime the components are served to every plugin by the shell pool as a single vendor instance (import-map + vendor css) — **the shell upgrades once, every plugin follows**. This npm package is the *type contract + dev resolution body*: `npm i @linkdesk/ui` gives your editor types and lets local dev resolve the imports; it is no longer shipped inside your plugin bundle. The package version is locked step with the shell version (one line, no lookup table).
6
6
 
7
7
  ## Installation
8
8
 
@@ -14,7 +14,7 @@ npm i @linkdesk/ui react react-dom
14
14
 
15
15
  ```tsx
16
16
  import { SelectBox, Toggle } from "@linkdesk/ui";
17
- import "@linkdesk/ui/index.css"; // most component CSS is pulled in automatically by the entry JS; use this path when you need to import it explicitly
17
+ // No css import — component styles are supplied by the shell at runtime (importing @linkdesk/ui css is a lint error: linkdesk/no-ui-css-import).
18
18
 
19
19
  export function MyView() {
20
20
  return (
@@ -44,9 +44,9 @@ npm run build # dist build: esm + aggregated css + declaration files
44
44
 
45
45
  ## Maintaining this package (LinkDesk maintainers)
46
46
 
47
- This package is **one of the five author axes** (the others: `@linkdesk/contracts` / `@linkdesk/plugin-sdk` / `create-linkdesk-plugin` / `@linkdesk/plugin-docs`) and has its own version axis — **publishing it does not bump the application, and the application does not bump it**.
47
+ This package is **one of the five author axes** (the others: `@linkdesk/contracts` / `@linkdesk/plugin-sdk` / `create-linkdesk-plugin` / `@linkdesk/plugin-docs`) — 🔴 **with one exception to the axis-independence rule (L9 re-anchor, 2026-09-19): this package's version is locked step with the shell version** (ui `0.2.13` ⇔ shell `0.2.13`; one line, no lookup table). Every shell release carries a same-number bump of this package, and the shell yields the number if npm has already taken it. The mechanical assertion lives in `scripts/check-publish-gate.mjs` criterion ⑤ (`judgeUiVersionLockstep`).
48
48
 
49
- Its surface is `src/**` + this README. The component source lives in the shell's `src/components/shared/` — **changing a component means this axis moved**, so bump and publish, otherwise plugin authors keep getting the old components.
49
+ Its surface is `src/**` + this README. The component source lives in the shell's `src/components/shared/`, and at runtime the shell pool serves it (L9 — plugins no longer carry a copy). **Changing a component moves the shell tree and this package together**, so rebuild this package and publish it under the same number as the shell.
50
50
 
51
51
  ```bash
52
52
  # 1. bump packages/linkdesk-ui/package.json version (0.x backward-compatible → patch)
package/dist/index.css CHANGED
@@ -1 +1 @@
1
- .ldk-badge{display:inline-flex;align-items:center;background:var(--badge-background);color:var(--badge-foreground);border-radius:var(--radius-sm);padding:1px 6px;font-size:var(--font-size-2xs);font-weight:500;line-height:1.4;white-space:nowrap;flex-shrink:0}.ldk-mdv{color:var(--text-primary);font-size:var(--font-size-md);line-height:1.6;overflow-wrap:break-word}.ldk-mdv>:first-child{margin-top:0}.ldk-mdv>:last-child{margin-bottom:0}.ldk-mdv h1,.ldk-mdv h2,.ldk-mdv h3,.ldk-mdv h4,.ldk-mdv h5,.ldk-mdv h6{color:var(--text-primary);font-weight:600;line-height:1.25;margin:1.2em 0 .5em}.ldk-mdv h1{font-size:var(--font-size-2xl);padding-bottom:.3em;border-bottom:1px solid var(--border)}.ldk-mdv h2{font-size:var(--font-size-xl);padding-bottom:.3em;border-bottom:1px solid var(--border)}.ldk-mdv h3{font-size:var(--font-size-lg)}.ldk-mdv h4{font-size:var(--font-size-md)}.ldk-mdv h5,.ldk-mdv h6{font-size:var(--font-size-sm);color:var(--text-secondary)}.ldk-mdv p{margin:.6em 0}.ldk-mdv ul,.ldk-mdv ol{margin:.6em 0;padding-left:1.6em}.ldk-mdv li{margin:.25em 0}.ldk-mdv li>p{margin:.3em 0}.ldk-mdv hr{border:none;border-top:1px solid var(--border);margin:1.2em 0}.ldk-mdv blockquote{margin:.8em 0;padding:.1em 1em;border-left:3px solid var(--accent);background:var(--bg-input);color:var(--text-secondary)}.ldk-mdv blockquote>:first-child{margin-top:.6em}.ldk-mdv blockquote>:last-child{margin-bottom:.6em}.ldk-mdv a{color:var(--accent);text-decoration:none}.ldk-mdv a:hover{text-decoration:underline}.ldk-mdv code{font-family:var(--font-mono);font-size:.9em;background:var(--bg-input);border-radius:var(--radius-xs);padding:.15em .4em}.ldk-mdv pre{margin:.8em 0;padding:.8em 1em;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-md);overflow:auto}.ldk-mdv pre code{background:transparent;padding:0;font-size:var(--font-size-sm);border-radius:0}.ldk-mdv table{border-collapse:collapse;margin:.8em 0;width:max-content;max-width:100%;font-size:var(--font-size-sm)}.ldk-mdv th,.ldk-mdv td{border:1px solid var(--border);padding:.35em .8em}.ldk-mdv th{font-weight:600;background:var(--bg-input)}.ldk-mdv img{max-width:100%;height:auto;border-radius:var(--radius-sm)}.ldk-mdv video,.ldk-mdv iframe{max-width:100%}.ldk-mdv input[type=checkbox]{margin-right:.4em;vertical-align:middle;accent-color:var(--accent)}.ldk-mdv del{color:var(--text-muted)}.ldk-button{background:var(--accent);color:var(--text-on-accent);border:1px solid transparent;border-radius:var(--radius-sm);padding:4px 12px;font-size:var(--font-size-sm);cursor:pointer;white-space:nowrap}.ldk-button:hover:not(:disabled){opacity:.85}.ldk-button:disabled{opacity:.5;cursor:default}.ldk-button--sm{display:inline-flex;align-items:center;height:22px;padding:0 12px;font-size:var(--font-size-xs)}.ldk-button--success{background:var(--success);border-color:var(--success);color:var(--badge-text)}.ldk-button--ghost{background:transparent;border-color:var(--separator);color:var(--text-secondary)}.ldk-button--ghost:hover:not(:disabled){background:var(--hover-overlay);color:var(--text-primary);opacity:1}.ldk-button--danger{background:transparent;border-color:color-mix(in srgb,var(--danger) 45%,transparent);color:var(--danger)}.ldk-button--danger:hover:not(:disabled){background:color-mix(in srgb,var(--danger) 10%,transparent);border-color:color-mix(in srgb,var(--danger) 75%,transparent);opacity:1}.colorpicker-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-overlay-backdrop)}.colorpicker-panel{position:fixed;z-index:var(--z-overlay);background:var(--bg-window);border:1px solid var(--separator);border-radius:var(--radius-md);padding:12px;box-shadow:var(--shadow-float);display:flex;flex-wrap:wrap;width:232px;gap:8px;top:50%;left:50%;transform:translate(-50%,-50%)}.colorpicker-panel[style]{transform:none}.colorpicker-sv{width:180px;height:150px;border-radius:var(--radius-sm);position:relative;cursor:crosshair;overflow:hidden;-webkit-user-select:none;user-select:none}.colorpicker-sv-white{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to right,#fff,transparent)}.colorpicker-sv-black{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to top,#000,transparent)}.colorpicker-sv-cursor{position:absolute;width:10px;height:10px;border:2px solid #fff;border-radius:var(--radius-full);box-shadow:var(--shadow-tiny);transform:translate(-50%,-50%);pointer-events:none}.colorpicker-hue{width:180px;height:14px;border-radius:var(--radius-md);position:relative;cursor:pointer;-webkit-user-select:none;user-select:none;background:linear-gradient(to right,red,#ff0,#0f0,#0ff,#00f,#f0f,red)}.colorpicker-hue-cursor{position:absolute;top:-2px;width:4px;height:18px;background:#fff;border-radius:var(--radius-xs);box-shadow:var(--shadow-tiny);transform:translate(-50%);pointer-events:none}.colorpicker-footer{display:flex;align-items:center;gap:6px;width:100%}.colorpicker-preview{width:28px;height:28px;border-radius:var(--radius-sm);border:1px solid var(--separator);flex-shrink:0}.colorpicker-hex{flex:1;min-width:0;height:calc(26px * var(--ui-scale));padding:2px 6px;border:1px solid var(--separator);border-radius:var(--radius-sm);background:var(--bg-input);color:var(--text-primary);font-family:var(--font-mono);font-size:var(--font-size-sm);outline:none;box-sizing:border-box}.colorpicker-hex:focus{border-color:var(--accent)}.colorpicker-ok{height:calc(26px * var(--ui-scale));padding:0 12px;background:var(--accent);color:var(--text-on-accent);border:none;border-radius:var(--radius-sm);font-size:var(--font-size-sm);cursor:pointer;flex-shrink:0}.colorpicker-ok:hover{background:var(--accent-hover)}.colorpicker-presets{width:100%;display:flex;gap:6px;flex-wrap:wrap;padding-top:4px;border-top:1px solid var(--separator)}.colorpicker-preset{width:18px;height:18px;border-radius:var(--radius-full);border:1px solid var(--separator);cursor:pointer;transition:transform .1s}.colorpicker-preset:hover{transform:scale(1.2);border-color:var(--accent)}.ldk-combobox{position:relative;display:inline-block;min-width:100px}.ldk-combobox-field{display:flex;align-items:center;gap:4px;padding:3px 6px;background:var(--bg-input);color:var(--text-primary);border:1px solid var(--border);border-radius:var(--radius-xs);font-size:var(--font-size-md);line-height:1.6;cursor:text}.ldk-combobox-field:hover:not(.ldk-selectbox-disabled){border-color:var(--accent)}.ldk-combobox.ldk-selectbox-open .ldk-combobox-field{border-color:var(--accent)}.ldk-combobox-input{flex:1;min-width:0;padding:0;background:transparent;border:none;outline:none;color:inherit;font:inherit;line-height:1.6}.ldk-combobox-input::placeholder{color:var(--text-muted)}.ldk-combobox-input:disabled{opacity:.5}.ldk-selectbox{position:relative;display:inline-block;min-width:100px;-webkit-user-select:none;user-select:none}.ldk-selectbox-trigger{display:flex;align-items:center;justify-content:space-between;gap:4px;width:100%;padding:3px 6px;background:var(--bg-input);color:var(--text-primary);border:1px solid var(--border);border-radius:var(--radius-xs);font-size:var(--font-size-md);line-height:1.6;cursor:pointer;font-family:inherit;text-align:left}.ldk-selectbox-trigger:hover:not(:disabled){border-color:var(--accent)}.ldk-selectbox-trigger:disabled{opacity:.5;cursor:default}.ldk-selectbox-open .ldk-selectbox-trigger{border-color:var(--accent)}.ldk-selectbox-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ldk-selectbox-swatch{display:inline-block;width:10px;height:10px;margin-right:5px;border-radius:50%;border:1px solid color-mix(in srgb,var(--text-primary) 35%,transparent);vertical-align:middle;flex-shrink:0}.ldk-selectbox-arrow{flex-shrink:0;font-size:var(--font-size-sm);transition:transform .15s ease}.ldk-selectbox-arrow-up{transform:rotate(180deg)}.ldk-selectbox-dropdown{position:absolute;top:100%;left:0;margin-top:2px;background:var(--bg-window);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-pop);overflow:hidden;z-index:var(--z-dropdown);max-height:260px;max-width:calc(100vw - 24px);display:flex;flex-direction:column;animation:selectbox-in .1s ease-out}@keyframes selectbox-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.ldk-selectbox-search{padding:4px;border-bottom:1px solid var(--separator)}.ldk-selectbox-search-input{width:100%;padding:2px 6px;background:var(--bg-input);color:var(--text-primary);border:1px solid var(--border);border-radius:var(--radius-xs);font-size:var(--font-size-sm);font-family:inherit;outline:none;box-sizing:border-box}.ldk-selectbox-search-input:focus{border-color:var(--accent)}.ldk-selectbox-list{list-style:none;margin:0;padding:2px 0;overflow-y:auto;outline:none}.ldk-selectbox-item{padding:3px 8px;font-size:var(--font-size-md);line-height:1.6;color:var(--text-primary);cursor:pointer}.ldk-selectbox-item-focus{background:var(--accent);color:var(--text-on-accent)}.ldk-selectbox-item-selected:not(.ldk-selectbox-item-focus){background:var(--bg-selection)}.ldk-selectbox-empty{padding:6px 8px;font-size:var(--font-size-sm);color:var(--text-muted);text-align:center}.ldk-selectbox-disabled{pointer-events:none}.ctx-menu{position:fixed;min-width:140px;max-width:280px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-hairline),var(--context-menu-shadow);padding:4px 0;overflow:hidden;outline:none;opacity:0;transform:scale(.96);transform-origin:top left;transition:opacity .15s ease-out,transform .15s ease-out}.ctx-menu:focus-visible{outline:none}.ctx-menu.show{opacity:1;transform:scale(1)}.ctx-item{display:flex;align-items:center;gap:8px;padding:6px 12px;font-size:var(--font-size-md);font-weight:400;line-height:1.6;color:var(--text-primary);cursor:pointer;transition:background 60ms;-webkit-user-select:none;user-select:none}.ctx-item:hover,.ctx-item.focused{background:var(--tab-hover-bg);color:var(--text-primary);box-shadow:inset 2px 0 0 var(--accent)}.ctx-item-icon{flex-shrink:0;width:calc(16px * var(--ui-scale));height:calc(16px * var(--ui-scale));font-size:var(--font-size-lg);display:flex;align-items:center;justify-content:center;opacity:.75}.ctx-item:hover .ctx-item-icon,.ctx-item.focused .ctx-item-icon{opacity:1;color:var(--accent)}.ctx-item-shortcut{flex-shrink:0;margin-left:12px;font-size:var(--font-size-xs);opacity:.6;font-family:var(--font-mono);letter-spacing:.2px}.ctx-item:hover .ctx-item-shortcut,.ctx-item.focused .ctx-item-shortcut{opacity:.9;color:var(--text-secondary)}.ctx-item-check{flex-shrink:0;width:16px;font-size:var(--font-size-sm);color:var(--accent);display:flex;align-items:center}.ctx-item-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ctx-divider{height:1px;background:var(--separator);margin:4px 12px}.ctx-item-danger{color:var(--danger)}.ctx-item-danger .ctx-item-icon{opacity:1}.ctx-item-danger:hover,.ctx-item-danger.focused{background:var(--tab-hover-bg);color:var(--danger);box-shadow:inset 2px 0 0 var(--danger)}.ctx-item-danger:hover .ctx-item-shortcut,.ctx-item-danger.focused .ctx-item-shortcut{opacity:.9;color:var(--text-secondary)}.form-row{display:flex;align-items:center;gap:8px;margin-bottom:6px;font-size:var(--font-size-sm);color:var(--text-primary)}.form-row>label,.form-row>.form-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.form-row>.ldk-toggle,.form-row>.ldk-input,.form-row>select,.form-row>.form-control{flex-shrink:0}.number-input{display:inline-flex;align-items:center;gap:0}.number-input-btn{display:flex;align-items:center;justify-content:center;width:calc(22px * var(--ui-scale));height:calc(24px * var(--ui-scale));padding:0;border:1px solid var(--border);background:var(--bg-input);color:var(--text-primary);font-size:var(--font-size-lg);line-height:1;cursor:pointer;transition:background .15s,border-color .15s;-webkit-user-select:none;user-select:none}.number-input-btn:first-child{border-radius:var(--radius-sm) 0 0 var(--radius-sm);border-right:none}.number-input-btn:last-child{border-radius:0 var(--radius-sm) var(--radius-sm) 0;border-left:none}.number-input-btn:hover:not(:disabled){background:var(--tab-hover-bg)}.number-input-btn:active:not(:disabled){background:var(--accent);color:var(--text-on-accent)}.number-input-btn:disabled{opacity:.3;cursor:default}.number-input-field{border-radius:0;text-align:center;width:44px}.number-input-unit{margin:0 6px 0 8px;color:var(--text-muted);font-size:var(--font-size-sm);line-height:1;-webkit-user-select:none;user-select:none}.segmented-radio{display:flex;gap:4px}.segmented-radio__option{display:flex;flex-direction:column;align-items:center;gap:4px;padding:4px 8px;background:transparent;border:1px solid var(--separator);border-radius:var(--radius-sm);cursor:pointer;transition:border-color .12s ease,background .12s ease}.segmented-radio__option:hover{border-color:var(--text-muted);background:var(--hover-overlay)}.segmented-radio__option:focus-visible{outline:1px solid var(--accent);outline-offset:1px}.segmented-radio__option.is-selected{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent)}.segmented-radio__label{font-size:var(--font-size-sm);color:var(--text-secondary);white-space:nowrap}.segmented-radio__option.is-selected .segmented-radio__label{color:var(--text-primary)}.ldk-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:130px;height:4px;margin:0;border-radius:var(--radius-sm);background:linear-gradient(to right,var(--accent) var(--slider-pct, 0%),var(--border) var(--slider-pct, 0%));cursor:pointer;outline-offset:4px}.ldk-slider:disabled{opacity:.4;cursor:default}.ldk-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:12px;height:12px;border-radius:50%;background:var(--text-primary);box-shadow:var(--shadow-tiny);cursor:grab}.ldk-slider::-webkit-slider-thumb:active{cursor:grabbing}.ldk-sle{display:flex;flex-direction:column;gap:4px;width:100%}.ldk-sle-row{display:flex;align-items:center;gap:6px;min-height:calc(24px * var(--ui-scale, 1));width:100%;box-sizing:border-box}.ldk-sle-glyph{font-size:var(--font-size-sm);color:var(--text-muted);flex-shrink:0}.ldk-sle-url{flex:1;min-width:0;font-family:var(--font-mono);font-size:var(--font-size-xs);color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ldk-sle-badge{flex-shrink:0;font-size:var(--font-size-2xs);color:var(--text-muted);background:var(--bg-window);padding:1px 4px;border-radius:3px;white-space:nowrap}.ldk-sle-lock{font-size:var(--font-size-sm);color:var(--text-muted);flex-shrink:0}.ldk-sle-del{display:flex;align-items:center;justify-content:center;width:calc(24px * var(--ui-scale, 1));height:calc(24px * var(--ui-scale, 1));padding:0;background:transparent;border:none;border-radius:3px;color:var(--text-muted);cursor:pointer;font-size:var(--font-size-sm);flex-shrink:0;transition:color .15s ease,background .15s ease}.ldk-sle-del:hover{color:var(--error);background:var(--hover-overlay)}.ldk-sle-add-row{display:flex;align-items:center;gap:6px;width:100%}.ldk-sle-input{flex:1;min-width:0;box-sizing:border-box;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);padding:4px 8px;color:var(--text-primary);font-family:var(--font-mono);font-size:var(--font-size-xs);transition:border-color .15s;outline:none}.ldk-sle-input:focus{border-color:var(--accent)}.ldk-sle-add-btn{flex-shrink:0;padding:3px 8px;border:1px solid var(--separator);border-radius:4px;background:transparent;color:var(--text-primary);cursor:pointer;font-size:var(--font-size-xs);font-family:inherit;white-space:nowrap}.ldk-sle-add-btn:hover:not(:disabled){background:var(--tab-hover-bg)}.ldk-sle-add-btn:disabled{opacity:.5;cursor:not-allowed}.ldk-sle-msg{display:block;font-size:var(--font-size-2xs);line-height:1.5;padding:0 2px}.ldk-sle-msg--error{color:var(--error)}.ldk-sle-msg--hint{color:var(--text-muted)}.theme-picker{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;width:100%}.theme-card{border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;cursor:pointer;background:var(--bg-card);padding:0;text-align:left;color:inherit;font:inherit;transition:border-color .15s ease,transform .15s ease}.theme-card:hover{border-color:var(--separator);transform:translateY(-1px)}.theme-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.theme-card.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.theme-preview{height:44px;display:flex;align-items:center;gap:3px;padding:8px;overflow:hidden}.theme-preview .pv-bar{width:26px;height:12px;border-radius:var(--radius-xs)}.theme-preview .pv-dots{display:flex;gap:3px}.theme-preview .pv-dot{width:12px;height:12px;border-radius:50%;border:1px solid color-mix(in srgb,var(--text-primary) 35%,transparent)}.theme-card .tname{padding:6px 8px;font-size:var(--font-size-xs);color:var(--text-secondary);display:flex;align-items:center;justify-content:space-between;gap:4px;overflow:hidden}.theme-card.active .tname{color:var(--text-primary)}.theme-card .tname-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.theme-card .tbadge{font-size:var(--font-size-2xs);color:var(--accent);white-space:nowrap}.theme-picker-empty{color:var(--text-muted);font-size:var(--font-size-sm);padding:8px 0}.ldk-toggle{width:36px;height:20px;border-radius:var(--radius-pill);background:var(--border);transition:background .15s;cursor:pointer;position:relative;flex-shrink:0}.ldk-toggle.on{background:var(--accent)}.ldk-toggle:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:var(--radius-pill);background:var(--toggle-knob);transition:transform .15s}.ldk-toggle.on:after{transform:translate(16px);background:var(--toggle-knob-on, var(--text-on-accent))}.ldk-toggle.disabled{opacity:.4;cursor:not-allowed}.inline-input{border:1px solid var(--border);background:var(--bg-input);color:var(--text-primary);font-family:inherit;outline:none;box-sizing:border-box;width:100%;transition:border-color .15s ease-out,box-shadow .15s ease-out}.inline-input:focus{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.inline-input--compact{height:calc(22px * var(--ui-scale));font-size:var(--font-size-sm);padding:0 4px}.inline-input--normal{height:calc(32px * var(--ui-scale));font-size:var(--font-size-md);padding:0 8px}
1
+ .ldk-badge{display:inline-flex;align-items:center;background:var(--badge-background);color:var(--badge-foreground);border-radius:var(--radius-sm);padding:1px 6px;font-size:var(--font-size-2xs);font-weight:500;line-height:1.4;white-space:nowrap;flex-shrink:0}.ldk-mdv{color:var(--text-primary);font-size:var(--font-size-md);line-height:1.6;overflow-wrap:break-word}.ldk-mdv>:first-child{margin-top:0}.ldk-mdv>:last-child{margin-bottom:0}.ldk-mdv h1,.ldk-mdv h2,.ldk-mdv h3,.ldk-mdv h4,.ldk-mdv h5,.ldk-mdv h6{color:var(--text-primary);font-weight:600;line-height:1.25;margin:1.2em 0 .5em}.ldk-mdv h1{font-size:var(--font-size-2xl);padding-bottom:.3em;border-bottom:1px solid var(--border)}.ldk-mdv h2{font-size:var(--font-size-xl);padding-bottom:.3em;border-bottom:1px solid var(--border)}.ldk-mdv h3{font-size:var(--font-size-lg)}.ldk-mdv h4{font-size:var(--font-size-md)}.ldk-mdv h5,.ldk-mdv h6{font-size:var(--font-size-sm);color:var(--text-secondary)}.ldk-mdv p{margin:.6em 0}.ldk-mdv ul,.ldk-mdv ol{margin:.6em 0;padding-left:1.6em}.ldk-mdv li{margin:.25em 0}.ldk-mdv li>p{margin:.3em 0}.ldk-mdv hr{border:none;border-top:1px solid var(--border);margin:1.2em 0}.ldk-mdv blockquote{margin:.8em 0;padding:.1em 1em;border-left:3px solid var(--accent);background:var(--bg-input);color:var(--text-secondary)}.ldk-mdv blockquote>:first-child{margin-top:.6em}.ldk-mdv blockquote>:last-child{margin-bottom:.6em}.ldk-mdv a{color:var(--accent);text-decoration:none}.ldk-mdv a:hover{text-decoration:underline}.ldk-mdv code{font-family:var(--font-mono);font-size:.9em;background:var(--bg-input);border-radius:var(--radius-xs);padding:.15em .4em}.ldk-mdv pre{margin:.8em 0;padding:.8em 1em;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-md);overflow:auto}.ldk-mdv pre code{background:transparent;padding:0;font-size:var(--font-size-sm);border-radius:0}.ldk-mdv table{border-collapse:collapse;margin:.8em 0;width:max-content;max-width:100%;font-size:var(--font-size-sm)}.ldk-mdv th,.ldk-mdv td{border:1px solid var(--border);padding:.35em .8em}.ldk-mdv th{font-weight:600;background:var(--bg-input)}.ldk-mdv img{max-width:100%;height:auto;border-radius:var(--radius-sm)}.ldk-mdv video,.ldk-mdv iframe{max-width:100%}.ldk-mdv input[type=checkbox]{margin-right:.4em;vertical-align:middle;accent-color:var(--accent)}.ldk-mdv del{color:var(--text-muted)}.ldk-button{background:var(--accent);color:var(--text-on-accent);border:1px solid transparent;border-radius:var(--radius-sm);padding:4px 12px;font-size:var(--font-size-sm);cursor:pointer;white-space:nowrap}.ldk-button:hover:not(:disabled){opacity:.85}.ldk-button:disabled{opacity:.5;cursor:default}.ldk-button--sm{display:inline-flex;align-items:center;height:22px;padding:0 12px;font-size:var(--font-size-xs)}.ldk-button--success{background:var(--success);border-color:var(--success);color:var(--badge-text)}.ldk-button--ghost{background:transparent;border-color:var(--separator);color:var(--text-secondary)}.ldk-button--ghost:hover:not(:disabled){background:var(--hover-overlay);color:var(--text-primary);opacity:1}.ldk-button--danger{background:transparent;border-color:color-mix(in srgb,var(--danger) 45%,transparent);color:var(--danger)}.ldk-button--danger:hover:not(:disabled){background:color-mix(in srgb,var(--danger) 10%,transparent);border-color:color-mix(in srgb,var(--danger) 75%,transparent);opacity:1}.ldk-colorpicker-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-overlay-backdrop)}.ldk-colorpicker-panel{position:fixed;z-index:var(--z-overlay);background:var(--bg-window);border:1px solid var(--separator);border-radius:var(--radius-md);padding:12px;box-shadow:var(--shadow-float);display:flex;flex-wrap:wrap;width:232px;gap:8px;top:50%;left:50%;transform:translate(-50%,-50%)}.ldk-colorpicker-panel[style]{transform:none}.ldk-colorpicker-sv{width:180px;height:150px;border-radius:var(--radius-sm);position:relative;cursor:crosshair;overflow:hidden;-webkit-user-select:none;user-select:none}.ldk-colorpicker-sv-white{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to right,#fff,transparent)}.ldk-colorpicker-sv-black{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to top,#000,transparent)}.ldk-colorpicker-sv-cursor{position:absolute;width:10px;height:10px;border:2px solid #fff;border-radius:var(--radius-full);box-shadow:var(--shadow-tiny);transform:translate(-50%,-50%);pointer-events:none}.ldk-colorpicker-hue{width:180px;height:14px;border-radius:var(--radius-md);position:relative;cursor:pointer;-webkit-user-select:none;user-select:none;background:linear-gradient(to right,red,#ff0,#0f0,#0ff,#00f,#f0f,red)}.ldk-colorpicker-hue-cursor{position:absolute;top:-2px;width:4px;height:18px;background:#fff;border-radius:var(--radius-xs);box-shadow:var(--shadow-tiny);transform:translate(-50%);pointer-events:none}.ldk-colorpicker-footer{display:flex;align-items:center;gap:6px;width:100%}.ldk-colorpicker-preview{width:28px;height:28px;border-radius:var(--radius-sm);border:1px solid var(--separator);flex-shrink:0}.ldk-colorpicker-hex{flex:1;min-width:0;height:calc(26px * var(--ui-scale));padding:2px 6px;border:1px solid var(--separator);border-radius:var(--radius-sm);background:var(--bg-input);color:var(--text-primary);font-family:var(--font-mono);font-size:var(--font-size-sm);outline:none;box-sizing:border-box}.ldk-colorpicker-hex:focus{border-color:var(--accent)}.ldk-colorpicker-ok{height:calc(26px * var(--ui-scale));padding:0 12px;background:var(--accent);color:var(--text-on-accent);border:none;border-radius:var(--radius-sm);font-size:var(--font-size-sm);cursor:pointer;flex-shrink:0}.ldk-colorpicker-ok:hover{background:var(--accent-hover)}.ldk-colorpicker-presets{width:100%;display:flex;gap:6px;flex-wrap:wrap;padding-top:4px;border-top:1px solid var(--separator)}.ldk-colorpicker-preset{width:18px;height:18px;border-radius:var(--radius-full);border:1px solid var(--separator);cursor:pointer;transition:transform .1s}.ldk-colorpicker-preset:hover{transform:scale(1.2);border-color:var(--accent)}.ldk-combobox{position:relative;display:inline-block;min-width:100px}.ldk-combobox-field{display:flex;align-items:center;gap:4px;padding:3px 6px;background:var(--bg-input);color:var(--text-primary);border:1px solid var(--border);border-radius:var(--radius-xs);font-size:var(--font-size-md);line-height:1.6;cursor:text}.ldk-combobox-field:hover:not(.ldk-selectbox-disabled){border-color:var(--accent)}.ldk-combobox.ldk-selectbox-open .ldk-combobox-field{border-color:var(--accent)}.ldk-combobox-input{flex:1;min-width:0;padding:0;background:transparent;border:none;outline:none;color:inherit;font:inherit;line-height:1.6}.ldk-combobox-input::placeholder{color:var(--text-muted)}.ldk-combobox-input:disabled{opacity:.5}.ldk-selectbox{position:relative;display:inline-block;min-width:100px;-webkit-user-select:none;user-select:none}.ldk-selectbox-trigger{display:flex;align-items:center;justify-content:space-between;gap:4px;width:100%;padding:3px 6px;background:var(--bg-input);color:var(--text-primary);border:1px solid var(--border);border-radius:var(--radius-xs);font-size:var(--font-size-md);line-height:1.6;cursor:pointer;font-family:inherit;text-align:left}.ldk-selectbox-trigger:hover:not(:disabled){border-color:var(--accent)}.ldk-selectbox-trigger:disabled{opacity:.5;cursor:default}.ldk-selectbox-open .ldk-selectbox-trigger{border-color:var(--accent)}.ldk-selectbox-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ldk-selectbox-swatch{display:inline-block;width:10px;height:10px;margin-right:5px;border-radius:50%;border:1px solid color-mix(in srgb,var(--text-primary) 35%,transparent);vertical-align:middle;flex-shrink:0}.ldk-selectbox-arrow{flex-shrink:0;font-size:var(--font-size-sm);transition:transform .15s ease}.ldk-selectbox-arrow-up{transform:rotate(180deg)}.ldk-selectbox-dropdown{position:absolute;top:100%;left:0;margin-top:2px;background:var(--bg-window);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-pop);overflow:hidden;z-index:var(--z-dropdown);max-height:260px;max-width:calc(100vw - 24px);display:flex;flex-direction:column;animation:ldk-selectbox-in .1s ease-out}@keyframes ldk-selectbox-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.ldk-selectbox-search{padding:4px;border-bottom:1px solid var(--separator)}.ldk-selectbox-search-input{width:100%;padding:2px 6px;background:var(--bg-input);color:var(--text-primary);border:1px solid var(--border);border-radius:var(--radius-xs);font-size:var(--font-size-sm);font-family:inherit;outline:none;box-sizing:border-box}.ldk-selectbox-search-input:focus{border-color:var(--accent)}.ldk-selectbox-list{list-style:none;margin:0;padding:2px 0;overflow-y:auto;outline:none}.ldk-selectbox-item{padding:3px 8px;font-size:var(--font-size-md);line-height:1.6;color:var(--text-primary);cursor:pointer}.ldk-selectbox-item-focus{background:var(--accent);color:var(--text-on-accent)}.ldk-selectbox-item-selected:not(.ldk-selectbox-item-focus){background:var(--bg-selection)}.ldk-selectbox-empty{padding:6px 8px;font-size:var(--font-size-sm);color:var(--text-muted);text-align:center}.ldk-selectbox-disabled{pointer-events:none}.ldk-ctx-menu{position:fixed;min-width:140px;max-width:280px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-hairline),var(--context-menu-shadow);padding:4px 0;overflow:hidden;outline:none;opacity:0;transform:scale(.96);transform-origin:top left;transition:opacity .15s ease-out,transform .15s ease-out}.ldk-ctx-menu:focus-visible{outline:none}.ldk-ctx-menu.show{opacity:1;transform:scale(1)}.ldk-ctx-item{display:flex;align-items:center;gap:8px;padding:6px 12px;font-size:var(--font-size-md);font-weight:400;line-height:1.6;color:var(--text-primary);cursor:pointer;transition:background 60ms;-webkit-user-select:none;user-select:none}.ldk-ctx-item:hover,.ldk-ctx-item.focused{background:var(--tab-hover-bg);color:var(--text-primary);box-shadow:inset 2px 0 0 var(--accent)}.ldk-ctx-item-icon{flex-shrink:0;width:calc(16px * var(--ui-scale));height:calc(16px * var(--ui-scale));font-size:var(--font-size-lg);display:flex;align-items:center;justify-content:center;opacity:.75}.ldk-ctx-item:hover .ldk-ctx-item-icon,.ldk-ctx-item.focused .ldk-ctx-item-icon{opacity:1;color:var(--accent)}.ldk-ctx-item-shortcut{flex-shrink:0;margin-left:12px;font-size:var(--font-size-xs);opacity:.6;font-family:var(--font-mono);letter-spacing:.2px}.ldk-ctx-item:hover .ldk-ctx-item-shortcut,.ldk-ctx-item.focused .ldk-ctx-item-shortcut{opacity:.9;color:var(--text-secondary)}.ldk-ctx-item-check{flex-shrink:0;width:16px;font-size:var(--font-size-sm);color:var(--accent);display:flex;align-items:center}.ldk-ctx-item-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ldk-ctx-divider{height:1px;background:var(--separator);margin:4px 12px}.ldk-ctx-item-danger{color:var(--danger)}.ldk-ctx-item-danger .ldk-ctx-item-icon{opacity:1}.ldk-ctx-item-danger:hover,.ldk-ctx-item-danger.focused{background:var(--tab-hover-bg);color:var(--danger);box-shadow:inset 2px 0 0 var(--danger)}.ldk-ctx-item-danger:hover .ldk-ctx-item-shortcut,.ldk-ctx-item-danger.focused .ldk-ctx-item-shortcut{opacity:.9;color:var(--text-secondary)}.ldk-form-row{display:flex;align-items:center;gap:8px;margin-bottom:6px;font-size:var(--font-size-sm);color:var(--text-primary)}.ldk-form-row>label,.ldk-form-row>.form-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ldk-form-row>.ldk-toggle,.ldk-form-row>.ldk-input,.ldk-form-row>select,.ldk-form-row>.form-control{flex-shrink:0}.ldk-hint-card-host{display:inline-flex}.ldk-hint-card{position:fixed;z-index:var(--z-dropdown);width:300px;box-sizing:border-box;padding:12px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-window);box-shadow:var(--shadow-pop);pointer-events:none}.ldk-hint-card-title{margin-bottom:4px;font-size:var(--font-size-sm);font-weight:600;color:var(--text-primary)}.ldk-hint-card p{margin:0 0 4px;font-size:var(--font-size-sm);color:var(--text-secondary);line-height:1.7}.ldk-hint-card-note{margin-top:8px;padding-top:8px;border-top:1px solid var(--border);font-size:var(--font-size-xs);color:var(--text-muted)}.ldk-number-input{display:inline-flex;align-items:center;gap:0}.ldk-number-input-btn{display:flex;align-items:center;justify-content:center;width:calc(22px * var(--ui-scale));height:calc(24px * var(--ui-scale));padding:0;border:1px solid var(--border);background:var(--bg-input);color:var(--text-primary);font-size:var(--font-size-lg);line-height:1;cursor:pointer;transition:background .15s,border-color .15s;-webkit-user-select:none;user-select:none}.ldk-number-input-btn:first-child{border-radius:var(--radius-sm) 0 0 var(--radius-sm);border-right:none}.ldk-number-input-btn:last-child{border-radius:0 var(--radius-sm) var(--radius-sm) 0;border-left:none}.ldk-number-input-btn:hover:not(:disabled){background:var(--tab-hover-bg)}.ldk-number-input-btn:active:not(:disabled){background:var(--accent);color:var(--text-on-accent)}.ldk-number-input-btn:disabled{opacity:.3;cursor:default}.ldk-number-input-field{border-radius:0;text-align:center;width:44px}.ldk-number-input-unit{margin:0 6px 0 8px;color:var(--text-muted);font-size:var(--font-size-sm);line-height:1;-webkit-user-select:none;user-select:none}.ldk-segmented-radio{display:flex;gap:4px}.ldk-segmented-radio__option{display:flex;flex-direction:column;align-items:center;gap:4px;padding:4px 8px;background:transparent;border:1px solid var(--separator);border-radius:var(--radius-sm);cursor:pointer;transition:border-color .12s ease,background .12s ease}.ldk-segmented-radio__option:hover{border-color:var(--text-muted);background:var(--hover-overlay)}.ldk-segmented-radio__option:focus-visible{outline:1px solid var(--accent);outline-offset:1px}.ldk-segmented-radio__option.is-selected{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent)}.ldk-segmented-radio__label{font-size:var(--font-size-sm);color:var(--text-secondary);white-space:nowrap}.ldk-segmented-radio__option.is-selected .ldk-segmented-radio__label{color:var(--text-primary)}.ldk-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:130px;height:4px;margin:0;border-radius:var(--radius-sm);background:linear-gradient(to right,var(--accent) var(--slider-pct, 0%),var(--border) var(--slider-pct, 0%));cursor:pointer;outline-offset:4px}.ldk-slider:disabled{opacity:.4;cursor:default}.ldk-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:12px;height:12px;border-radius:50%;background:var(--text-primary);box-shadow:var(--shadow-tiny);cursor:grab}.ldk-slider::-webkit-slider-thumb:active{cursor:grabbing}.ldk-sle{display:flex;flex-direction:column;gap:4px;width:100%}.ldk-sle-row{display:flex;align-items:center;gap:6px;min-height:calc(24px * var(--ui-scale, 1));width:100%;box-sizing:border-box}.ldk-sle-glyph{font-size:var(--font-size-sm);color:var(--text-muted);flex-shrink:0}.ldk-sle-url{flex:1;min-width:0;font-family:var(--font-mono);font-size:var(--font-size-xs);color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ldk-sle-badge{flex-shrink:0;font-size:var(--font-size-2xs);color:var(--text-muted);background:var(--bg-window);padding:1px 4px;border-radius:3px;white-space:nowrap}.ldk-sle-lock{font-size:var(--font-size-sm);color:var(--text-muted);flex-shrink:0}.ldk-sle-del{display:flex;align-items:center;justify-content:center;width:calc(24px * var(--ui-scale, 1));height:calc(24px * var(--ui-scale, 1));padding:0;background:transparent;border:none;border-radius:3px;color:var(--text-muted);cursor:pointer;font-size:var(--font-size-sm);flex-shrink:0;transition:color .15s ease,background .15s ease}.ldk-sle-del:hover{color:var(--error);background:var(--hover-overlay)}.ldk-sle-add-row{display:flex;align-items:center;gap:6px;width:100%}.ldk-sle-input{flex:1;min-width:0;box-sizing:border-box;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);padding:4px 8px;color:var(--text-primary);font-family:var(--font-mono);font-size:var(--font-size-xs);transition:border-color .15s;outline:none}.ldk-sle-input:focus{border-color:var(--accent)}.ldk-sle-add-btn{flex-shrink:0;padding:3px 8px;border:1px solid var(--separator);border-radius:4px;background:transparent;color:var(--text-primary);cursor:pointer;font-size:var(--font-size-xs);font-family:inherit;white-space:nowrap}.ldk-sle-add-btn:hover:not(:disabled){background:var(--tab-hover-bg)}.ldk-sle-add-btn:disabled{opacity:.5;cursor:not-allowed}.ldk-sle-msg{display:block;font-size:var(--font-size-2xs);line-height:1.5;padding:0 2px}.ldk-sle-msg--error{color:var(--error)}.ldk-sle-msg--hint{color:var(--text-muted)}.ldk-theme-picker{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;width:100%}.ldk-theme-picker-card{border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;cursor:pointer;background:var(--bg-card);padding:0;text-align:left;color:inherit;font:inherit;transition:border-color .15s ease,transform .15s ease}.ldk-theme-picker-card:hover{border-color:var(--separator);transform:translateY(-1px)}.ldk-theme-picker-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.ldk-theme-picker-card.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.ldk-theme-picker-preview{height:44px;display:flex;align-items:center;gap:3px;padding:8px;overflow:hidden}.ldk-theme-picker-preview .ldk-theme-picker-preview-bar{width:26px;height:12px;border-radius:var(--radius-xs)}.ldk-theme-picker-preview .ldk-theme-picker-preview-dots{display:flex;gap:3px}.ldk-theme-picker-preview .ldk-theme-picker-preview-dot{width:12px;height:12px;border-radius:50%;border:1px solid color-mix(in srgb,var(--text-primary) 35%,transparent)}.ldk-theme-picker-card .ldk-theme-picker-name{padding:6px 8px;font-size:var(--font-size-xs);color:var(--text-secondary);display:flex;align-items:center;justify-content:space-between;gap:4px;overflow:hidden}.ldk-theme-picker-card.active .ldk-theme-picker-name{color:var(--text-primary)}.ldk-theme-picker-card .ldk-theme-picker-name-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ldk-theme-picker-card .ldk-theme-picker-badge{font-size:var(--font-size-2xs);color:var(--accent);white-space:nowrap}.ldk-theme-picker-empty{color:var(--text-muted);font-size:var(--font-size-sm);padding:8px 0}.ldk-toggle{width:36px;height:20px;border-radius:var(--radius-pill);background:var(--border);transition:background .15s;cursor:pointer;position:relative;flex-shrink:0}.ldk-toggle.on{background:var(--accent)}.ldk-toggle:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:var(--radius-pill);background:var(--toggle-knob);transition:transform .15s}.ldk-toggle.on:after{transform:translate(16px);background:var(--toggle-knob-on, var(--text-on-accent))}.ldk-toggle.disabled{opacity:.4;cursor:not-allowed}.ldk-inline-input{border:1px solid var(--border);background:var(--bg-input);color:var(--text-primary);font-family:inherit;outline:none;box-sizing:border-box;width:100%;transition:border-color .15s ease-out,box-shadow .15s ease-out}.ldk-inline-input:focus{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.ldk-inline-input--compact{height:calc(22px * var(--ui-scale));font-size:var(--font-size-sm);padding:0 4px}.ldk-inline-input--normal{height:calc(32px * var(--ui-scale));font-size:var(--font-size-md);padding:0 8px}
package/dist/index.d.ts CHANGED
@@ -9,6 +9,7 @@ export { default as DynamicSelect } from "./select-box/DynamicSelect";
9
9
  export { default as FilePathInput } from "./file-path-input/FilePathInput";
10
10
  export { default as FontFamilySelect } from "./font-family-select/FontFamilySelect";
11
11
  export { default as FormRow } from "./form-row/FormRow";
12
+ export { default as HintCard } from "./hint-card/HintCard";
12
13
  export { default as NumberInput } from "./number-input/NumberInput";
13
14
  export { default as SegmentedRadio } from "./segmented-radio/SegmentedRadio";
14
15
  export { default as SelectBox } from "./select-box/SelectBox";