@brickclay-org/ui 0.1.74 → 0.1.76

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/index.d.ts CHANGED
@@ -1035,7 +1035,7 @@ declare class BkSelect implements ControlValueAccessor, AfterViewInit, OnDestroy
1035
1035
  disabled: _angular_core.ModelSignal<boolean>;
1036
1036
  loading: _angular_core.InputSignal<boolean>;
1037
1037
  closeOnSelect: _angular_core.InputSignal<boolean>;
1038
- dropdownPosition: _angular_core.InputSignal<"bottom" | "top">;
1038
+ dropdownPosition: _angular_core.InputSignal<"top" | "bottom">;
1039
1039
  hasError: boolean;
1040
1040
  errorMessage: string;
1041
1041
  appendToBody: _angular_core.InputSignal<boolean>;
@@ -1064,7 +1064,7 @@ declare class BkSelect implements ControlValueAccessor, AfterViewInit, OnDestroy
1064
1064
  selectedOptions: _angular_core.WritableSignal<any[]>;
1065
1065
  searchTerm: _angular_core.WritableSignal<string>;
1066
1066
  markedIndex: _angular_core.WritableSignal<number>;
1067
- placement: _angular_core.WritableSignal<"bottom" | "top">;
1067
+ placement: _angular_core.WritableSignal<"top" | "bottom">;
1068
1068
  private originalPanelParent;
1069
1069
  private originalPanelAnchor;
1070
1070
  private panelInBody;
@@ -2221,7 +2221,7 @@ declare class BkHierarchicalSelect implements ControlValueAccessor, AfterViewIni
2221
2221
  /** When true, dropdown is positioned fixed and sized to the trigger (use inside modals/popups). */
2222
2222
  appendToBody: _angular_core.InputSignal<boolean>;
2223
2223
  /** Open above or below the trigger (also used when appendToBody is true for fixed coordinates). */
2224
- dropdownPosition: _angular_core.InputSignal<"bottom" | "top">;
2224
+ dropdownPosition: _angular_core.InputSignal<"top" | "bottom">;
2225
2225
  /** Key for option color (e.g. "color"). When set, option label and selected value use this color. */
2226
2226
  colorKey: _angular_core.InputSignal<string>;
2227
2227
  /** Whether to show clear button when a value is selected. */
@@ -2250,7 +2250,7 @@ declare class BkHierarchicalSelect implements ControlValueAccessor, AfterViewIni
2250
2250
  controlWrapper: ElementRef<HTMLDivElement>;
2251
2251
  dropdownPanel?: ElementRef<HTMLDivElement>;
2252
2252
  private el;
2253
- placement: _angular_core.WritableSignal<"bottom" | "top">;
2253
+ placement: _angular_core.WritableSignal<"top" | "bottom">;
2254
2254
  private originalPanelParent;
2255
2255
  private originalPanelAnchor;
2256
2256
  private panelInBody;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brickclay-org/ui",
3
- "version": "0.1.74",
3
+ "version": "0.1.76",
4
4
  "schematics": "./schematics/collection.json",
