@underlayerdev/ui 0.17.1 → 0.18.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.
@@ -1114,140 +1114,6 @@ i0.ɵɵngDeclareClassMetadata({
1114
1114
  }]
1115
1115
  }
1116
1116
  });
1117
- var BreadcrumbComponent = class BreadcrumbComponent {
1118
- items = input.required(...ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []);
1119
- separator = input("chevron_right", ...ngDevMode ? [{ debugName: "separator" }] : /* istanbul ignore next */ []);
1120
- maxItems = input(void 0, ...ngDevMode ? [{ debugName: "maxItems" }] : /* istanbul ignore next */ []);
1121
- isLastItem(index) {
1122
- return index === this.items().length - 1;
1123
- }
1124
- shouldShowOnMobile(index) {
1125
- const items = this.items();
1126
- const max = this.maxItems();
1127
- if (!max || items.length <= max) return true;
1128
- if (index === 0) return true;
1129
- if (index >= items.length - 2) return true;
1130
- return false;
1131
- }
1132
- shouldShowEllipsisOnMobile() {
1133
- const items = this.items();
1134
- const max = this.maxItems();
1135
- if (!max || items.length <= max) return false;
1136
- return items.length > max + 1;
1137
- }
1138
- static ɵfac = i0.ɵɵngDeclareFactory({
1139
- minVersion: "12.0.0",
1140
- version: "22.2.2",
1141
- ngImport: i0,
1142
- type: BreadcrumbComponent,
1143
- deps: [],
1144
- target: i0.ɵɵFactoryTarget.Component
1145
- });
1146
- static ɵcmp = i0.ɵɵngDeclareComponent({
1147
- minVersion: "17.0.0",
1148
- version: "22.2.2",
1149
- type: BreadcrumbComponent,
1150
- isStandalone: true,
1151
- selector: "ul-breadcrumb",
1152
- inputs: {
1153
- items: {
1154
- classPropertyName: "items",
1155
- publicName: "items",
1156
- isSignal: true,
1157
- isRequired: true,
1158
- transformFunction: null
1159
- },
1160
- separator: {
1161
- classPropertyName: "separator",
1162
- publicName: "separator",
1163
- isSignal: true,
1164
- isRequired: false,
1165
- transformFunction: null
1166
- },
1167
- maxItems: {
1168
- classPropertyName: "maxItems",
1169
- publicName: "maxItems",
1170
- isSignal: true,
1171
- isRequired: false,
1172
- transformFunction: null
1173
- }
1174
- },
1175
- ngImport: i0,
1176
- template: "<nav class=\"ul-breadcrumb\" aria-label=\"Breadcrumb\">\n <ol class=\"ul-breadcrumb__list\">\n @for (item of items(); track $index) {\n <li\n class=\"ul-breadcrumb__item\"\n [class.ul-breadcrumb__item--current]=\"isLastItem($index)\"\n [class.ul-breadcrumb__item--with-icon]=\"item.icon\"\n [class.ul-breadcrumb__item--hidden-mobile]=\"maxItems() && !shouldShowOnMobile($index)\"\n >\n @if (isLastItem($index)) {\n <span class=\"ul-breadcrumb__text\" aria-current=\"page\">\n @if (item.icon) {\n <ul-icon [icon]=\"item.icon\" size=\"5\" class=\"ul-breadcrumb__icon\" />\n }\n {{ item.label }}\n </span>\n } @else {\n @if (item.href) {\n <a [href]=\"item.href\" class=\"ul-breadcrumb__link\">\n @if (item.icon) {\n <ul-icon [icon]=\"item.icon\" size=\"5\" class=\"ul-breadcrumb__icon\" />\n }\n {{ item.label }}\n </a>\n } @else if (item.routerLink) {\n <a [routerLink]=\"item.routerLink\" class=\"ul-breadcrumb__link\">\n @if (item.icon) {\n <ul-icon [icon]=\"item.icon\" size=\"5\" class=\"ul-breadcrumb__icon\" />\n }\n {{ item.label }}\n </a>\n } @else {\n <span class=\"ul-breadcrumb__text\">\n @if (item.icon) {\n <ul-icon [icon]=\"item.icon\" size=\"5\" class=\"ul-breadcrumb__icon\" />\n }\n {{ item.label }}\n </span>\n }\n }\n\n @if (!isLastItem($index)) {\n <span class=\"ul-breadcrumb__separator\" aria-hidden=\"true\">\n @if (separator() === 'chevron_right') {\n <ul-icon icon=\"chevron_right\" size=\"5\" />\n } @else if (separator() === 'slash') {\n <span class=\"ul-breadcrumb__separator-text\">/</span>\n } @else if (separator() === 'dot') {\n <span class=\"ul-breadcrumb__separator-text\">·</span>\n }\n </span>\n }\n </li>\n }\n\n @if (shouldShowEllipsisOnMobile()) {\n <li class=\"ul-breadcrumb__item ul-breadcrumb__item--ellipsis\" aria-hidden=\"true\">\n <span class=\"ul-breadcrumb__ellipsis\">...</span>\n <span class=\"ul-breadcrumb__separator\" aria-hidden=\"true\">\n @if (separator() === 'chevron_right') {\n <ul-icon icon=\"chevron_right\" size=\"5\" />\n } @else if (separator() === 'slash') {\n <span class=\"ul-breadcrumb__separator-text\">/</span>\n } @else if (separator() === 'dot') {\n <span class=\"ul-breadcrumb__separator-text\">·</span>\n }\n </span>\n </li>\n }\n </ol>\n</nav>\n",
1177
- styles: [".ul-breadcrumb{display:flex;align-items:center;width:100%}.ul-breadcrumb__list{display:flex;align-items:center;flex-wrap:wrap;gap:4px;list-style:none;margin:0;padding:0}.ul-breadcrumb__item{display:flex;align-items:center;gap:4px}.ul-breadcrumb__item--current .ul-breadcrumb__text{color:#fff;font-weight:800}.ul-breadcrumb__item--with-icon .ul-breadcrumb__icon{flex-shrink:0}@media(max-width:1023px){.ul-breadcrumb__item--hidden-mobile{display:none}}@media(min-width:1024px){.ul-breadcrumb__item--ellipsis{display:none}}.ul-breadcrumb__link{font-family:Underlayer Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:500;display:inline-flex;align-items:center;gap:4px;color:#ffffffb3;text-decoration:none;transition:color .25s cubic-bezier(.4,0,.2,1)}.ul-breadcrumb__link:hover{color:#fff}.ul-breadcrumb__link:focus-visible{outline-offset:2px;outline:rgba(255,255,255,.3) solid 2px;border-radius:4px}.ul-breadcrumb__text{font-family:Underlayer Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:500;display:inline-flex;align-items:center;gap:4px;color:#fff}.ul-breadcrumb__icon{flex-shrink:0;color:inherit}.ul-breadcrumb__separator{display:inline-flex;align-items:center;color:#ffffff4d;margin:0 4px;flex-shrink:0}.ul-breadcrumb__separator-text{font-family:Underlayer Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:500;-webkit-user-select:none;user-select:none}.ul-breadcrumb__ellipsis{font-family:Underlayer Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:500;color:#ffffff4d;margin:0 4px;-webkit-user-select:none;user-select:none}@media(max-width:1023px){.ul-breadcrumb__list,.ul-breadcrumb__item{gap:4px}.ul-breadcrumb__link,.ul-breadcrumb__text{font-family:Underlayer Nunito Sans;line-height:20px;font-size:14px;letter-spacing:.14px;font-weight:500}.ul-breadcrumb__separator{margin:0 4px}}@media(min-width:1024px)and (max-width:1279px){.ul-breadcrumb__list{gap:8px}.ul-breadcrumb__item{gap:4px}.ul-breadcrumb__separator{margin:0 8px}}@media(min-width:1280px){.ul-breadcrumb__list,.ul-breadcrumb__item{gap:8px}.ul-breadcrumb__separator{margin:0 8px}}\n"],
1178
- dependencies: [{
1179
- kind: "component",
1180
- type: IconComponent,
1181
- selector: "ul-icon",
1182
- inputs: [
1183
- "size",
1184
- "weight",
1185
- "icon"
1186
- ]
1187
- }, {
1188
- kind: "directive",
1189
- type: RouterLink,
1190
- selector: "[routerLink]",
1191
- inputs: [
1192
- "target",
1193
- "queryParams",
1194
- "fragment",
1195
- "queryParamsHandling",
1196
- "state",
1197
- "info",
1198
- "relativeTo",
1199
- "preserveFragment",
1200
- "skipLocationChange",
1201
- "replaceUrl",
1202
- "browserUrl",
1203
- "routerLink"
1204
- ]
1205
- }],
1206
- encapsulation: i0.ViewEncapsulation.None
1207
- });
1208
- };
1209
- i0.ɵɵngDeclareClassMetadata({
1210
- minVersion: "12.0.0",
1211
- version: "22.2.2",
1212
- ngImport: i0,
1213
- type: BreadcrumbComponent,
1214
- decorators: [{
1215
- type: Component,
1216
- args: [{
1217
- selector: "ul-breadcrumb",
1218
- imports: [IconComponent, RouterLink],
1219
- encapsulation: ViewEncapsulation.None,
1220
- template: "<nav class=\"ul-breadcrumb\" aria-label=\"Breadcrumb\">\n <ol class=\"ul-breadcrumb__list\">\n @for (item of items(); track $index) {\n <li\n class=\"ul-breadcrumb__item\"\n [class.ul-breadcrumb__item--current]=\"isLastItem($index)\"\n [class.ul-breadcrumb__item--with-icon]=\"item.icon\"\n [class.ul-breadcrumb__item--hidden-mobile]=\"maxItems() && !shouldShowOnMobile($index)\"\n >\n @if (isLastItem($index)) {\n <span class=\"ul-breadcrumb__text\" aria-current=\"page\">\n @if (item.icon) {\n <ul-icon [icon]=\"item.icon\" size=\"5\" class=\"ul-breadcrumb__icon\" />\n }\n {{ item.label }}\n </span>\n } @else {\n @if (item.href) {\n <a [href]=\"item.href\" class=\"ul-breadcrumb__link\">\n @if (item.icon) {\n <ul-icon [icon]=\"item.icon\" size=\"5\" class=\"ul-breadcrumb__icon\" />\n }\n {{ item.label }}\n </a>\n } @else if (item.routerLink) {\n <a [routerLink]=\"item.routerLink\" class=\"ul-breadcrumb__link\">\n @if (item.icon) {\n <ul-icon [icon]=\"item.icon\" size=\"5\" class=\"ul-breadcrumb__icon\" />\n }\n {{ item.label }}\n </a>\n } @else {\n <span class=\"ul-breadcrumb__text\">\n @if (item.icon) {\n <ul-icon [icon]=\"item.icon\" size=\"5\" class=\"ul-breadcrumb__icon\" />\n }\n {{ item.label }}\n </span>\n }\n }\n\n @if (!isLastItem($index)) {\n <span class=\"ul-breadcrumb__separator\" aria-hidden=\"true\">\n @if (separator() === 'chevron_right') {\n <ul-icon icon=\"chevron_right\" size=\"5\" />\n } @else if (separator() === 'slash') {\n <span class=\"ul-breadcrumb__separator-text\">/</span>\n } @else if (separator() === 'dot') {\n <span class=\"ul-breadcrumb__separator-text\">·</span>\n }\n </span>\n }\n </li>\n }\n\n @if (shouldShowEllipsisOnMobile()) {\n <li class=\"ul-breadcrumb__item ul-breadcrumb__item--ellipsis\" aria-hidden=\"true\">\n <span class=\"ul-breadcrumb__ellipsis\">...</span>\n <span class=\"ul-breadcrumb__separator\" aria-hidden=\"true\">\n @if (separator() === 'chevron_right') {\n <ul-icon icon=\"chevron_right\" size=\"5\" />\n } @else if (separator() === 'slash') {\n <span class=\"ul-breadcrumb__separator-text\">/</span>\n } @else if (separator() === 'dot') {\n <span class=\"ul-breadcrumb__separator-text\">·</span>\n }\n </span>\n </li>\n }\n </ol>\n</nav>\n",
1221
- styles: [".ul-breadcrumb{display:flex;align-items:center;width:100%}.ul-breadcrumb__list{display:flex;align-items:center;flex-wrap:wrap;gap:4px;list-style:none;margin:0;padding:0}.ul-breadcrumb__item{display:flex;align-items:center;gap:4px}.ul-breadcrumb__item--current .ul-breadcrumb__text{color:#fff;font-weight:800}.ul-breadcrumb__item--with-icon .ul-breadcrumb__icon{flex-shrink:0}@media(max-width:1023px){.ul-breadcrumb__item--hidden-mobile{display:none}}@media(min-width:1024px){.ul-breadcrumb__item--ellipsis{display:none}}.ul-breadcrumb__link{font-family:Underlayer Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:500;display:inline-flex;align-items:center;gap:4px;color:#ffffffb3;text-decoration:none;transition:color .25s cubic-bezier(.4,0,.2,1)}.ul-breadcrumb__link:hover{color:#fff}.ul-breadcrumb__link:focus-visible{outline-offset:2px;outline:rgba(255,255,255,.3) solid 2px;border-radius:4px}.ul-breadcrumb__text{font-family:Underlayer Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:500;display:inline-flex;align-items:center;gap:4px;color:#fff}.ul-breadcrumb__icon{flex-shrink:0;color:inherit}.ul-breadcrumb__separator{display:inline-flex;align-items:center;color:#ffffff4d;margin:0 4px;flex-shrink:0}.ul-breadcrumb__separator-text{font-family:Underlayer Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:500;-webkit-user-select:none;user-select:none}.ul-breadcrumb__ellipsis{font-family:Underlayer Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:500;color:#ffffff4d;margin:0 4px;-webkit-user-select:none;user-select:none}@media(max-width:1023px){.ul-breadcrumb__list,.ul-breadcrumb__item{gap:4px}.ul-breadcrumb__link,.ul-breadcrumb__text{font-family:Underlayer Nunito Sans;line-height:20px;font-size:14px;letter-spacing:.14px;font-weight:500}.ul-breadcrumb__separator{margin:0 4px}}@media(min-width:1024px)and (max-width:1279px){.ul-breadcrumb__list{gap:8px}.ul-breadcrumb__item{gap:4px}.ul-breadcrumb__separator{margin:0 8px}}@media(min-width:1280px){.ul-breadcrumb__list,.ul-breadcrumb__item{gap:8px}.ul-breadcrumb__separator{margin:0 8px}}\n"]
1222
- }]
1223
- }],
1224
- propDecorators: {
1225
- items: [{
1226
- type: i0.Input,
1227
- args: [{
1228
- isSignal: true,
1229
- alias: "items",
1230
- required: true
1231
- }]
1232
- }],
1233
- separator: [{
1234
- type: i0.Input,
1235
- args: [{
1236
- isSignal: true,
1237
- alias: "separator",
1238
- required: false
1239
- }]
1240
- }],
1241
- maxItems: [{
1242
- type: i0.Input,
1243
- args: [{
1244
- isSignal: true,
1245
- alias: "maxItems",
1246
- required: false
1247
- }]
1248
- }]
1249
- }
1250
- });
1251
1117
  var ButtonDirective = class ButtonDirective {
1252
1118
  baseClass = `ul-btn`;
1253
1119
  size = input("md", ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
@@ -1573,6 +1439,280 @@ i0.ɵɵngDeclareClassMetadata({
1573
1439
  }]
1574
1440
  }
1575
1441
  });
