@lilydesignsystem/angular-picker-bar 0.4.0 → 0.5.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 CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  > **Link picker (0.3.0).** Pass `links` (and `labels.link`) to add a `link-picker` — a home icon opening the page links your app defines — as the leftmost icon. It renders only when both are given.
4
4
 
5
+ > **Time zone picker (0.5.0).** Set `labels().timeZone` and `timeZoneLocale` (plus `timeZones`, `timeZoneDate`, `timeZoneLabelFor`, `timeZoneNames`, and the two-way `timeZoneValue`) to add a `time-zone-picker` — time zones by UTC offset with their full names — right after the locale picker. It renders only when both the label and the locale are given. To name the text sizes in the reader's language pass `sizeLabels` through the text-size props (`textSizeLabels(pack)` / `LocaleTranslations.TextSizeLabels(locale)` from the locale-translations package).
6
+
5
7
  A single page-header row that composes five of the Lily
6
8
  [`*-picker` helpers](../index.md) — search, theme, locale, text size,
7
9
  and share, in that order — with two catalog-wide defaults pre-wired, so
@@ -4,6 +4,7 @@ import { LinkPicker } from "@lilydesignsystem/angular-link-picker";
4
4
  import { ThemePicker } from "@lilydesignsystem/angular-theme-picker";
5
5
  import { LocalePicker } from "@lilydesignsystem/angular-locale-picker";
6
6
  import { TextSizePicker } from "@lilydesignsystem/angular-text-size-picker";
7
+ import { DEFAULT_ZONES, TimeZonePicker } from "@lilydesignsystem/angular-time-zone-picker";
7
8
  import { SharePicker } from "@lilydesignsystem/angular-share-picker";
8
9
  import { SearchPicker } from "@lilydesignsystem/angular-search-picker";