5
5
  "ng-add": {
6
6
  "save": "dependencies"
@@ -0,0 +1,91 @@
1
+ /* inline-flex, not inline: an inline host puts its contents on a baseline and
2
+ gains descender space, which knocks the trigger out of line with whatever
3
+ sits beside it. */
4
+ :host {
5
+ @apply inline-flex;
6
+ }
7
+
8
+ .bk-popover-anchor {
9
+ @apply inline-flex;
10
+ }
11
+
12
+ /* ---- Panel ----
13
+ No overflow:hidden here — the arrow deliberately hangs outside the box. Put
14
+ any scrolling on the content you project instead. */
15
+ .bk-popover-panel {
16
+ @apply fixed z-[10000] bg-white border border-[#E3E3E7] rounded-lg p-3 cursor-default;
17
+ box-shadow: 0 12px 24px -6px rgba(16, 24, 40, 0.12), 0 4px 8px -4px rgba(16, 24, 40, 0.06);
18
+
19
+ /* Hidden for the first frame, which exists only so the panel can be measured
20
+ (see position() in popover.ts). The fade starts from the already-painted
21
+ hidden state, so it happens in place — nothing slides in from a corner. */
22
+ visibility: hidden;
23
+ opacity: 0;
24
+ }
25
+
26
+ .bk-popover-panel.bk-popover-ready {
27
+ visibility: visible;
28
+ opacity: 1;
29
+ transition: opacity 120ms ease-out;
30
+ }
31
+
32
+ /* ---- Arrow ----
33
+ A square rotated 45°, so it picks up the panel's own background and border
34
+ and matches it on every side — a CSS border-triangle can't have a border of
35
+ its own. Only the two outward-facing edges keep their border; the other two
36
+ sit inside the panel where a line would show. Being a positioned child, it
37
+ paints above the panel's border and hides the segment it crosses. */
38
+ .bk-popover-arrow {
39
+ @apply absolute block w-2.5 h-2.5 bg-white border border-[#E3E3E7];
40
+ }
41
+
42
+ /* Panel above the anchor: arrow on the bottom edge, pointing down. Under a 45°
43
+ rotation that tip is the square's bottom-right corner, so the bottom and
44
+ right borders are the ones on show. */
45
+ .bk-popover-panel[data-side="top"] .bk-popover-arrow {
46
+ bottom: -5px;
47
+ border-top: none;
48
+ border-left: none;
49
+ transform: translateX(-50%) rotate(45deg);
50
+ }
51
+
52
+ /* Panel below: arrow on the top edge, pointing up (top-left corner). */
53
+ .bk-popover-panel[data-side="bottom"] .bk-popover-arrow {
54
+ top: -5px;
55
+ border-bottom: none;
56
+ border-right: none;
57
+ transform: translateX(-50%) rotate(45deg);
58
+ }
59
+
60
+ /* Panel to the left: arrow on the right edge, pointing right (top-right corner). */
61
+ .bk-popover-panel[data-side="left"] .bk-popover-arrow {
62
+ right: -5px;
63
+ border-bottom: none;
64
+ border-left: none;
65
+ transform: translateY(-50%) rotate(45deg);
66
+ }
67
+
68
+ /* Panel to the right: arrow on the left edge, pointing left (bottom-left corner). */
69
+ .bk-popover-panel[data-side="right"] .bk-popover-arrow {
70
+ left: -5px;
71
+ border-top: none;
72
+ border-right: none;
73
+ transform: translateY(-50%) rotate(45deg);
74
+ }
75
+
76
+ /* ---- Content ---- */
77
+ .bk-popover-header {
78
+ @apply flex items-start justify-between gap-3 mb-1;
79
+ }
80
+
81
+ .bk-popover-title {
82
+ @apply text-sm font-semibold text-[#141414];
83
+ }
84
+
85
+ .bk-popover-close {
86
+ @apply shrink-0 text-gray-400 hover:text-[#141414] cursor-pointer -me-1 -mt-0.5;
87
+ }
88
+
89
+ .bk-popover-body {
90
+ @apply text-sm font-normal text-[#6B7080];
91
+ }
@@ -0,0 +1,31 @@
1
+ /* =========================
2
+ Avatar Group (stacked list)
3
+ ========================= */
4
+ .bk-avatar-group {
5
+ @apply inline-flex items-center;
6
+ }
7
+
8
+ /* Each slot wraps a bk-avatar. A white ring separates overlapping avatars;
9
+ hover lifts the avatar above its neighbours. */
10
+ .bk-avatar-group__item {
11
+ @apply relative inline-flex rounded-full transition-transform duration-150;
12
+ box-shadow: 0 0 0 2px #ffffff;
13
+ }
14
+
15
+ .bk-avatar-group__item:hover {
16
+ @apply z-10;
17
+ }
18
+
19
+ .bk-avatar-group__item--overflow {
20
+ @apply cursor-pointer;
21
+ }
22
+
23
+ /* =========================
24
+ Overlap per size (~1/3 of the avatar width)
25
+ ========================= */
26
+ .bk-avatar-group.xsm .bk-avatar-group__item:not(:first-child) { margin-left: -8px; }
27
+ .bk-avatar-group.sm .bk-avatar-group__item:not(:first-child) { margin-left: -10px; }
28
+ .bk-avatar-group.md .bk-avatar-group__item:not(:first-child) { margin-left: -12px; }
29
+ .bk-avatar-group.lg .bk-avatar-group__item:not(:first-child) { margin-left: -16px; }
30
+ .bk-avatar-group.xl .bk-avatar-group__item:not(:first-child) { margin-left: -18px; }
31
+ .bk-avatar-group.xxl .bk-avatar-group__item:not(:first-child) { margin-left: -20px; }