1442
+ const TONE_ICONS = {
1443
+ info: "info",
1444
+ alert: "alert",
1445
+ confirm: "check",
1446
+ error: "cross"
1447
+ };
1448
+ var BannerComponent = class BannerComponent {
1449
+ tone = input("info", ...ngDevMode ? [{ debugName: "tone" }] : /* istanbul ignore next */ []);
1450
+ icon = input(...ngDevMode ? [void 0, { debugName: "icon" }] : /* istanbul ignore next */ []);
1451
+ dismissible = input(false, ...ngDevMode ? [{ debugName: "dismissible" }] : /* istanbul ignore next */ []);
1452
+ dismissLabel = input("Dismiss", ...ngDevMode ? [{ debugName: "dismissLabel" }] : /* istanbul ignore next */ []);
1453
+ dismissed = output();
1454
+ resolvedIcon = computed(() => this.icon() ?? TONE_ICONS[this.tone()], ...ngDevMode ? [{ debugName: "resolvedIcon" }] : /* istanbul ignore next */ []);
1455
+ static ɵfac = i0.ɵɵngDeclareFactory({
1456
+ minVersion: "12.0.0",
1457
+ version: "22.2.2",
1458
+ ngImport: i0,
1459
+ type: BannerComponent,
1460
+ deps: [],
1461
+ target: i0.ɵɵFactoryTarget.Component
1462
+ });
1463
+ static ɵcmp = i0.ɵɵngDeclareComponent({
1464
+ minVersion: "17.0.0",
1465
+ version: "22.2.2",
1466
+ type: BannerComponent,
1467
+ isStandalone: true,
1468
+ selector: "ul-banner",
1469
+ inputs: {
1470
+ tone: {
1471
+ classPropertyName: "tone",
1472
+ publicName: "tone",
1473
+ isSignal: true,
1474
+ isRequired: false,
1475
+ transformFunction: null
1476
+ },
1477
+ icon: {
1478
+ classPropertyName: "icon",
1479
+ publicName: "icon",
1480
+ isSignal: true,
1481
+ isRequired: false,
1482
+ transformFunction: null
1483
+ },
1484
+ dismissible: {
1485
+ classPropertyName: "dismissible",
1486
+ publicName: "dismissible",
1487
+ isSignal: true,
1488
+ isRequired: false,
1489
+ transformFunction: null
1490
+ },
1491
+ dismissLabel: {
1492
+ classPropertyName: "dismissLabel",
1493
+ publicName: "dismissLabel",
1494
+ isSignal: true,
1495
+ isRequired: false,
1496
+ transformFunction: null
1497
+ }
1498
+ },
1499
+ outputs: { dismissed: "dismissed" },
1500
+ ngImport: i0,
1501
+ template: "<section class=\"ul-banner ul-banner--{{ tone() }}\">\n <ul-icon class=\"ul-banner__icon\" [icon]=\"resolvedIcon()\" size=\"6\" />\n\n <div class=\"ul-banner__body\">\n <div class=\"ul-banner__title\"><ng-content select=\"[ul-banner-title]\" /></div>\n <div class=\"ul-banner__message\"><ng-content /></div>\n </div>\n\n <div class=\"ul-banner__actions\"><ng-content select=\"[ul-banner-actions]\" /></div>\n\n @if (dismissible()) {\n <ul-button\n class=\"ul-banner__close\"\n theme=\"ghost-white\"\n size=\"xs\"\n [iconOnly]=\"true\"\n [ariaLabel]=\"dismissLabel()\"\n (buttonClick)=\"dismissed.emit()\"\n >\n <ul-icon icon=\"cross\" size=\"4\" />\n </ul-button>\n }\n</section>\n",
1502
+ styles: [":host{display:block}.ul-banner{display:flex;align-items:center;gap:16px;padding:16px;border:1px solid rgba(255,255,255,.1);border-radius:12px;background-color:#232323;color:#fff}@media(max-width:767px){.ul-banner{flex-wrap:wrap;align-items:flex-start}}.ul-banner__icon{flex-shrink:0}.ul-banner__body{flex:1 1 0;min-width:0}.ul-banner__title:not(:empty){margin-block-end:4px;font-family:Underlayer Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:800}.ul-banner__message{font-family:Underlayer Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400;color:#ffffffb3}.ul-banner__actions{display:flex;flex-shrink:0;justify-content:end;gap:8px}.ul-banner__actions:empty{display:none}@media(max-width:767px){.ul-banner__actions{order:3;width:100%}}.ul-banner__close{flex-shrink:0}@media(max-width:767px){.ul-banner__close{order:2}}.ul-banner--info{border-color:#c2a8ff}.ul-banner--alert{border-color:#ffd9af}.ul-banner--confirm{border-color:#7edc96}.ul-banner--error{border-color:#f69d9d}\n"],
1503
+ dependencies: [{
1504
+ kind: "component",
1505
+ type: ButtonComponent,
1506
+ selector: "ul-button",
1507
+ inputs: [
1508
+ "size",
1509
+ "theme",
1510
+ "iconOnly",
1511
+ "vertical",
1512
+ "disabled",
1513
+ "type",
1514
+ "ariaLabel"
1515
+ ],
1516
+ outputs: ["buttonClick"]
1517
+ }, {
1518
+ kind: "component",
1519
+ type: IconComponent,
1520
+ selector: "ul-icon",
1521
+ inputs: [
1522
+ "size",
1523
+ "weight",
1524
+ "icon"
1525
+ ]
1526
+ }]
1527
+ });
1528
+ };
1529
+ i0.ɵɵngDeclareClassMetadata({
1530
+ minVersion: "12.0.0",
1531
+ version: "22.2.2",
1532
+ ngImport: i0,
1533
+ type: BannerComponent,
1534
+ decorators: [{
1535
+ type: Component,
1536
+ args: [{
1537
+ selector: "ul-banner",
1538
+ imports: [ButtonComponent, IconComponent],
1539
+ template: "<section class=\"ul-banner ul-banner--{{ tone() }}\">\n <ul-icon class=\"ul-banner__icon\" [icon]=\"resolvedIcon()\" size=\"6\" />\n\n <div class=\"ul-banner__body\">\n <div class=\"ul-banner__title\"><ng-content select=\"[ul-banner-title]\" /></div>\n <div class=\"ul-banner__message\"><ng-content /></div>\n </div>\n\n <div class=\"ul-banner__actions\"><ng-content select=\"[ul-banner-actions]\" /></div>\n\n @if (dismissible()) {\n <ul-button\n class=\"ul-banner__close\"\n theme=\"ghost-white\"\n size=\"xs\"\n [iconOnly]=\"true\"\n [ariaLabel]=\"dismissLabel()\"\n (buttonClick)=\"dismissed.emit()\"\n >\n <ul-icon icon=\"cross\" size=\"4\" />\n </ul-button>\n }\n</section>\n",
1540
+ styles: [":host{display:block}.ul-banner{display:flex;align-items:center;gap:16px;padding:16px;border:1px solid rgba(255,255,255,.1);border-radius:12px;background-color:#232323;color:#fff}@media(max-width:767px){.ul-banner{flex-wrap:wrap;align-items:flex-start}}.ul-banner__icon{flex-shrink:0}.ul-banner__body{flex:1 1 0;min-width:0}.ul-banner__title:not(:empty){margin-block-end:4px;font-family:Underlayer Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:800}.ul-banner__message{font-family:Underlayer Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400;color:#ffffffb3}.ul-banner__actions{display:flex;flex-shrink:0;justify-content:end;gap:8px}.ul-banner__actions:empty{display:none}@media(max-width:767px){.ul-banner__actions{order:3;width:100%}}.ul-banner__close{flex-shrink:0}@media(max-width:767px){.ul-banner__close{order:2}}.ul-banner--info{border-color:#c2a8ff}.ul-banner--alert{border-color:#ffd9af}.ul-banner--confirm{border-color:#7edc96}.ul-banner--error{border-color:#f69d9d}\n"]
1541
+ }]
1542
+ }],
1543
+ propDecorators: {
1544
+ tone: [{
1545
+ type: i0.Input,
1546
+ args: [{
1547
+ isSignal: true,
1548
+ alias: "tone",
1549
+ required: false
1550
+ }]
1551
+ }],
1552
+ icon: [{
1553
+ type: i0.Input,
1554
+ args: [{
1555
+ isSignal: true,
1556
+ alias: "icon",
1557
+ required: false
1558
+ }]
1559
+ }],
1560
+ dismissible: [{
1561
+ type: i0.Input,
1562
+ args: [{
1563
+ isSignal: true,
1564
+ alias: "dismissible",
1565
+ required: false
1566
+ }]
1567
+ }],
1568
+ dismissLabel: [{
1569
+ type: i0.Input,
1570
+ args: [{
1571
+ isSignal: true,
1572
+ alias: "dismissLabel",
1573
+ required: false
1574
+ }]
1575
+ }],
1576
+ dismissed: [{
1577
+ type: i0.Output,
1578
+ args: ["dismissed"]
1579
+ }]
1580
+ }
1581
+ });
1582
+ var BreadcrumbComponent = class BreadcrumbComponent {
1583
+ items = input.required(...ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []);
1584
+ separator = input("chevron_right", ...ngDevMode ? [{ debugName: "separator" }] : /* istanbul ignore next */ []);
1585
+ maxItems = input(void 0, ...ngDevMode ? [{ debugName: "maxItems" }] : /* istanbul ignore next */ []);
1586
+ isLastItem(index) {
1587
+ return index === this.items().length - 1;
1588
+ }
1589
+ shouldShowOnMobile(index) {
1590
+ const items = this.items();
1591
+ const max = this.maxItems();
1592
+ if (!max || items.length <= max) return true;
1593
+ if (index === 0) return true;
1594
+ if (index >= items.length - 2) return true;
1595
+ return false;
1596
+ }
1597
+ shouldShowEllipsisOnMobile() {
1598
+ const items = this.items();
1599
+ const max = this.maxItems();
1600
+ if (!max || items.length <= max) return false;
1601
+ return items.length > max + 1;
1602
+ }
1603
+ static ɵfac = i0.ɵɵngDeclareFactory({
1604
+ minVersion: "12.0.0",
1605
+ version: "22.2.2",
1606
+ ngImport: i0,
1607
+ type: BreadcrumbComponent,
1608
+ deps: [],
1609
+ target: i0.ɵɵFactoryTarget.Component
1610
+ });
1611
+ static ɵcmp = i0.ɵɵngDeclareComponent({
1612
+ minVersion: "17.0.0",
1613
+ version: "22.2.2",
1614
+ type: BreadcrumbComponent,
1615
+ isStandalone: true,
1616
+ selector: "ul-breadcrumb",
1617
+ inputs: {
1618
+ items: {
1619
+ classPropertyName: "items",
1620
+ publicName: "items",
1621
+ isSignal: true,
1622
+ isRequired: true,
1623
+ transformFunction: null
1624
+ },
1625
+ separator: {
1626
+ classPropertyName: "separator",
1627
+ publicName: "separator",
1628
+ isSignal: true,
1629
+ isRequired: false,
1630
+ transformFunction: null
1631
+ },
1632
+ maxItems: {
1633
+ classPropertyName: "maxItems",
1634
+ publicName: "maxItems",
1635
+ isSignal: true,
1636
+ isRequired: false,
1637
+ transformFunction: null
1638
+ }
1639
+ },
1640
+ ngImport: i0,
1641
+ template: "<nav class=\"ul-breadcrumb\" aria-label=\"Breadcrumb\">\n <ol class=\"ul-breadcrumb__list\">\n @for (item of items(); track $index) {\n <li\n class=\"ul-breadcrumb__item\"\n [class.ul-breadcrumb__item--current]=\"isLastItem($index)\"\n [class.ul-breadcrumb__item--with-icon]=\"item.icon\"\n [class.ul-breadcrumb__item--hidden-mobile]=\"maxItems() && !shouldShowOnMobile($index)\"\n >\n @if (isLastItem($index)) {\n <span class=\"ul-breadcrumb__text\" aria-current=\"page\">\n @if (item.icon) {\n <ul-icon [icon]=\"item.icon\" size=\"5\" class=\"ul-breadcrumb__icon\" />\n }\n {{ item.label }}\n </span>\n } @else {\n @if (item.href) {\n <a [href]=\"item.href\" class=\"ul-breadcrumb__link\">\n @if (item.icon) {\n <ul-icon [icon]=\"item.icon\" size=\"5\" class=\"ul-breadcrumb__icon\" />\n }\n {{ item.label }}\n </a>\n } @else if (item.routerLink) {\n <a [routerLink]=\"item.routerLink\" class=\"ul-breadcrumb__link\">\n @if (item.icon) {\n <ul-icon [icon]=\"item.icon\" size=\"5\" class=\"ul-breadcrumb__icon\" />\n }\n {{ item.label }}\n </a>\n } @else {\n <span class=\"ul-breadcrumb__text\">\n @if (item.icon) {\n <ul-icon [icon]=\"item.icon\" size=\"5\" class=\"ul-breadcrumb__icon\" />\n }\n {{ item.label }}\n </span>\n }\n }\n\n @if (!isLastItem($index)) {\n <span class=\"ul-breadcrumb__separator\" aria-hidden=\"true\">\n @if (separator() === 'chevron_right') {\n <ul-icon icon=\"chevron_right\" size=\"5\" />\n } @else if (separator() === 'slash') {\n <span class=\"ul-breadcrumb__separator-text\">/</span>\n } @else if (separator() === 'dot') {\n <span class=\"ul-breadcrumb__separator-text\">·</span>\n }\n </span>\n }\n </li>\n }\n\n @if (shouldShowEllipsisOnMobile()) {\n <li class=\"ul-breadcrumb__item ul-breadcrumb__item--ellipsis\" aria-hidden=\"true\">\n <span class=\"ul-breadcrumb__ellipsis\">...</span>\n <span class=\"ul-breadcrumb__separator\" aria-hidden=\"true\">\n @if (separator() === 'chevron_right') {\n <ul-icon icon=\"chevron_right\" size=\"5\" />\n } @else if (separator() === 'slash') {\n <span class=\"ul-breadcrumb__separator-text\">/</span>\n } @else if (separator() === 'dot') {\n <span class=\"ul-breadcrumb__separator-text\">·</span>\n }\n </span>\n </li>\n }\n </ol>\n</nav>\n",
1642
+ styles: [".ul-breadcrumb{display:flex;align-items:center;width:100%}.ul-breadcrumb__list{display:flex;align-items:center;flex-wrap:wrap;gap:4px;list-style:none;margin:0;padding:0}.ul-breadcrumb__item{display:flex;align-items:center;gap:4px}.ul-breadcrumb__item--current .ul-breadcrumb__text{color:#fff;font-weight:800}.ul-breadcrumb__item--with-icon .ul-breadcrumb__icon{flex-shrink:0}@media(max-width:1023px){.ul-breadcrumb__item--hidden-mobile{display:none}}@media(min-width:1024px){.ul-breadcrumb__item--ellipsis{display:none}}.ul-breadcrumb__link{font-family:Underlayer Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:500;display:inline-flex;align-items:center;gap:4px;color:#ffffffb3;text-decoration:none;transition:color .25s cubic-bezier(.4,0,.2,1)}.ul-breadcrumb__link:hover{color:#fff}.ul-breadcrumb__link:focus-visible{outline-offset:2px;outline:rgba(255,255,255,.3) solid 2px;border-radius:4px}.ul-breadcrumb__text{font-family:Underlayer Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:500;display:inline-flex;align-items:center;gap:4px;color:#fff}.ul-breadcrumb__icon{flex-shrink:0;color:inherit}.ul-breadcrumb__separator{display:inline-flex;align-items:center;color:#ffffff4d;margin:0 4px;flex-shrink:0}.ul-breadcrumb__separator-text{font-family:Underlayer Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:500;-webkit-user-select:none;user-select:none}.ul-breadcrumb__ellipsis{font-family:Underlayer Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:500;color:#ffffff4d;margin:0 4px;-webkit-user-select:none;user-select:none}@media(max-width:1023px){.ul-breadcrumb__list,.ul-breadcrumb__item{gap:4px}.ul-breadcrumb__link,.ul-breadcrumb__text{font-family:Underlayer Nunito Sans;line-height:20px;font-size:14px;letter-spacing:.14px;font-weight:500}.ul-breadcrumb__separator{margin:0 4px}}@media(min-width:1024px)and (max-width:1279px){.ul-breadcrumb__list{gap:8px}.ul-breadcrumb__item{gap:4px}.ul-breadcrumb__separator{margin:0 8px}}@media(min-width:1280px){.ul-breadcrumb__list,.ul-breadcrumb__item{gap:8px}.ul-breadcrumb__separator{margin:0 8px}}\n"],
1643
+ dependencies: [{
1644
+ kind: "component",
1645
+ type: IconComponent,
1646
+ selector: "ul-icon",
1647
+ inputs: [
1648
+ "size",
1649
+ "weight",
1650
+ "icon"
1651
+ ]
1652
+ }, {
1653
+ kind: "directive",
1654
+ type: RouterLink,
1655
+ selector: "[routerLink]",
1656
+ inputs: [
1657
+ "target",
1658
+ "queryParams",
1659
+ "fragment",
1660
+ "queryParamsHandling",
1661
+ "state",
1662
+ "info",
1663
+ "relativeTo",
1664
+ "preserveFragment",
1665
+ "skipLocationChange",
1666
+ "replaceUrl",
1667
+ "browserUrl",
1668
+ "routerLink"
1669
+ ]
1670
+ }],
1671
+ encapsulation: i0.ViewEncapsulation.None
1672
+ });
1673
+ };
1674
+ i0.ɵɵngDeclareClassMetadata({
1675
+ minVersion: "12.0.0",
1676
+ version: "22.2.2",
1677
+ ngImport: i0,
1678
+ type: BreadcrumbComponent,
1679
+ decorators: [{
1680
+ type: Component,
1681
+ args: [{
1682
+ selector: "ul-breadcrumb",
1683
+ imports: [IconComponent, RouterLink],
1684
+ encapsulation: ViewEncapsulation.None,
1685
+ template: "<nav class=\"ul-breadcrumb\" aria-label=\"Breadcrumb\">\n <ol class=\"ul-breadcrumb__list\">\n @for (item of items(); track $index) {\n <li\n class=\"ul-breadcrumb__item\"\n [class.ul-breadcrumb__item--current]=\"isLastItem($index)\"\n [class.ul-breadcrumb__item--with-icon]=\"item.icon\"\n [class.ul-breadcrumb__item--hidden-mobile]=\"maxItems() && !shouldShowOnMobile($index)\"\n >\n @if (isLastItem($index)) {\n <span class=\"ul-breadcrumb__text\" aria-current=\"page\">\n @if (item.icon) {\n <ul-icon [icon]=\"item.icon\" size=\"5\" class=\"ul-breadcrumb__icon\" />\n }\n {{ item.label }}\n </span>\n } @else {\n @if (item.href) {\n <a [href]=\"item.href\" class=\"ul-breadcrumb__link\">\n @if (item.icon) {\n <ul-icon [icon]=\"item.icon\" size=\"5\" class=\"ul-breadcrumb__icon\" />\n }\n {{ item.label }}\n </a>\n } @else if (item.routerLink) {\n <a [routerLink]=\"item.routerLink\" class=\"ul-breadcrumb__link\">\n @if (item.icon) {\n <ul-icon [icon]=\"item.icon\" size=\"5\" class=\"ul-breadcrumb__icon\" />\n }\n {{ item.label }}\n </a>\n } @else {\n <span class=\"ul-breadcrumb__text\">\n @if (item.icon) {\n <ul-icon [icon]=\"item.icon\" size=\"5\" class=\"ul-breadcrumb__icon\" />\n }\n {{ item.label }}\n </span>\n }\n }\n\n @if (!isLastItem($index)) {\n <span class=\"ul-breadcrumb__separator\" aria-hidden=\"true\">\n @if (separator() === 'chevron_right') {\n <ul-icon icon=\"chevron_right\" size=\"5\" />\n } @else if (separator() === 'slash') {\n <span class=\"ul-breadcrumb__separator-text\">/</span>\n } @else if (separator() === 'dot') {\n <span class=\"ul-breadcrumb__separator-text\">·</span>\n }\n </span>\n }\n </li>\n }\n\n @if (shouldShowEllipsisOnMobile()) {\n <li class=\"ul-breadcrumb__item ul-breadcrumb__item--ellipsis\" aria-hidden=\"true\">\n <span class=\"ul-breadcrumb__ellipsis\">...</span>\n <span class=\"ul-breadcrumb__separator\" aria-hidden=\"true\">\n @if (separator() === 'chevron_right') {\n <ul-icon icon=\"chevron_right\" size=\"5\" />\n } @else if (separator() === 'slash') {\n <span class=\"ul-breadcrumb__separator-text\">/</span>\n } @else if (separator() === 'dot') {\n <span class=\"ul-breadcrumb__separator-text\">·</span>\n }\n </span>\n </li>\n }\n </ol>\n</nav>\n",
1686
+ styles: [".ul-breadcrumb{display:flex;align-items:center;width:100%}.ul-breadcrumb__list{display:flex;align-items:center;flex-wrap:wrap;gap:4px;list-style:none;margin:0;padding:0}.ul-breadcrumb__item{display:flex;align-items:center;gap:4px}.ul-breadcrumb__item--current .ul-breadcrumb__text{color:#fff;font-weight:800}.ul-breadcrumb__item--with-icon .ul-breadcrumb__icon{flex-shrink:0}@media(max-width:1023px){.ul-breadcrumb__item--hidden-mobile{display:none}}@media(min-width:1024px){.ul-breadcrumb__item--ellipsis{display:none}}.ul-breadcrumb__link{font-family:Underlayer Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:500;display:inline-flex;align-items:center;gap:4px;color:#ffffffb3;text-decoration:none;transition:color .25s cubic-bezier(.4,0,.2,1)}.ul-breadcrumb__link:hover{color:#fff}.ul-breadcrumb__link:focus-visible{outline-offset:2px;outline:rgba(255,255,255,.3) solid 2px;border-radius:4px}.ul-breadcrumb__text{font-family:Underlayer Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:500;display:inline-flex;align-items:center;gap:4px;color:#fff}.ul-breadcrumb__icon{flex-shrink:0;color:inherit}.ul-breadcrumb__separator{display:inline-flex;align-items:center;color:#ffffff4d;margin:0 4px;flex-shrink:0}.ul-breadcrumb__separator-text{font-family:Underlayer Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:500;-webkit-user-select:none;user-select:none}.ul-breadcrumb__ellipsis{font-family:Underlayer Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:500;color:#ffffff4d;margin:0 4px;-webkit-user-select:none;user-select:none}@media(max-width:1023px){.ul-breadcrumb__list,.ul-breadcrumb__item{gap:4px}.ul-breadcrumb__link,.ul-breadcrumb__text{font-family:Underlayer Nunito Sans;line-height:20px;font-size:14px;letter-spacing:.14px;font-weight:500}.ul-breadcrumb__separator{margin:0 4px}}@media(min-width:1024px)and (max-width:1279px){.ul-breadcrumb__list{gap:8px}.ul-breadcrumb__item{gap:4px}.ul-breadcrumb__separator{margin:0 8px}}@media(min-width:1280px){.ul-breadcrumb__list,.ul-breadcrumb__item{gap:8px}.ul-breadcrumb__separator{margin:0 8px}}\n"]
1687
+ }]
1688
+ }],
1689
+ propDecorators: {
1690
+ items: [{
1691
+ type: i0.Input,
1692
+ args: [{
1693
+ isSignal: true,
1694
+ alias: "items",
1695
+ required: true
1696
+ }]
1697
+ }],
1698
+ separator: [{
1699
+ type: i0.Input,
1700
+ args: [{
1701
+ isSignal: true,
1702
+ alias: "separator",
1703
+ required: false
1704
+ }]
1705
+ }],
1706
+ maxItems: [{
1707
+ type: i0.Input,
1708
+ args: [{
1709
+ isSignal: true,
1710
+ alias: "maxItems",
1711
+ required: false
1712
+ }]
1713
+ }]
1714
+ }
1715
+ });
1576
1716
  function createFormFieldIds(prefix) {
1577
1717
  const id = `${prefix}-${Math.random().toString(36).slice(2, 11)}`;
1578
1718
  return {
@@ -5979,17 +6119,24 @@ var DropdownComponent = class DropdownComponent {
5979
6119
  menuTriggerIcons = input(DEFAULT_MENU_TRIGGER_ICONS, ...ngDevMode ? [{ debugName: "menuTriggerIcons" }] : /* istanbul ignore next */ []);
5980
6120
  triggerIconOnly = input(...ngDevMode ? [void 0, { debugName: "triggerIconOnly" }] : /* istanbul ignore next */ []);
5981
6121
  iconOnlyLabel = input("Open menu", ...ngDevMode ? [{ debugName: "iconOnlyLabel" }] : /* istanbul ignore next */ []);
6122
+ placeholder = input(...ngDevMode ? [void 0, { debugName: "placeholder" }] : /* istanbul ignore next */ []);
5982
6123
  selectedIndex = model(0, ...ngDevMode ? [{ debugName: "selectedIndex" }] : /* istanbul ignore next */ []);
5983
6124
  selectedItem = computed(() => {
5984
6125
  const items = this.items();
6126
+ const index = this.selectedIndex();
6127
+ const fallback = {
6128
+ label: "",
6129
+ value: void 0,
6130
+ leftIcons: [],
6131
+ rightIcons: [],
6132
+ disabled: false
6133
+ };
6134
+ const placeholder = this.placeholder();
5985
6135
  return {
5986
- ...items[this.selectedIndex()] ?? items[0] ?? {
5987
- label: "",
5988
- value: void 0,
5989
- leftIcons: [],
5990
- rightIcons: [],
5991
- disabled: false
5992
- },
6136
+ ...placeholder !== void 0 && !items[index] ? {
6137
+ ...fallback,
6138
+ label: placeholder
6139
+ } : items[index] ?? items[0] ?? fallback,
5993
6140
  ...this.menuTriggerIcons() ?? DEFAULT_MENU_TRIGGER_ICONS
5994
6141
  };
5995
6142
  }, ...ngDevMode ? [{ debugName: "selectedItem" }] : /* istanbul ignore next */ []);
@@ -6075,6 +6222,13 @@ var DropdownComponent = class DropdownComponent {
6075
6222
  isRequired: false,
6076
6223
  transformFunction: null
6077
6224
  },
6225
+ placeholder: {
6226
+ classPropertyName: "placeholder",
6227
+ publicName: "placeholder",
6228
+ isSignal: true,
6229
+ isRequired: false,
6230
+ transformFunction: null
6231
+ },
6078
6232
  selectedIndex: {
6079
6233
  classPropertyName: "selectedIndex",
6080
6234
  publicName: "selectedIndex",
@@ -6208,6 +6362,14 @@ i0.ɵɵngDeclareClassMetadata({
6208
6362
  required: false
6209
6363
  }]
6210
6364
  }],
6365
+ placeholder: [{
6366
+ type: i0.Input,
6367
+ args: [{
6368
+ isSignal: true,
6369
+ alias: "placeholder",
6370
+ required: false
6371
+ }]
6372
+ }],
6211
6373
  selectedIndex: [{
6212
6374
  type: i0.Input,
6213
6375
  args: [{
@@ -13133,6 +13295,9 @@ i0.ɵɵngDeclareClassMetadata({
13133
13295
  }]
13134
13296
  }
13135
13297
  });
13298
+ function canHover() {
13299
+ return typeof window.matchMedia !== "function" || window.matchMedia("(hover: hover)").matches;
13300
+ }
13136
13301
  var TooltipComponent = class TooltipComponent {
13137
13302
  text = input("", ...ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []);
13138
13303
  position = input("top", ...ngDevMode ? [{ debugName: "position" }] : /* istanbul ignore next */ []);
@@ -13147,7 +13312,7 @@ var TooltipComponent = class TooltipComponent {
13147
13312
  return this.visible() && !!this.text() ? this.tooltipId : null;
13148
13313
  }
13149
13314
  handlePointerEnter() {
13150
- if (this.disabled() || !this.text()) return;
13315
+ if (this.disabled() || !this.text() || !canHover()) return;
13151
13316
  this.scheduleShow();
13152
13317
  }
13153
13318
  handlePointerLeave() {
@@ -13252,7 +13417,7 @@ var TooltipComponent = class TooltipComponent {
13252
13417
  },
13253
13418
  ngImport: i0,
13254
13419
  template: "<span class=\"ul-tooltip-wrapper\">\n <ng-content />\n\n @if (isVisible() && text()) {\n <span class=\"ul-tooltip ul-tooltip--{{ position() }}\" role=\"tooltip\" [attr.id]=\"tooltipId\">\n {{ text() }}\n </span>\n }\n</span>\n",
13255
- styles: [".ul-tooltip-wrapper{position:relative;display:inline-flex;align-items:center}.ul-tooltip{position:absolute;z-index:200;padding:8px 16px;border-radius:8px;background-color:#232323;font-weight:400;white-space:nowrap;pointer-events:none}.ul-tooltip--top{inset-block-end:100%;inset-inline-start:50%;margin-block-end:4px;transform:translate(-50%)}.ul-tooltip--bottom{inset-block-start:100%;inset-inline-start:50%;margin-block-start:4px;transform:translate(-50%)}.ul-tooltip--left{inset-inline-end:100%;inset-block-start:50%;margin-inline-end:4px;transform:translateY(-50%)}.ul-tooltip--right{inset-inline-start:100%;inset-block-start:50%;margin-inline-start:4px;transform:translateY(-50%)}\n"],
13420
+ styles: [".ul-tooltip-wrapper{position:relative;display:inline-flex;align-items:center}.ul-tooltip{position:absolute;z-index:200;padding:8px 16px;border-radius:8px;background-color:#232323;font-weight:400;white-space:nowrap;pointer-events:none}.ul-tooltip--top{inset-block-end:100%;inset-inline-start:50%;margin-block-end:4px;transform:translate(-50%)}.ul-tooltip--bottom{inset-block-start:100%;inset-inline-start:50%;margin-block-start:4px;transform:translate(-50%)}.ul-tooltip--left{inset-inline-end:100%;inset-block-start:50%;margin-inline-end:4px;transform:translateY(-50%)}.ul-tooltip--right{inset-inline-start:100%;inset-block-start:50%;margin-inline-start:4px;transform:translateY(-50%)}@media(hover:none){.ul-tooltip{display:none}}\n"],
13256
13421
  encapsulation: i0.ViewEncapsulation.None
13257
13422
  });
13258
13423
  };
@@ -13267,7 +13432,7 @@ i0.ɵɵngDeclareClassMetadata({
13267
13432
  selector: "ul-tooltip",
13268
13433
  encapsulation: ViewEncapsulation.None,
13269
13434
  template: "<span class=\"ul-tooltip-wrapper\">\n <ng-content />\n\n @if (isVisible() && text()) {\n <span class=\"ul-tooltip ul-tooltip--{{ position() }}\" role=\"tooltip\" [attr.id]=\"tooltipId\">\n {{ text() }}\n </span>\n }\n</span>\n",
13270
- styles: [".ul-tooltip-wrapper{position:relative;display:inline-flex;align-items:center}.ul-tooltip{position:absolute;z-index:200;padding:8px 16px;border-radius:8px;background-color:#232323;font-weight:400;white-space:nowrap;pointer-events:none}.ul-tooltip--top{inset-block-end:100%;inset-inline-start:50%;margin-block-end:4px;transform:translate(-50%)}.ul-tooltip--bottom{inset-block-start:100%;inset-inline-start:50%;margin-block-start:4px;transform:translate(-50%)}.ul-tooltip--left{inset-inline-end:100%;inset-block-start:50%;margin-inline-end:4px;transform:translateY(-50%)}.ul-tooltip--right{inset-inline-start:100%;inset-block-start:50%;margin-inline-start:4px;transform:translateY(-50%)}\n"]
13435
+ styles: [".ul-tooltip-wrapper{position:relative;display:inline-flex;align-items:center}.ul-tooltip{position:absolute;z-index:200;padding:8px 16px;border-radius:8px;background-color:#232323;font-weight:400;white-space:nowrap;pointer-events:none}.ul-tooltip--top{inset-block-end:100%;inset-inline-start:50%;margin-block-end:4px;transform:translate(-50%)}.ul-tooltip--bottom{inset-block-start:100%;inset-inline-start:50%;margin-block-start:4px;transform:translate(-50%)}.ul-tooltip--left{inset-inline-end:100%;inset-block-start:50%;margin-inline-end:4px;transform:translateY(-50%)}.ul-tooltip--right{inset-inline-start:100%;inset-block-start:50%;margin-inline-start:4px;transform:translateY(-50%)}@media(hover:none){.ul-tooltip{display:none}}\n"]
13271
13436
  }]
13272
13437
  }],
