@twentyfirstmedia/ui-core 0.6.0 → 0.8.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.
Files changed (60) hide show
  1. package/ICONS-LICENSE +24 -2
  2. package/dist/components/connected-data.d.ts +25 -0
  3. package/dist/components/connected-data.d.ts.map +1 -0
  4. package/dist/components/connected-data.js +264 -0
  5. package/dist/components/connected-data.js.map +1 -0
  6. package/dist/components/connectors.d.ts +22 -0
  7. package/dist/components/connectors.d.ts.map +1 -0
  8. package/dist/components/connectors.js +135 -0
  9. package/dist/components/connectors.js.map +1 -0
  10. package/dist/components/household.d.ts +19 -0
  11. package/dist/components/household.d.ts.map +1 -0
  12. package/dist/components/household.js +137 -0
  13. package/dist/components/household.js.map +1 -0
  14. package/dist/components/index.d.ts +4 -0
  15. package/dist/components/index.d.ts.map +1 -1
  16. package/dist/components/index.js +4 -0
  17. package/dist/components/index.js.map +1 -1
  18. package/dist/components/life.d.ts +26 -0
  19. package/dist/components/life.d.ts.map +1 -0
  20. package/dist/components/life.js +187 -0
  21. package/dist/components/life.js.map +1 -0
  22. package/dist/components/types.d.ts +622 -0
  23. package/dist/components/types.d.ts.map +1 -1
  24. package/dist/context.d.ts +1 -0
  25. package/dist/context.d.ts.map +1 -1
  26. package/dist/context.js +2 -1
  27. package/dist/context.js.map +1 -1
  28. package/dist/format.d.ts +5 -0
  29. package/dist/format.d.ts.map +1 -1
  30. package/dist/format.js +31 -0
  31. package/dist/format.js.map +1 -1
  32. package/dist/icon-library.d.ts +235 -4
  33. package/dist/icon-library.d.ts.map +1 -1
  34. package/dist/icon-library.js +467 -15
  35. package/dist/icon-library.js.map +1 -1
  36. package/dist/icons.d.ts +2 -0
  37. package/dist/icons.d.ts.map +1 -1
  38. package/dist/icons.js.map +1 -1
  39. package/dist/index.d.ts +2 -2
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +2 -2
  42. package/dist/index.js.map +1 -1
  43. package/dist/strings.d.ts +184 -0
  44. package/dist/strings.d.ts.map +1 -1
  45. package/dist/strings.js +182 -1
  46. package/dist/strings.js.map +1 -1
  47. package/dist/themes.css +16438 -11238
  48. package/package.json +1 -1
  49. package/src/components/connected-data.tsx +783 -0
  50. package/src/components/connectors.tsx +426 -0
  51. package/src/components/household.tsx +489 -0
  52. package/src/components/index.ts +39 -0
  53. package/src/components/life.tsx +679 -0
  54. package/src/components/types.ts +602 -0
  55. package/src/context.ts +10 -1
  56. package/src/format.ts +33 -0
  57. package/src/icon-library.ts +476 -19
  58. package/src/icons.ts +2 -0
  59. package/src/index.ts +5 -0
  60. package/src/strings.ts +518 -0
package/src/icons.ts CHANGED
@@ -128,6 +128,8 @@ export type IconName = KitIconName | LibraryIconName | Extract<keyof CustomIcons
128
128
  export interface FilledIcon {
129
129
  d: string;
130
130
  filled: true;
131
+ /** A wordmark at least twice as wide as tall: marks such as `ServiceMark` draw it larger. */
132
+ wide?: true;
131
133
  }
132
134
 
133
135
  /** A drawing for `registerIcons`: a path on the 24px grid, stroked like the kit's icons, or filled. */