9
10
  const DEFAULT_THEMES = [
@@ -103,6 +104,16 @@ var PickerBar = class PickerBar {
103
104
  this.localeTarget = input(null, ...ngDevMode ? [{ debugName: "localeTarget" }] : /* istanbul ignore next */ []);
104
105
  this.localeApplyDir = input(true, ...ngDevMode ? [{ debugName: "localeApplyDir" }] : /* istanbul ignore next */ []);
105
106
  this.localeLabels = input({}, ...ngDevMode ? [{ debugName: "localeLabels" }] : /* istanbul ignore next */ []);
107
+ this.timeZoneLocale = input(void 0, ...ngDevMode ? [{ debugName: "timeZoneLocale" }] : /* istanbul ignore next */ []);
108
+ this.timeZones = input(DEFAULT_ZONES, ...ngDevMode ? [{ debugName: "timeZones" }] : /* istanbul ignore next */ []);
109
+ this.timeZoneDate = input(void 0, ...ngDevMode ? [{ debugName: "timeZoneDate" }] : /* istanbul ignore next */ []);
110
+ this.timeZoneLabelFor = input(void 0, ...ngDevMode ? [{ debugName: "timeZoneLabelFor" }] : /* istanbul ignore next */ []);
111
+ this.timeZoneNames = input(void 0, ...ngDevMode ? [{ debugName: "timeZoneNames" }] : /* istanbul ignore next */ []);
112
+ this.timeZoneValue = model("", ...ngDevMode ? [{ debugName: "timeZoneValue" }] : /* istanbul ignore next */ []);
113
+ this.timeZoneDefaultValue = input("", ...ngDevMode ? [{ debugName: "timeZoneDefaultValue" }] : /* istanbul ignore next */ []);
114
+ this.timeZoneStorageKey = input("", ...ngDevMode ? [{ debugName: "timeZoneStorageKey" }] : /* istanbul ignore next */ []);
115
+ this.timeZoneName = input("time-zone", ...ngDevMode ? [{ debugName: "timeZoneName" }] : /* istanbul ignore next */ []);
116
+ this.timeZoneTarget = input(null, ...ngDevMode ? [{ debugName: "timeZoneTarget" }] : /* istanbul ignore next */ []);
106
117
  this.sizes = input(DEFAULT_SIZES, ...ngDevMode ? [{ debugName: "sizes" }] : /* istanbul ignore next */ []);
107
118
  this.textSizeValue = model("", ...ngDevMode ? [{ debugName: "textSizeValue" }] : /* istanbul ignore next */ []);
108
119
  this.textSizeDefaultValue = input("normal", ...ngDevMode ? [{ debugName: "textSizeDefaultValue" }] : /* istanbul ignore next */ []);
@@ -126,7 +137,7 @@ var PickerBar = class PickerBar {
126
137
  static {
127
138
  this.ɵfac = i0.ɵɵngDeclareFactory({
128
139
  minVersion: "12.0.0",
129
- version: "22.2.1",
140
+ version: "22.2.3",
130
141
  ngImport: i0,
131
142
  type: PickerBar,
132
143
  deps: [],
@@ -136,7 +147,7 @@ var PickerBar = class PickerBar {
136
147
  static {
137
148
  this.ɵcmp = i0.ɵɵngDeclareComponent({
138
149
  minVersion: "17.0.0",
139
- version: "22.2.1",
150
+ version: "22.2.3",
140
151
  type: PickerBar,
141
152
  isStandalone: true,
142
153
  selector: "lily-picker-bar",
@@ -316,6 +327,76 @@ var PickerBar = class PickerBar {
316
327
  isRequired: false,
317
328
  transformFunction: null
318
329
  },
330
+ timeZoneLocale: {
331
+ classPropertyName: "timeZoneLocale",
332
+ publicName: "timeZoneLocale",
333
+ isSignal: true,
334
+ isRequired: false,
335
+ transformFunction: null
336
+ },
337
+ timeZones: {
338
+ classPropertyName: "timeZones",
339
+ publicName: "timeZones",
340
+ isSignal: true,
341
+ isRequired: false,
342
+ transformFunction: null
343
+ },
344
+ timeZoneDate: {
345
+ classPropertyName: "timeZoneDate",
346
+ publicName: "timeZoneDate",
347
+ isSignal: true,
348
+ isRequired: false,
349
+ transformFunction: null
350
+ },
351
+ timeZoneLabelFor: {
352
+ classPropertyName: "timeZoneLabelFor",
353
+ publicName: "timeZoneLabelFor",
354
+ isSignal: true,
355
+ isRequired: false,
356
+ transformFunction: null
357
+ },
358
+ timeZoneNames: {
359
+ classPropertyName: "timeZoneNames",
360
+ publicName: "timeZoneNames",
361
+ isSignal: true,
362
+ isRequired: false,
363
+ transformFunction: null
364
+ },
365
+ timeZoneValue: {
366
+ classPropertyName: "timeZoneValue",
367
+ publicName: "timeZoneValue",
368
+ isSignal: true,
369
+ isRequired: false,
370
+ transformFunction: null
371
+ },
372
+ timeZoneDefaultValue: {
373
+ classPropertyName: "timeZoneDefaultValue",
374
+ publicName: "timeZoneDefaultValue",
375
+ isSignal: true,
376
+ isRequired: false,
377
+ transformFunction: null
378
+ },
379
+ timeZoneStorageKey: {
380
+ classPropertyName: "timeZoneStorageKey",
381
+ publicName: "timeZoneStorageKey",
382
+ isSignal: true,
383
+ isRequired: false,
384
+ transformFunction: null
385
+ },
386
+ timeZoneName: {
387
+ classPropertyName: "timeZoneName",
388
+ publicName: "timeZoneName",
389
+ isSignal: true,
390
+ isRequired: false,
391
+ transformFunction: null
392
+ },
393
+ timeZoneTarget: {
394
+ classPropertyName: "timeZoneTarget",
395
+ publicName: "timeZoneTarget",
396
+ isSignal: true,
397
+ isRequired: false,
398
+ transformFunction: null
399
+ },
319
400
  sizes: {
320
401
  classPropertyName: "sizes",
321
402
  publicName: "sizes",
@@ -435,6 +516,7 @@ var PickerBar = class PickerBar {
435
516
  searched: "searched",
436
517
  themeValue: "themeValueChange",
437
518
  localeValue: "localeValueChange",
519
+ timeZoneValue: "timeZoneValueChange",
438
520
  textSizeValue: "textSizeValueChange",
439
521
  share: "share",
440
522
  copy: "copy",
@@ -485,6 +567,21 @@ var PickerBar = class PickerBar {
485
567
  [applyDir]="localeApplyDir()"
486
568
  [localeLabels]="localeLabels()"
487
569
  />
570
+ @if (labels().timeZone && timeZoneLocale()) {
571
+ <lily-time-zone-picker
572
+ [label]="labels().timeZone!"
573
+ [locale]="timeZoneLocale()!"
574
+ [zones]="timeZones()"
575
+ [date]="timeZoneDate()"
576
+ [labelFor]="timeZoneLabelFor()"
577
+ [names]="timeZoneNames()"
578
+ [(value)]="timeZoneValue"
579
+ [defaultValue]="timeZoneDefaultValue()"
580
+ [storageKey]="timeZoneStorageKey()"
581
+ [name]="timeZoneName()"
582
+ [target]="timeZoneTarget()"
583
+ />
584
+ }
488
585
  <lily-text-size-picker
489
586
  [label]="labels().textSize"
490
587
  [sizes]="sizes()"
@@ -623,6 +720,32 @@ var PickerBar = class PickerBar {
623
720
  "openChange"
624
721
  ]
625
722
  },
723
+ {
724
+ kind: "component",
725
+ type: TimeZonePicker,
726
+ selector: "lily-time-zone-picker",
727
+ inputs: [
728
+ "label",
729
+ "locale",
730
+ "zones",
731
+ "date",
732
+ "labelFor",
733
+ "names",
734
+ "value",
735
+ "defaultValue",
736
+ "storageKey",
737
+ "name",
738
+ "target",
739
+ "className",
740
+ "open",
741
+ "disabled"
742
+ ],
743
+ outputs: [
744
+ "valueChange",
745
+ "zoneChange",
746
+ "openChange"
747
+ ]
748
+ },
626
749
  {
627
750
  kind: "component",
628
751
  type: SharePicker,
@@ -655,7 +778,7 @@ var PickerBar = class PickerBar {
655
778
  };
656
779
  i0.ɵɵngDeclareClassMetadata({
657
780
  minVersion: "12.0.0",
658
- version: "22.2.1",
781
+ version: "22.2.3",
659
782
  ngImport: i0,
660
783
  type: PickerBar,
661
784
  decorators: [{
@@ -669,6 +792,7 @@ i0.ɵɵngDeclareClassMetadata({
669
792
  ThemePicker,
670
793
  LocalePicker,
671
794
  TextSizePicker,
795
+ TimeZonePicker,
672
796
  SharePicker
673
797
  ],
674
798
  changeDetection: ChangeDetectionStrategy.OnPush,
@@ -716,6 +840,21 @@ i0.ɵɵngDeclareClassMetadata({
716
840
  [applyDir]="localeApplyDir()"
717
841
  [localeLabels]="localeLabels()"
718
842
  />
843
+ @if (labels().timeZone && timeZoneLocale()) {
844
+ <lily-time-zone-picker
845
+ [label]="labels().timeZone!"
846
+ [locale]="timeZoneLocale()!"
847
+ [zones]="timeZones()"
848
+ [date]="timeZoneDate()"
849
+ [labelFor]="timeZoneLabelFor()"
850
+ [names]="timeZoneNames()"
851
+ [(value)]="timeZoneValue"
852
+ [defaultValue]="timeZoneDefaultValue()"
853
+ [storageKey]="timeZoneStorageKey()"
854
+ [name]="timeZoneName()"
855
+ [target]="timeZoneTarget()"
856
+ />
857
+ }
719
858
  <lily-text-size-picker
720
859
  [label]="labels().textSize"
721
860
  [sizes]="sizes()"
@@ -962,6 +1101,89 @@ i0.ɵɵngDeclareClassMetadata({
962
1101
  required: false
963
1102
  }]
964
1103
  }],
1104
+ timeZoneLocale: [{
1105
+ type: i0.Input,
1106
+ args: [{
1107
+ isSignal: true,
1108
+ alias: "timeZoneLocale",
1109
+ required: false
1110
+ }]
1111
+ }],
1112
+ timeZones: [{
1113
+ type: i0.Input,
1114
+ args: [{
1115
+ isSignal: true,
1116
+ alias: "timeZones",
1117
+ required: false
1118
+ }]
1119
+ }],
1120
+ timeZoneDate: [{
1121
+ type: i0.Input,
1122
+ args: [{
1123
+ isSignal: true,
1124
+ alias: "timeZoneDate",
1125
+ required: false
1126
+ }]
1127
+ }],
1128
+ timeZoneLabelFor: [{
1129
+ type: i0.Input,
1130
+ args: [{
1131
+ isSignal: true,
1132
+ alias: "timeZoneLabelFor",
1133
+ required: false
1134
+ }]
1135
+ }],
1136
+ timeZoneNames: [{
1137
+ type: i0.Input,
1138
+ args: [{
1139
+ isSignal: true,
1140
+ alias: "timeZoneNames",
1141
+ required: false
1142
+ }]
1143
+ }],
1144
+ timeZoneValue: [{
1145
+ type: i0.Input,
1146
+ args: [{
1147
+ isSignal: true,
1148
+ alias: "timeZoneValue",
1149
+ required: false
1150
+ }]
1151
+ }, {
1152
+ type: i0.Output,
1153
+ args: ["timeZoneValueChange"]
1154
+ }],
1155
+ timeZoneDefaultValue: [{
1156
+ type: i0.Input,
1157
+ args: [{
1158
+ isSignal: true,
1159
+ alias: "timeZoneDefaultValue",
1160
+ required: false
1161
+ }]
1162
+ }],
1163
+ timeZoneStorageKey: [{
1164
+ type: i0.Input,
1165
+ args: [{
1166
+ isSignal: true,
1167
+ alias: "timeZoneStorageKey",
1168
+ required: false
1169
+ }]
1170
+ }],
1171
+ timeZoneName: [{
1172
+ type: i0.Input,
1173
+ args: [{
1174
+ isSignal: true,
1175
+ alias: "timeZoneName",
1176
+ required: false
1177
+ }]
1178
+ }],
1179
+ timeZoneTarget: [{
1180
+ type: i0.Input,
1181
+ args: [{
1182
+ isSignal: true,
1183
+ alias: "timeZoneTarget",
1184
+ required: false
1185
+ }]
1186
+ }],
965
1187
  sizes: [{
966
1188
  type: i0.Input,
967
1189
  args: [{
@@ -1 +1 @@
1
- {"version":3,"file":"lilydesignsystem-angular-picker-bar.mjs","names":[],"sources":["../../picker-bar.component.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input, model, output } from \"@angular/core\";\n\nimport {\n LinkPicker,\n type LinkItem,\n type LinkNavigatedEvent,\n} from \"@lilydesignsystem/angular-link-picker\";\nimport { ThemePicker } from \"@lilydesignsystem/angular-theme-picker\";\nimport { LocalePicker } from \"@lilydesignsystem/angular-locale-picker\";\nimport { TextSizePicker } from \"@lilydesignsystem/angular-text-size-picker\";\nimport {\n SharePicker,\n type ShareEvent,\n type ShareStrategy,\n type ShareTarget,\n} from \"@lilydesignsystem/angular-share-picker\";\nimport {\n SearchPicker,\n type SearchEvent,\n} from \"@lilydesignsystem/angular-search-picker\";\n\n/**\n * All 57 Lily reference theme slugs (see `themes/` at the repo root),\n * sorted alphabetically except the United Kingdom and United States\n * government/public-sector themes, which sort last as one alphabetical\n * group of their own. Mirrors `theme-picker`'s own title-casing of each\n * slug, so no `themeLabels` override is needed for these to read well.\n */\nexport const DEFAULT_THEMES: string[] = [\n \"abyss\",\n \"acid\",\n \"adobe-spectrum\",\n \"ant-design\",\n \"aqua\",\n \"atlassian\",\n \"autumn\",\n \"black\",\n \"bumblebee\",\n \"business\",\n \"cappuccino\",\n \"caramellatte\",\n \"cmyk\",\n \"coffee\",\n \"corporate\",\n \"cupcake\",\n \"cyberpunk\",\n \"dark\",\n \"dim\",\n \"dracula\",\n \"emerald\",\n \"excel\",\n \"fantasy\",\n \"fluent\",\n \"forest\",\n \"garden\",\n \"github-primer\",\n \"halloween\",\n \"ibm-carbon\",\n \"lemonade\",\n \"light\",\n \"linear\",\n \"lofi\",\n \"luxury\",\n \"mozilla-protocol\",\n \"night\",\n \"nord\",\n \"notion\",\n \"pastel\",\n \"retro\",\n \"salesforce\",\n \"sap-fiori\",\n \"silk\",\n \"sunset\",\n \"synthwave\",\n \"valentine\",\n \"vercel\",\n \"winter\",\n \"wireframe\",\n \"united-kingdom-government-digital-service\",\n \"united-kingdom-national-health-service-england-for-patients\",\n \"united-kingdom-national-health-service-england-for-practitioners\",\n \"united-kingdom-national-health-service-scotland-for-patients\",\n \"united-kingdom-national-health-service-scotland-for-practitioners\",\n \"united-kingdom-national-health-service-wales-for-patients\",\n \"united-kingdom-national-health-service-wales-for-practitioners\",\n \"united-states-web-design-system\",\n];\n\n/**\n * The seven-step text-size scale. Each slug title-cases to exactly the\n * requested label (\"largest\" → \"Largest\", …) via `text-size-picker`'s\n * own default `labelFor`, so no `sizeLabels` override is needed either.\n */\nexport const DEFAULT_SIZES: string[] = [\n \"largest\",\n \"larger\",\n \"large\",\n \"normal\",\n \"small\",\n \"smaller\",\n \"smallest\",\n];\n\n/** Accessible names for the pickers. Required — no English default (`link` only when `links` is given). */\nexport type PickerBarLabels = {\n /**\n * Accessible name for the link picker's button and list. Needed only when `links` is\n * supplied; the link picker renders only when both are present.\n */\n link?: string;\n /** Accessible name for the search picker's button and search landmark. */\n search: string;\n /** Accessible name for the search picker's text field. */\n searchInput: string;\n /** Accessible name for the search picker's ⏎ submit button. */\n searchSubmit: string;\n /** Accessible name for the theme picker's button and listbox. */\n theme: string;\n /** Accessible name for the locale picker's button and listbox. */\n locale: string;\n /** Accessible name for the text-size picker's button and listbox. */\n textSize: string;\n /** Accessible name for the share picker's button and list. */\n share: string;\n};\n\n/**\n * PickerBar — composes search-picker, theme-picker, locale-picker,\n * text-size-picker, and share-picker into one page-header row.\n *\n * A thin wrapper: it renders the five picker components, each imported\n * as a real npm dependency from its own published package, unmodified.\n * It pre-wires two catalog-specific defaults (`DEFAULT_THEMES`,\n * `DEFAULT_SIZES`) and flattens each wrapped picker's most commonly\n * needed optional props onto its own inputs — Angular has no spread\n * binding for component inputs, so unlike the canonical Svelte\n * contract's `*Props` bag, overrides here are named inputs rather than\n * an object spread. `motion-picker` and `date-time-picker` are\n * deliberately not included — see `spec/index.md` §1.\n */\n@Component({\n selector: \"lily-picker-bar\",\n standalone: true,\n imports: [LinkPicker, SearchPicker, ThemePicker, LocalePicker, TextSizePicker, SharePicker],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"picker-bar {{ className() }}\">\n @if (links().length > 0 && labels().link) {\n <lily-link-picker\n [label]=\"labels().link!\"\n [links]=\"links()\"\n [navigate]=\"linkNavigate()\"\n (navigated)=\"linkNavigated.emit($event)\"\n />\n }\n <lily-search-picker\n [label]=\"labels().search\"\n [inputLabel]=\"labels().searchInput\"\n [submitLabel]=\"labels().searchSubmit\"\n [placeholder]=\"searchPlaceholder()\"\n [(value)]=\"searchValue\"\n [action]=\"searchAction()\"\n [navigate]=\"searchNavigate()\"\n (searched)=\"searched.emit($event)\"\n />\n <lily-theme-picker\n [label]=\"labels().theme\"\n [themesUrl]=\"themesUrl()\"\n [themes]=\"themes()\"\n [(value)]=\"themeValue\"\n [defaultValue]=\"themeDefaultValue()\"\n [storageKey]=\"themeStorageKey()\"\n [detectFromSystem]=\"themeDetectFromSystem()\"\n [name]=\"themeName()\"\n [target]=\"themeTarget()\"\n [themeLabels]=\"themeLabels()\"\n />\n <lily-locale-picker\n [label]=\"labels().locale\"\n [locales]=\"locales()\"\n [(value)]=\"localeValue\"\n [defaultValue]=\"localeDefaultValue()\"\n [storageKey]=\"localeStorageKey()\"\n [detectFromNavigator]=\"localeDetectFromNavigator()\"\n [name]=\"localeName()\"\n [target]=\"localeTarget()\"\n [applyDir]=\"localeApplyDir()\"\n [localeLabels]=\"localeLabels()\"\n />\n <lily-text-size-picker\n [label]=\"labels().textSize\"\n [sizes]=\"sizes()\"\n [(value)]=\"textSizeValue\"\n [defaultValue]=\"textSizeDefaultValue()\"\n [storageKey]=\"textSizeStorageKey()\"\n [name]=\"textSizeName()\"\n [target]=\"textSizeTarget()\"\n [sizeLabels]=\"textSizeLabels()\"\n />\n <lily-share-picker\n [label]=\"labels().share\"\n [targets]=\"shareTargets()\"\n [url]=\"shareUrl()\"\n [title]=\"shareTitle()\"\n [text]=\"shareText()\"\n [copyLabel]=\"copyLabel()\"\n [copiedLabel]=\"copiedLabel()\"\n [copyFailedLabel]=\"copyFailedLabel()\"\n [strategy]=\"shareStrategy()\"\n (share)=\"share.emit($event)\"\n (copy)=\"copy.emit($event)\"\n (nativeShare)=\"nativeShare.emit($event)\"\n />\n </div>\n `,\n})\nexport class PickerBar {\n /** Accessible names for each picker. */\n readonly labels = input.required<PickerBarLabels>();\n\n // --- link-picker ---\n /**\n * Page links for the link picker (a home icon), which renders FIRST — leftmost. Defined by the\n * app; omitted or empty means no link picker (and `labels().link` is then unused).\n */\n readonly links = input<LinkItem[]>([]);\n /** Client-side navigation hook for the links, e.g. a router's `navigateByUrl`. */\n readonly linkNavigate = input<((href: string) => void) | undefined>(undefined);\n /** Fires after a page link is chosen. */\n readonly linkNavigated = output<LinkNavigatedEvent>();\n\n // --- search-picker ---\n /** Placeholder for the search field. No default (it would be English). */\n readonly searchPlaceholder = input<string | undefined>(undefined);\n /** Two-way bindable search text. */\n readonly searchValue = model<string>(\"\");\n /** Path the query is appended to (`${searchAction}?${query}`). */\n readonly searchAction = input<string>(\"/\");\n /** Performs the search navigation. Defaults to `location.assign(href)`. */\n readonly searchNavigate = input<((href: string) => void) | undefined>(undefined);\n /** Fires with the trimmed query and destination, before navigating. */\n readonly searched = output<SearchEvent>();\n\n // --- theme-picker ---\n /** Base URL of the themes directory, forwarded to ThemePicker. */\n readonly themesUrl = input.required<string>();\n /** Available theme slugs. Defaults to {@link DEFAULT_THEMES}. */\n readonly themes = input<string[]>(DEFAULT_THEMES);\n /** Two-way bindable current theme slug. */\n readonly themeValue = model<string>(\"\");\n readonly themeDefaultValue = input<string>(\"\");\n readonly themeStorageKey = input<string>(\"\");\n readonly themeDetectFromSystem = input<boolean>(false);\n readonly themeName = input<string>(\"theme\");\n readonly themeTarget = input<HTMLElement | null>(null);\n readonly themeLabels = input<Record<string, string>>({});\n\n // --- locale-picker ---\n /** Available locale codes. No catalog default exists — supply the set you support. */\n readonly locales = input.required<string[]>();\n /** Two-way bindable current locale code. */\n readonly localeValue = model<string>(\"\");\n readonly localeDefaultValue = input<string>(\"\");\n readonly localeStorageKey = input<string>(\"\");\n readonly localeDetectFromNavigator = input<boolean>(false);\n readonly localeName = input<string>(\"locale\");\n readonly localeTarget = input<HTMLElement | null>(null);\n readonly localeApplyDir = input<boolean>(true);\n readonly localeLabels = input<Record<string, string>>({});\n\n // --- text-size-picker ---\n /** Available size slugs. Defaults to {@link DEFAULT_SIZES}. */\n readonly sizes = input<string[]>(DEFAULT_SIZES);\n /** Two-way bindable current size slug. */\n readonly textSizeValue = model<string>(\"\");\n /**\n * `text-size-picker`'s own fallback (\"medium\", else `sizes[0]`) does\n * not fit the seven-slug scale — \"medium\" is not one of the seven,\n * and `sizes[0]` would silently start every consumer on \"Largest\".\n */\n readonly textSizeDefaultValue = input<string>(\"normal\");\n readonly textSizeStorageKey = input<string>(\"\");\n readonly textSizeName = input<string>(\"text-size\");\n readonly textSizeTarget = input<HTMLElement | null>(null);\n readonly textSizeLabels = input<Record<string, string>>({});\n\n // --- share-picker ---\n /** Destinations offered by the share picker. Empty is valid if `copyLabel` is set. */\n readonly shareTargets = input<ShareTarget[]>([]);\n readonly shareUrl = input<string>(\"\");\n readonly shareTitle = input<string>(\"\");\n readonly shareText = input<string>(\"\");\n readonly copyLabel = input<string>(\"\");\n readonly copiedLabel = input<string>(\"\");\n readonly copyFailedLabel = input<string>(\"\");\n readonly shareStrategy = input<ShareStrategy>(\"auto\");\n /** Fires after a share destination is chosen. */\n readonly share = output<ShareEvent>();\n /** Fires after the URL is copied. */\n readonly copy = output<string>();\n /** Fires when the native share sheet was used instead of the list. */\n readonly nativeShare = output<string>();\n\n /** Extra CSS class on the root. */\n readonly className = input<string>(\"\");\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"lilydesignsystem-angular-picker-bar.mjs","names":[],"sources":["../../picker-bar.component.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input, model, output } from \"@angular/core\";\n\nimport {\n LinkPicker,\n type LinkItem,\n type LinkNavigatedEvent,\n} from \"@lilydesignsystem/angular-link-picker\";\nimport { ThemePicker } from \"@lilydesignsystem/angular-theme-picker\";\nimport { LocalePicker } from \"@lilydesignsystem/angular-locale-picker\";\nimport { TextSizePicker } from \"@lilydesignsystem/angular-text-size-picker\";\nimport {\n TimeZonePicker,\n DEFAULT_ZONES,\n type ZoneInfo,\n type ZoneNames,\n} from \"@lilydesignsystem/angular-time-zone-picker\";\nimport {\n SharePicker,\n type ShareEvent,\n type ShareStrategy,\n type ShareTarget,\n} from \"@lilydesignsystem/angular-share-picker\";\nimport {\n SearchPicker,\n type SearchEvent,\n} from \"@lilydesignsystem/angular-search-picker\";\n\n/**\n * All 57 Lily reference theme slugs (see `themes/` at the repo root),\n * sorted alphabetically except the United Kingdom and United States\n * government/public-sector themes, which sort last as one alphabetical\n * group of their own. Mirrors `theme-picker`'s own title-casing of each\n * slug, so no `themeLabels` override is needed for these to read well.\n */\nexport const DEFAULT_THEMES: string[] = [\n \"abyss\",\n \"acid\",\n \"adobe-spectrum\",\n \"ant-design\",\n \"aqua\",\n \"atlassian\",\n \"autumn\",\n \"black\",\n \"bumblebee\",\n \"business\",\n \"cappuccino\",\n \"caramellatte\",\n \"cmyk\",\n \"coffee\",\n \"corporate\",\n \"cupcake\",\n \"cyberpunk\",\n \"dark\",\n \"dim\",\n \"dracula\",\n \"emerald\",\n \"excel\",\n \"fantasy\",\n \"fluent\",\n \"forest\",\n \"garden\",\n \"github-primer\",\n \"halloween\",\n \"ibm-carbon\",\n \"lemonade\",\n \"light\",\n \"linear\",\n \"lofi\",\n \"luxury\",\n \"mozilla-protocol\",\n \"night\",\n \"nord\",\n \"notion\",\n \"pastel\",\n \"retro\",\n \"salesforce\",\n \"sap-fiori\",\n \"silk\",\n \"sunset\",\n \"synthwave\",\n \"valentine\",\n \"vercel\",\n \"winter\",\n \"wireframe\",\n \"united-kingdom-government-digital-service\",\n \"united-kingdom-national-health-service-england-for-patients\",\n \"united-kingdom-national-health-service-england-for-practitioners\",\n \"united-kingdom-national-health-service-scotland-for-patients\",\n \"united-kingdom-national-health-service-scotland-for-practitioners\",\n \"united-kingdom-national-health-service-wales-for-patients\",\n \"united-kingdom-national-health-service-wales-for-practitioners\",\n \"united-states-web-design-system\",\n];\n\n/**\n * The seven-step text-size scale. Each slug title-cases to exactly the\n * requested label (\"largest\" → \"Largest\", …) via `text-size-picker`'s\n * own default `labelFor`, so no `sizeLabels` override is needed either.\n */\nexport const DEFAULT_SIZES: string[] = [\n \"largest\",\n \"larger\",\n \"large\",\n \"normal\",\n \"small\",\n \"smaller\",\n \"smallest\",\n];\n\n/** Accessible names for the pickers. Required — no English default (`link` only when `links` is given). */\nexport type PickerBarLabels = {\n /**\n * Accessible name for the link picker's button and list. Needed only when `links` is\n * supplied; the link picker renders only when both are present.\n */\n link?: string;\n /** Accessible name for the search picker's button and search landmark. */\n search: string;\n /** Accessible name for the search picker's text field. */\n searchInput: string;\n /** Accessible name for the search picker's ⏎ submit button. */\n searchSubmit: string;\n /** Accessible name for the theme picker's button and listbox. */\n theme: string;\n /** Accessible name for the locale picker's button and listbox. */\n locale: string;\n /** Accessible name for the text-size picker's button and listbox. */\n textSize: string;\n /**\n * Accessible name for the time-zone picker's button and listbox. Needed only when\n * `timeZoneLocale` is supplied; the time-zone picker renders only when both are present.\n */\n timeZone?: string;\n /** Accessible name for the share picker's button and list. */\n share: string;\n};\n\n/**\n * PickerBar — composes search-picker, theme-picker, locale-picker,\n * text-size-picker, and share-picker into one page-header row.\n *\n * A thin wrapper: it renders the five picker components, each imported\n * as a real npm dependency from its own published package, unmodified.\n * It pre-wires two catalog-specific defaults (`DEFAULT_THEMES`,\n * `DEFAULT_SIZES`) and flattens each wrapped picker's most commonly\n * needed optional props onto its own inputs — Angular has no spread\n * binding for component inputs, so unlike the canonical Svelte\n * contract's `*Props` bag, overrides here are named inputs rather than\n * an object spread. `motion-picker` and `date-time-picker` are\n * deliberately not included — see `spec/index.md` §1.\n */\n@Component({\n selector: \"lily-picker-bar\",\n standalone: true,\n imports: [LinkPicker, SearchPicker, ThemePicker, LocalePicker, TextSizePicker, TimeZonePicker, SharePicker],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div class=\"picker-bar {{ className() }}\">\n @if (links().length > 0 && labels().link) {\n <lily-link-picker\n [label]=\"labels().link!\"\n [links]=\"links()\"\n [navigate]=\"linkNavigate()\"\n (navigated)=\"linkNavigated.emit($event)\"\n />\n }\n <lily-search-picker\n [label]=\"labels().search\"\n [inputLabel]=\"labels().searchInput\"\n [submitLabel]=\"labels().searchSubmit\"\n [placeholder]=\"searchPlaceholder()\"\n [(value)]=\"searchValue\"\n [action]=\"searchAction()\"\n [navigate]=\"searchNavigate()\"\n (searched)=\"searched.emit($event)\"\n />\n <lily-theme-picker\n [label]=\"labels().theme\"\n [themesUrl]=\"themesUrl()\"\n [themes]=\"themes()\"\n [(value)]=\"themeValue\"\n [defaultValue]=\"themeDefaultValue()\"\n [storageKey]=\"themeStorageKey()\"\n [detectFromSystem]=\"themeDetectFromSystem()\"\n [name]=\"themeName()\"\n [target]=\"themeTarget()\"\n [themeLabels]=\"themeLabels()\"\n />\n <lily-locale-picker\n [label]=\"labels().locale\"\n [locales]=\"locales()\"\n [(value)]=\"localeValue\"\n [defaultValue]=\"localeDefaultValue()\"\n [storageKey]=\"localeStorageKey()\"\n [detectFromNavigator]=\"localeDetectFromNavigator()\"\n [name]=\"localeName()\"\n [target]=\"localeTarget()\"\n [applyDir]=\"localeApplyDir()\"\n [localeLabels]=\"localeLabels()\"\n />\n @if (labels().timeZone && timeZoneLocale()) {\n <lily-time-zone-picker\n [label]=\"labels().timeZone!\"\n [locale]=\"timeZoneLocale()!\"\n [zones]=\"timeZones()\"\n [date]=\"timeZoneDate()\"\n [labelFor]=\"timeZoneLabelFor()\"\n [names]=\"timeZoneNames()\"\n [(value)]=\"timeZoneValue\"\n [defaultValue]=\"timeZoneDefaultValue()\"\n [storageKey]=\"timeZoneStorageKey()\"\n [name]=\"timeZoneName()\"\n [target]=\"timeZoneTarget()\"\n />\n }\n <lily-text-size-picker\n [label]=\"labels().textSize\"\n [sizes]=\"sizes()\"\n [(value)]=\"textSizeValue\"\n [defaultValue]=\"textSizeDefaultValue()\"\n [storageKey]=\"textSizeStorageKey()\"\n [name]=\"textSizeName()\"\n [target]=\"textSizeTarget()\"\n [sizeLabels]=\"textSizeLabels()\"\n />\n <lily-share-picker\n [label]=\"labels().share\"\n [targets]=\"shareTargets()\"\n [url]=\"shareUrl()\"\n [title]=\"shareTitle()\"\n [text]=\"shareText()\"\n [copyLabel]=\"copyLabel()\"\n [copiedLabel]=\"copiedLabel()\"\n [copyFailedLabel]=\"copyFailedLabel()\"\n [strategy]=\"shareStrategy()\"\n (share)=\"share.emit($event)\"\n (copy)=\"copy.emit($event)\"\n (nativeShare)=\"nativeShare.emit($event)\"\n />\n </div>\n `,\n})\nexport class PickerBar {\n /** Accessible names for each picker. */\n readonly labels = input.required<PickerBarLabels>();\n\n // --- link-picker ---\n /**\n * Page links for the link picker (a home icon), which renders FIRST — leftmost. Defined by the\n * app; omitted or empty means no link picker (and `labels().link` is then unused).\n */\n readonly links = input<LinkItem[]>([]);\n /** Client-side navigation hook for the links, e.g. a router's `navigateByUrl`. */\n readonly linkNavigate = input<((href: string) => void) | undefined>(undefined);\n /** Fires after a page link is chosen. */\n readonly linkNavigated = output<LinkNavigatedEvent>();\n\n // --- search-picker ---\n /** Placeholder for the search field. No default (it would be English). */\n readonly searchPlaceholder = input<string | undefined>(undefined);\n /** Two-way bindable search text. */\n readonly searchValue = model<string>(\"\");\n /** Path the query is appended to (`${searchAction}?${query}`). */\n readonly searchAction = input<string>(\"/\");\n /** Performs the search navigation. Defaults to `location.assign(href)`. */\n readonly searchNavigate = input<((href: string) => void) | undefined>(undefined);\n /** Fires with the trimmed query and destination, before navigating. */\n readonly searched = output<SearchEvent>();\n\n // --- theme-picker ---\n /** Base URL of the themes directory, forwarded to ThemePicker. */\n readonly themesUrl = input.required<string>();\n /** Available theme slugs. Defaults to {@link DEFAULT_THEMES}. */\n readonly themes = input<string[]>(DEFAULT_THEMES);\n /** Two-way bindable current theme slug. */\n readonly themeValue = model<string>(\"\");\n readonly themeDefaultValue = input<string>(\"\");\n readonly themeStorageKey = input<string>(\"\");\n readonly themeDetectFromSystem = input<boolean>(false);\n readonly themeName = input<string>(\"theme\");\n readonly themeTarget = input<HTMLElement | null>(null);\n readonly themeLabels = input<Record<string, string>>({});\n\n // --- locale-picker ---\n /** Available locale codes. No catalog default exists — supply the set you support. */\n readonly locales = input.required<string[]>();\n /** Two-way bindable current locale code. */\n readonly localeValue = model<string>(\"\");\n readonly localeDefaultValue = input<string>(\"\");\n readonly localeStorageKey = input<string>(\"\");\n readonly localeDetectFromNavigator = input<boolean>(false);\n readonly localeName = input<string>(\"locale\");\n readonly localeTarget = input<HTMLElement | null>(null);\n readonly localeApplyDir = input<boolean>(true);\n readonly localeLabels = input<Record<string, string>>({});\n\n // --- time-zone-picker ---\n /**\n * The language that names and sorts the zones (BCP 47, e.g. `fr`). The time-zone picker, which sits\n * after the locale picker, renders only when this and `labels().timeZone` are both given.\n */\n readonly timeZoneLocale = input<string | undefined>(undefined);\n /** IANA zone ids on offer. Defaults to the picker's own 55. */\n readonly timeZones = input<readonly string[]>(DEFAULT_ZONES);\n /** The date the offsets are computed for (daylight time). Defaults to now. */\n readonly timeZoneDate = input<Date | undefined>(undefined);\n readonly timeZoneLabelFor = input<((zone: ZoneInfo) => string) | undefined>(undefined);\n /** CLDR zone names, e.g. `zoneNamesFrom(pack)` from the locale-translations package. */\n readonly timeZoneNames = input<ZoneNames | undefined>(undefined);\n /** Two-way bindable current IANA zone id. */\n readonly timeZoneValue = model<string>(\"\");\n readonly timeZoneDefaultValue = input<string>(\"\");\n readonly timeZoneStorageKey = input<string>(\"\");\n readonly timeZoneName = input<string>(\"time-zone\");\n readonly timeZoneTarget = input<HTMLElement | null>(null);\n\n // --- text-size-picker ---\n /** Available size slugs. Defaults to {@link DEFAULT_SIZES}. */\n readonly sizes = input<string[]>(DEFAULT_SIZES);\n /** Two-way bindable current size slug. */\n readonly textSizeValue = model<string>(\"\");\n /**\n * `text-size-picker`'s own fallback (\"medium\", else `sizes[0]`) does\n * not fit the seven-slug scale — \"medium\" is not one of the seven,\n * and `sizes[0]` would silently start every consumer on \"Largest\".\n */\n readonly textSizeDefaultValue = input<string>(\"normal\");\n readonly textSizeStorageKey = input<string>(\"\");\n readonly textSizeName = input<string>(\"text-size\");\n readonly textSizeTarget = input<HTMLElement | null>(null);\n readonly textSizeLabels = input<Record<string, string>>({});\n\n // --- share-picker ---\n /** Destinations offered by the share picker. Empty is valid if `copyLabel` is set. */\n readonly shareTargets = input<ShareTarget[]>([]);\n readonly shareUrl = input<string>(\"\");\n readonly shareTitle = input<string>(\"\");\n readonly shareText = input<string>(\"\");\n readonly copyLabel = input<string>(\"\");\n readonly copiedLabel = input<string>(\"\");\n readonly copyFailedLabel = input<string>(\"\");\n readonly shareStrategy = input<ShareStrategy>(\"auto\");\n /** Fires after a share destination is chosen. */\n readonly share = output<ShareEvent>();\n /** Fires after the URL is copied. */\n readonly copy = output<string>();\n /** Fires when the native share sheet was used instead of the list. */\n readonly nativeShare = output<string>();\n\n /** Extra CSS class on the root. */\n readonly className = input<string>(\"\");\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,22 +1,23 @@
1
1
  {
2
2
  "name": "@lilydesignsystem/angular-picker-bar",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "engines": {
5
- "node": "=26"
5
+ "node": ">=26"
6
6
  },
7
- "description": "Lily Design System Angular picker bar: composes link-picker (optional), search-picker, theme-picker, locale-picker, text-size-picker, and share-picker into one page-header row. Headless, SSR-safe, no CSS.",
7
+ "description": "Lily Design System Angular picker bar: composes link-picker (optional), search-picker, theme-picker, locale-picker, time-zone-picker (optional), text-size-picker, and share-picker into one page-header row. Headless, SSR-safe, no CSS.",
8
8
  "dependencies": {
9
- "@lilydesignsystem/angular-link-picker": "^0.1.0",
10
- "@lilydesignsystem/angular-search-picker": "^0.1.0",
11
- "@lilydesignsystem/angular-theme-picker": "^0.2.0",
9
+ "@lilydesignsystem/angular-link-picker": "^0.1.2",
12
10
  "@lilydesignsystem/angular-locale-picker": "^0.2.0",
13
- "@lilydesignsystem/angular-text-size-picker": "^0.2.0",
11
+ "@lilydesignsystem/angular-search-picker": "^0.1.0",
14
12
  "@lilydesignsystem/angular-share-picker": "^0.2.0",
13
+ "@lilydesignsystem/angular-text-size-picker": "^0.2.0",
14
+ "@lilydesignsystem/angular-time-zone-picker": "^0.1.0",
15
+ "@lilydesignsystem/angular-theme-picker": "^0.2.0",
15
16
  "tslib": "^2.3.0"
16
17
  },
17
18
  "peerDependencies": {
18
- "@angular/core": ">=20.0.0 <23.0.0",
19
- "@angular/common": ">=20.0.0 <23.0.0"
19
+ "@angular/common": ">=20.0.0 <23.0.0",
20
+ "@angular/core": ">=20.0.0 <23.0.0"
20
21
  },
21
22
  "sideEffects": false,
22
23
  "keywords": [
@@ -1,4 +1,5 @@
1
1
  import { LinkItem, LinkNavigatedEvent } from "@lilydesignsystem/angular-link-picker";
2
+ import { ZoneInfo } from "@lilydesignsystem/angular-time-zone-picker";
2
3
  import { ShareEvent, ShareStrategy, ShareTarget } from "@lilydesignsystem/angular-share-picker";
3
4
  import { SearchEvent } from "@lilydesignsystem/angular-search-picker";
4
5
  import * as i0 from "@angular/core";
@@ -35,6 +36,11 @@ type PickerBarLabels = {
35
36
  locale: string;
36
37
  /** Accessible name for the text-size picker's button and listbox. */
37
38
  textSize: string;
39
+ /**
40
+ * Accessible name for the time-zone picker's button and listbox. Needed only when
41
+ * `timeZoneLocale` is supplied; the time-zone picker renders only when both are present.
42
+ */
43
+ timeZone?: string;
38
44
  /** Accessible name for the share picker's button and list. */
39
45
  share: string;
40
46
  };
@@ -97,6 +103,24 @@ export declare class PickerBar {
97
103
  readonly localeTarget: import("@angular/core/types/core").InputSignal<HTMLElement | null>;
98
104
  readonly localeApplyDir: import("@angular/core/types/core").InputSignal<boolean>;
99
105
  readonly localeLabels: import("@angular/core/types/core").InputSignal<Record<string, string>>;
106
+ /**
107
+ * The language that names and sorts the zones (BCP 47, e.g. `fr`). The time-zone picker, which sits
108
+ * after the locale picker, renders only when this and `labels().timeZone` are both given.
109
+ */
110
+ readonly timeZoneLocale: import("@angular/core/types/core").InputSignal<string | undefined>;
111
+ /** IANA zone ids on offer. Defaults to the picker's own 55. */
112
+ readonly timeZones: import("@angular/core/types/core").InputSignal<readonly string[]>;
113
+ /** The date the offsets are computed for (daylight time). Defaults to now. */
114
+ readonly timeZoneDate: import("@angular/core/types/core").InputSignal<Date | undefined>;
115
+ readonly timeZoneLabelFor: import("@angular/core/types/core").InputSignal<((zone: ZoneInfo) => string) | undefined>;
116
+ /** CLDR zone names, e.g. `zoneNamesFrom(pack)` from the locale-translations package. */
117
+ readonly timeZoneNames: import("@angular/core/types/core").InputSignal<Readonly<Record<string, string | readonly [string, string]>> | undefined>;
118
+ /** Two-way bindable current IANA zone id. */
119
+ readonly timeZoneValue: import("@angular/core/types/core").ModelSignal<string>;
120
+ readonly timeZoneDefaultValue: import("@angular/core/types/core").InputSignal<string>;
121
+ readonly timeZoneStorageKey: import("@angular/core/types/core").InputSignal<string>;
122
+ readonly timeZoneName: import("@angular/core/types/core").InputSignal<string>;
123
+ readonly timeZoneTarget: import("@angular/core/types/core").InputSignal<HTMLElement | null>;
100
124
  /** Available size slugs. Defaults to {@link DEFAULT_SIZES}. */
101
125
  readonly sizes: import("@angular/core/types/core").InputSignal<string[]>;
102
126
  /** Two-way bindable current size slug. */
@@ -255,6 +279,56 @@ export declare class PickerBar {
255
279
  "required": false;
256
280
  "isSignal": true;
257
281
  };
282
+ "timeZoneLocale": {
283
+ "alias": "timeZoneLocale";
284
+ "required": false;
285
+ "isSignal": true;
286
+ };
287
+ "timeZones": {
288
+ "alias": "timeZones";
289
+ "required": false;
290
+ "isSignal": true;
291
+ };
292
+ "timeZoneDate": {
293
+ "alias": "timeZoneDate";
294
+ "required": false;
295
+ "isSignal": true;
296
+ };
297
+ "timeZoneLabelFor": {
298
+ "alias": "timeZoneLabelFor";
299
+ "required": false;
300
+ "isSignal": true;
301
+ };
302
+ "timeZoneNames": {
303
+ "alias": "timeZoneNames";
304
+ "required": false;
305
+ "isSignal": true;
306
+ };
307
+ "timeZoneValue": {
308
+ "alias": "timeZoneValue";
309
+ "required": false;
310
+ "isSignal": true;
311
+ };
312
+ "timeZoneDefaultValue": {
313
+ "alias": "timeZoneDefaultValue";
314
+ "required": false;
315
+ "isSignal": true;
316
+ };
317
+ "timeZoneStorageKey": {
318
+ "alias": "timeZoneStorageKey";
319
+ "required": false;
320
+ "isSignal": true;
321
+ };
322
+ "timeZoneName": {
323
+ "alias": "timeZoneName";
324
+ "required": false;
325
+ "isSignal": true;
326
+ };
327
+ "timeZoneTarget": {
328
+ "alias": "timeZoneTarget";
329
+ "required": false;
330
+ "isSignal": true;
331
+ };
258
332
  "sizes": {
259
333
  "alias": "sizes";
260
334
  "required": false;
@@ -341,6 +415,7 @@ export declare class PickerBar {
341
415
  "searched": "searched";
342
416
  "themeValue": "themeValueChange";
343
417
  "localeValue": "localeValueChange";
418
+ "timeZoneValue": "timeZoneValueChange";
344
419
  "textSizeValue": "textSizeValueChange";
345
420
  "share": "share";
346
421
  "copy": "copy";
@@ -1 +1 @@
1
- {"version":3,"file":"lilydesignsystem-angular-picker-bar.d.ts","names":[],"sources":["../../picker-bar.component.ts"],"mappings":";;;;;;;;;;;qBA4Ba;;;;;;qBAiEA;;KAWD;;;;;EAKV;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;;;;;;;;;;;;;;;qBA6FW;;WAEF,2CAAM,YAAA;;;;;WAON,0CAAK,YAAA;;WAEL,iDAAY,cAAA;;WAEZ,wDAAa,iBAAA;;WAIb,sDAAiB;;WAEjB,gDAAW;;WAEX,iDAAY;;WAEZ,mDAAc,cAAA;;WAEd,mDAAQ,iBAAA;;WAIR,8CAAS;;WAET,2CAAM;;WAEN,+CAAU;WACV,sDAAiB;WACjB,oDAAe;WACf,0DAAqB;WACrB,8CAAS;WACT,gDAAW,YAAA;WACX,gDAAW,YAAA;;WAIX,4CAAO;;WAEP,gDAAW;WACX,uDAAkB;WAClB,qDAAgB;WAChB,8DAAyB;WACzB,+CAAU;WACV,iDAAY,YAAA;WACZ,mDAAc;WACd,iDAAY,YAAA;;WAIZ,0CAAK;;WAEL,kDAAa;;;;;;WAMb,yDAAoB;WACpB,uDAAkB;WAClB,iDAAY;WACZ,mDAAc,YAAA;WACd,mDAAc,YAAA;;WAId,iDAAY,YAAA;WACZ,6CAAQ;WACR,+CAAU;WACV,8CAAS;WACT,8CAAS;WACT,gDAAW;WACX,oDAAe;WACf,kDAAa,YAAA;;WAEb,gDAAK,iBAAA;;WAEL,+CAAI;;WAEJ,sDAAW;;WAGX,8CAAS;SAxFP,MAAA,GAAA,qBAAA;SAAA,MAAA,GAAA,uBAAA;IAAS;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA"}
1
+ {"version":3,"file":"lilydesignsystem-angular-picker-bar.d.ts","names":[],"sources":["../../picker-bar.component.ts"],"mappings":";;;;;;;;;;;;qBAkCa;;;;;;qBAiEA;;KAWD;;;;;EAKV;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;;;;EAKA;;EAEA;;;;;;;;;;;;;;;;qBA4GW;;WAEF,2CAAM,YAAA;;;;;WAON,0CAAK,YAAA;;WAEL,iDAAY,cAAA;;WAEZ,wDAAa,iBAAA;;WAIb,sDAAiB;;WAEjB,gDAAW;;WAEX,iDAAY;;WAEZ,mDAAc,cAAA;;WAEd,mDAAQ,iBAAA;;WAIR,8CAAS;;WAET,2CAAM;;WAEN,+CAAU;WACV,sDAAiB;WACjB,oDAAe;WACf,0DAAqB;WACrB,8CAAS;WACT,gDAAW,YAAA;WACX,gDAAW,YAAA;;WAIX,4CAAO;;WAEP,gDAAW;WACX,uDAAkB;WAClB,qDAAgB;WAChB,8DAAyB;WACzB,+CAAU;WACV,iDAAY,YAAA;WACZ,mDAAc;WACd,iDAAY,YAAA;;;;;WAOZ,mDAAc;;WAEd,8CAAS;;WAET,iDAAY,YAAA;WACZ,qDAAgB,cAAA,MAAiB;;WAEjC,kDAAa,YAAA,SAAA;;WAEb,kDAAa;WACb,yDAAoB;WACpB,uDAAkB;WAClB,iDAAY;WACZ,mDAAc,YAAA;;WAId,0CAAK;;WAEL,kDAAa;;;;;;WAMb,yDAAoB;WACpB,uDAAkB;WAClB,iDAAY;WACZ,mDAAc,YAAA;WACd,mDAAc,YAAA;;WAId,iDAAY,YAAA;WACZ,6CAAQ;WACR,+CAAU;WACV,8CAAS;WACT,8CAAS;WACT,gDAAW;WACX,oDAAe;WACf,kDAAa,YAAA;;WAEb,gDAAK,iBAAA;;WAEL,+CAAI;;WAEJ,sDAAW;;WAGX,8CAAS;SA5GP,MAAA,GAAA,qBAAA;SAAA,MAAA,GAAA,uBAAA;IAAS;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;IAAA;MAAA;MAAA;MAAA;;;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA"}