@heyramzi/ui 2.20.0 → 2.21.0
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 +2 -0
- package/dist/charts/dashboard/data-table.js +1 -2
- package/dist/components/list-page/filter-section.js +1 -1
- package/dist/components/list-page/list-table.js +5 -6
- package/dist/components/list-page/queue-rail.js +2 -1
- package/dist/components/picker/trigger.js +3 -3
- package/dist/components/segmented/segmented.js +5 -5
- package/dist/components/work-parts/looks.js +1 -1
- package/dist/shadcn/dialog/index.js +3 -2
- package/dist/shadcn/dropdown-menu/menu-item.js +1 -1
- package/dist/shadcn/sheet/index.js +3 -2
- package/dist/shadcn/skeleton/index.js +3 -2
- package/dist/status/index.js +1 -0
- package/dist/work/kanban-drag.js +13 -7
- package/package.json +1 -1
- package/src/ai/confirmation/ConfirmationTitle.svelte +1 -4
- package/src/ai/loading-state/PixelLoader.svelte +1 -1
- package/src/animations/dropdown.css +19 -10
- package/src/animations/modal.css +7 -2
- package/src/charts/charts.css +3 -5
- package/src/charts/dashboard/dashboard-section.svelte +1 -1
- package/src/charts/dashboard/data-table.ts +1 -2
- package/src/charts/dashboard/stat-tile.svelte +1 -1
- package/src/charts/number-chart.css +8 -7
- package/src/charts/pop-value.svelte +68 -0
- package/src/charts/primitives/chart-tooltip.svelte +1 -1
- package/src/charts/reference-line.css +1 -1
- package/src/charts/stat-card.css +4 -4
- package/src/components/copy/copy-button.svelte +11 -10
- package/src/components/data-table/row-arrow.svelte +1 -1
- package/src/components/data-table/row-context-menu.svelte +1 -1
- package/src/components/data-table/sortable-head.svelte +2 -2
- package/src/components/data-table/table-skeleton.svelte +5 -5
- package/src/components/docs/doc-page.svelte +1 -3
- package/src/components/docs/on-this-page.svelte +4 -4
- package/src/components/field-row/field-row.svelte +1 -1
- package/src/components/list-page/detail-empty.svelte +3 -8
- package/src/components/list-page/detail-header.svelte +1 -1
- package/src/components/list-page/detail-row.svelte +2 -1
- package/src/components/list-page/empty-state.svelte +15 -7
- package/src/components/list-page/filter-item.svelte +2 -2
- package/src/components/list-page/filter-popover.svelte +1 -1
- package/src/components/list-page/filter-section.ts +1 -4
- package/src/components/list-page/grouped-list.svelte +37 -8
- package/src/components/list-page/list-page-shell.svelte +1 -1
- package/src/components/list-page/list-table.ts +6 -6
- package/src/components/list-page/master-detail.svelte +1 -1
- package/src/components/list-page/queue-rail.ts +2 -2
- package/src/components/list-page/rail-empty.svelte +1 -1
- package/src/components/list-page/rail-row.svelte +5 -5
- package/src/components/open-in/open-in.svelte +2 -1
- package/src/components/picker/trigger.ts +6 -5
- package/src/components/section-card/section-card.svelte +1 -1
- package/src/components/section-header/section-header.svelte +4 -2
- package/src/components/section-header/section-label.svelte +2 -2
- package/src/components/segmented/animated-tabs.svelte +1 -1
- package/src/components/segmented/section-runs.svelte +1 -1
- package/src/components/segmented/segment.svelte +4 -6
- package/src/components/segmented/segmented-track.svelte +18 -52
- package/src/components/segmented/segmented.ts +5 -5
- package/src/components/table-view/table-view.svelte +43 -24
- package/src/components/tags-input/tags-input.svelte +17 -31
- package/src/components/work-parts/looks.ts +1 -1
- package/src/editor/content.css +3 -3
- package/src/editor/editor.svelte +1 -1
- package/src/inbox/thread-inbox.svelte +2 -9
- package/src/panel/side-panel.svelte +9 -4
- package/src/record/info-list.svelte +7 -8
- package/src/record/project-list.svelte +1 -1
- package/src/record/record-demo.svelte +2 -4
- package/src/record/record-shell.svelte +1 -1
- package/src/record/record-stats.svelte +9 -3
- package/src/record/steps-rail.svelte +7 -11
- package/src/shadcn/accordion/accordion-trigger.svelte +1 -1
- package/src/shadcn/alert-dialog/alert-dialog-content.svelte +5 -1
- package/src/shadcn/alert-dialog/alert-dialog-footer.svelte +12 -2
- package/src/shadcn/alert-dialog/alert-dialog-header.svelte +1 -1
- package/src/shadcn/alert-dialog/alert-dialog-title.svelte +1 -1
- package/src/shadcn/badge/badge.svelte +3 -1
- package/src/shadcn/bubble/bubble-content.svelte +1 -1
- package/src/shadcn/bubble/bubble.svelte +1 -1
- package/src/shadcn/button/button.svelte +11 -5
- package/src/shadcn/calendar/calendar-month-select.svelte +1 -1
- package/src/shadcn/calendar/calendar-year-select.svelte +1 -1
- package/src/shadcn/calendar/calendar.svelte +1 -1
- package/src/shadcn/card/card.svelte +2 -1
- package/src/shadcn/checkbox/checkbox.svelte +1 -1
- package/src/shadcn/code-block/code-block-actions.svelte +1 -1
- package/src/shadcn/command/command-dialog.svelte +2 -2
- package/src/shadcn/command/command-group.svelte +1 -1
- package/src/shadcn/command/command-input.svelte +1 -1
- package/src/shadcn/command/command-item.svelte +1 -1
- package/src/shadcn/dialog/dialog-body.svelte +22 -0
- package/src/shadcn/dialog/dialog-content.svelte +19 -4
- package/src/shadcn/dialog/dialog-footer.svelte +19 -1
- package/src/shadcn/dialog/dialog-header.svelte +6 -1
- package/src/shadcn/dialog/dialog-title.svelte +2 -1
- package/src/shadcn/dialog/index.ts +3 -0
- package/src/shadcn/dropdown-menu/dropdown-menu-content.svelte +5 -1
- package/src/shadcn/dropdown-menu/dropdown-menu-sub-content.svelte +1 -1
- package/src/shadcn/dropdown-menu/menu-item.ts +1 -1
- package/src/shadcn/field/field-separator.svelte +1 -1
- package/src/shadcn/hover-card/hover-card-content.svelte +1 -1
- package/src/shadcn/input/input.svelte +2 -2
- package/src/shadcn/input-otp/input-otp-slot.svelte +1 -1
- package/src/shadcn/message-scroller/message-scroller-button.svelte +1 -1
- package/src/shadcn/popover/popover-content.svelte +1 -1
- package/src/shadcn/radio-group/radio-group-item.svelte +1 -1
- package/src/shadcn/scroll-area/scroll-area.svelte +1 -1
- package/src/shadcn/select/select-content.svelte +6 -2
- package/src/shadcn/select/select-item.svelte +1 -1
- package/src/shadcn/select/select-trigger.svelte +1 -1
- package/src/shadcn/sheet/index.ts +3 -0
- package/src/shadcn/sheet/sheet-body.svelte +22 -0
- package/src/shadcn/sheet/sheet-content.svelte +27 -5
- package/src/shadcn/sheet/sheet-footer.svelte +14 -2
- package/src/shadcn/sheet/sheet-header.svelte +1 -1
- package/src/shadcn/sheet/sheet-title.svelte +1 -1
- package/src/shadcn/sheet/sheet.css +11 -5
- package/src/shadcn/sidebar/sidebar-group-action.svelte +1 -1
- package/src/shadcn/sidebar/sidebar-group-label.svelte +1 -1
- package/src/shadcn/sidebar/sidebar-inset.svelte +1 -1
- package/src/shadcn/sidebar/sidebar-menu-action.svelte +1 -1
- package/src/shadcn/sidebar/sidebar-menu-button.svelte +2 -2
- package/src/shadcn/sidebar/sidebar-menu-sub-button.svelte +1 -1
- package/src/shadcn/sidebar/sidebar-menu.svelte +1 -1
- package/src/shadcn/sidebar/sidebar.svelte +1 -1
- package/src/shadcn/skeleton/index.ts +3 -0
- package/src/shadcn/skeleton/skeleton-delay.svelte +63 -0
- package/src/shadcn/skeleton/skeleton-delay.svelte.test.ts +57 -0
- package/src/shadcn/skeleton/skeleton.svelte +5 -1
- package/src/shadcn/slider/slider.svelte +1 -1
- package/src/shadcn/switch/switch.svelte +2 -2
- package/src/shadcn/table/table-row.svelte +1 -1
- package/src/shadcn/tabs/tabs-list.svelte +1 -1
- package/src/shadcn/tabs/tabs-trigger.svelte +2 -1
- package/src/shadcn/textarea/textarea.svelte +1 -1
- package/src/shadcn/toggle/toggle.svelte +2 -2
- package/src/shadcn/toggle-group/toggle-group.svelte +1 -1
- package/src/shadcn/tooltip/tooltip-content.svelte +1 -1
- package/src/shadcn/trace/trace-collapsible-trigger.svelte +1 -1
- package/src/shadcn/trace/trace.svelte +1 -1
- package/src/status/README.md +1 -1
- package/src/status/index.ts +1 -0
- package/src/status/status-badge.svelte +21 -7
- package/src/status/status-dot.svelte +6 -11
- package/src/status/status-pill.svelte +50 -0
- package/src/thread/thread.svelte +54 -136
- package/src/tokens/craft.css +55 -36
- package/src/tokens/palette.css +16 -9
- package/src/work/demo.svelte +48 -42
- package/src/work/detail/detail-demo.svelte +33 -24
- package/src/work/detail/task-chip.svelte +4 -4
- package/src/work/detail/task-detail.svelte +41 -108
- package/src/work/detail/task-property.svelte +7 -13
- package/src/work/detail/task-thread.svelte +48 -119
- package/src/work/docs/doc-editor-page.svelte +5 -4
- package/src/work/docs/doc-menu.svelte +9 -4
- package/src/work/docs/docs-demo.svelte +4 -4
- package/src/work/docs/edited-chip.svelte +11 -4
- package/src/work/gantt/gantt-bar.svelte +18 -14
- package/src/work/gantt/gantt-grid.svelte +7 -7
- package/src/work/gantt/gantt-group-row.svelte +7 -10
- package/src/work/gantt/gantt-header.svelte +3 -1
- package/src/work/gantt/gantt-task-row.svelte +19 -9
- package/src/work/gantt/gantt.css +4 -5
- package/src/work/inbox/inbox-card.svelte +32 -10
- package/src/work/inbox/inbox-draft.svelte +2 -2
- package/src/work/kanban-column.svelte +7 -15
- package/src/work/kanban-drag.ts +13 -8
- package/src/work/task-gantt.svelte +2 -1
- package/src/work/task-list.svelte +54 -53
- package/src/work/time/time-chip.svelte +16 -19
- package/src/work/time/time-dot.svelte +2 -1
- package/src/work/time/time-ring.svelte +2 -3
- package/src/work/time/time-tracker.svelte +72 -166
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
import { initial } from "../../lib/initials.js";
|
|
5
5
|
import { TONE_COLOR, TONE_TEXT } from "../../lib/tone.js";
|
|
6
6
|
import * as Popover from "../../shadcn/popover/index.js";
|
|
7
|
+
import { Button, buttonVariants } from "../../shadcn/button/index.js";
|
|
8
|
+
import { Input } from "../../shadcn/input/index.js";
|
|
9
|
+
import * as Avatar from "../../shadcn/avatar/index.js";
|
|
10
|
+
import { ganttLooks, workLooks } from "../../components/work-parts/looks.js";
|
|
7
11
|
import {
|
|
8
12
|
budgetTone,
|
|
9
13
|
dayLabel,
|
|
@@ -214,22 +218,35 @@
|
|
|
214
218
|
<div class="sr-only" role="status" aria-live="polite">{status}</div>
|
|
215
219
|
|
|
216
220
|
<Popover.Root bind:open>
|
|
217
|
-
<div
|
|
218
|
-
|
|
219
|
-
|
|
221
|
+
<div
|
|
222
|
+
class={cn(
|
|
223
|
+
"time-chip inline-flex items-stretch text-(length:--text-control) text-foreground",
|
|
224
|
+
workLooks.row,
|
|
225
|
+
)}
|
|
226
|
+
class:is-running={!!running}
|
|
227
|
+
>
|
|
228
|
+
<Button
|
|
229
|
+
variant="ghost"
|
|
230
|
+
size="sm"
|
|
231
|
+
icon
|
|
220
232
|
onclick={toggle}
|
|
221
233
|
aria-label={running ? labels.stop : labels.start}
|
|
222
234
|
aria-keyshortcuts="Alt+S"
|
|
223
235
|
title="{running ? labels.stop : labels.start} (Alt+S)"
|
|
224
|
-
class="time-toggle"
|
|
225
236
|
>
|
|
226
237
|
{#if running}
|
|
227
238
|
<Stop weight="fill" class="size-3.5" aria-hidden="true" />
|
|
228
239
|
{:else}
|
|
229
240
|
<Play weight="fill" class="size-3.5" aria-hidden="true" />
|
|
230
241
|
{/if}
|
|
231
|
-
</
|
|
232
|
-
<Popover.Trigger
|
|
242
|
+
</Button>
|
|
243
|
+
<Popover.Trigger
|
|
244
|
+
class={cn(
|
|
245
|
+
buttonVariants({ variant: "ghost", size: "sm" }),
|
|
246
|
+
"time-open gap-1.5 ps-1 pe-2 text-(length:--text-control) tabular-nums data-[state=open]:bg-muted",
|
|
247
|
+
)}
|
|
248
|
+
aria-label={labels.title}
|
|
249
|
+
>
|
|
233
250
|
{#if running}
|
|
234
251
|
<TimeDot running size={6} />
|
|
235
252
|
<span role="timer" aria-label={labels.elapsed}
|
|
@@ -248,11 +265,14 @@
|
|
|
248
265
|
</Popover.Trigger>
|
|
249
266
|
</div>
|
|
250
267
|
|
|
251
|
-
<Popover.Content
|
|
268
|
+
<Popover.Content
|
|
269
|
+
align="start"
|
|
270
|
+
class="flex w-80 flex-col gap-3 p-3 text-(length:--text-control)"
|
|
271
|
+
>
|
|
252
272
|
<form onsubmit={submit} class="grid grid-cols-[minmax(0,1fr)_minmax(0,1.4fr)] gap-2">
|
|
253
273
|
<div class="relative">
|
|
254
|
-
<
|
|
255
|
-
bind:
|
|
274
|
+
<Input
|
|
275
|
+
bind:ref={durationInput}
|
|
256
276
|
bind:value={duration}
|
|
257
277
|
oninput={() => (invalid = false)}
|
|
258
278
|
placeholder={labels.durationPlaceholder}
|
|
@@ -261,7 +281,10 @@
|
|
|
261
281
|
aria-describedby={invalid ? "time-invalid" : undefined}
|
|
262
282
|
autocomplete="off"
|
|
263
283
|
inputmode="text"
|
|
264
|
-
class={cn(
|
|
284
|
+
class={cn(
|
|
285
|
+
"h-7 text-(length:--text-control) tabular-nums md:text-(length:--text-control)",
|
|
286
|
+
preview && "pr-12",
|
|
287
|
+
)}
|
|
265
288
|
/>
|
|
266
289
|
{#if preview && preview !== duration.trim()}
|
|
267
290
|
<span
|
|
@@ -272,22 +295,22 @@
|
|
|
272
295
|
</span>
|
|
273
296
|
{/if}
|
|
274
297
|
</div>
|
|
275
|
-
<
|
|
298
|
+
<Input
|
|
276
299
|
type="date"
|
|
277
300
|
bind:value={day}
|
|
278
301
|
aria-label={labels.date}
|
|
279
|
-
class="
|
|
302
|
+
class="h-7 text-(length:--text-control) tabular-nums md:text-(length:--text-control)"
|
|
280
303
|
/>
|
|
281
|
-
<
|
|
304
|
+
<Input
|
|
282
305
|
bind:value={note}
|
|
283
306
|
placeholder={labels.notePlaceholder}
|
|
284
307
|
aria-label={labels.note}
|
|
285
308
|
autocomplete="off"
|
|
286
|
-
class="
|
|
309
|
+
class="h-7 text-(length:--text-control) md:text-(length:--text-control)"
|
|
287
310
|
/>
|
|
288
|
-
<
|
|
311
|
+
<Button type="submit" variant="outline" size="sm" disabled={saving || !duration.trim()}>
|
|
289
312
|
{saving ? labels.saving : labels.log}
|
|
290
|
-
</
|
|
313
|
+
</Button>
|
|
291
314
|
</form>
|
|
292
315
|
{#if invalid}
|
|
293
316
|
<p id="time-invalid" class="text-xs text-destructive" role="alert">{labels.invalid}</p>
|
|
@@ -303,9 +326,9 @@
|
|
|
303
326
|
</div>
|
|
304
327
|
{#if estimate}
|
|
305
328
|
<div class="flex flex-col gap-1">
|
|
306
|
-
<div class="h-1 overflow-hidden
|
|
329
|
+
<div class={cn("h-1 overflow-hidden bg-muted", ganttLooks.track)} aria-hidden="true">
|
|
307
330
|
<div
|
|
308
|
-
class="time-segment h-full
|
|
331
|
+
class={cn("time-segment h-full", ganttLooks.track)}
|
|
309
332
|
style:background={tone === "neutral"
|
|
310
333
|
? "var(--color-foreground)"
|
|
311
334
|
: TONE_COLOR[tone]}
|
|
@@ -329,7 +352,7 @@
|
|
|
329
352
|
{#each people as person (person.key)}
|
|
330
353
|
<li class="flex items-center gap-1.5 text-xs">
|
|
331
354
|
<span
|
|
332
|
-
class="size-2
|
|
355
|
+
class={cn("size-2", ganttLooks.day)}
|
|
333
356
|
style:background={personColor(person.key)}
|
|
334
357
|
aria-hidden="true"
|
|
335
358
|
></span>
|
|
@@ -359,18 +382,20 @@
|
|
|
359
382
|
{@const name = getPerson(entry)}
|
|
360
383
|
{@const text = getNote?.(entry)}
|
|
361
384
|
<li
|
|
362
|
-
class=
|
|
385
|
+
class={cn(
|
|
386
|
+
"time-row group flex h-7 items-center gap-2 px-1 transition-colors duration-quick ease-smooth-out hover:bg-muted/50 focus-within:bg-muted/50",
|
|
387
|
+
workLooks.row,
|
|
388
|
+
)}
|
|
363
389
|
class:is-new={!firstIds.has(getId(entry))}
|
|
364
390
|
class:opacity-50={deleting === getId(entry)}
|
|
365
391
|
>
|
|
366
|
-
<
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
</span>
|
|
392
|
+
<Avatar.Root class="size-5" title={name} aria-hidden="true">
|
|
393
|
+
<Avatar.Fallback
|
|
394
|
+
class="text-xs font-semibold text-white"
|
|
395
|
+
style="background: {personColor(getPersonId?.(entry) ?? name)}"
|
|
396
|
+
>{initial(name)}</Avatar.Fallback
|
|
397
|
+
>
|
|
398
|
+
</Avatar.Root>
|
|
374
399
|
<span class="min-w-0 flex-1 truncate">
|
|
375
400
|
<span class="sr-only">{name},</span>
|
|
376
401
|
{#if text}{text}{:else}<span class="text-muted-foreground">{name}</span>{/if}
|
|
@@ -382,15 +407,17 @@
|
|
|
382
407
|
>{formatMinutes(getMinutes(entry))}</span
|
|
383
408
|
>
|
|
384
409
|
{#if onDelete && (canDelete?.(entry) ?? true)}
|
|
385
|
-
<
|
|
386
|
-
|
|
410
|
+
<Button
|
|
411
|
+
variant="ghost"
|
|
412
|
+
size="sm"
|
|
413
|
+
icon
|
|
387
414
|
onclick={() => remove(entry)}
|
|
388
415
|
disabled={deleting === getId(entry)}
|
|
389
416
|
aria-label={labels.deleteEntry(formatMinutes(getMinutes(entry)))}
|
|
390
|
-
class="time-delete
|
|
417
|
+
class="time-delete size-6 text-muted-foreground hover:bg-destructive/10 hover:text-destructive"
|
|
391
418
|
>
|
|
392
419
|
<X weight="bold" class="size-3" aria-hidden="true" />
|
|
393
|
-
</
|
|
420
|
+
</Button>
|
|
394
421
|
{/if}
|
|
395
422
|
</li>
|
|
396
423
|
{/each}
|
|
@@ -406,14 +433,9 @@
|
|
|
406
433
|
</section>
|
|
407
434
|
|
|
408
435
|
<style>
|
|
436
|
+
/* A running timer tints the whole split button in the accent. */
|
|
409
437
|
.time-chip {
|
|
410
|
-
|
|
411
|
-
align-items: stretch;
|
|
412
|
-
height: 1.75rem;
|
|
413
|
-
border-radius: var(--radius-md, 0.5rem);
|
|
414
|
-
font-size: 0.8125rem;
|
|
415
|
-
color: var(--color-foreground);
|
|
416
|
-
transition: background-color var(--duration-fast, 250ms) var(--ease-smooth-out, ease-out);
|
|
438
|
+
transition: background-color var(--duration-fast) var(--ease-smooth-out);
|
|
417
439
|
}
|
|
418
440
|
|
|
419
441
|
.time-chip.is-running {
|
|
@@ -424,173 +446,57 @@
|
|
|
424
446
|
color: var(--tone-accent, var(--color-primary));
|
|
425
447
|
}
|
|
426
448
|
|
|
427
|
-
.time-toggle,
|
|
428
|
-
:global(.time-open) {
|
|
429
|
-
display: inline-flex;
|
|
430
|
-
align-items: center;
|
|
431
|
-
outline: none;
|
|
432
|
-
transition: background-color var(--duration-quick, 150ms) var(--ease-smooth-out, ease-out);
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
.time-toggle {
|
|
436
|
-
justify-content: center;
|
|
437
|
-
width: 1.75rem;
|
|
438
|
-
border-start-start-radius: inherit;
|
|
439
|
-
border-end-start-radius: inherit;
|
|
440
|
-
}
|
|
441
|
-
|
|
442
|
-
:global(.time-open) {
|
|
443
|
-
gap: 0.375rem;
|
|
444
|
-
padding-inline: 0.25rem 0.5rem;
|
|
445
|
-
font-variant-numeric: tabular-nums;
|
|
446
|
-
white-space: nowrap;
|
|
447
|
-
border-start-end-radius: inherit;
|
|
448
|
-
border-end-end-radius: inherit;
|
|
449
|
-
}
|
|
450
|
-
|
|
451
|
-
:global(.time-open[data-state="open"]) {
|
|
452
|
-
background: color-mix(in oklab, var(--color-foreground) 7%, transparent);
|
|
453
|
-
}
|
|
454
|
-
|
|
455
|
-
@media (hover: hover) and (pointer: fine) {
|
|
456
|
-
.time-toggle:hover,
|
|
457
|
-
:global(.time-open:hover) {
|
|
458
|
-
background: color-mix(in oklab, var(--color-foreground) 7%, transparent);
|
|
459
|
-
}
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
.time-toggle:focus-visible,
|
|
463
|
-
:global(.time-open:focus-visible) {
|
|
464
|
-
box-shadow: 0 0 0 3px color-mix(in oklab, var(--color-ring) 50%, transparent);
|
|
465
|
-
}
|
|
466
|
-
|
|
467
|
-
.time-toggle:active {
|
|
468
|
-
transform: scale(0.96);
|
|
469
|
-
}
|
|
470
|
-
|
|
471
|
-
@media (any-pointer: coarse) {
|
|
472
|
-
.time-chip {
|
|
473
|
-
height: 2.5rem;
|
|
474
|
-
}
|
|
475
|
-
|
|
476
|
-
.time-toggle {
|
|
477
|
-
width: 2.5rem;
|
|
478
|
-
}
|
|
479
|
-
}
|
|
480
|
-
|
|
481
|
-
.time-field {
|
|
482
|
-
height: 1.75rem;
|
|
483
|
-
min-width: 0;
|
|
484
|
-
border-radius: var(--radius-md, 0.5rem);
|
|
485
|
-
border: 1px solid var(--color-input, var(--color-border));
|
|
486
|
-
background: var(--color-background);
|
|
487
|
-
padding-inline: 0.5rem;
|
|
488
|
-
font-size: 0.8125rem;
|
|
489
|
-
color: var(--color-foreground);
|
|
490
|
-
outline: none;
|
|
491
|
-
transition:
|
|
492
|
-
border-color var(--duration-quick, 150ms) var(--ease-smooth-out, ease-out),
|
|
493
|
-
box-shadow var(--duration-quick, 150ms) var(--ease-smooth-out, ease-out);
|
|
494
|
-
}
|
|
495
|
-
|
|
496
|
-
.time-field::placeholder {
|
|
497
|
-
color: var(--color-muted-foreground);
|
|
498
|
-
opacity: 0.7;
|
|
499
|
-
}
|
|
500
|
-
|
|
501
|
-
.time-field:focus-visible {
|
|
502
|
-
border-color: var(--color-ring);
|
|
503
|
-
box-shadow: 0 0 0 3px color-mix(in oklab, var(--color-ring) 40%, transparent);
|
|
504
|
-
}
|
|
505
|
-
|
|
506
|
-
.time-field[aria-invalid="true"] {
|
|
507
|
-
border-color: var(--color-destructive);
|
|
508
|
-
}
|
|
509
|
-
|
|
510
|
-
.time-log {
|
|
511
|
-
height: 1.75rem;
|
|
512
|
-
border-radius: var(--radius-md, 0.5rem);
|
|
513
|
-
border: 1px solid var(--color-border);
|
|
514
|
-
background: var(--color-background);
|
|
515
|
-
padding-inline: 0.75rem;
|
|
516
|
-
font-size: 0.8125rem;
|
|
517
|
-
font-weight: 500;
|
|
518
|
-
outline: none;
|
|
519
|
-
transition: background-color var(--duration-quick, 150ms) var(--ease-smooth-out, ease-out);
|
|
520
|
-
}
|
|
521
|
-
|
|
522
|
-
@media (hover: hover) and (pointer: fine) {
|
|
523
|
-
.time-log:hover:not(:disabled) {
|
|
524
|
-
background: var(--color-muted);
|
|
525
|
-
}
|
|
526
|
-
}
|
|
527
|
-
|
|
528
|
-
.time-log:focus-visible {
|
|
529
|
-
box-shadow: 0 0 0 3px color-mix(in oklab, var(--color-ring) 50%, transparent);
|
|
530
|
-
}
|
|
531
|
-
|
|
532
|
-
.time-log:disabled {
|
|
533
|
-
opacity: 0.5;
|
|
534
|
-
pointer-events: none;
|
|
535
|
-
}
|
|
536
|
-
|
|
537
449
|
.time-segment {
|
|
538
|
-
transition: width var(--duration-slow
|
|
539
|
-
var(--ease-smooth-out, cubic-bezier(0.22, 1, 0.36, 1));
|
|
450
|
+
transition: width var(--duration-slow) var(--ease-smooth-out);
|
|
540
451
|
}
|
|
541
452
|
|
|
542
|
-
.time-delete {
|
|
453
|
+
.time-row :global(.time-delete) {
|
|
543
454
|
opacity: 0;
|
|
544
455
|
}
|
|
545
456
|
|
|
546
|
-
.time-row:focus-within .time-delete {
|
|
457
|
+
.time-row:focus-within :global(.time-delete) {
|
|
547
458
|
opacity: 1;
|
|
548
459
|
}
|
|
549
460
|
|
|
550
461
|
@media (hover: hover) and (pointer: fine) {
|
|
551
|
-
.time-row:hover .time-delete {
|
|
462
|
+
.time-row:hover :global(.time-delete) {
|
|
552
463
|
opacity: 1;
|
|
553
464
|
}
|
|
554
465
|
}
|
|
555
466
|
|
|
556
467
|
@media (hover: none) {
|
|
557
|
-
.time-delete {
|
|
468
|
+
.time-row :global(.time-delete) {
|
|
558
469
|
opacity: 1;
|
|
559
470
|
}
|
|
560
471
|
}
|
|
561
472
|
|
|
562
473
|
.time-pop,
|
|
563
474
|
.time-preview {
|
|
564
|
-
animation: time-pop var(--duration-quick
|
|
475
|
+
animation: time-pop var(--duration-quick) var(--ease-smooth-out) backwards;
|
|
565
476
|
}
|
|
566
477
|
|
|
567
478
|
.time-row.is-new {
|
|
568
|
-
animation: time-row-in var(--duration-fast
|
|
569
|
-
var(--ease-smooth-out, cubic-bezier(0.22, 1, 0.36, 1)) backwards;
|
|
479
|
+
animation: time-row-in var(--duration-fast) var(--ease-smooth-out) backwards;
|
|
570
480
|
}
|
|
571
481
|
|
|
572
482
|
@keyframes time-pop {
|
|
573
483
|
from {
|
|
574
484
|
opacity: 0;
|
|
575
|
-
transform: translateY(
|
|
576
|
-
filter: blur(var(--blur-small
|
|
485
|
+
transform: translateY(var(--distance-micro));
|
|
486
|
+
filter: blur(var(--blur-small));
|
|
577
487
|
}
|
|
578
488
|
}
|
|
579
489
|
|
|
580
490
|
@keyframes time-row-in {
|
|
581
491
|
from {
|
|
582
492
|
opacity: 0;
|
|
583
|
-
transform: translateY(var(--distance-base
|
|
584
|
-
filter: blur(var(--blur-small
|
|
493
|
+
transform: translateY(var(--distance-base));
|
|
494
|
+
filter: blur(var(--blur-small));
|
|
585
495
|
}
|
|
586
496
|
}
|
|
587
497
|
|
|
588
498
|
@media (prefers-reduced-motion: reduce) {
|
|
589
499
|
.time-chip,
|
|
590
|
-
.time-toggle,
|
|
591
|
-
:global(.time-open),
|
|
592
|
-
.time-field,
|
|
593
|
-
.time-log,
|
|
594
500
|
.time-segment {
|
|
595
501
|
transition: none;
|
|
596
502
|
}
|