@design.estate/dees-catalog 12.5.0 → 13.0.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.
Files changed (32) hide show
  1. package/dist_bundle/bundle.js +340 -177
  2. package/dist_bundle/bundle.js.map +1 -1
  3. package/dist_ts_web/00_commitinfo_data.js +1 -1
  4. package/dist_ts_web/elements/00group-chart/dees-chart-area/component.d.ts +26 -16
  5. package/dist_ts_web/elements/00group-chart/dees-chart-area/component.js +161 -72
  6. package/dist_ts_web/elements/00group-chart/dees-chart-area/realtime-updates.d.ts +2 -1
  7. package/dist_ts_web/elements/00group-chart/dees-chart-area/realtime-updates.js +3 -2
  8. package/dist_ts_web/elements/00group-chart/dees-chart-area/template.js +4 -3
  9. package/dist_ts_web/elements/00group-input/dees-input-reference/dees-input-reference.js +4 -4
  10. package/dist_ts_web/elements/00group-kanban/dees-kanban/dees-kanban.js +32 -18
  11. package/dist_ts_web/elements/00group-kanban/dees-kanban-card/dees-kanban-card.js +37 -21
  12. package/dist_ts_web/elements/00group-kanban/dees-kanban-column/dees-kanban-column.js +16 -12
  13. package/dist_ts_web/elements/00group-kanban/dees-kanban-discussion/dees-kanban-discussion.js +26 -15
  14. package/dist_ts_web/elements/00group-kanban/dees-kanban-ticket-detail/dees-kanban-ticket-detail.d.ts +2 -0
  15. package/dist_ts_web/elements/00group-kanban/dees-kanban-ticket-detail/dees-kanban-ticket-detail.js +73 -40
  16. package/dist_ts_web/elements/00group-kanban/kanban.helpers.d.ts +3 -1
  17. package/dist_ts_web/elements/00group-kanban/kanban.helpers.js +3 -1
  18. package/dist_ts_web/elements/00group-kanban/kanban.styles.js +11 -3
  19. package/package.json +1 -1
  20. package/readme.md +19 -1
  21. package/ts_web/00_commitinfo_data.ts +1 -1
  22. package/ts_web/elements/00group-chart/dees-chart-area/component.ts +195 -79
  23. package/ts_web/elements/00group-chart/dees-chart-area/realtime-updates.ts +4 -2
  24. package/ts_web/elements/00group-chart/dees-chart-area/template.ts +3 -2
  25. package/ts_web/elements/00group-input/dees-input-reference/dees-input-reference.ts +3 -3
  26. package/ts_web/elements/00group-kanban/dees-kanban/dees-kanban.ts +31 -17
  27. package/ts_web/elements/00group-kanban/dees-kanban-card/dees-kanban-card.ts +36 -20
  28. package/ts_web/elements/00group-kanban/dees-kanban-column/dees-kanban-column.ts +15 -11
  29. package/ts_web/elements/00group-kanban/dees-kanban-discussion/dees-kanban-discussion.ts +25 -14
  30. package/ts_web/elements/00group-kanban/dees-kanban-ticket-detail/dees-kanban-ticket-detail.ts +64 -38
  31. package/ts_web/elements/00group-kanban/kanban.helpers.ts +5 -1
  32. package/ts_web/elements/00group-kanban/kanban.styles.ts +10 -2