package/src/index.ts CHANGED
@@ -4,6 +4,7 @@ export {
4
4
  formatPercent,
5
5
  formatMoney,
6
6
  formatDate,
7
+ formatRelative,
7
8
  formatLike,
8
9
  parseFormatted,
9
10
  numberSeparators,
@@ -23,12 +24,16 @@ export {
23
24
  CHARTS_STRINGS,
24
25
  CHAT_STRINGS,
25
26
  COMMERCE_STRINGS,
27
+ CONNECTED_DATA_STRINGS,
28
+ CONNECTOR_STRINGS,
26
29
  DATA_DISPLAY_STRINGS,
27
30
  DATA_TABLE_STRINGS,
28
31
  DEVELOPER_STRINGS,
29
32
  FEEDBACK_STRINGS,
30
33
  FORM_STRINGS,
31
34
  FORMS_STRINGS,
35
+ HOUSEHOLD_STRINGS,
36
+ LIFE_STRINGS,
32
37
  MAIL_STRINGS,
33
38
  MEDIA_STRINGS,
34
39
  NAVIGATION_STRINGS,
package/src/strings.ts CHANGED
@@ -492,6 +492,191 @@ export interface UIStrings {
492
492
  contrastAA: string;
493
493
  contrastAALarge: string;
494
494
  contrastFails: string;
495
+ /* Life: HabitTracker, MoodPicker, VitalTile, ActivityRings, SleepChart, MedicationList, GoalCard, InsightCard, ConsentList */
496
+ habits: string;
497
+ /** "12-day streak" */
498
+ habitStreak: (days: number) => string;
499
+ /** "Mark {habit} done today" */
500
+ markHabitDone: (habit: string) => string;
501
+ habitDone: string;
502
+ habitMissed: string;
503
+ habitNoData: string;
504
+ howAreYou: string;
505
+ /** The five mood words, lowest first. */
506
+ moodLevels: [string, string, string, string, string];
507
+ inRange: string;
508
+ belowRange: string;
509
+ aboveRange: string;
510
+ /** "Normal 60–100" */
511
+ normalRange: (low: string, high: string) => string;
512
+ activity: string;
513
+ /** "6,240 of 8,000 steps" */
514
+ ofGoal: (value: string, goal: string) => string;
515
+ sleepStages: string;
516
+ /** Names of the sleep stages. */
517
+ sleepStageNames: Record<"awake" | "rem" | "light" | "deep", string>;
518
+ /** "7 h 32 min" */
519
+ durationHm: (hours: number, minutes: number) => string;
520
+ /** "Asleep 7 h 32 min" */
521
+ totalSleep: (duration: string) => string;
522
+ medication: string;
523
+ medTaken: string;
524
+ medDue: string;
525
+ medMissed: string;
526
+ medUpcoming: string;
527
+ /** "Mark {name} as taken" */
528
+ markTaken: (name: string) => string;
529
+ /** "By {date}" */
530
+ dueBy: (date: string) => string;
531
+ whyInsight: string;
532
+ insightAccept: string;
533
+ insightSnooze: string;
534
+ dataAccess: string;
535
+ revokeAccess: string;
536
+ /** "Last used {date}" */
537
+ lastUsed: (date: string) => string;
538
+ notUsedYet: string;
539
+ requiredScope: string;
540
+ /* Life: BudgetList, SubscriptionList, NetWorthCard, DeadlineList, PolicyCard, CoverageMatrix, ClaimTimeline, DocumentList */
541
+ budgets: string;
542
+ /** "€120 left" */
543
+ budgetLeft: (amount: string) => string;
544
+ /** "€40 over" */
545
+ budgetOver: (amount: string) => string;
546
+ subscriptions: string;
547
+ /** "€86 a month" */
548
+ perMonthTotal: (amount: string) => string;
549
+ /** "€1,032 a year" */
550
+ perYearTotal: (amount: string) => string;
551
+ /** "Manage {name}" */
552
+ manageItem: (name: string) => string;
553
+ /** "Trial" */
554
+ trialEnds: string;
555
+ cancelledLabel: string;
556
+ /** "Next on {date}" */
557
+ nextCharge: (date: string) => string;
558
+ /** Words for billing periods. */
559
+ periodWord: Record<"week" | "month" | "quarter" | "year", string>;
560
+ netWorth: string;
561
+ assetsLabel: string;
562
+ liabilitiesLabel: string;
563
+ deadlines: string;
564
+ /** "Overdue by 3 days" */
565
+ overdueBy: (days: number) => string;
566
+ dueToday: string;
567
+ /** "In 12 days" */
568
+ dueIn: (days: number) => string;
569
+ /** "Mark {title} done" */
570
+ markDone: (title: string) => string;
571
+ coverageLabel: string;
572
+ covered: string;
573
+ partlyCovered: string;
574
+ notCovered: string;
575
+ sumInsured: string;
576
+ deductibleLabel: string;
577
+ /** "Renews {date}" */
578
+ renewsOn: (date: string) => string;
579
+ policyNo: string;
580
+ /** Words for a policy's status. */
581
+ policyStatus: Record<"active" | "pending" | "expiring" | "lapsed", string>;
582
+ claimAmount: string;
583
+ documents: string;
584
+ expired: string;
585
+ /** "Expires in 40 days" */
586
+ expiresIn: (days: number) => string;
587
+ /** "Valid until {date}" */
588
+ expiresOn: (date: string) => string;
589
+ /* connectors */
590
+ /** A connected service's state in words. */
591
+ serviceStates: Record<"connected" | "syncing" | "error" | "paused" | "off", string>;
592
+ connectors: string;
593
+ connectionsLabel: string;
594
+ manageAction: string;
595
+ /** "Manage Gmail" */
596
+ manageService: (name: string) => string;
597
+ searchConnectors: string;
598
+ allCategories: string;
599
+ connect: string;
600
+ /** "Connect Gmail" */
601
+ connectService: (name: string) => string;
602
+ openAction: string;
603
+ /** "Open Gmail" */
604
+ openService: (name: string) => string;
605
+ reconnect: string;
606
+ /** "Reconnect Gmail" */
607
+ reconnectService: (name: string) => string;
608
+ comingSoon: string;
609
+ /** "No connector matches “tesla”" */
610
+ noConnectorMatch: (query: string) => string;
611
+ /** "Synced 5 minutes ago" */
612
+ syncedAgo: (when: string) => string;
613
+ syncingNow: string;
614
+ syncFailed: string;
615
+ syncPaused: string;
616
+ neverSynced: string;
617
+ /** "Next in 1 hour" */
618
+ nextSync: (when: string) => string;
619
+ syncNow: string;
620
+ agentActivity: string;
621
+ actionKinds: Record<"read" | "act" | "money", string>;
622
+ actionStates: Record<"waiting" | "declined" | "undone" | "failed", string>;
623
+ reviewAction: string;
624
+ scopeLevels: Record<"read" | "act" | "money", string>;
625
+ asksFirst: string;
626
+ /* connected data: home, car, media, workouts, calls, bookings, golf, investments */
627
+ deviceOn: string;
628
+ deviceOff: string;
629
+ deviceOffline: string;
630
+ /** "Target 21.5 °C" */
631
+ targetTemp: (value: string) => string;
632
+ lowerTarget: string;
633
+ raiseTarget: string;
634
+ /** "Battery 64%" */
635
+ batteryLevel: (percent: string) => string;
636
+ chargingStates: Record<"charging" | "complete" | "plugged" | "unplugged", string>;
637
+ /** "Limit 80%" */
638
+ chargeLimit: (percent: string) => string;
639
+ /** "Done by 06:30" */
640
+ chargedBy: (time: string) => string;
641
+ /** "412 km range" */
642
+ rangeLeft: (distance: string) => string;
643
+ lockedState: string;
644
+ unlockedState: string;
645
+ lockAction: string;
646
+ climateLabel: string;
647
+ climateOnLabel: string;
648
+ climateOffLabel: string;
649
+ /** "Inside 19 °C" */
650
+ insideTemp: (value: string) => string;
651
+ playAction: string;
652
+ pauseAction: string;
653
+ nextTrack: string;
654
+ previousTrack: string;
655
+ /** "Playing on Living room" */
656
+ playingOn: (device: string) => string;
657
+ heartRateZones: string;
658
+ /** "Zone 3: 18 min" */
659
+ zoneMinutes: (zone: number, minutes: number) => string;
660
+ avgHeartRate: string;
661
+ caloriesLabel: string;
662
+ distanceLabel: string;
663
+ durationLabel: string;
664
+ calls: string;
665
+ callDirections: Record<"incoming" | "outgoing" | "missed", string>;
666
+ /** "Call Lena" */
667
+ callPerson: (name: string) => string;
668
+ reservationStatus: Record<
669
+ "confirmed" | "pending" | "cancelled" | "delayed" | "onTheWay" | "delivered",
670
+ string
671
+ >;
672
+ bookingCode: string;
673
+ scoreLabels: Record<"hole" | "par" | "score" | "putts" | "out" | "in" | "total", string>;
674
+ scoreNames: Record<"eagle" | "birdie" | "par" | "bogey" | "double", string>;
675
+ /** "+7", "Even", "−2" */
676
+ toPar: (strokes: number) => string;
677
+ holdings: string;
678
+ /** "12% of portfolio" */
679
+ portfolioShare: (percent: string) => string;
495
680
  // @@KEYS
496
681
  }
497
682
 
@@ -1491,6 +1676,335 @@ export const WORKSPACE_STRINGS: Pick<
1491
1676
  accept: "Accept",
1492
1677
  };
1493
1678
 
1679
+ /** Strings of the components in `life.tsx`. */
1680
+ export const LIFE_STRINGS: Pick<
1681
+ UIStrings,
1682
+ | "habits"
1683
+ | "habitStreak"
1684
+ | "markHabitDone"
1685
+ | "habitDone"
1686
+ | "habitMissed"
1687
+ | "habitNoData"
1688
+ | "howAreYou"
1689
+ | "moodLevels"
1690
+ | "inRange"
1691
+ | "belowRange"
1692
+ | "aboveRange"
1693
+ | "normalRange"
1694
+ | "activity"
1695
+ | "ofGoal"
1696
+ | "sleepStages"
1697
+ | "sleepStageNames"
1698
+ | "durationHm"
1699
+ | "totalSleep"
1700
+ | "medication"
1701
+ | "medTaken"
1702
+ | "medDue"
1703
+ | "medMissed"
1704
+ | "medUpcoming"
1705
+ | "markTaken"
1706
+ | "dueBy"
1707
+ | "whyInsight"
1708
+ | "insightAccept"
1709
+ | "insightSnooze"
1710
+ | "dataAccess"
1711
+ | "revokeAccess"
1712
+ | "lastUsed"
1713
+ | "notUsedYet"
1714
+ | "requiredScope"
1715
+ | "scopeLevels"
1716
+ | "asksFirst"
1717
+ > = {
1718
+ habits: "Habits",
1719
+ habitStreak: (days) => `${days}-day streak`,
1720
+ markHabitDone: (habit) => `Mark ${habit} done today`,
1721
+ habitDone: "Done",
1722
+ habitMissed: "Missed",
1723
+ habitNoData: "No entry",
1724
+ howAreYou: "How are you feeling?",
1725
+ moodLevels: ["Awful", "Low", "Okay", "Good", "Great"],
1726
+ inRange: "In range",
1727
+ belowRange: "Below range",
1728
+ aboveRange: "Above range",
1729
+ normalRange: (low, high) => `Normal ${low}–${high}`,
1730
+ activity: "Activity",
1731
+ ofGoal: (value, goal) => `${value} of ${goal}`,
1732
+ sleepStages: "Sleep stages",
1733
+ sleepStageNames: { awake: "Awake", rem: "REM", light: "Light", deep: "Deep" },
1734
+ durationHm: (hours, minutes) =>
1735
+ hours ? (minutes ? `${hours} h ${minutes} min` : `${hours} h`) : `${minutes} min`,
1736
+ totalSleep: (duration) => `Asleep ${duration}`,
1737
+ medication: "Medication",
1738
+ medTaken: "Taken",
1739
+ medDue: "Due",
1740
+ medMissed: "Missed",
1741
+ medUpcoming: "Later",
1742
+ markTaken: (name) => `Mark ${name} as taken`,
1743
+ dueBy: (date) => `By ${date}`,
1744
+ whyInsight: "Why am I seeing this?",
1745
+ insightAccept: "Do it",
1746
+ insightSnooze: "Later",
1747
+ dataAccess: "Data access",
1748
+ revokeAccess: "Revoke access",
1749
+ lastUsed: (date) => `Last used ${date}`,
1750
+ notUsedYet: "Not used yet",
1751
+ requiredScope: "Required",
1752
+ scopeLevels: { read: "Read only", act: "Can act", money: "Money" },
1753
+ asksFirst: "asks first",
1754
+ };
1755
+
1756
+ /** Strings of the components in `household.tsx`. */
1757
+ export const HOUSEHOLD_STRINGS: Pick<
1758
+ UIStrings,
1759
+ | "budgets"
1760
+ | "budgetLeft"
1761
+ | "budgetOver"
1762
+ | "subscriptions"
1763
+ | "perMonthTotal"
1764
+ | "perYearTotal"
1765
+ | "manageItem"
1766
+ | "trialEnds"
1767
+ | "cancelledLabel"
1768
+ | "nextCharge"
1769
+ | "periodWord"
1770
+ | "netWorth"
1771
+ | "assetsLabel"
1772
+ | "liabilitiesLabel"
1773
+ | "deadlines"
1774
+ | "overdueBy"
1775
+ | "dueToday"
1776
+ | "dueIn"
1777
+ | "markDone"
1778
+ | "coverageLabel"
1779
+ | "covered"
1780
+ | "partlyCovered"
1781
+ | "notCovered"
1782
+ | "sumInsured"
1783
+ | "deductibleLabel"
1784
+ | "renewsOn"
1785
+ | "policyNo"
1786
+ | "policyStatus"
1787
+ | "claimAmount"
1788
+ | "documents"
1789
+ | "expired"
1790
+ | "expiresIn"
1791
+ | "expiresOn"
1792
+ > = {
1793
+ budgets: "Budgets",
1794
+ budgetLeft: (amount) => `${amount} left`,
1795
+ budgetOver: (amount) => `${amount} over`,
1796
+ subscriptions: "Subscriptions",
1797
+ perMonthTotal: (amount) => `${amount} a month`,
1798
+ perYearTotal: (amount) => `${amount} a year`,
1799
+ manageItem: (name) => `Manage ${name}`,
1800
+ trialEnds: "Trial",
1801
+ cancelledLabel: "Cancelled",
1802
+ nextCharge: (date) => `Next on ${date}`,
1803
+ periodWord: { week: "week", month: "month", quarter: "quarter", year: "year" },
1804
+ netWorth: "Net worth",
1805
+ assetsLabel: "Assets",
1806
+ liabilitiesLabel: "Liabilities",
1807
+ deadlines: "Deadlines",
1808
+ overdueBy: (days) => (days === 1 ? "Overdue by 1 day" : `Overdue by ${days} days`),
1809
+ dueToday: "Today",
1810
+ dueIn: (days) => (days === 1 ? "Tomorrow" : `In ${days} days`),
1811
+ markDone: (title) => `Mark ${title} done`,
1812
+ coverageLabel: "Coverage",
1813
+ covered: "Covered",
1814
+ partlyCovered: "Partly",
1815
+ notCovered: "Not covered",
1816
+ sumInsured: "Sum insured",
1817
+ deductibleLabel: "Deductible",
1818
+ renewsOn: (date) => `Renews ${date}`,
1819
+ policyNo: "Policy no.",
1820
+ policyStatus: { active: "Active", pending: "Pending", expiring: "Expiring", lapsed: "Lapsed" },
1821
+ claimAmount: "Claimed",
1822
+ documents: "Documents",
1823
+ expired: "Expired",
1824
+ expiresIn: (days) => (days === 1 ? "Expires tomorrow" : `Expires in ${days} days`),
1825
+ expiresOn: (date) => `Valid until ${date}`,
1826
+ };
1827
+
1828
+ export const CONNECTOR_STRINGS: Pick<
1829
+ UIStrings,
1830
+ | "serviceStates"
1831
+ | "connectors"
1832
+ | "connectionsLabel"
1833
+ | "manageAction"
1834
+ | "manageService"
1835
+ | "searchConnectors"
1836
+ | "allCategories"
1837
+ | "connect"
1838
+ | "connectService"
1839
+ | "openAction"
1840
+ | "openService"
1841
+ | "reconnect"
1842
+ | "reconnectService"
1843
+ | "comingSoon"
1844
+ | "noConnectorMatch"
1845
+ | "syncedAgo"
1846
+ | "syncingNow"
1847
+ | "syncFailed"
1848
+ | "syncPaused"
1849
+ | "neverSynced"
1850
+ | "nextSync"
1851
+ | "syncNow"
1852
+ | "agentActivity"
1853
+ | "actionKinds"
1854
+ | "actionStates"
1855
+ | "reviewAction"
1856
+ > = {
1857
+ serviceStates: {
1858
+ connected: "Connected",
1859
+ syncing: "Syncing",
1860
+ error: "Needs attention",
1861
+ paused: "Paused",
1862
+ off: "Off",
1863
+ },
1864
+ connectors: "Connectors",
1865
+ connectionsLabel: "Connections",
1866
+ manageAction: "Manage",
1867
+ manageService: (name) => `Manage ${name}`,
1868
+ searchConnectors: "Search connectors",
1869
+ allCategories: "All",
1870
+ connect: "Connect",
1871
+ connectService: (name) => `Connect ${name}`,
1872
+ openAction: "Open",
1873
+ openService: (name) => `Open ${name}`,
1874
+ reconnect: "Reconnect",
1875
+ reconnectService: (name) => `Reconnect ${name}`,
1876
+ comingSoon: "Coming soon",
1877
+ noConnectorMatch: (q) => `No connector matches “${q}”`,
1878
+ syncedAgo: (when) => `Synced ${when}`,
1879
+ syncingNow: "Syncing…",
1880
+ syncFailed: "Sync failed",
1881
+ syncPaused: "Sync paused",
1882
+ neverSynced: "Not synced yet",
1883
+ nextSync: (when) => `Next ${when}`,
1884
+ syncNow: "Sync now",
1885
+ agentActivity: "Agent activity",
1886
+ actionKinds: { read: "Read", act: "Acted", money: "Money" },
1887
+ actionStates: {
1888
+ waiting: "Waiting for you",
1889
+ declined: "Declined",
1890
+ undone: "Undone",
1891
+ failed: "Failed",
1892
+ },
1893
+ reviewAction: "Review",
1894
+ };
1895
+
1896
+ export const CONNECTED_DATA_STRINGS: Pick<
1897
+ UIStrings,
1898
+ | "deviceOn"
1899
+ | "deviceOff"
1900
+ | "deviceOffline"
1901
+ | "targetTemp"
1902
+ | "lowerTarget"
1903
+ | "raiseTarget"
1904
+ | "batteryLevel"
1905
+ | "chargingStates"
1906
+ | "chargeLimit"
1907
+ | "chargedBy"
1908
+ | "rangeLeft"
1909
+ | "lockedState"
1910
+ | "unlockedState"
1911
+ | "lockAction"
1912
+ | "climateLabel"
1913
+ | "climateOnLabel"
1914
+ | "climateOffLabel"
1915
+ | "insideTemp"
1916
+ | "playAction"
1917
+ | "pauseAction"
1918
+ | "nextTrack"
1919
+ | "previousTrack"
1920
+ | "playingOn"
1921
+ | "heartRateZones"
1922
+ | "zoneMinutes"
1923
+ | "avgHeartRate"
1924
+ | "caloriesLabel"
1925
+ | "distanceLabel"
1926
+ | "durationLabel"
1927
+ | "durationHm"
1928
+ | "calls"
1929
+ | "callDirections"
1930
+ | "callPerson"
1931
+ | "reservationStatus"
1932
+ | "bookingCode"
1933
+ | "scoreLabels"
1934
+ | "scoreNames"
1935
+ | "toPar"
1936
+ | "holdings"
1937
+ | "portfolioShare"
1938
+ > = {
1939
+ deviceOn: "On",
1940
+ deviceOff: "Off",
1941
+ deviceOffline: "Offline",
1942
+ targetTemp: (v) => `Target ${v}`,
1943
+ lowerTarget: "Lower target",
1944
+ raiseTarget: "Raise target",
1945
+ batteryLevel: (p) => `Battery ${p}`,
1946
+ chargingStates: {
1947
+ charging: "Charging",
1948
+ complete: "Charged",
1949
+ plugged: "Plugged in",
1950
+ unplugged: "Not plugged in",
1951
+ },
1952
+ chargeLimit: (p) => `Limit ${p}`,
1953
+ chargedBy: (time) => `Done by ${time}`,
1954
+ rangeLeft: (d) => `${d} range`,
1955
+ lockedState: "Locked",
1956
+ unlockedState: "Unlocked",
1957
+ lockAction: "Lock",
1958
+ climateLabel: "Climate",
1959
+ climateOnLabel: "Climate on",
1960
+ climateOffLabel: "Climate off",
1961
+ insideTemp: (v) => `Inside ${v}`,
1962
+ playAction: "Play",
1963
+ pauseAction: "Pause",
1964
+ nextTrack: "Next",
1965
+ previousTrack: "Previous",
1966
+ playingOn: (d) => `Playing on ${d}`,
1967
+ heartRateZones: "Heart-rate zones",
1968
+ zoneMinutes: (zone, minutes) => `Zone ${zone}: ${minutes} min`,
1969
+ avgHeartRate: "Avg heart rate",
1970
+ caloriesLabel: "Calories",
1971
+ distanceLabel: "Distance",
1972
+ durationLabel: "Duration",
1973
+ durationHm: (hours, minutes) =>
1974
+ hours ? (minutes ? `${hours} h ${minutes} min` : `${hours} h`) : `${minutes} min`,
1975
+ calls: "Calls",
1976
+ callDirections: { incoming: "Incoming", outgoing: "Outgoing", missed: "Missed" },
1977
+ callPerson: (name) => `Call ${name}`,
1978
+ reservationStatus: {
1979
+ confirmed: "Confirmed",
1980
+ pending: "Pending",
1981
+ cancelled: "Cancelled",
1982
+ delayed: "Delayed",
1983
+ onTheWay: "On the way",
1984
+ delivered: "Delivered",
1985
+ },
1986
+ bookingCode: "Booking",
1987
+ scoreLabels: {
1988
+ hole: "Hole",
1989
+ par: "Par",
1990
+ score: "Score",
1991
+ putts: "Putts",
1992
+ out: "Out",
1993
+ in: "In",
1994
+ total: "Total",
1995
+ },
1996
+ scoreNames: {
1997
+ eagle: "Eagle or better",
1998
+ birdie: "Birdie",
1999
+ par: "Par",
2000
+ bogey: "Bogey",
2001
+ double: "Double bogey or worse",
2002
+ },
2003
+ toPar: (n) => (n === 0 ? "Even" : n > 0 ? `+${n}` : `−${-n}`),
2004
+ holdings: "Holdings",
2005
+ portfolioShare: (p) => `${p} of portfolio`,
2006
+ };
2007
+
1494
2008
  /** The English defaults: every group together. */
1495
2009
  export const DEFAULT_STRINGS: UIStrings = /* @__PURE__ */ Object.assign(
1496
2010
  {},
@@ -1503,12 +2017,16 @@ export const DEFAULT_STRINGS: UIStrings = /* @__PURE__ */ Object.assign(
1503
2017
  CHARTS_STRINGS,
1504
2018
  CHAT_STRINGS,
1505
2019
  COMMERCE_STRINGS,
2020
+ CONNECTED_DATA_STRINGS,
2021
+ CONNECTOR_STRINGS,
1506
2022
  DATA_DISPLAY_STRINGS,
1507
2023
  DATA_TABLE_STRINGS,
1508
2024
  DEVELOPER_STRINGS,
1509
2025
  FEEDBACK_STRINGS,
1510
2026
  FORM_STRINGS,
1511
2027
  FORMS_STRINGS,
2028
+ HOUSEHOLD_STRINGS,
2029
+ LIFE_STRINGS,
1512
2030
  MAIL_STRINGS,
1513
2031
  MEDIA_STRINGS,
1514
2032
  NAVIGATION_STRINGS,