@pathscale/ui 2.9.3 → 2.11.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.
@@ -3,6 +3,12 @@
3
3
  align-items: flex-start;
4
4
  gap: 1rem;
5
5
  padding: 0.875rem;
6
+ /*
7
+ * Named, so the `auto` rules below measure this component rather than the
8
+ * window. The wheel usually sits in a side panel, and a panel narrow enough
9
+ * to need stacking is common on a wide screen.
10
+ */
11
+ container: complex-color-wheel / inline-size;
6
12
  }
7
13
 
8
14
  .complex-color-wheel__adjustments {
@@ -13,6 +19,49 @@
13
19
  gap: 0.875rem;
14
20
  }
15
21
 
22
+ /* Stacked: the wheel above, every axis in one column under it. */
23
+ .complex-color-wheel--layout-stacked {
24
+ flex-direction: column;
25
+ align-items: stretch;
26
+ }
27
+
28
+ /*
29
+ * Beside: the rows sit next to the wheel and pack two to a line. `auto-fit`
30
+ * rather than a fixed two, so the last row spans the full width instead of
31
+ * leaving a hole, and a container too narrow for two columns gets one.
32
+ */
33
+ .complex-color-wheel--layout-beside .complex-color-wheel__adjustments {
34
+ display: grid;
35
+ grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
36
+ gap: 0.875rem 1.25rem;
37
+ align-content: start;
38
+ }
39
+
40
+ /* The action sits alone on its own line above the axes it resets. */
41
+ .complex-color-wheel--layout-beside .complex-color-wheel__action {
42
+ grid-column: 1 / -1;
43
+ }
44
+
45
+ @container complex-color-wheel (min-width: 30rem) {
46
+ .complex-color-wheel--layout-auto .complex-color-wheel__adjustments {
47
+ display: grid;
48
+ grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
49
+ gap: 0.875rem 1.25rem;
50
+ align-content: start;
51
+ }
52
+
53
+ .complex-color-wheel--layout-auto .complex-color-wheel__action {
54
+ grid-column: 1 / -1;
55
+ }
56
+ }
57
+
58
+ @container complex-color-wheel (max-width: 30rem) {
59
+ .complex-color-wheel--layout-auto {
60
+ flex-direction: column;
61
+ align-items: stretch;
62
+ }
63
+ }
64
+
16
65
  .complex-color-wheel__action {
17
66
  display: flex;
18
67
  justify-content: flex-end;
@@ -27,5 +27,14 @@ export interface ComplexColorWheelProps extends ColorWheelProps {
27
27
  material?: CardMaterial;
28
28
  action?: JSX.Element;
29
29
  adjustmentsClass?: string;
30
+ /**
31
+ * Where the axes sit: `beside` the wheel and two to a line, `stacked` in one
32
+ * column under it, or `auto` to choose by the width this component is given.
33
+ *
34
+ * `auto` measures the component rather than the viewport, because the wheel
35
+ * is usually in a side panel and a narrow panel on a wide screen still wants
36
+ * the stacked reading.
37
+ */
38
+ layout?: "auto" | "beside" | "stacked";
30
39
  }
31
40
  export declare const ComplexColorWheelLayout: __LayoutComponent<ComplexColorWheelProps>;
@@ -35,4 +35,24 @@ export declare const complexColorWheel: import("solid-layouts/solid-2").Recipe<{
35
35
  readonly base: "complex-color-wheel__hint";
36
36
  };
37
37
  };
38
+ readonly props: {
39
+ /**
40
+ * Where the adjustment rows sit relative to the wheel, and to each other.
41
+ *
42
+ * `beside` is the wide reading: the rows sit to the right of the wheel and
43
+ * pack two to a line once there is room for them. `stacked` is the narrow
44
+ * one, everything in a single column. `auto` picks by the width the
45
+ * component is actually given rather than by the viewport, so a wheel in a
46
+ * narrow panel stacks on a wide screen, which is the case that matters:
47
+ * this lives in a side panel more often than on a page.
48
+ */
49
+ readonly layout: {
50
+ readonly auto: "complex-color-wheel--layout-auto";
51
+ readonly beside: "complex-color-wheel--layout-beside";
52
+ readonly stacked: "complex-color-wheel--layout-stacked";
53
+ };
54
+ };
55
+ readonly defaults: {
56
+ readonly layout: "auto";
57
+ };
38
58
  }>;
@@ -36,11 +36,27 @@ const complexColorWheel = recipe({
36
36
  base: "complex-color-wheel__hint"
37
37
  }
38
38
  },