@@ -131,16 +131,20 @@ let DeesKanbanColumn = (() => {
131
131
  get draggingOver() { return this.#draggingOver_accessor_storage; }
132
132
  set draggingOver(value) { this.#draggingOver_accessor_storage = value; }
133
133
  static styles = [...kanbanStyles, css `
134
- :host { display: flex; flex-direction: column; width: 300px; min-width: 270px; flex: 1 0 270px; }
135
- section { min-height: 220px; height: 100%; border-radius: var(--dees-radius-lg); background: var(--dees-color-bg-secondary); padding: 10px; }
136
- header { display: flex; align-items: center; gap: 8px; padding: 3px 3px 12px; }
137
- h3 { font-size: var(--dees-font-body-size); font-weight: 600; }
138
- .count { font-size: var(--dees-font-caption1-size); color: var(--dees-color-text-secondary); }
139
- .stack { display: grid; gap: 10px; min-height: 80px; align-content: start; }
134
+ :host { display: flex; flex-direction: column; min-width: 272px; max-width: 360px; flex: 1 0 272px; }
135
+ section { min-height: 220px; height: 100%; border-radius: var(--dees-radius-xl); }
136
+ header { display: flex; align-items: center; gap: 8px; min-height: 40px; margin-bottom: 10px; padding: 0 2px 8px; border-bottom: 1px solid var(--dees-color-border-subtle); }
137
+ h3 { font-size: var(--dees-font-footnote-size); font-weight: 600; }
138
+ header dees-button::part(button) { width: 24px; height: 24px; min-height: 24px; }
139
+ .status { width: 8px; height: 8px; border: 1.5px solid var(--dees-color-text-secondary); border-radius: 50%; flex-shrink: 0; }
140
+ .status.done { background: var(--dees-color-accent-success); border-color: var(--dees-color-accent-success); }
141
+ .stack { display: grid; gap: 8px; min-height: 120px; align-content: start; }
140
142
  .target { position: relative; }
141
- .target.before::before, .end-target.before::before { content: ''; display: block; height: 3px; background: var(--dees-color-accent-primary); border-radius: 2px; margin-bottom: 7px; }
142
- .end-target { min-height: 20px; padding-top: 10px; }
143
- section.over { outline: 2px solid var(--dees-color-focus-ring); outline-offset: 1px; }
143
+ .target.dragging { opacity: .4; }
144
+ .target.before::before, .end-target.before::before { content: ''; position: absolute; top: -5px; left: 0; right: 0; height: 2px; background: var(--dees-color-accent-primary); border-radius: 2px; }
145
+ .end-target { position: relative; min-height: 32px; margin-top: 8px; }
146
+ section.over { background: var(--dees-color-row-hover); }
147
+ @media (pointer: coarse) { header dees-button::part(button) { width: 32px; height: 32px; min-height: 32px; } }
144
148
  `];
145
149
  updated() { if (!this.draggingTicketId)
146
150
  this.draggingOver = false; }
@@ -162,11 +166,11 @@ let DeesKanbanColumn = (() => {
162
166
  if (this.movable && this.draggingTicketId && event.dataTransfer?.getData('application/x-dees-kanban-ticket') === this.draggingTicketId)
163
167
  kanbanEvent(this, 'kanban-ticket-move', { ticketId: this.draggingTicketId, columnId: this.column.id, beforeTicketId: this.dropBefore });
164
168
  }}>
165
- <header><h3>${this.column.title}</h3><span class="count">${this.tickets.length}</span><span class="spacer"></span>
169
+ <header><span class="status ${this.column.done ? 'done' : ''}" aria-hidden="true"></span><h3>${this.column.title}</h3><span class="count">${this.tickets.length}</span><span class="spacer"></span>
166
170
  ${this.canCreate ? html `<dees-button type="ghost" size="icon" icon="lucide:Plus" text=${`Add task to ${this.column.title}`}
167
171
  @clicked=${() => kanbanEvent(this, 'kanban-ticket-create', { kind: 'task', columnId: this.column.id })}></dees-button>` : ''}</header>
168
172
  <div class="stack">${sortKanbanTickets(this.tickets).map(ticket => html `
169
- <div class="target ${this.draggingOver && this.dropBefore === ticket.id ? 'before' : ''}"
173
+ <div class="target ${this.draggingOver && this.dropBefore === ticket.id ? 'before' : ''} ${this.draggingTicketId === ticket.id ? 'dragging' : ''}"
170
174
  @dragover=${() => { this.dropBefore = ticket.id; }}>
171
175
  <dees-kanban-card .ticket=${ticket} .columns=${this.columns}
172
176
  .epic=${this.allTickets.find(item => item.id === ticket.parentId && item.kind === 'epic')}
@@ -189,4 +193,4 @@ let DeesKanbanColumn = (() => {
189
193
  return DeesKanbanColumn = _classThis;
190
194
  })();
191
195
  export { DeesKanbanColumn };
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1rYW5iYW4tY29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAta2FuYmFuL2RlZXMta2FuYmFuLWNvbHVtbi9kZWVzLWthbmJhbi1jb2x1bW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXJHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEUsT0FBTyx5Q0FBeUMsQ0FBQztJQUtwQyxnQkFBZ0I7NEJBRDVCLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQzs7OztzQkFDRSxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dDQUFuQixTQUFRLFdBQVc7Ozs7a0NBQzlDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzttQ0FDOUIsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO3NDQUM5QixRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7bUNBQzlCLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzttQ0FDOUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO3FDQUMzQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7MkNBQzNCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQzs0Q0FDMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0s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
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1rYW5iYW4tY29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdHNfd2ViL2VsZW1lbnRzLzAwZ3JvdXAta2FuYmFuL2RlZXMta2FuYmFuLWNvbHVtbi9kZWVzLWthbmJhbi1jb2x1bW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXJHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEUsT0FBTyx5Q0FBeUMsQ0FBQztJQUtwQyxnQkFBZ0I7NEJBRDVCLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQzs7OztzQkFDRSxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dDQUFuQixTQUFRLFdBQVc7Ozs7a0NBQzlDLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzttQ0FDOUIsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO3NDQUM5QixRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7bUNBQzlCLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzttQ0FDOUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO3FDQUMzQixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7MkNBQzNCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQzs0Q0FDMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0s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
@@ -34,7 +34,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
34
34
  };
35
35
  import { DeesElement, customElement, property, state, html, css } from '@design.estate/dees-element';
36
36
  import { kanbanStyles } from '../kanban.styles.js';
37
- import { kanbanError, kanbanEvent } from '../kanban.helpers.js';
37
+ import { kanbanError, kanbanEvent, kanbanInitials } from '../kanban.helpers.js';
38
38
  import { referenceText } from '../../00group-input/dees-input-reference/index.js';
39
39
  import '../../00group-button/dees-button/dees-button.js';
40
40
  let DeesKanbanDiscussion = (() => {
@@ -132,31 +132,42 @@ let DeesKanbanDiscussion = (() => {
132
132
  get failures() { return this.#failures_accessor_storage; }
133
133
  set failures(value) { this.#failures_accessor_storage = value; }
134
134
  static styles = [...kanbanStyles, css `
135
- header { display: flex; align-items: center; margin-bottom: 16px; }
136
- h3 { font-size: var(--dees-font-body-size); font-weight: 600; }
135
+ header { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
136
+ h3 { font-size: var(--dees-font-footnote-size); font-weight: 600; }
137
+ .refresh::part(button) { width: 28px; height: 28px; min-height: 28px; }
137
138
  ol { list-style: none; padding: 0; margin: 0; }
138
- li { padding: 0 0 20px; }
139
- .author { font-weight: 550; font-size: var(--dees-font-footnote-size); }
139
+ li { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: 10px; padding: 10px 0; }
140
+ li > .avatar { width: 28px; height: 28px; margin-top: 1px; }
141
+ .author { font-weight: 600; font-size: var(--dees-font-footnote-size); }
142
+ .meta { gap: 4px 10px; }
140
143
  time { font-size: var(--dees-font-caption1-size); color: var(--dees-color-text-secondary); }
141
- .message { white-space: pre-wrap; overflow-wrap: anywhere; line-height: 1.6; margin-top: 6px; }
142
- .reference { display: inline; border: 0; border-radius: var(--dees-radius-sm); padding: 1px 4px; color: var(--dees-color-link); background: var(--dees-color-badge-default-bg); font: inherit; cursor: pointer; }
143
- .compose { padding-top: 4px; }
144
- .compose .row { padding-top: 8px; }
144
+ .message { white-space: pre-wrap; overflow-wrap: anywhere; font-size: var(--dees-font-subhead-size); line-height: 22px; margin-top: 2px; }
145
+ .reference { display: inline; border: 0; border-radius: var(--dees-radius-sm); padding: 1px 5px; color: var(--dees-color-link); background: var(--dees-color-fill-tertiary); font: inherit; font-weight: 500; cursor: pointer; text-align: left; overflow-wrap: anywhere; }
146
+ .compose { margin: 14px 0 0 38px; padding: 0; border: 1px solid var(--dees-color-control-border); border-radius: var(--dees-radius-xl); corner-shape: var(--dees-corner-shape); background: var(--dees-color-control-bg); }
147
+ .compose:has(dees-input-reference:focus-within) { outline: 2px solid var(--dees-color-focus-ring); outline-offset: 1px; }
148
+ dees-input-reference { --dees-reference-min-height: 64px; --dees-reference-font-size: var(--dees-font-subhead-size); }
149
+ dees-input-reference::part(editor) { border: 0; background: transparent; outline: none; }
150
+ .compose .row { padding: 4px 10px 10px; gap: 8px; }
151
+ .compose .caption { font-size: var(--dees-font-caption1-size); }
152
+ .shortcut { white-space: nowrap; }
153
+ .compose .error { padding: 0 12px 10px; }
154
+ @media (max-width: 600px) { .compose { margin-left: 0; } .compose .caption { flex-basis: 100%; } }
145
155
  `];
146
156
  render() {
147
157
  const pending = this.pending.has(this.ticketId);
148
158
  const comments = this.comments.filter(comment => comment.ticketId === this.ticketId)
149
159
  .slice().sort((a, b) => Date.parse(a.createdAt) - Date.parse(b.createdAt));
150
- return html `<header><h3>Discussion <span class="caption">${comments.length}</span></h3><span class="spacer"></span>
151
- <dees-button size="sm" type="ghost" icon="lucide:RefreshCw" text="Refresh" .disabled=${this.loading}
160
+ return html `<header><h3>Discussion</h3><span class="count">${comments.length}</span><span class="spacer"></span>
161
+ <dees-button class="refresh" size="icon" type="ghost" icon="lucide:RefreshCw" text="Refresh" .disabled=${this.loading}
152
162
  @clicked=${() => kanbanEvent(this, 'kanban-comments-refresh', { ticketId: this.ticketId })}></dees-button></header>
153
163
  ${this.loading ? html `<p class="caption" role="status">Loading comments…</p>` : ''}
154
164
  ${this.error ? html `<p class="error" role="alert">${this.error}</p>` : ''}
155
165
  <ol aria-label="Comments">${comments.map(comment => html `<li>
156
- <div class="row"><span class="author">${comment.author.name}</span><time datetime=${comment.createdAt}>${new Date(comment.createdAt).toLocaleString()}</time></div>
166
+ <span class="avatar" aria-hidden="true">${kanbanInitials(comment.author.name)}</span><div>
167
+ <div class="row meta"><span class="author">${comment.author.name}</span><time datetime=${comment.createdAt} title=${comment.createdAt}>${new Date(comment.createdAt).toLocaleString(undefined, { dateStyle: 'medium', timeStyle: 'short' })}</time></div>
157
168
  <div class="message">${comment.body.map(part => part.type === 'text' ? part.text : html `<button class="reference"
158
169
  @click=${() => kanbanEvent(this, 'kanban-ticket-open', { ticketId: part.id })}>${part.label}</button>`)}</div>
159
- </li>`)}</ol>
170
+ </div></li>`)}</ol>
160
171
  ${!comments.length && !this.loading && !this.error ? html `<p class="empty">Start the conversation.</p>` : ''}
161
172
  ${this.addComment && !this.readOnly ? html `<div class="compose">
162
173
  <dees-input-reference label="Comment" placeholder="Write a comment…" .documentKey=${this.ticketId} .value=${this.draft} .disabled=${pending}
@@ -167,7 +178,7 @@ let DeesKanbanDiscussion = (() => {
167
178
  }}
168
179
  @reference-open=${(event) => kanbanEvent(this, 'kanban-ticket-open', { ticketId: event.detail.id })}
169
180
  @reference-submit=${() => { void this.submit(); }}></dees-input-reference>
170
- <div class="row"><span class="caption">Type #_ to link a ticket · Ctrl/⌘ Enter to send</span><span class="spacer"></span>
181
+ <div class="row"><span class="caption">Type <strong>#_</strong> to link a ticket · <span class="shortcut">Ctrl/⌘ Enter to send</span></span><span class="spacer"></span>
171
182
  <dees-button type="accent" size="sm" text="Comment" .disabled=${pending || !referenceText(this.draft).trim()}
172
183
  .status=${pending ? 'pending' : 'normal'} @clicked=${() => { void this.submit(); }}></dees-button></div>
173
184
  ${this.failures.get(this.ticketId) ? html `<p class="error" role="alert">${this.failures.get(this.ticketId)}</p>` : ''}
@@ -208,4 +219,4 @@ let DeesKanbanDiscussion = (() => {
208
219
  return DeesKanbanDiscussion = _classThis;
209
220
  })();
210
221
  export { DeesKanbanDiscussion };
211
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1rYW5iYW4tZGlzY3Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWthbmJhbi9kZWVzLWthbmJhbi1kaXNjdXNzaW9uL2RlZXMta2FuYmFuLWRpc2N1c3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXJHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQWlELE1BQU0sbURBQW1ELENBQUM7QUFDakksT0FBTyxpREFBaUQsQ0FBQztJQUs1QyxvQkFBb0I7NEJBRGhDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQzs7OztzQkFDRSxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29DQUFuQixTQUFRLFdBQVc7Ozs7b0NBQ2xELFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztvQ0FDMUIsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO2lDQUM5QixRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7eUNBQzlCLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztzQ0FDOUIsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO21DQUM5QixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7b0NBQzNCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFB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
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1rYW5iYW4tZGlzY3Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWthbmJhbi9kZWVzLWthbmJhbi1kaXNjdXNzaW9uL2RlZXMta2FuYmFuLWRpc2N1c3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXJHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRixPQUFPLEVBQUUsYUFBYSxFQUFpRCxNQUFNLG1EQUFtRCxDQUFDO0FBQ2pJLE9BQU8saURBQWlELENBQUM7SUFLNUMsb0JBQW9COzRCQURoQyxhQUFhLENBQUMsd0JBQXdCLENBQUM7Ozs7c0JBQ0UsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQ0FBbkIsU0FBUSxXQUFXOzs7O29DQUNsRCxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7b0NBQzFCLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztpQ0FDOUIsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO3lDQUM5QixRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7c0NBQzlCLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzttQ0FDOUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO29DQUMzQixRQUFRLENBQUMsRUFB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
@@ -25,6 +25,8 @@ export declare class DeesKanbanTicketDetail extends DeesElement {
25
25
  accessor error: string;
26
26
  accessor saving: boolean;
27
27
  accessor canGoBack: boolean;
28
+ /** Keep the identifier visible unless the containing surface already labels the ticket. */
29
+ accessor showTicketKey: boolean;
28
30
  private accessor editing;
29
31
  static styles: import("@design.estate/dees-element").CSSResult[];
30
32
  updated(changed: Map<string, unknown>): void;
@@ -34,7 +34,7 @@ var __runInitializers = (this && this.__runInitializers) || function (thisArg, i
34
34
  };
35
35
  import { DeesElement, customElement, property, state, html, css } from '@design.estate/dees-element';
36
36
  import { kanbanStyles } from '../kanban.styles.js';
37
- import { kanbanEvent, sortKanbanTickets, ticketDraft, ticketLabel } from '../kanban.helpers.js';
37
+ import { kanbanEvent, kanbanInitials, kanbanPriorityIcon, sortKanbanTickets, ticketDraft, ticketLabel } from '../kanban.helpers.js';
38
38
  import '../../00group-input/dees-input-text/dees-input-text.js';
39
39
  import '../../00group-input/dees-input-textarea/dees-input-textarea.js';
40
40
  import '../../00group-input/dees-input-dropdown/dees-input-dropdown.js';
@@ -87,6 +87,9 @@ let DeesKanbanTicketDetail = (() => {
87
87
  let _canGoBack_decorators;
88
88
  let _canGoBack_initializers = [];
89
89
  let _canGoBack_extraInitializers = [];
90
+ let _showTicketKey_decorators;
91
+ let _showTicketKey_initializers = [];
92
+ let _showTicketKey_extraInitializers = [];
90
93
  let _editing_decorators;
91
94
  let _editing_initializers = [];
92
95
  let _editing_extraInitializers = [];
@@ -108,6 +111,7 @@ let DeesKanbanTicketDetail = (() => {
108
111
  _error_decorators = [property({ type: String })];
109
112
  _saving_decorators = [property({ type: Boolean })];
110
113
  _canGoBack_decorators = [property({ type: Boolean })];
114
+ _showTicketKey_decorators = [property({ type: Boolean })];
111
115
  _editing_decorators = [state()];
112
116
  __esDecorate(this, null, _ticket_decorators, { kind: "accessor", name: "ticket", static: false, private: false, access: { has: obj => "ticket" in obj, get: obj => obj.ticket, set: (obj, value) => { obj.ticket = value; } }, metadata: _metadata }, _ticket_initializers, _ticket_extraInitializers);
113
117
  __esDecorate(this, null, _tickets_decorators, { kind: "accessor", name: "tickets", static: false, private: false, access: { has: obj => "tickets" in obj, get: obj => obj.tickets, set: (obj, value) => { obj.tickets = value; } }, metadata: _metadata }, _tickets_initializers, _tickets_extraInitializers);
@@ -123,6 +127,7 @@ let DeesKanbanTicketDetail = (() => {
123
127
  __esDecorate(this, null, _error_decorators, { kind: "accessor", name: "error", static: false, private: false, access: { has: obj => "error" in obj, get: obj => obj.error, set: (obj, value) => { obj.error = value; } }, metadata: _metadata }, _error_initializers, _error_extraInitializers);
124
128
  __esDecorate(this, null, _saving_decorators, { kind: "accessor", name: "saving", static: false, private: false, access: { has: obj => "saving" in obj, get: obj => obj.saving, set: (obj, value) => { obj.saving = value; } }, metadata: _metadata }, _saving_initializers, _saving_extraInitializers);
125
129
  __esDecorate(this, null, _canGoBack_decorators, { kind: "accessor", name: "canGoBack", static: false, private: false, access: { has: obj => "canGoBack" in obj, get: obj => obj.canGoBack, set: (obj, value) => { obj.canGoBack = value; } }, metadata: _metadata }, _canGoBack_initializers, _canGoBack_extraInitializers);
130
+ __esDecorate(this, null, _showTicketKey_decorators, { kind: "accessor", name: "showTicketKey", static: false, private: false, access: { has: obj => "showTicketKey" in obj, get: obj => obj.showTicketKey, set: (obj, value) => { obj.showTicketKey = value; } }, metadata: _metadata }, _showTicketKey_initializers, _showTicketKey_extraInitializers);
126
131
  __esDecorate(this, null, _editing_decorators, { kind: "accessor", name: "editing", static: false, private: false, access: { has: obj => "editing" in obj, get: obj => obj.editing, set: (obj, value) => { obj.editing = value; } }, metadata: _metadata }, _editing_initializers, _editing_extraInitializers);
127
132
  __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
128
133
  DeesKanbanTicketDetail = _classThis = _classDescriptor.value;
@@ -170,24 +175,48 @@ let DeesKanbanTicketDetail = (() => {
170
175
  #canGoBack_accessor_storage = (__runInitializers(this, _saving_extraInitializers), __runInitializers(this, _canGoBack_initializers, false));
171
176
  get canGoBack() { return this.#canGoBack_accessor_storage; }
172
177
  set canGoBack(value) { this.#canGoBack_accessor_storage = value; }
173
- #editing_accessor_storage = (__runInitializers(this, _canGoBack_extraInitializers), __runInitializers(this, _editing_initializers, false));
178
+ #showTicketKey_accessor_storage = (__runInitializers(this, _canGoBack_extraInitializers), __runInitializers(this, _showTicketKey_initializers, true));
179
+ /** Keep the identifier visible unless the containing surface already labels the ticket. */
180
+ get showTicketKey() { return this.#showTicketKey_accessor_storage; }
181
+ set showTicketKey(value) { this.#showTicketKey_accessor_storage = value; }
182
+ #editing_accessor_storage = (__runInitializers(this, _showTicketKey_extraInitializers), __runInitializers(this, _editing_initializers, false));
174
183
  get editing() { return this.#editing_accessor_storage; }
175
184
  set editing(value) { this.#editing_accessor_storage = value; }
176
185
  static styles = [...kanbanStyles, css `
177
- .layout { display: grid; grid-template-columns: minmax(0, 1fr) 230px; gap: 28px; }
178
- .main { min-width: 0; }
179
- .toolbar { margin-bottom: 16px; }
180
- h2 { font-size: var(--dees-font-title2-size); line-height: 1.3; font-weight: 600; margin-bottom: 18px; overflow-wrap: anywhere; }
181
- .description { white-space: pre-wrap; line-height: 1.65; overflow-wrap: anywhere; margin-bottom: 24px; }
182
- aside { border-left: 1px solid var(--dees-color-border-subtle); padding-left: 22px; }
183
- .fields { display: grid; gap: 16px; }
184
- .fields label { display: block; margin-bottom: 6px; }
185
- h3 { font-size: var(--dees-font-body-size); margin-bottom: 12px; }
186
+ :host { padding: 24px; }
187
+ .layout { display: grid; grid-template-columns: minmax(0, 1fr) 248px; grid-template-areas: 'lead props' 'body props'; gap: 24px; align-items: start; }
188
+ .lead { grid-area: lead; min-width: 0; }
189
+ .body { grid-area: body; min-width: 0; }
190
+ .toolbar { margin-bottom: 20px; flex-wrap: nowrap; min-width: 0; }
191
+ .toolbar .badge { text-transform: capitalize; flex-shrink: 0; }
192
+ .ticket-key { flex-shrink: 0; font-variant-numeric: tabular-nums; }
193
+ .link.parent { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--dees-font-footnote-size); }
194
+ .toolbar dees-button { flex-shrink: 0; }
195
+ h2 { font-size: var(--dees-font-title2-size); line-height: 1.3; font-weight: 600; margin-bottom: 12px; letter-spacing: -.015em; overflow-wrap: anywhere; }
196
+ .description { white-space: pre-wrap; font-size: var(--dees-font-subhead-size); line-height: 22px; overflow-wrap: anywhere; max-width: 64ch; }
197
+ aside { grid-area: props; min-width: 0; padding: 14px 16px; border-radius: var(--dees-radius-xl); corner-shape: var(--dees-corner-shape); background: var(--dees-color-settings-group); }
198
+ .fields { display: grid; gap: 14px; font-size: var(--dees-font-footnote-size); font-weight: 500; }
199
+ .fields label { display: block; margin-bottom: 5px; font-size: var(--dees-font-caption1-size); font-weight: 400; }
200
+ .value { min-height: var(--dees-control-height-lg); display: flex; align-items: center; }
201
+ .person { display: flex; align-items: center; gap: 7px; }
186
202
  .children { margin-bottom: 24px; }
187
- .child { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--dees-color-border-subtle); }
188
- .discussion { border-top: 1px solid var(--dees-color-border-subtle); padding-top: 22px; }
189
- .edit { display: grid; gap: 14px; margin-bottom: 22px; }
190
- @media (max-width: 700px) { .layout { grid-template-columns: minmax(0, 1fr); gap: 24px; } aside { grid-row: 1; border-left: 0; padding-left: 0; } .fields { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
203
+ .child-list { border-radius: var(--dees-radius-xl); corner-shape: var(--dees-corner-shape); background: var(--dees-color-settings-group); overflow: hidden; }
204
+ .child { display: flex; width: 100%; align-items: center; gap: 10px; min-height: 44px; padding: 10px 12px; border: 0; background: transparent; color: inherit; font: inherit; text-align: left; cursor: pointer; }
205
+ .child + .child { border-top: 1px solid var(--dees-color-border-subtle); }
206
+ .child:hover { background: var(--dees-color-row-hover); }
207
+ .child:focus-visible { outline-offset: -3px; }
208
+ .child-key { font-size: var(--dees-font-caption1-size); color: var(--dees-color-text-secondary); font-variant-numeric: tabular-nums; flex-shrink: 0; }
209
+ .child-title { flex: 1; min-width: 0; font-size: var(--dees-font-footnote-size); font-weight: 500; overflow-wrap: anywhere; }
210
+ .child .badge { flex-shrink: 0; }
211
+ .discussion { border-top: 1px solid var(--dees-color-border-subtle); padding-top: 20px; }
212
+ .edit { display: grid; gap: 14px; }
213
+ @media (max-width: 700px) {
214
+ :host { padding: 16px; }
215
+ .layout { grid-template-columns: minmax(0, 1fr); grid-template-areas: 'lead' 'props' 'body'; gap: 20px; }
216
+ .fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
217
+ .toolbar { gap: 6px; margin-bottom: 16px; }
218
+ .child { gap: 7px; }
219
+ }
191
220
  `];
192
221
  updated(changed) {
193
222
  const previous = changed.get('ticket');
@@ -211,12 +240,13 @@ let DeesKanbanTicketDetail = (() => {
211
240
  const parents = this.tickets.filter(item => item.kind === (ticket.kind === 'subtask' ? 'task' : 'epic'));
212
241
  return html `<div class="toolbar row">
213
242
  ${this.canGoBack ? html `<dees-button size="sm" type="ghost" icon="lucide:ArrowLeft" text="Back" @clicked=${() => kanbanEvent(this, 'kanban-detail-back', {})}></dees-button>` : ''}
214
- <span class="badge">${ticket.kind}</span><span class="caption">${ticket.key}</span>
215
- ${parent ? html `<span class="caption">/</span><button class="link caption" @click=${() => kanbanEvent(this, 'kanban-ticket-open', { ticketId: parent.id })}>${parent.title}</button>` : ''}
243
+ <span class="badge">${ticket.kind}</span>
244
+ ${this.showTicketKey ? html `<span class="caption ticket-key">${ticket.key}</span>` : ''}
245
+ ${parent ? html `<span class="caption" aria-hidden="true">/</span><button class="link parent" title=${parent.title} @click=${() => kanbanEvent(this, 'kanban-ticket-open', { ticketId: parent.id })}>${parent.title}</button>` : ''}
216
246
  <span class="spacer"></span>${editable && !this.editing ? html `<dees-button size="sm" type="ghost" text="Edit ticket" icon="lucide:Pencil" @clicked=${() => { this.editing = true; this.changeDraft({}); }}></dees-button>` : ''}
217
247
  </div>
218
248
  ${this.error ? html `<p class="error" role="alert">${this.error}</p>` : ''}
219
- <div class="layout"><div class="main">
249
+ <div class="layout"><section class="lead">
220
250
  ${this.editing && editable ? html `<div class="edit">
221
251
  <dees-input-text label="Title" .value=${draft.title} .disabled=${this.saving}
222
252
  @input=${(event) => this.changeDraft({ title: String(event.currentTarget.value ?? '') })}></dees-input-text>
@@ -230,33 +260,36 @@ let DeesKanbanTicketDetail = (() => {
230
260
  kanbanEvent(this, 'kanban-ticket-draft', { ticketId: ticket.id, draft: undefined });
231
261
  }}></dees-button></div>
232
262
  </div>` : html `<h2>${ticket.title}</h2><div class="description ${ticket.description ? '' : 'muted'}">${ticket.description || 'No description yet.'}</div>`}
233
- ${ticket.kind !== 'subtask' ? html `<section class="children"><div class="row"><h3>${ticket.kind === 'epic' ? 'Tasks' : 'Subtasks'}</h3><span class="spacer"></span>
234
- ${this.provider.createTicket && ticket.permissions?.createChild !== false ? html `<dees-button size="sm" type="ghost" icon="lucide:Plus" text=${ticket.kind === 'epic' ? 'Add task' : 'Add subtask'}
235
- @clicked=${() => kanbanEvent(this, 'kanban-ticket-create', { kind: ticket.kind === 'epic' ? 'task' : 'subtask', parentId: ticket.id, columnId: this.columns[0]?.id ?? ticket.columnId })}></dees-button>` : ''}</div>
236
- ${children.map(child => html `<div class="child"><button class="link" @click=${() => kanbanEvent(this, 'kanban-ticket-open', { ticketId: child.id })}>${ticketLabel(child)}</button>
237
- <span class="badge">${this.columns.find(column => column.id === child.columnId)?.title ?? child.columnId}</span></div>`)}
238
- ${!children.length ? html `<p class="caption">No ${ticket.kind === 'epic' ? 'tasks' : 'subtasks'} yet.</p>` : ''}</section>` : ''}
239
- <dees-kanban-discussion class="discussion" .ticketId=${ticket.id} .comments=${this.comments} .draft=${this.commentDraft}
240
- .loading=${this.loadingComments} .error=${this.commentsError} .readOnly=${ticket.permissions?.comment === false}
241
- .searchTickets=${this.searchTickets} .addComment=${this.provider.addComment ? this.addComment : undefined}></dees-kanban-discussion>
242
- </div><aside><div class="fields">
243
- <dees-input-dropdown label="Status" .options=${this.columns.map(column => ({ key: column.id, option: column.title }))}
263
+ </section><aside><div class="fields">
264
+ <div><label class="caption">Status</label><dees-input-dropdown label="Status" .labelPosition=${'none'} .options=${this.columns.map(column => ({ key: column.id, option: column.title }))}
244
265
  .value=${{ key: ticket.columnId, option: this.columns.find(column => column.id === ticket.columnId)?.title ?? ticket.columnId }}
245
- .disabled=${!movable || this.saving} @selectedOption=${(event) => kanbanEvent(this, 'kanban-ticket-move', { ticketId: ticket.id, columnId: event.detail.key })}></dees-input-dropdown>
266
+ .disabled=${!movable || this.saving} @selectedOption=${(event) => kanbanEvent(this, 'kanban-ticket-move', { ticketId: ticket.id, columnId: event.detail.key })}></dees-input-dropdown></div>
246
267
  ${this.editing && editable ? html `
247
- <dees-input-dropdown label="Priority" .disabled=${this.saving} .value=${{ key: draft.priority, option: draft.priority }}
268
+ <div><label class="caption">Priority</label><dees-input-dropdown label="Priority" .labelPosition=${'none'} .disabled=${this.saving} .value=${{ key: draft.priority, option: draft.priority }}
248
269
  .options=${['none', 'low', 'normal', 'high', 'urgent'].map(key => ({ key, option: key }))}
249
- @selectedOption=${(event) => this.changeDraft({ priority: event.detail.key })}></dees-input-dropdown>
250
- <dees-input-dropdown label="Assignee" .disabled=${this.saving} .value=${{ key: draft.assigneeId, option: this.people.find(person => person.id === draft.assigneeId)?.name ?? ticket.assignee?.name ?? 'Unassigned' }}
270
+ @selectedOption=${(event) => this.changeDraft({ priority: event.detail.key })}></dees-input-dropdown></div>
271
+ <div><label class="caption">Assignee</label><dees-input-dropdown label="Assignee" .labelPosition=${'none'} .disabled=${this.saving} .value=${{ key: draft.assigneeId, option: this.people.find(person => person.id === draft.assigneeId)?.name ?? ticket.assignee?.name ?? 'Unassigned' }}
251
272
  .options=${[{ key: '', option: 'Unassigned' }, ...this.people.map(person => ({ key: person.id, option: person.name }))]}
252
- @selectedOption=${(event) => this.changeDraft({ assigneeId: event.detail.key })}></dees-input-dropdown>
253
- ${ticket.kind !== 'epic' ? html `<dees-input-dropdown label=${ticket.kind === 'task' ? 'Epic' : 'Parent task'} .disabled=${this.saving}
273
+ @selectedOption=${(event) => this.changeDraft({ assigneeId: event.detail.key })}></dees-input-dropdown></div>
274
+ ${ticket.kind !== 'epic' ? html `<div><label class="caption">${ticket.kind === 'task' ? 'Epic' : 'Parent task'}</label><dees-input-dropdown label=${ticket.kind === 'task' ? 'Epic' : 'Parent task'} .labelPosition=${'none'} .disabled=${this.saving}
254
275
  .value=${{ key: draft.parentId, option: parents.find(item => item.id === draft.parentId)?.title ?? 'None' }}
255
276
  .options=${[...(ticket.kind === 'task' ? [{ key: '', option: 'None' }] : []), ...parents.map(item => ({ key: item.id, option: ticketLabel(item) }))]}
256
- @selectedOption=${(event) => this.changeDraft({ parentId: event.detail.key })}></dees-input-dropdown>` : ''}
257
- ` : html `<div><label class="caption">Priority</label>${ticket.priority ?? 'none'}</div><div><label class="caption">Assignee</label>${ticket.assignee?.name ?? 'Unassigned'}</div>`}
258
- ${ticket.labels?.length ? html `<div><label class="caption">Labels</label><div class="row">${ticket.labels.map(label => html `<span class="badge">${label}</span>`)}</div></div>` : ''}
259
- </div></aside></div>`;
277
+ @selectedOption=${(event) => this.changeDraft({ parentId: event.detail.key })}></dees-input-dropdown></div>` : ''}
278
+ ` : html `<div><label class="caption">Priority</label><span class="priority value" data-priority=${ticket.priority ?? 'none'}><dees-icon .icon=${kanbanPriorityIcon(ticket.priority)} iconSize="13" aria-hidden="true"></dees-icon>${ticket.priority ?? 'none'}</span></div>
279
+ <div><label class="caption">Assignee</label><span class="person value"><span class="avatar" aria-hidden="true">${ticket.assignee ? kanbanInitials(ticket.assignee.name) : '–'}</span>${ticket.assignee?.name ?? 'Unassigned'}</span></div>`}
280
+ ${ticket.labels?.length ? html `<div><label class="caption">Labels</label><div class="row value">${ticket.labels.map(label => html `<span class="badge">${label}</span>`)}</div></div>` : ''}
281
+ </div></aside><div class="body">
282
+ ${ticket.kind !== 'subtask' ? html `<section class="children"><div class="section-title"><h3>${ticket.kind === 'epic' ? 'Tasks' : 'Subtasks'}</h3><span class="count">${children.length}</span><span class="spacer"></span>
283
+ ${this.provider.createTicket && ticket.permissions?.createChild !== false ? html `<dees-button size="sm" type="ghost" icon="lucide:Plus" text=${ticket.kind === 'epic' ? 'Add task' : 'Add subtask'}
284
+ @clicked=${() => kanbanEvent(this, 'kanban-ticket-create', { kind: ticket.kind === 'epic' ? 'task' : 'subtask', parentId: ticket.id, columnId: this.columns[0]?.id ?? ticket.columnId })}></dees-button>` : ''}</div>
285
+ <div class="child-list">${children.map(child => html `<button class="child" @click=${() => kanbanEvent(this, 'kanban-ticket-open', { ticketId: child.id })}>
286
+ <span class="child-key">${child.key}</span><span class="child-title">${child.title}</span>
287
+ <span class="badge">${this.columns.find(column => column.id === child.columnId)?.title ?? child.columnId}</span></button>`)}</div>
288
+ ${!children.length ? html `<p class="caption">No ${ticket.kind === 'epic' ? 'tasks' : 'subtasks'} yet.</p>` : ''}</section>` : ''}
289
+ <dees-kanban-discussion class="discussion" .ticketId=${ticket.id} .comments=${this.comments} .draft=${this.commentDraft}
290
+ .loading=${this.loadingComments} .error=${this.commentsError} .readOnly=${ticket.permissions?.comment === false}
291
+ .searchTickets=${this.searchTickets} .addComment=${this.provider.addComment ? this.addComment : undefined}></dees-kanban-discussion>
292
+ </div></div>`;
260
293
  }
261
294
  finishEditing() { this.editing = false; }
262
295
  static {
@@ -266,4 +299,4 @@ let DeesKanbanTicketDetail = (() => {
266
299
  return DeesKanbanTicketDetail = _classThis;
267
300
  })();
268
301
  export { DeesKanbanTicketDetail };
269
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1rYW5iYW4tdGlja2V0LWRldGFpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWthbmJhbi9kZWVzLWthbmJhbi10aWNrZXQtZGV0YWlsL2RlZXMta2FuYmFuLXRpY2tldC1kZXRhaWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBR3JHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUdoRyxPQUFPLHdEQUF3RCxDQUFDO0FBQ2hFLE9BQU8sZ0VBQWdFLENBQUM7QUFDeEUsT0FBTyxnRUFBZ0UsQ0FBQztBQUN4RSxPQUFPLHFEQUFxRCxDQUFDO0lBS2hELHNCQUFzQjs0QkFEbEMsYUFBYSxDQUFDLDJCQUEyQixDQUFDOzs7O3NCQUNDLFdBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0NBQW5CLFNBQVEsV0FBVzs7OztrQ0FDcEQsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO21DQUM5QixRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7bUNBQzlCLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztrQ0FDOUIsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO29DQUM5QixRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7aUNBQzlC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NEJBQ3ZFLENBQUMsS0FBNEMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDOzBEQUNwRSxJQUFJLENBQUMsTUFBTSxXQUFXLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLFlBQVksRUFBRTtxQkFDdk0sQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7NEJBQ3JHLENBQUMsS0FBbUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1VBQzdHLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUEsOEJBQThCLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGFBQWEsY0FBYyxJQUFJLENBQUMsTUFBTTttQkFDMUgsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssSUFBSSxNQUFNLEVBQUU7cUJBQ2hHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7NEJBQ2xJLENBQUMsS0FBbUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxFQUFFO09BQzVJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQSwrQ0FBK0MsTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLHFEQUFxRCxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxZQUFZLFFBQVE7UUFDaEwsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQSw4REFBOEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUEsdUJBQXVCLEtBQUssU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRTt5QkFDakssQ0FBQztRQUN4QixDQUFDO1FBQ00sYUFBYSxLQUFXLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQzs7WUFqRzNDLHVEQUFzQjs7Ozs7U0FBdEIsc0JBQXNCIn0=
302
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcy1rYW5iYW4tdGlja2V0LWRldGFpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWthbmJhbi9kZWVzLWthbmJhbi10aWNrZXQtZGV0YWlsL2RlZXMta2FuYmFuLXRpY2tldC1kZXRhaWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBR3JHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHcEksT0FBTyx3REFBd0QsQ0FBQztBQUNoRSxPQUFPLGdFQUFnRSxDQUFDO0FBQ3hFLE9BQU8sZ0VBQWdFLENBQUM7QUFDeEUsT0FBTyxxREFBcUQsQ0FBQztJQUtoRCxzQkFBc0I7NEJBRGxDLGFBQWEsQ0FBQywyQkFBMkIsQ0FBQzs7OztzQkFDQyxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NDQUFuQixTQUFRLFdBQVc7Ozs7a0NBQ3BELFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzttQ0FDOUIsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO21DQUM5QixRQUFRLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7a0NBQzlCLFFBQVEsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztvQ0FDOUIsUUFBUSxDQUFDLEVBQUUsU0FBUyxF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
@@ -1,4 +1,6 @@
1
- import type { IKanbanTicket, IKanbanTicketDraft } from './interfaces.js';
1
+ import type { IKanbanTicket, IKanbanTicketDraft, TKanbanPriority } from './interfaces.js';
2
+ export declare const kanbanInitials: (name: string) => string;
3
+ export declare const kanbanPriorityIcon: (priority?: TKanbanPriority) => string;
2
4
  export declare const sortKanbanTickets: (tickets: readonly IKanbanTicket[]) => IKanbanTicket[];
3
5
  export declare const ticketLabel: (ticket: IKanbanTicket) => string;
4
6
  export declare const ticketDraft: (ticket: IKanbanTicket) => IKanbanTicketDraft;
@@ -1,3 +1,5 @@
1
+ export const kanbanInitials = (name) => name.trim().split(/\s+/).map(part => part[0]).join('').slice(0, 2);
2
+ export const kanbanPriorityIcon = (priority) => priority === 'urgent' ? 'lucide:ChevronsUp' : priority === 'high' ? 'lucide:ChevronUp' : priority === 'low' ? 'lucide:ChevronDown' : 'lucide:Minus';
1
3
  export const sortKanbanTickets = (tickets) => [...tickets].sort((a, b) => a.order - b.order || a.id.localeCompare(b.id));
2
4
  export const ticketLabel = (ticket) => `#${ticket.key} ${ticket.title}`;
3
5
  export const ticketDraft = (ticket) => ({
@@ -8,4 +10,4 @@ export const kanbanEvent = (owner, name, detail) => {
8
10
  owner.dispatchEvent(new CustomEvent(name, { detail, bubbles: true, composed: true }));
9
11
  };
10
12
  export const kanbanError = (error) => error instanceof Error ? error.message : String(error);
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1rYW5iYW4va2FuYmFuLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxPQUFpQyxFQUFtQixFQUFFLENBQ3RGLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDN0UsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBcUIsRUFBVSxFQUFFLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMvRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxNQUFxQixFQUFzQixFQUFFLENBQUMsQ0FBQztJQUN6RSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLElBQUksTUFBTTtJQUMvRixVQUFVLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxJQUFJLEVBQUU7Q0FDdkUsQ0FBQyxDQUFDO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUksS0FBa0IsRUFBRSxJQUFZLEVBQUUsTUFBUyxFQUFRLEVBQUU7SUFDbEYsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3hGLENBQUMsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQWMsRUFBVSxFQUFFLENBQUMsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDIn0=
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90c193ZWIvZWxlbWVudHMvMDBncm91cC1rYW5iYW4va2FuYmFuLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsSUFBWSxFQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsUUFBMEIsRUFBVSxFQUFFLENBQ3ZFLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztBQUV0SixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLE9BQWlDLEVBQW1CLEVBQUUsQ0FDdEYsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3RSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxNQUFxQixFQUFVLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQy9GLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLE1BQXFCLEVBQXNCLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNO0lBQy9GLFVBQVUsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLElBQUksRUFBRTtDQUN2RSxDQUFDLENBQUM7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBSSxLQUFrQixFQUFFLElBQVksRUFBRSxNQUFTLEVBQVEsRUFBRTtJQUNsRixLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDeEYsQ0FBQyxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBYyxFQUFVLEVBQUUsQ0FBQyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMifQ==
@@ -1,7 +1,7 @@
1
1
  import { css, cssManager } from '@design.estate/dees-element';
2
2
  import { themeDefaultStyles } from '../00theme.js';
3
3
  export const kanbanStyles = [themeDefaultStyles, cssManager.defaultStyles, css `
4
- :host { display: block; min-width: 0; font-family: var(--dees-font-family); color: var(--dees-color-text-primary); font-size: var(--dees-font-body-size); }
4
+ :host { display: block; min-width: 0; font-family: var(--dees-font-family); color: var(--dees-color-text-primary); font-size: var(--dees-font-subhead-size); line-height: 1.5; }
5
5
  * { box-sizing: border-box; }
6
6
  h2, h3, p { margin: 0; }
7
7
  .muted { color: var(--dees-color-text-secondary); }
@@ -13,6 +13,14 @@ export const kanbanStyles = [themeDefaultStyles, cssManager.defaultStyles, css `
13
13
  button.link { border: 0; background: transparent; font: inherit; color: var(--dees-color-link); padding: 2px 0; text-align: left; cursor: pointer; overflow-wrap: anywhere; }
14
14
  button:focus-visible, summary:focus-visible { outline: 2px solid var(--dees-color-focus-ring); outline-offset: 3px; border-radius: var(--dees-radius-sm); }
15
15
  dees-icon { font-size: 16px; }
16
- .badge { display: inline-flex; align-items: center; gap: 4px; background: var(--dees-color-badge-default-bg); padding: 3px 7px; border-radius: var(--dees-radius-sm); font-size: var(--dees-font-caption1-size); color: var(--dees-color-text-secondary); }
16
+ .badge { display: inline-flex; align-items: center; gap: 4px; background: var(--dees-color-fill-tertiary); padding: 3px 7px; border-radius: var(--dees-radius-sm); font-size: var(--dees-font-caption1-size); color: var(--dees-color-text-secondary); }
17
+ .avatar { flex: 0 0 auto; width: 24px; height: 24px; border-radius: 50%; background: var(--dees-color-fill-secondary); color: var(--dees-color-text-secondary); display: inline-grid; place-items: center; font-size: 10px; font-weight: 600; line-height: 1; }
18
+ .priority { display: inline-flex; align-items: center; gap: 3px; font-size: var(--dees-font-caption1-size); color: var(--dees-color-text-secondary); text-transform: capitalize; }
19
+ .priority[data-priority=urgent] { color: var(--dees-color-text-error); }
20
+ .priority[data-priority=high] { color: var(--dees-color-text-warning); }
21
+ .priority dees-icon { font-size: 13px; }
22
+ .section-title { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
23
+ .section-title h3 { font-size: var(--dees-font-footnote-size); font-weight: 600; }
24
+ .count { display: inline-grid; place-items: center; min-width: 20px; height: 20px; padding: 0 5px; border-radius: var(--dees-radius-sm); background: var(--dees-color-fill-tertiary); color: var(--dees-color-text-secondary); font-size: var(--dees-font-caption1-size); font-weight: 500; font-variant-numeric: tabular-nums; }
17
25
  `];
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLnN0eWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWthbmJhbi9rYW5iYW4uc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLGtCQUFrQixFQUFFLFVBQVUsQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7OztDQWM3RSxDQUFDLENBQUMifQ==
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLnN0eWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy8wMGdyb3VwLWthbmJhbi9rYW5iYW4uc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLGtCQUFrQixFQUFFLFVBQVUsQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBc0I3RSxDQUFDLENBQUMifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@design.estate/dees-catalog",
3
- "version": "12.5.0",
3
+ "version": "13.0.1",
4
4
  "private": false,
5
5
  "description": "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.",
6
6
  "main": "dist_ts_web/index.js",
package/readme.md CHANGED
@@ -2152,6 +2152,16 @@ bubbling `range-change` event carries `{ from, to }` as Unix epoch
2152
2152
  milliseconds. Apply that range back through `selectedRange` to keep the
2153
2153
  selection visible; set it to `null` to clear the overlay.
2154
2154
 
2155
+ Use `y: null` for an unavailable reading. Its timestamp remains on the time
2156
+ axis, and the area line visibly stops until the next numeric reading. Supply
2157
+ one null point for each missing sampling interval when the width of an outage
2158
+ should reflect its duration. The chart keeps one legend entry per named input
2159
+ series. Legend statistics omit null readings; `latest` is unavailable when the
2160
+ newest reading is null, while `min`, `max`, and `avg` describe available
2161
+ readings in the selected window. An unavailable statistic is displayed as `—`.
2162
+ With `realtimeMode=true` and `rollingWindow=3_600_000`, the time axis follows
2163
+ the last hour even while the latest reading is unavailable.
2164
+
2155
2165
  ```typescript
2156
2166
  <dees-chart-area
2157
2167
  label="System Usage"
@@ -2162,7 +2172,7 @@ selection visible; set it to `null` to clear the overlay.
2162
2172
  name: 'CPU',
2163
2173
  data: [
2164
2174
  { x: '2025-01-15T03:00:00', y: 25 },
2165
- { x: '2025-01-15T07:00:00', y: 30 },
2175
+ { x: '2025-01-15T07:00:00', y: null }, // unavailable
2166
2176
  { x: '2025-01-15T11:00:00', y: 20 }
2167
2177
  ]
2168
2178
  }
@@ -2679,6 +2689,8 @@ discussion. It accepts `.ticket`, `.tickets`, `.columns`, `.people`, `.provider`
2679
2689
  `.draft`, `.comments` and `.commentDraft`. It emits `kanban-ticket-save` and
2680
2690
  `kanban-ticket-draft` intents; `dees-kanban` owns persistence, navigation and draft
2681
2691
  caching. `finishEditing()` returns to the saved view after a successful update.
2692
+ The ticket key is visible by default. Set `.showTicketKey = false` only when the
2693
+ containing surface already displays it, as the board's modal heading does.
2682
2694
 
2683
2695
  #### DeesKanbanDiscussion
2684
2696
 
@@ -2723,6 +2735,12 @@ and cancels obsolete searches. References participate in editor undo and clipboa
2723
2735
  operations. Changing `.documentKey` resets history so undo cannot cross tickets.
2724
2736
 
2725
2737
  Set `.trigger`, `.label`, `.placeholder`, `.searchLabel` and `.disabled` as needed.
2738
+ For an integrated composer, style `::part(editor)` and set
2739
+ `--dees-reference-min-height` (default `84px`) or `--dees-reference-font-size`
2740
+ (default `var(--dees-font-body-size)`). Keep a visible focus indicator when
2741
+ overriding the editor's border or outline; the Kanban discussion applies it to
2742
+ the surrounding composer.
2743
+
2726
2744
  `reference-input` emits `{ value }`, `reference-open` emits `{ id, label }`, and
2727
2745
  `reference-submit` requests submission on Ctrl/⌘ Enter. `referenceText(value)`
2728
2746
  returns a plain-text representation. No callback means no reference picker.
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@design.estate/dees-catalog',
6
- version: '12.5.0',
6
+ version: '13.0.1',
7
7
  description: 'A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript.'
8
8
  }