13273
13438
  propDecorators: {
@@ -14333,6 +14498,7 @@ i0.ɵɵngDeclareClassMetadata({
14333
14498
  }]
14334
14499
  }
14335
14500
  });
14501
+ const NO_SELECTION = -1;
14336
14502
  var SelectComponent = class SelectComponent {
14337
14503
  size = input("md", ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
14338
14504
  theme = input("transparent-white", ...ngDevMode ? [{ debugName: "theme" }] : /* istanbul ignore next */ []);
@@ -14368,17 +14534,11 @@ var SelectComponent = class SelectComponent {
14368
14534
  effect(() => {
14369
14535
  const currentValue = this.value();
14370
14536
  const options = this.options();
14371
- if (currentValue == null) {
14372
- this.selectedIndex.set(0);
14373
- return;
14374
- }
14375
- const index = options.findIndex((opt) => opt.value === currentValue);
14376
- this.selectedIndex.set(index >= 0 ? index : 0);
14537
+ this.selectedIndex.set(currentValue == null ? NO_SELECTION : options.findIndex((opt) => opt.value === currentValue));
14377
14538
  });
14378
14539
  }
14379
- onSelectedIndexChange(index) {
14380
- const option = this.options()[index];
14381
- this.selectedIndex.set(index);
14540
+ onItemSelected(item) {
14541
+ const option = this.options().find((candidate) => candidate.value === item.value);
14382
14542
  this.value.set(option?.value ?? null);
14383
14543
  }
14384
14544
  onDropdownClosed() {
@@ -14511,7 +14671,7 @@ var SelectComponent = class SelectComponent {
14511
14671
  selectedIndex: "selectedIndexChange"
14512
14672
  },
14513
14673
  ngImport: i0,
14514
- template: "<div\n class=\"ul-select ul-select--{{ size() }}\"\n [class.ul-select--disabled]=\"disabled()\"\n [class.ul-select--error]=\"hasError()\"\n [class.ul-select--required]=\"required()\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n>\n <ul-form-field-label\n [label]=\"label()\"\n [required]=\"required()\"\n [for]=\"ids.controlId\"\n [size]=\"size()\"\n [showRequiredIndicator]=\"showRequiredIndicator()\"\n />\n\n <div\n class=\"ul-select__control\"\n [id]=\"ids.controlId\"\n [class.ul-select__control--disabled]=\"disabled()\"\n >\n <ul-dropdown\n class=\"ul-select__dropdown\"\n [theme]=\"theme()\"\n [items]=\"items()\"\n [disabled]=\"disabled()\"\n [(selectedIndex)]=\"selectedIndex\"\n (selectedIndexChange)=\"onSelectedIndexChange($event)\"\n (closed)=\"onDropdownClosed()\"\n />\n </div>\n\n <ul-form-field-helper\n [id]=\"ids.helperId\"\n [helperText]=\"helperText()\"\n [errorText]=\"errorText() || (hasError() && errors().length ? errors()[0].message : '') || null\"\n [error]=\"hasError()\"\n />\n</div>\n",
14674
+ template: "<div\n class=\"ul-select ul-select--{{ size() }}\"\n [class.ul-select--disabled]=\"disabled()\"\n [class.ul-select--error]=\"hasError()\"\n [class.ul-select--required]=\"required()\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n>\n <ul-form-field-label\n [label]=\"label()\"\n [required]=\"required()\"\n [for]=\"ids.controlId\"\n [size]=\"size()\"\n [showRequiredIndicator]=\"showRequiredIndicator()\"\n />\n\n <div\n class=\"ul-select__control\"\n [id]=\"ids.controlId\"\n [class.ul-select__control--disabled]=\"disabled()\"\n >\n <ul-dropdown\n class=\"ul-select__dropdown\"\n [theme]=\"theme()\"\n [items]=\"items()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [selectedIndex]=\"selectedIndex()\"\n (selectedItemChange)=\"onItemSelected($event)\"\n (closed)=\"onDropdownClosed()\"\n />\n </div>\n\n <ul-form-field-helper\n [id]=\"ids.helperId\"\n [helperText]=\"helperText()\"\n [errorText]=\"errorText() || (hasError() && errors().length ? errors()[0].message : '') || null\"\n [error]=\"hasError()\"\n />\n</div>\n",
14515
14675
  styles: [".ul-select{white-space:nowrap;box-sizing:border-box;display:flex;flex-direction:column;width:100%;gap:4px}.ul-select__control{display:flex;align-items:center;min-height:40px;border:2px solid rgba(255,255,255,.1);border-radius:8px;background-color:transparent;transition:border-color .25s cubic-bezier(.4,0,.2,1)}.ul-select__control:hover{border-color:#ffffff4d}.ul-select__control:focus-within{border-color:#ffffff80}.ul-select__control .ul-list-item:focus-visible,.ul-select__control .ul-list-item:focus{outline:none}.ul-select__control--disabled{opacity:.6;cursor:not-allowed}.ul-select--disabled .ul-select__control{border-color:#ffffff1a}.ul-select--disabled .ul-select__control:hover,.ul-select--disabled .ul-select__control:focus-within{border-color:#ffffff1a}.ul-select--disabled .ul-select__control{opacity:.6;cursor:not-allowed}.ul-select__dropdown{width:100%}\n"],
14516
14676
  dependencies: [
14517
14677
  {
@@ -14525,6 +14685,7 @@ var SelectComponent = class SelectComponent {
14525
14685
  "menuTriggerIcons",
14526
14686
  "triggerIconOnly",
14527
14687
  "iconOnlyLabel",
14688
+ "placeholder",
14528
14689
  "selectedIndex"
14529
14690
  ],
14530
14691
  outputs: [
@@ -14575,7 +14736,7 @@ i0.ɵɵngDeclareClassMetadata({
14575
14736
  FormFieldHelperComponent
14576
14737
  ],
14577
14738
  encapsulation: ViewEncapsulation.None,
14578
- template: "<div\n class=\"ul-select ul-select--{{ size() }}\"\n [class.ul-select--disabled]=\"disabled()\"\n [class.ul-select--error]=\"hasError()\"\n [class.ul-select--required]=\"required()\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n>\n <ul-form-field-label\n [label]=\"label()\"\n [required]=\"required()\"\n [for]=\"ids.controlId\"\n [size]=\"size()\"\n [showRequiredIndicator]=\"showRequiredIndicator()\"\n />\n\n <div\n class=\"ul-select__control\"\n [id]=\"ids.controlId\"\n [class.ul-select__control--disabled]=\"disabled()\"\n >\n <ul-dropdown\n class=\"ul-select__dropdown\"\n [theme]=\"theme()\"\n [items]=\"items()\"\n [disabled]=\"disabled()\"\n [(selectedIndex)]=\"selectedIndex\"\n (selectedIndexChange)=\"onSelectedIndexChange($event)\"\n (closed)=\"onDropdownClosed()\"\n />\n </div>\n\n <ul-form-field-helper\n [id]=\"ids.helperId\"\n [helperText]=\"helperText()\"\n [errorText]=\"errorText() || (hasError() && errors().length ? errors()[0].message : '') || null\"\n [error]=\"hasError()\"\n />\n</div>\n",
14739
+ template: "<div\n class=\"ul-select ul-select--{{ size() }}\"\n [class.ul-select--disabled]=\"disabled()\"\n [class.ul-select--error]=\"hasError()\"\n [class.ul-select--required]=\"required()\"\n [attr.aria-invalid]=\"hasError()\"\n [attr.aria-required]=\"required()\"\n [attr.aria-describedby]=\"describedBy()\"\n>\n <ul-form-field-label\n [label]=\"label()\"\n [required]=\"required()\"\n [for]=\"ids.controlId\"\n [size]=\"size()\"\n [showRequiredIndicator]=\"showRequiredIndicator()\"\n />\n\n <div\n class=\"ul-select__control\"\n [id]=\"ids.controlId\"\n [class.ul-select__control--disabled]=\"disabled()\"\n >\n <ul-dropdown\n class=\"ul-select__dropdown\"\n [theme]=\"theme()\"\n [items]=\"items()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [selectedIndex]=\"selectedIndex()\"\n (selectedItemChange)=\"onItemSelected($event)\"\n (closed)=\"onDropdownClosed()\"\n />\n </div>\n\n <ul-form-field-helper\n [id]=\"ids.helperId\"\n [helperText]=\"helperText()\"\n [errorText]=\"errorText() || (hasError() && errors().length ? errors()[0].message : '') || null\"\n [error]=\"hasError()\"\n />\n</div>\n",
14579
14740
  styles: [".ul-select{white-space:nowrap;box-sizing:border-box;display:flex;flex-direction:column;width:100%;gap:4px}.ul-select__control{display:flex;align-items:center;min-height:40px;border:2px solid rgba(255,255,255,.1);border-radius:8px;background-color:transparent;transition:border-color .25s cubic-bezier(.4,0,.2,1)}.ul-select__control:hover{border-color:#ffffff4d}.ul-select__control:focus-within{border-color:#ffffff80}.ul-select__control .ul-list-item:focus-visible,.ul-select__control .ul-list-item:focus{outline:none}.ul-select__control--disabled{opacity:.6;cursor:not-allowed}.ul-select--disabled .ul-select__control{border-color:#ffffff1a}.ul-select--disabled .ul-select__control:hover,.ul-select--disabled .ul-select__control:focus-within{border-color:#ffffff1a}.ul-select--disabled .ul-select__control{opacity:.6;cursor:not-allowed}.ul-select__dropdown{width:100%}\n"]
14580
14741
  }]
14581
14742
  }],
@@ -16097,6 +16258,6 @@ i0.ɵɵngDeclareClassMetadata({
16097
16258
  }]
16098
16259
  }
16099
16260
  });
16100
- export { AccordionComponent, AccordionItemComponent, AreaCodeComponent, AvatarComponent, AvatarGroupComponent, BreadcrumbComponent, ButtonComponent, CalendarComponent, CardComponent, CategoryPickerComponent, CheckboxComponent, CollapseComponent, CustomCurrencyPipe, DockComponent, DockItemComponent, DockItemContentSlotDirective, DropdownComponent, FileInputComponent, FooterComponent, FormFieldHelperComponent, FormFieldLabelComponent, HeroComponent, IconComponent, ImageCropperComponent, ImageNotFoundComponent, ImageNotFoundDirective, InputComponent, ListItemComponent, LoadMoreComponent, LongPressDirective, MenuComponent, MenuItemComponent, MenuItemsComponent, MenuTriggerComponent, ModalComponent, NavbarAppNameSlotDirective, NavbarAvatarSlotDirective, NavbarComponent, NavbarLogoSlotDirective, NavbarSearchSlotDirective, PeHeroActionsSlotDirective, PeHeroBadgesSlotDirective, PeHeroContentSlotDirective, PeHeroSubtitleSlotDirective, PeHeroTitleSlotDirective, PillComponent, PriceButtonComponent, RadialComponent, RadioComponent, RadioGroupComponent, RichTextComponent, SearchInputComponent, SearchSelectComponent, SelectComponent, SelectableRowComponent, SidebarComponent, SkeletonComponent, StatusComponent, StepperComponent, TableComponent, TextareaComponent, TextareaFieldDirective, ToastContainerComponent, ToastService, ToggleComponent, TooltipComponent, createFormFieldIds, getFormFieldDescribedBy, toastIcon };
16261
+ export { AccordionComponent, AccordionItemComponent, AreaCodeComponent, AvatarComponent, AvatarGroupComponent, BannerComponent, BreadcrumbComponent, ButtonComponent, CalendarComponent, CardComponent, CategoryPickerComponent, CheckboxComponent, CollapseComponent, CustomCurrencyPipe, DockComponent, DockItemComponent, DockItemContentSlotDirective, DropdownComponent, FileInputComponent, FooterComponent, FormFieldHelperComponent, FormFieldLabelComponent, HeroComponent, IconComponent, ImageCropperComponent, ImageNotFoundComponent, ImageNotFoundDirective, InputComponent, ListItemComponent, LoadMoreComponent, LongPressDirective, MenuComponent, MenuItemComponent, MenuItemsComponent, MenuTriggerComponent, ModalComponent, NavbarAppNameSlotDirective, NavbarAvatarSlotDirective, NavbarComponent, NavbarLogoSlotDirective, NavbarSearchSlotDirective, PeHeroActionsSlotDirective, PeHeroBadgesSlotDirective, PeHeroContentSlotDirective, PeHeroSubtitleSlotDirective, PeHeroTitleSlotDirective, PillComponent, PriceButtonComponent, RadialComponent, RadioComponent, RadioGroupComponent, RichTextComponent, SearchInputComponent, SearchSelectComponent, SelectComponent, SelectableRowComponent, SidebarComponent, SkeletonComponent, StatusComponent, StepperComponent, TableComponent, TextareaComponent, TextareaFieldDirective, ToastContainerComponent, ToastService, ToggleComponent, TooltipComponent, createFormFieldIds, getFormFieldDescribedBy, toastIcon };
16101
16262
 
16102
16263
  //# sourceMappingURL=underlayerdev-ui.mjs.map