39
+ props: {
40
+ layout: {
41
+ auto: "complex-color-wheel--layout-auto",
42
+ beside: "complex-color-wheel--layout-beside",
43
+ stacked: "complex-color-wheel--layout-stacked"
44
+ }
45
+ },
46
+ defaults: {
47
+ layout: "auto"
48
+ },
39
49
  _layouts: {
40
50
  slots: {
41
51
  root: {
42
52
  base: "complex-color-wheel",
43
- axes: {}
53
+ axes: {
54
+ layout: {
55
+ auto: "complex-color-wheel--layout-auto",
56
+ beside: "complex-color-wheel--layout-beside",
57
+ stacked: "complex-color-wheel--layout-stacked"
58
+ }
59
+ }
44
60
  },
45
61
  adjustments: {
46
62
  base: "complex-color-wheel__adjustments",
@@ -24,10 +24,6 @@
24
24
  inset: 0;
25
25
  }
26
26
 
27
- .color-wheel-flower__ring-shell--outer {
28
- transform: scale(1.1);
29
- }
30
-
31
27
  .color-wheel-flower__ring-shell--inner {
32
28
  transform: scale(0.9);
33
29
  }
@@ -38,10 +34,6 @@
38
34
  border-radius: var(--radius-pill, 9999px);
39
35
  }
40
36
 
41
- .color-wheel-flower__ring--outer {
42
- will-change: transform, opacity, box-shadow, background;
43
- }
44
-
45
37
  .color-wheel-flower__ring--inner {
46
38
  background: #0b1012;
47
39
  }
@@ -12,7 +12,7 @@ import { resolveColorWheelFlowerPalette } from "./ColorWheelFlower.palette.js";
12
12
  import { motionDistances, motionDurations, motionEasings, prefersReducedMotion, runMotion } from "../../motion/index.js";
13
13
  import { CLASSES, componentRecipe } from "./ColorWheelFlower.recipe.js";
14
14
  import { flowerPetalPosition } from "./ColorWheelFlower.geometry.js";
15
- var _tmpl$ = /*#__PURE__*/ template("<div><div><div><div></div></div><div><div>"), _tmpl$2 = /*#__PURE__*/ template("<div><div><div><span></span><span>");
15
+ var _tmpl$ = /*#__PURE__*/ template("<div><div><div><div>"), _tmpl$2 = /*#__PURE__*/ template("<div><div><div><span></span><span>");
16
16
  const parseRgbToHsl = (rgbString)=>{
17
17
  const match = rgbString.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
18
18
  if (!match) return {
@@ -317,27 +317,14 @@ const __solidLayoutColorWheelFlower = (_stable, p)=>{
317
317
  }
318
318
  const mode = ()=>p.mode ?? currentTheme();
319
319
  const colors = createMemo(()=>buildColors(resolveColorWheelFlowerPalette(mode(), p.palette)));
320
- const rainbowGradient = ()=>{
321
- const outer = colors().slice(0, 12);
322
- const stops = outer.map((item, index)=>`${item.rgb} ${index / outer.length * 360}deg`);
323
- stops.push(`${outer[0].rgb} 360deg`);
324
- return `conic-gradient(from 0deg, ${stops.join(", ")})`;
325
- };
326
320
  const reduceMotion = prefersReducedMotion();
327
- const ringTransition = reduceMotion ? {
328
- duration: 0
329
- } : {
330
- duration: motionDurations.slow,
331
- easing: motionEasings.inOut
332
- };
321
+ reduceMotion || (motionDurations.slow, motionEasings.inOut);
333
322
  const hoverLift = reduceMotion ? 0 : motionDistances.sm;
334
323
  const pressScale = 0.96;
335
324
  const pulseScale = 1.12;
336
325
  let containerRef;
337
326
  let pointerTimeout;
338
327
  let pulseTimeout;
339
- let outerRingRef;
340
- let outerRingControl = null;
341
328
  const closestIndex = createMemo(()=>{
342
329
  const current = context.color();
343
330
  const items = colors();
@@ -437,51 +424,12 @@ const __solidLayoutColorWheelFlower = (_stable, p)=>{
437
424
  setHoveredIndex(null);
438
425
  if (void 0 !== pointerTimeout) clearTimeout(pointerTimeout);
439
426
  };
440
- const outerRingBackground = ()=>{
441
- const selected = selectedIndex();
442
- if (null === selected) return rainbowGradient();
443
- const color = colors()[selected];
444
- return `conic-gradient(${color.rgb}, ${color.rgb})`;
445
- };
446
- const outerRingTarget = createMemo(()=>{
447
- if (context.disabled()) return {
448
- opacity: 0.5,
449
- scale: 1
450
- };
451
- if (null !== selectedIndex()) return {
452
- opacity: 1,
453
- scale: 1
454
- };
455
- if (null !== hoveredIndex()) return {
456
- opacity: 0.98,
457
- scale: 0.84
458
- };
459
- return {
460
- opacity: 0.92,
461
- scale: 0.84
462
- };
463
- });
464
- const outerRingGlow = createMemo(()=>{
465
- if (context.disabled()) return "none";
466
- const index = hoveredIndex() ?? selectedIndex();
467
- if (null === index) return "0 0 10px rgba(255,255,255,0.08)";
468
- const color = colors()[index].rgb;
469
- return `0 0 10px rgba(255,255,255,0.16), 0 0 20px ${toRgba(color, 0.35)}`;
470
- });
471
- createTrackedEffect(()=>{
472
- const node = outerRingRef;
473
- if (!node) return;
474
- const target = outerRingTarget();
475
- outerRingControl?.stop();
476
- outerRingControl = runMotion(node, readMotionState(node), target, ringTransition);
477
- });
478
427
  onCleanup(()=>{
479
- outerRingControl?.stop();
480
428
  if (void 0 !== pulseTimeout) clearTimeout(pulseTimeout);
481
429
  if (void 0 !== pointerTimeout) clearTimeout(pointerTimeout);
482
430
  });
483
431
  const pickerValue = ()=>colors()[visualSelectedIndex()]?.hex;
484
- var _el$ = _tmpl$(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$3.nextSibling, _el$6 = _el$5.firstChild;
432
+ var _el$ = _tmpl$(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild;
485
433
  var _ref$ = containerRef;
486
434
  "function" == typeof _ref$ || Array.isArray(_ref$) ? ref(()=>_ref$, _el$) : containerRef = _el$;
487
435
  spread(_el$, mergeProps(()=>({
@@ -503,25 +451,9 @@ const __solidLayoutColorWheelFlower = (_stable, p)=>{
503
451
  class: CLASSES.rings
504
452
  })), true);
505
453
  spread(_el$3, mergeProps(()=>({
506
- class: twMerge(CLASSES.ringShell.base, CLASSES.ringShell.outer)
507
- })), true);
508
- var _ref$2 = outerRingRef;
509
- "function" == typeof _ref$2 || Array.isArray(_ref$2) ? ref(()=>_ref$2, _el$4) : outerRingRef = _el$4;
510
- spread(_el$4, mergeProps(()=>({
511
- class: twMerge(CLASSES.ring.base, CLASSES.ring.outer)
512
- }), {
513
- get style () {
514
- return {
515
- background: outerRingBackground(),
516
- "box-shadow": outerRingGlow(),
517
- transition: reduceMotion ? "none" : "background 450ms ease-in-out, box-shadow 300ms ease-out"
518
- };
519
- }
520
- }), false);
521
- spread(_el$5, mergeProps(()=>({
522
454
  class: twMerge(CLASSES.ringShell.base, CLASSES.ringShell.inner)
523
455
  })), true);
524
- spread(_el$6, mergeProps(()=>({
456
+ spread(_el$4, mergeProps(()=>({
525
457
  class: twMerge(CLASSES.ring.base, CLASSES.ring.inner)
526
458
  })), false);
527
459
  insert(_el$, createComponent(color_swatch_picker, mergeProps(()=>({
@@ -638,24 +570,24 @@ const __solidLayoutColorWheelFlower = (_stable, p)=>{
638
570
  onCleanup(()=>{
639
571
  dotControl?.stop();
640
572
  });
641
- var _el$7 = _tmpl$2(), _el$8 = _el$7.firstChild, _el$9 = _el$8.firstChild, _el$0 = _el$9.firstChild, _el$1 = _el$0.nextSibling;
642
- spread(_el$7, mergeProps(()=>({
573
+ var _el$5 = _tmpl$2(), _el$6 = _el$5.firstChild, _el$7 = _el$6.firstChild, _el$8 = _el$7.firstChild, _el$9 = _el$8.nextSibling;
574
+ spread(_el$5, mergeProps(()=>({
643
575
  class: CLASSES.dot.base
644
576
  }), {
645
577
  get style () {
646
578
  return flowerPetalPosition(item.offsetX, item.offsetY);
647
579
  }
648
580
  }), true);
649
- spread(_el$8, mergeProps(()=>({
581
+ spread(_el$6, mergeProps(()=>({
650
582
  class: CLASSES.dot.frame
651
583
  })), true);
652
584
  ref(()=>(el)=>{
653
585
  motionRef = el;
654
- }, _el$9);
655
- spread(_el$9, mergeProps(()=>({
586
+ }, _el$7);
587
+ spread(_el$7, mergeProps(()=>({
656
588
  class: CLASSES.dot.motion
657
589
  })), true);
658
- spread(_el$0, mergeProps(()=>({
590
+ spread(_el$8, mergeProps(()=>({
659
591
  class: CLASSES.halo
660
592
  }), {
661
593
  get style () {
@@ -666,7 +598,7 @@ const __solidLayoutColorWheelFlower = (_stable, p)=>{
666
598
  };
667
599
  }
668
600
  }), false);
669
- insert(_el$9, createComponent(color_swatch, mergeProps({
601
+ insert(_el$7, createComponent(color_swatch, mergeProps({
670
602
  get color () {
671
603
  return item.hex;
672
604
  },
@@ -704,11 +636,11 @@ const __solidLayoutColorWheelFlower = (_stable, p)=>{
704
636
  onPointerCancel: ()=>{
705
637
  if (!context.disabled()) setPressedIndex(null);
706
638
  }
707
- })), _el$1);
708
- spread(_el$1, mergeProps(()=>({
639
+ })), _el$9);
640
+ spread(_el$9, mergeProps(()=>({
709
641
  class: clsx(CLASSES.highlight.base, isHovered() && CLASSES.highlight.hovered, isPulsing() && CLASSES.highlight.pulsing)
710
642
  })), false);
711
- return _el$7;
643
+ return _el$5;
712
644
  }
713
645
  });
714
646
  }
@@ -6,12 +6,10 @@ export declare const CLASSES: {
6
6
  readonly rings: "color-wheel-flower__rings";
7
7
  readonly ringShell: {
8
8
  readonly base: "color-wheel-flower__ring-shell";
9
- readonly outer: "color-wheel-flower__ring-shell--outer";
10
9
  readonly inner: "color-wheel-flower__ring-shell--inner";
11
10
  };
12
11
  readonly ring: {
13
12
  readonly base: "color-wheel-flower__ring";
14
- readonly outer: "color-wheel-flower__ring--outer";
15
13
  readonly inner: "color-wheel-flower__ring--inner";
16
14
  };
17
15
  readonly picker: "color-wheel-flower__picker";
@@ -7,12 +7,10 @@ const CLASSES = {
7
7
  rings: "color-wheel-flower__rings",
8
8
  ringShell: {
9
9
  base: "color-wheel-flower__ring-shell",
10
- outer: "color-wheel-flower__ring-shell--outer",
11
10
  inner: "color-wheel-flower__ring-shell--inner"
12
11
  },
13
12
  ring: {
14
13
  base: "color-wheel-flower__ring",
15
- outer: "color-wheel-flower__ring--outer",
16
14
  inner: "color-wheel-flower__ring--inner"
17
15
  },
18
16
  picker: "color-wheel-flower__picker",
@@ -0,0 +1,79 @@
1
+ @layer components {
2
+ .inline-edit {
3
+ display: inline-flex;
4
+ min-width: 0;
5
+ align-items: center;
6
+ gap: 0.375rem;
7
+ }
8
+
9
+ .inline-edit--full-width {
10
+ width: 100%;
11
+ }
12
+
13
+ .inline-edit__read {
14
+ display: inline-flex;
15
+ min-width: 0;
16
+ flex: 1 1 auto;
17
+ align-items: center;
18
+ gap: 0.375rem;
19
+ }
20
+
21
+ .inline-edit__value {
22
+ min-width: 0;
23
+ overflow: hidden;
24
+ text-overflow: ellipsis;
25
+ white-space: nowrap;
26
+ }
27
+
28
+ .inline-edit__trigger {
29
+ display: inline-flex;
30
+ height: 1.125rem;
31
+ width: 1.125rem;
32
+ flex: none;
33
+ align-items: center;
34
+ justify-content: center;
35
+ border-radius: 0.25rem;
36
+ padding: 0;
37
+ color: var(--color-base-content);
38
+ opacity: 0.55;
39
+ }
40
+
41
+ .inline-edit__trigger:hover {
42
+ background-color: oklch(100% 0 0 / 0.08);
43
+ opacity: 1;
44
+ }
45
+
46
+ .inline-edit__edit {
47
+ display: none;
48
+ min-width: 0;
49
+ flex: 1 1 auto;
50
+ }
51
+
52
+ .inline-edit--editing .inline-edit__read {
53
+ display: none;
54
+ }
55
+
56
+ .inline-edit--editing .inline-edit__edit {
57
+ display: inline-flex;
58
+ }
59
+
60
+ .inline-edit__field {
61
+ min-width: 0;
62
+ flex: 1 1 auto;
63
+ border-radius: 0.375rem;
64
+ border: var(--border, 1px) solid var(--color-base-300);
65
+ background-color: var(--color-base-100);
66
+ padding: 0.125rem 0.5rem;
67
+ color: var(--color-base-content);
68
+ outline: none;
69
+ }
70
+
71
+ .inline-edit__field:focus {
72
+ border-color: var(--color-primary);
73
+ }
74
+
75
+ .inline-edit--disabled .inline-edit__trigger {
76
+ pointer-events: none;
77
+ opacity: 0.4;
78
+ }
79
+ }
@@ -0,0 +1,27 @@
1
+ import type { Component as __LayoutComponent } from "solid-js";
2
+ import "./InlineEdit.css";
3
+ import type { JSX } from "@solidjs/web";
4
+ import type { UIBaseProps } from "../vocabulary";
5
+ /**
6
+ * A value that is read in place until someone chooses to change it.
7
+ *
8
+ * Enter commits, Escape abandons, and moving focus away commits, so the mode
9
+ * has an exit for a reader who never touches the keyboard.
10
+ */
11
+ export type InlineEditProps = Omit<JSX.HTMLAttributes<HTMLSpanElement>, "onChange" | "children"> & UIBaseProps & {
12
+ /** The current value, shown while not editing and used as the draft. */
13
+ value: string;
14
+ /** Called with the trimmed draft when it differs from `value`. */
15
+ onCommit?: (value: string) => void | Promise<unknown>;
16
+ /** Accessible name for the trigger and the field. Both need one. */
17
+ label?: string;
18
+ /** Rendered inside the trigger. An icon, usually. */
19
+ trigger?: JSX.Element;
20
+ /** Rendered in place of the plain value, for a value that is also a link. */
21
+ children?: JSX.Element;
22
+ fullWidth?: boolean;
23
+ disabled?: boolean;
24
+ fieldClass?: string;
25
+ };
26
+ declare const InlineEdit: __LayoutComponent<InlineEditProps>;
27
+ export default InlineEdit;
@@ -0,0 +1,117 @@
1
+ import { className, delegateEvents, effect, insert, mergeProps, ref, setAttribute, spread, template } from "@solidjs/web";
2
+ import { defineComponent } from "solid-layouts/solid-2/application-boundary";
3
+ import "./InlineEdit.css";
4
+ import { omit } from "solid-js";
5
+ import { twMerge } from "../../lib/twMerge.js";
6
+ import { CLASSES, componentRecipe } from "./InlineEdit.recipe.js";
7
+ var _tmpl$ = /*#__PURE__*/ template("<span><span data-slot=inline-edit-read><span data-slot=inline-edit-value></span><button type=button data-slot=inline-edit-trigger></button></span><span data-slot=inline-edit-edit><input type=text data-slot=inline-edit-field>");
8
+ const __solidLayoutInlineEdit = (_stable, p)=>{
9
+ const others = omit(p, "class", "value", "onCommit", "label", "trigger", "children", "fullWidth", "disabled", "fieldClass");
10
+ let readRow;
11
+ let editRow;
12
+ let field;
13
+ let open = false;
14
+ let focused = false;
15
+ let draft = "";
16
+ const apply = (next)=>{
17
+ open = next;
18
+ if (readRow) readRow.style.display = next ? "none" : "inline-flex";
19
+ if (editRow) editRow.style.display = next ? "inline-flex" : "none";
20
+ };
21
+ const start = ()=>{
22
+ if (p.disabled) return;
23
+ draft = p.value;
24
+ if (field) field.value = draft;
25
+ apply(true);
26
+ queueMicrotask(()=>{
27
+ field?.focus();
28
+ field?.select();
29
+ });
30
+ };
31
+ const cancel = ()=>{
32
+ draft = p.value;
33
+ if (field) field.value = draft;
34
+ focused = false;
35
+ apply(false);
36
+ };
37
+ const commit = ()=>{
38
+ const next = draft.trim();
39
+ focused = false;
40
+ apply(false);
41
+ if (!next || next === p.value) return;
42
+ p.onCommit?.(next);
43
+ };
44
+ const rootClasses = ()=>twMerge(CLASSES.base, p.fullWidth && CLASSES.flag.fullWidth, p.disabled && CLASSES.flag.disabled, p.class);
45
+ var _el$ = _tmpl$(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$2.nextSibling, _el$6 = _el$5.firstChild;
46
+ spread(_el$, mergeProps(others, {
47
+ get ["class"] () {
48
+ return rootClasses();
49
+ },
50
+ "data-slot": "root"
51
+ }), true);
52
+ ref(()=>(element)=>{
53
+ readRow = element;
54
+ }, _el$2);
55
+ insert(_el$3, ()=>p.children ?? p.value);
56
+ _el$4.$$click = start;
57
+ insert(_el$4, ()=>p.trigger);
58
+ ref(()=>(element)=>{
59
+ editRow = element;
60
+ }, _el$5);
61
+ _el$6.$$keydown = (event)=>{
62
+ if ("Enter" === event.key) {
63
+ event.preventDefault();
64
+ commit();
65
+ } else if ("Escape" === event.key) {
66
+ event.preventDefault();
67
+ cancel();
68
+ }
69
+ };
70
+ _el$6.addEventListener("blur", ()=>{
71
+ if (!focused) return;
72
+ if (open) commit();
73
+ });
74
+ _el$6.addEventListener("focus", ()=>{
75
+ focused = true;
76
+ });
77
+ _el$6.$$input = (event)=>{
78
+ draft = event.currentTarget.value;
79
+ };
80
+ ref(()=>(element)=>{
81
+ field = element;
82
+ }, _el$6);
83
+ effect(()=>({
84
+ e: CLASSES.slot.read,
85
+ t: CLASSES.slot.value,
86
+ a: p.disabled,
87
+ o: p.label,
88
+ i: CLASSES.slot.trigger,
89
+ n: CLASSES.slot.edit,
90
+ s: p.value,
91
+ h: p.label,
92
+ r: twMerge(CLASSES.slot.field, p.fieldClass)
93
+ }), ({ e, t, a, o, i, n, s, h, r }, _p$)=>{
94
+ className(_el$2, e, _p$?.e);
95
+ className(_el$3, t, _p$?.t);
96
+ a !== _p$?.a && setAttribute(_el$4, "disabled", a);
97
+ o !== _p$?.o && setAttribute(_el$4, "aria-label", o);
98
+ className(_el$4, i, _p$?.i);
99
+ className(_el$5, n, _p$?.n);
100
+ _el$6.value = s ?? "";
101
+ h !== _p$?.h && setAttribute(_el$6, "aria-label", h);
102
+ className(_el$6, r, _p$?.r);
103
+ });
104
+ return _el$;
105
+ };
106
+ const InlineEdit = defineComponent({
107
+ recipe: componentRecipe,
108
+ layout: __solidLayoutInlineEdit,
109
+ embedded: true
110
+ });
111
+ const InlineEdit_generated = InlineEdit;
112
+ delegateEvents([
113
+ "click",
114
+ "input",
115
+ "keydown"
116
+ ]);
117
+ export default InlineEdit_generated;
@@ -0,0 +1,26 @@
1
+ export declare const CLASSES: {
2
+ readonly base: "inline-edit";
3
+ readonly slot: {
4
+ readonly read: "inline-edit__read";
5
+ readonly value: "inline-edit__value";
6
+ readonly trigger: "inline-edit__trigger";
7
+ readonly edit: "inline-edit__edit";
8
+ readonly field: "inline-edit__field";
9
+ };
10
+ readonly flag: {
11
+ readonly editing: "inline-edit--editing";
12
+ readonly fullWidth: "inline-edit--full-width";
13
+ readonly disabled: "inline-edit--disabled";
14
+ };
15
+ };
16
+ export declare const componentRecipe: import("solid-layouts/solid-2").Recipe<{
17
+ readonly component: "inline-edit";
18
+ readonly slots: {
19
+ readonly root: {};
20
+ readonly "inline-edit-read": {};
21
+ readonly "inline-edit-value": {};
22
+ readonly "inline-edit-trigger": {};
23
+ readonly "inline-edit-edit": {};
24
+ readonly "inline-edit-field": {};
25
+ };
26
+ }>;
@@ -0,0 +1,65 @@
1
+ import { recipe } from "../../lib/layouts/index.js";
2
+ const CLASSES = {
3
+ base: "inline-edit",
4
+ slot: {
5
+ read: "inline-edit__read",
6
+ value: "inline-edit__value",
7
+ trigger: "inline-edit__trigger",
8
+ edit: "inline-edit__edit",
9
+ field: "inline-edit__field"
10
+ },
11
+ flag: {
12
+ editing: "inline-edit--editing",
13
+ fullWidth: "inline-edit--full-width",
14
+ disabled: "inline-edit--disabled"
15
+ }
16
+ };
17
+ const componentRecipe = recipe({
18
+ component: "inline-edit",
19
+ slots: {
20
+ root: {},
21
+ "inline-edit-read": {},
22
+ "inline-edit-value": {},
23
+ "inline-edit-trigger": {},
24
+ "inline-edit-edit": {},
25
+ "inline-edit-field": {}
26
+ },
27
+ _layouts: {
28
+ slots: {
29
+ root: {
30
+ base: "",
31
+ axes: {}
32
+ },
33
+ "inline-edit-read": {
34
+ base: "",
35
+ axes: {}
36
+ },
37
+ "inline-edit-value": {
38
+ base: "",
39
+ axes: {}
40
+ },
41
+ "inline-edit-trigger": {
42
+ base: "",
43
+ axes: {}
44
+ },
45
+ "inline-edit-edit": {
46
+ base: "",
47
+ axes: {}
48
+ },
49
+ "inline-edit-field": {
50
+ base: "",
51
+ axes: {}
52
+ }
53
+ },
54
+ stateKeys: [],
55
+ slotIds: {
56
+ root: 5,
57
+ "inline-edit-read": 2,
58
+ "inline-edit-value": 4,
59
+ "inline-edit-trigger": 3,
60
+ "inline-edit-edit": 0,
61
+ "inline-edit-field": 1
62
+ }
63
+ }
64
+ });
65
+ export { CLASSES, componentRecipe };
@@ -0,0 +1,3 @@
1
+ import InlineEdit from "./InlineEdit.generated";
2
+ export type { InlineEditProps } from "./InlineEdit.generated";
3
+ export default InlineEdit;
@@ -0,0 +1,3 @@
1
+ import InlineEdit_generated from "./InlineEdit.generated.js";
2
+ const inline_edit = InlineEdit_generated;
3
+ export default inline_edit;
package/dist/index.d.ts CHANGED
@@ -58,6 +58,8 @@ export { default as Header } from "./components/header";
58
58
  export { default as Icon } from "./components/icon";
59
59
  export type { CookieConsentProps, CookieConsentStorageKeys, CookieConsentTexts, FirefoxPWABannerProps, FirefoxPWABannerTexts, ImmersiveLandingArrowsProps, ImmersiveLandingContextValue, ImmersiveLandingNavigationProps, ImmersiveLandingPageProps, ImmersiveLandingProps, PWAInstallPromptProps, PWAInstallPromptTexts, UseImmersiveLandingOptions, UseImmersiveLandingReturn, } from "./components/immersive-landing";
60
60
  export { CookieConsent, default as ImmersiveLanding, FirefoxPWABanner, ImmersiveLandingContext, PWAInstallPrompt, useImmersiveLanding, useImmersiveLandingContext, } from "./components/immersive-landing";
61
+ export type { InlineEditProps } from "./components/inline-edit";
62
+ export { default as InlineEdit } from "./components/inline-edit";
61
63
  export { default as Input } from "./components/input";
62
64
  export type { InputOTPGroupProps, InputOTPProps, InputOTPRootProps, InputOTPSeparatorProps, InputOTPSlotProps, InputOTPVariant, } from "./components/input-otp";
63
65
  export { default as InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, REGEXP_ONLY_CHARS, REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS, } from "./components/input-otp";
package/dist/index.js CHANGED
@@ -38,6 +38,7 @@ export { default as Grid } from "./components/grid/index.js";
38
38
  export { default as Header } from "./components/header/index.js";
39
39
  export { default as Icon } from "./components/icon/index.js";
40
40
  export { CookieConsent, FirefoxPWABanner, ImmersiveLandingContext, PWAInstallPrompt, default as ImmersiveLanding, useImmersiveLanding, useImmersiveLandingContext } from "./components/immersive-landing/index.js";
41
+ export { default as InlineEdit } from "./components/inline-edit/index.js";
41
42
  export { default as Input } from "./components/input/index.js";
42
43
  export { InputOTPGroup, InputOTPSeparator, InputOTPSlot, REGEXP_ONLY_CHARS, REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS, default as InputOTP } from "./components/input-otp/index.js";
43
44
  export { default as Label } from "./components/label/index.js";
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "format": "solid-layouts-library-v2",
3
3
  "package": "@pathscale/ui",
4
- "version": "2.9.3",
4
+ "version": "2.11.0",
5
5
  "components": {
6
6
  "Accordion": {
7
7
  "kind": "embedded"
@@ -321,6 +321,9 @@
321
321
  "ImmersiveLandingContext": {
322
322
  "kind": "embedded"
323
323
  },
324
+ "InlineEdit": {
325
+ "kind": "embedded"
326
+ },
324
327
  "Input": {
325
328
  "kind": "embedded"
326
329
  },
@@ -7631,6 +7631,54 @@
7631
7631
  "CheckboxGroup"
7632
7632
  ]
7633
7633
  },
7634
+ "InlineEdit": {
7635
+ "key": "InlineEdit",
7636
+ "component": "InlineEdit",
7637
+ "classes": {
7638
+ "always": [],
7639
+ "byProp": {
7640
+ "slot": {
7641
+ "read": [],
7642
+ "value": [],
7643
+ "trigger": [],
7644
+ "edit": [],
7645
+ "field": []
7646
+ },
7647
+ "editing": [],
7648
+ "fullWidth": [],
7649
+ "disabled": []
7650
+ }
7651
+ },
7652
+ "attributeSelectors": [],
7653
+ "selectors": [
7654
+ ".inline-edit",
7655
+ ".inline-edit--disabled .inline-edit__trigger",
7656
+ ".inline-edit--editing .inline-edit__edit",
7657
+ ".inline-edit--editing .inline-edit__read",
7658
+ ".inline-edit--full-width",
7659
+ ".inline-edit__edit",
7660
+ ".inline-edit__field",
7661
+ ".inline-edit__field:focus",
7662
+ ".inline-edit__read",
7663
+ ".inline-edit__trigger",
7664
+ ".inline-edit__trigger:hover",
7665
+ ".inline-edit__value"
7666
+ ],
7667
+ "cssVars": {
7668
+ "declared": [],
7669
+ "referenced": [
7670
+ "--border",
7671
+ "--color-base-100",
7672
+ "--color-base-300",
7673
+ "--color-base-content",
7674
+ "--color-primary"
7675
+ ]
7676
+ },
7677
+ "keyframes": {
7678
+ "declared": [],
7679
+ "referenced": []
7680
+ }
7681
+ },
7634
7682
  "Navbar.navbar": {
7635
7683
  "key": "Navbar.navbar",
7636
7684
  "component": "Navbar",
@@ -15215,9 +15263,6 @@
15215
15263
  "base": [
15216
15264
  "color-wheel-flower__ring-shell"
15217
15265
  ],
15218
- "outer": [
15219
- "color-wheel-flower__ring-shell--outer"
15220
- ],
15221
15266
  "inner": [
15222
15267
  "color-wheel-flower__ring-shell--inner"
15223
15268
  ]
@@ -15226,9 +15271,6 @@
15226
15271
  "base": [
15227
15272
  "color-wheel-flower__ring"
15228
15273
  ],
15229
- "outer": [
15230
- "color-wheel-flower__ring--outer"
15231
- ],
15232
15274
  "inner": [
15233
15275
  "color-wheel-flower__ring--inner"
15234
15276
  ]
@@ -15283,10 +15325,8 @@
15283
15325
  ".color-wheel-flower__picker",
15284
15326
  ".color-wheel-flower__ring",
15285
15327
  ".color-wheel-flower__ring--inner",
15286
- ".color-wheel-flower__ring--outer",
15287
15328
  ".color-wheel-flower__ring-shell",
15288
15329
  ".color-wheel-flower__ring-shell--inner",
15289
- ".color-wheel-flower__ring-shell--outer",
15290
15330
  ".color-wheel-flower__rings",
15291
15331
  ".color-wheel-flower__swatch",
15292
15332
  ".color-wheel-flower__swatch--center",
@@ -19572,12 +19612,6 @@
19572
19612
  "ColorWheelFlower"
19573
19613
  ]
19574
19614
  },
19575
- {
19576
- "selector": ".color-wheel-flower__ring--outer",
19577
- "components": [
19578
- "ColorWheelFlower"
19579
- ]
19580
- },
19581
19615
  {
19582
19616
  "selector": ".color-wheel-flower__ring-shell",
19583
19617
  "components": [
@@ -19590,12 +19624,6 @@
19590
19624
  "ColorWheelFlower"
19591
19625
  ]
19592
19626
  },
19593
- {
19594
- "selector": ".color-wheel-flower__ring-shell--outer",
19595
- "components": [
19596
- "ColorWheelFlower"
19597
- ]
19598
- },
19599
19627
  {
19600
19628
  "selector": ".color-wheel-flower__rings",
19601
19629
  "components": [
@@ -25333,6 +25361,78 @@
25333
25361
  "ImmersiveLanding.pwaPrompt"
25334
25362
  ]
25335
25363
  },
25364
+ {
25365
+ "selector": ".inline-edit",
25366
+ "components": [
25367
+ "InlineEdit"
25368
+ ]
25369
+ },
25370
+ {
25371
+ "selector": ".inline-edit__edit",
25372
+ "components": [
25373
+ "InlineEdit"
25374
+ ]
25375
+ },
25376
+ {
25377
+ "selector": ".inline-edit__field",
25378
+ "components": [
25379
+ "InlineEdit"
25380
+ ]
25381
+ },
25382
+ {
25383
+ "selector": ".inline-edit__field:focus",
25384
+ "components": [
25385
+ "InlineEdit"
25386
+ ]
25387
+ },
25388
+ {
25389
+ "selector": ".inline-edit__read",
25390
+ "components": [
25391
+ "InlineEdit"
25392
+ ]
25393
+ },
25394
+ {
25395
+ "selector": ".inline-edit__trigger",
25396
+ "components": [
25397
+ "InlineEdit"
25398
+ ]
25399
+ },
25400
+ {
25401
+ "selector": ".inline-edit__trigger:hover",
25402
+ "components": [
25403
+ "InlineEdit"
25404
+ ]
25405
+ },
25406
+ {
25407
+ "selector": ".inline-edit__value",
25408
+ "components": [
25409
+ "InlineEdit"
25410
+ ]
25411
+ },
25412
+ {
25413
+ "selector": ".inline-edit--disabled .inline-edit__trigger",
25414
+ "components": [
25415
+ "InlineEdit"
25416
+ ]
25417
+ },
25418
+ {
25419
+ "selector": ".inline-edit--editing .inline-edit__edit",
25420
+ "components": [
25421
+ "InlineEdit"
25422
+ ]
25423
+ },
25424
+ {
25425
+ "selector": ".inline-edit--editing .inline-edit__read",
25426
+ "components": [
25427
+ "InlineEdit"
25428
+ ]
25429
+ },
25430
+ {
25431
+ "selector": ".inline-edit--full-width",
25432
+ "components": [
25433
+ "InlineEdit"
25434
+ ]
25435
+ },
25336
25436
  {
25337
25437
  "selector": ".input__icon",
25338
25438
  "components": [
@@ -30828,6 +30928,7 @@
30828
30928
  "ImmersiveLanding.navigation",
30829
30929
  "ImmersiveLanding.page",
30830
30930
  "ImmersiveLanding.pwaPrompt",
30931
+ "InlineEdit",
30831
30932
  "Input",
30832
30933
  "InputOTP.Group",
30833
30934
  "InputOTP.Input",
@@ -31065,6 +31166,7 @@
31065
31166
  "ImmersiveLanding.navigation",
31066
31167
  "ImmersiveLanding.page",
31067
31168
  "ImmersiveLanding.pwaPrompt",
31169
+ "InlineEdit",
31068
31170
  "Input",
31069
31171
  "InputOTP.Group",
31070
31172
  "InputOTP.Input",
@@ -31996,6 +32098,7 @@
31996
32098
  "ImmersiveLanding.navigation",
31997
32099
  "ImmersiveLanding.page",
31998
32100
  "ImmersiveLanding.pwaPrompt",
32101
+ "InlineEdit",
31999
32102
  "Input",
32000
32103
  "Kbd",
32001
32104
  "LanguageSwitcher",
@@ -32053,6 +32156,7 @@
32053
32156
  "ImmersiveLanding.navigation",
32054
32157
  "ImmersiveLanding.page",
32055
32158
  "ImmersiveLanding.pwaPrompt",
32159
+ "InlineEdit",
32056
32160
  "Input",
32057
32161
  "InputOTP.Group",
32058
32162
  "InputOTP.Input",
@@ -32133,6 +32237,7 @@
32133
32237
  "ImmersiveLanding.navigation",
32134
32238
  "ImmersiveLanding.page",
32135
32239
  "ImmersiveLanding.pwaPrompt",
32240
+ "InlineEdit",
32136
32241
  "LanguageSwitcher",
32137
32242
  "LiveChat.bubble",
32138
32243
  "LiveChat.panel",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pathscale/ui",
3
- "version": "2.9.3",
3
+ "version": "2.11.0",
4
4
  "author": "pathscale",
5
5
  "repository": {
6
6
  "type": "git",