neba 1.3.0 → 1.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.
Files changed (135) hide show
  1. package/README.md +7 -7
  2. package/dist/components/alert/Alert.d.ts +9 -1
  3. package/dist/components/alert/Alert.js +1 -1
  4. package/dist/components/area-chart/AreaChart.d.ts +54 -0
  5. package/dist/components/area-chart/AreaChart.js +1 -0
  6. package/dist/components/area-chart/index.d.ts +2 -0
  7. package/dist/components/area-chart/index.js +1 -0
  8. package/dist/components/bar-chart/BarChart.d.ts +63 -0
  9. package/dist/components/bar-chart/BarChart.js +1 -0
  10. package/dist/components/bar-chart/index.d.ts +2 -0
  11. package/dist/components/bar-chart/index.js +1 -0
  12. package/dist/components/bottom-navigation/BottomNavigation.d.ts +111 -0
  13. package/dist/components/bottom-navigation/BottomNavigation.js +1 -0
  14. package/dist/components/bottom-navigation/index.d.ts +1 -0
  15. package/dist/components/bottom-navigation/index.js +1 -0
  16. package/dist/components/breadcrumb/Breadcrumb.d.ts +35 -2
  17. package/dist/components/breadcrumb/Breadcrumb.js +1 -1
  18. package/dist/components/button/Button.d.ts +16 -0
  19. package/dist/components/button/Button.js +1 -1
  20. package/dist/components/carousel/Carousel.d.ts +10 -4
  21. package/dist/components/carousel/Carousel.js +1 -1
  22. package/dist/components/chip/Chip.d.ts +9 -1
  23. package/dist/components/chip/Chip.js +1 -1
  24. package/dist/components/collapsible/Collapsible.d.ts +88 -0
  25. package/dist/components/collapsible/Collapsible.js +1 -0
  26. package/dist/components/collapsible/index.d.ts +1 -0
  27. package/dist/components/collapsible/index.js +1 -0
  28. package/dist/components/combobox/Combobox.d.ts +19 -7
  29. package/dist/components/combobox/Combobox.js +1 -1
  30. package/dist/components/data-table/DataTable.d.ts +323 -0
  31. package/dist/components/data-table/DataTable.js +1 -0
  32. package/dist/components/data-table/index.d.ts +2 -0
  33. package/dist/components/data-table/index.js +1 -0
  34. package/dist/components/dialog/Dialog.d.ts +11 -5
  35. package/dist/components/dialog/Dialog.js +1 -1
  36. package/dist/components/drawer/Drawer.d.ts +11 -5
  37. package/dist/components/drawer/Drawer.js +1 -1
  38. package/dist/components/empty/Empty.d.ts +69 -0
  39. package/dist/components/empty/Empty.js +1 -0
  40. package/dist/components/empty/index.d.ts +2 -0
  41. package/dist/components/empty/index.js +1 -0
  42. package/dist/components/file-picker/FilePicker.d.ts +1 -3
  43. package/dist/components/file-picker/FilePicker.js +1 -1
  44. package/dist/components/floating-action-button/FloatingActionButton.d.ts +146 -0
  45. package/dist/components/floating-action-button/FloatingActionButton.js +1 -0
  46. package/dist/components/floating-action-button/index.d.ts +1 -0
  47. package/dist/components/floating-action-button/index.js +1 -0
  48. package/dist/components/heatmap-chart/HeatmapChart.d.ts +69 -0
  49. package/dist/components/heatmap-chart/HeatmapChart.js +1 -0
  50. package/dist/components/heatmap-chart/index.d.ts +2 -0
  51. package/dist/components/heatmap-chart/index.js +1 -0
  52. package/dist/components/highlight/Highlight.js +1 -1
  53. package/dist/components/line-chart/LineChart.d.ts +74 -0
  54. package/dist/components/line-chart/LineChart.js +1 -0
  55. package/dist/components/line-chart/index.d.ts +2 -0
  56. package/dist/components/line-chart/index.js +1 -0
  57. package/dist/components/mockup/Mockup.d.ts +151 -0
  58. package/dist/components/mockup/Mockup.js +1 -0
  59. package/dist/components/mockup/index.d.ts +2 -0
  60. package/dist/components/mockup/index.js +1 -0
  61. package/dist/components/number-field/NumberField.d.ts +10 -6
  62. package/dist/components/number-field/NumberField.js +1 -1
  63. package/dist/components/overlay/Overlay.d.ts +11 -6
  64. package/dist/components/overlay/Overlay.js +1 -1
  65. package/dist/components/pagination/Pagination.d.ts +28 -6
  66. package/dist/components/pagination/Pagination.js +1 -1
  67. package/dist/components/panes/Panes.js +1 -1
  68. package/dist/components/pie-chart/PieChart.d.ts +58 -0
  69. package/dist/components/pie-chart/PieChart.js +1 -0
  70. package/dist/components/pie-chart/index.d.ts +2 -0
  71. package/dist/components/pie-chart/index.js +1 -0
  72. package/dist/components/popover/Popover.d.ts +11 -5
  73. package/dist/components/popover/Popover.js +1 -1
  74. package/dist/components/progress-box/ProgressBox.js +1 -1
  75. package/dist/components/progress-circular/ProgressCircular.js +1 -1
  76. package/dist/components/progress-linear/ProgressLinear.js +1 -1
  77. package/dist/components/rating/Rating.d.ts +100 -0
  78. package/dist/components/rating/Rating.js +1 -0
  79. package/dist/components/rating/index.d.ts +1 -0
  80. package/dist/components/rating/index.js +1 -0
  81. package/dist/components/scatter-chart/ScatterChart.d.ts +45 -0
  82. package/dist/components/scatter-chart/ScatterChart.js +1 -0
  83. package/dist/components/scatter-chart/index.d.ts +2 -0
  84. package/dist/components/scatter-chart/index.js +1 -0
  85. package/dist/components/select/Select.d.ts +1 -3
  86. package/dist/components/select/Select.js +1 -1
  87. package/dist/components/sparkline/Sparkline.d.ts +67 -0
  88. package/dist/components/sparkline/Sparkline.js +1 -0
  89. package/dist/components/sparkline/index.d.ts +2 -0
  90. package/dist/components/sparkline/index.js +1 -0
  91. package/dist/components/statistic/Statistic.d.ts +7 -0
  92. package/dist/components/statistic/Statistic.js +1 -1
  93. package/dist/components/table/Table.d.ts +13 -2
  94. package/dist/components/table/Table.js +1 -1
  95. package/dist/components/text-link/TextLink.js +1 -1
  96. package/dist/components/time-picker/TimePicker.js +1 -1
  97. package/dist/components/timeline-chart/TimelineChart.d.ts +44 -0
  98. package/dist/components/timeline-chart/TimelineChart.js +1 -0
  99. package/dist/components/timeline-chart/index.d.ts +2 -0
  100. package/dist/components/timeline-chart/index.js +1 -0
  101. package/dist/components/toast/Toast.d.ts +10 -2
  102. package/dist/components/toast/Toast.js +1 -1
  103. package/dist/components/tooltip/Tooltip.d.ts +2 -4
  104. package/dist/components/tooltip/Tooltip.js +1 -1
  105. package/dist/components/tree-view/TreeView.js +1 -1
  106. package/dist/index.d.ts +15 -0
  107. package/dist/index.js +1 -1
  108. package/dist/internal/animate.d.ts +0 -9
  109. package/dist/internal/animate.js +1 -1
  110. package/dist/internal/calendar.js +1 -1
  111. package/dist/internal/chart-frame.d.ts +409 -0
  112. package/dist/internal/chart-frame.js +1 -0
  113. package/dist/internal/chart-line.d.ts +44 -0
  114. package/dist/internal/chart-line.js +1 -0
  115. package/dist/internal/chart.d.ts +456 -0
  116. package/dist/internal/chart.js +1 -0
  117. package/dist/internal/data-table.d.ts +170 -0
  118. package/dist/internal/data-table.js +1 -0
  119. package/dist/internal/date.d.ts +0 -2
  120. package/dist/internal/date.js +1 -1
  121. package/dist/internal/format.d.ts +29 -0
  122. package/dist/internal/format.js +1 -0
  123. package/dist/internal/i18n.d.ts +166 -0
  124. package/dist/internal/i18n.js +1 -1
  125. package/dist/internal/icons.d.ts +2 -0
  126. package/dist/internal/icons.js +1 -1
  127. package/dist/internal/mockup.d.ts +193 -0
  128. package/dist/internal/mockup.js +1 -0
  129. package/dist/internal/picker.d.ts +2 -4
  130. package/dist/internal/picker.js +1 -1
  131. package/dist/internal/progress.d.ts +1 -3
  132. package/dist/styles.css +1 -1
  133. package/dist/tailwind.css +231 -11
  134. package/dist/types.d.ts +214 -0
  135. package/package.json +19 -15
@@ -1 +1 @@
1
- export const YEAR_PAGE_SIZE=12;export function makeDate(t,e,r){const n=new Date(0);return n.setFullYear(t,e,r),n.setHours(0,0,0,0),n}export function isValidDate(t){return t instanceof Date&&!Number.isNaN(t.getTime())}export function startOfDay(t){const e=new Date(t.getTime());return e.setHours(0,0,0,0),e}export function startOfMonth(t){return makeDate(t.getFullYear(),t.getMonth(),1)}export function daysInMonth(t,e){return makeDate(t,e+1,0).getDate()}export function today(){return startOfDay(new Date)}export function addDays(t,e){const r=new Date(t.getTime());return r.setDate(r.getDate()+e),r}export function addMonths(t,e){const r=t.getFullYear(),n=t.getMonth()+e,o=new Date(t.getTime()),a=makeDate(r,n,1);return o.setFullYear(a.getFullYear(),a.getMonth(),Math.min(t.getDate(),daysInMonth(a.getFullYear(),a.getMonth()))),o}export function addYears(t,e){return addMonths(t,12*e)}export function compareDay(t,e){return startOfDay(t).getTime()-startOfDay(e).getTime()}export function isSameDay(t,e){return isValidDate(t)&&isValidDate(e)&&0===compareDay(t,e)}export function isSameMonth(t,e){return isValidDate(t)&&isValidDate(e)&&t.getFullYear()===e.getFullYear()&&t.getMonth()===e.getMonth()}export function isDayInRange(t,e,r){return!(!isValidDate(e)||!isValidDate(r))&&(compareDay(t,e)>0&&compareDay(t,r)<0)}export function clampDate(t,e,r){return isValidDate(e)&&t.getTime()<e.getTime()?new Date(e.getTime()):isValidDate(r)&&t.getTime()>r.getTime()?new Date(r.getTime()):t}export function isDayOutside(t,e,r){return!!(isValidDate(e)&&compareDay(t,e)<0)||isValidDate(r)&&compareDay(t,r)>0}export function minutesOfDay(t){return 60*t.getHours()+t.getMinutes()}export function secondsOfDay(t){return 3600*t.getHours()+60*t.getMinutes()+t.getSeconds()}export function timeUnitSpan(t,e){const r=secondsOfDay(e);if("hour"===t){const t=3600*Math.floor(r/3600);return[t,t+3599]}if("minute"===t){const t=60*Math.floor(r/60);return[t,t+59]}if("second"===t)return[r,r];const n=e.getHours()<12?0:43200;return[n,n+43200-1]}export function withTime(t,e){const r=new Date(t.getTime());return r.setHours(e.hours??r.getHours(),e.minutes??r.getMinutes(),e.seconds??r.getSeconds(),0),r}export function mergeDateAndTime(t,e){return withTime(startOfDay(t),{hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds()})}export function calendarWeeks(t,e){const r=startOfMonth(t),n=(r.getDay()-e+7)%7,o=addDays(r,-n);return Array.from({length:6},(t,e)=>Array.from({length:7},(t,r)=>addDays(o,7*e+r)))}export function yearPageStart(t){return t-(t%12+12)%12}const t=new Map;export function dateFormatter(e,r){const n=`${e??""}\0${JSON.stringify(r)}`;let o=t.get(n);return o||(o=new Intl.DateTimeFormat(e,r),t.set(n,o)),o}export function formatDate(t,e,r){return isValidDate(t)?dateFormatter(e,r).format(t):""}const e=Array.from({length:24},(t,e)=>new Date(2027,e%12,21+e%7,e,58,58));export function displaySamples(t,r){const n=dateFormatter(t,r);return[...new Set(e.map(t=>n.format(t)))]}export function withPlaceholder(t,e){return"string"==typeof e&&""!==e?[...t,e]:t}export function toISODate(t){const e=t=>String(t).padStart(2,"0");return`${String(t.getFullYear()).padStart(4,"0")}-${e(t.getMonth()+1)}-${e(t.getDate())}`}export function toISOTime(t,e=!1){const r=t=>String(t).padStart(2,"0"),n=`${r(t.getHours())}:${r(t.getMinutes())}`;return e?`${n}:${r(t.getSeconds())}`:n}export function toISODateTime(t,e=!1){return`${toISODate(t)}T${toISOTime(t,e)}`}const r=makeDate(2021,7,1);export function weekdayLabels(t,e,n="short"){const o=dateFormatter(t,{weekday:n});return Array.from({length:7},(t,n)=>o.format(addDays(r,(e+n)%7)))}export function monthLabels(t,e="short"){const r=dateFormatter(t,{month:e});return Array.from({length:12},(t,e)=>r.format(makeDate(2021,e,1)))}export function isMonthBeforeYear(t){const e=dateFormatter(t,{year:"numeric",month:"long"}).formatToParts(r);return e.findIndex(t=>"month"===t.type)<e.findIndex(t=>"year"===t.type)}export function isHour12(t){const e=dateFormatter(t,{hour:"numeric"}).resolvedOptions();return e.hourCycle?"h11"===e.hourCycle||"h12"===e.hourCycle:!0===e.hour12}export function meridiemLabels(t){const e=dateFormatter(t,{hour:"numeric",hour12:!0}),n=t=>{const n=e.formatToParts(withTime(r,{hours:t})).find(t=>"dayPeriod"===t.type);return n?.value??(t<12?"AM":"PM")};return[n(9),n(21)]}export function localeWeekStart(t){try{const e=t??(new Intl.DateTimeFormat).resolvedOptions().locale,r=new Intl.Locale(e),n="function"==typeof r.getWeekInfo?r.getWeekInfo():r.weekInfo;if("number"==typeof n?.firstDay)return n.firstDay%7}catch{}return 0}
1
+ import{dateFormatter as t}from"./format";export const YEAR_PAGE_SIZE=12;export function makeDate(t,e,n){const r=new Date(0);return r.setFullYear(t,e,n),r.setHours(0,0,0,0),r}export function isValidDate(t){return t instanceof Date&&!Number.isNaN(t.getTime())}export function startOfDay(t){const e=new Date(t.getTime());return e.setHours(0,0,0,0),e}export function startOfMonth(t){return makeDate(t.getFullYear(),t.getMonth(),1)}export function daysInMonth(t,e){return makeDate(t,e+1,0).getDate()}export function today(){return startOfDay(new Date)}export function addDays(t,e){const n=new Date(t.getTime());return n.setDate(n.getDate()+e),n}export function addMonths(t,e){const n=t.getFullYear(),r=t.getMonth()+e,o=new Date(t.getTime()),a=makeDate(n,r,1);return o.setFullYear(a.getFullYear(),a.getMonth(),Math.min(t.getDate(),daysInMonth(a.getFullYear(),a.getMonth()))),o}export function addYears(t,e){return addMonths(t,12*e)}export function compareDay(t,e){return startOfDay(t).getTime()-startOfDay(e).getTime()}export function isSameDay(t,e){return isValidDate(t)&&isValidDate(e)&&0===compareDay(t,e)}export function isSameMonth(t,e){return isValidDate(t)&&isValidDate(e)&&t.getFullYear()===e.getFullYear()&&t.getMonth()===e.getMonth()}export function isDayInRange(t,e,n){return!(!isValidDate(e)||!isValidDate(n))&&(compareDay(t,e)>0&&compareDay(t,n)<0)}export function clampDate(t,e,n){return isValidDate(e)&&t.getTime()<e.getTime()?new Date(e.getTime()):isValidDate(n)&&t.getTime()>n.getTime()?new Date(n.getTime()):t}export function isDayOutside(t,e,n){return!!(isValidDate(e)&&compareDay(t,e)<0)||isValidDate(n)&&compareDay(t,n)>0}export function minutesOfDay(t){return 60*t.getHours()+t.getMinutes()}export function secondsOfDay(t){return 3600*t.getHours()+60*t.getMinutes()+t.getSeconds()}export function timeUnitSpan(t,e){const n=secondsOfDay(e);if("hour"===t){const t=3600*Math.floor(n/3600);return[t,t+3599]}if("minute"===t){const t=60*Math.floor(n/60);return[t,t+59]}if("second"===t)return[n,n];const r=e.getHours()<12?0:43200;return[r,r+43200-1]}export function withTime(t,e){const n=new Date(t.getTime());return n.setHours(e.hours??n.getHours(),e.minutes??n.getMinutes(),e.seconds??n.getSeconds(),0),n}export function mergeDateAndTime(t,e){return withTime(startOfDay(t),{hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds()})}export function calendarWeeks(t,e){const n=startOfMonth(t),r=(n.getDay()-e+7)%7,o=addDays(n,-r);return Array.from({length:6},(t,e)=>Array.from({length:7},(t,n)=>addDays(o,7*e+n)))}export function yearPageStart(t){return t-(t%12+12)%12}export function formatDate(e,n,r){return isValidDate(e)?t(n,r).format(e):""}const e=Array.from({length:24},(t,e)=>new Date(2027,e%12,21+e%7,e,58,58));export function displaySamples(n,r){const o=t(n,r);return[...new Set(e.map(t=>o.format(t)))]}export function withPlaceholder(t,e){return"string"==typeof e&&""!==e?[...t,e]:t}export function toISODate(t){const e=t=>String(t).padStart(2,"0");return`${String(t.getFullYear()).padStart(4,"0")}-${e(t.getMonth()+1)}-${e(t.getDate())}`}export function toISOTime(t,e=!1){const n=t=>String(t).padStart(2,"0"),r=`${n(t.getHours())}:${n(t.getMinutes())}`;return e?`${r}:${n(t.getSeconds())}`:r}export function toISODateTime(t,e=!1){return`${toISODate(t)}T${toISOTime(t,e)}`}const n=makeDate(2021,7,1);export function weekdayLabels(e,r,o="short"){const a=t(e,{weekday:o});return Array.from({length:7},(t,e)=>a.format(addDays(n,(r+e)%7)))}export function monthLabels(e,n="short"){const r=t(e,{month:n});return Array.from({length:12},(t,e)=>r.format(makeDate(2021,e,1)))}export function isMonthBeforeYear(e){const r=t(e,{year:"numeric",month:"long"}).formatToParts(n);return r.findIndex(t=>"month"===t.type)<r.findIndex(t=>"year"===t.type)}export function isHour12(e){const n=t(e,{hour:"numeric"}).resolvedOptions();return n.hourCycle?"h11"===n.hourCycle||"h12"===n.hourCycle:!0===n.hour12}export function meridiemLabels(e){const r=t(e,{hour:"numeric",hour12:!0}),o=t=>{const e=r.formatToParts(withTime(n,{hours:t})).find(t=>"dayPeriod"===t.type);return e?.value??(t<12?"AM":"PM")};return[o(9),o(21)]}export function localeWeekStart(t){try{const e=t??(new Intl.DateTimeFormat).resolvedOptions().locale,n=new Intl.Locale(e),r="function"==typeof n.getWeekInfo?n.getWeekInfo():n.weekInfo;if("number"==typeof r?.firstDay)return r.firstDay%7}catch{}return 0}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * The `Intl` formatters, memoised.
3
+ *
4
+ * Here for the reason everything else in this folder is: three unrelated parts
5
+ * of the library construct them, and constructing one is the expensive half of
6
+ * using one. Measured on V8, `new Intl.NumberFormat(...).format(n)` costs about
7
+ * 16µs and `format(n)` on a formatter that already exists costs about 0.3µs —
8
+ * fifty-five times the work to produce the same string.
9
+ *
10
+ * That ratio only matters where the call is in a loop or in a render, and in
11
+ * this library it is both. A calendar builds seven weekday names and twelve
12
+ * month names for a 42-cell month view. A chart writes one label per axis tick,
13
+ * one per category and one per tooltip row, and it writes all of them again on
14
+ * every re-render — which, on a chart being hovered, is every frame.
15
+ *
16
+ * The cache is keyed on the locale and the options together, and it is unbounded
17
+ * on purpose. The keys are not user data: they come from a component's own
18
+ * option objects, of which any one page has a handful, so there is nothing here
19
+ * that grows with the size of a table or the length of a series.
20
+ *
21
+ * The options object is deliberately *not* part of the key by identity. A caller
22
+ * writing `format={{ style: 'currency', currency: 'USD' }}` inline hands over a
23
+ * new object on every render — which is the ordinary way that prop gets written
24
+ * — and keying on identity would miss every time and cache nothing but garbage.
25
+ */
26
+ /** A memoised `Intl.DateTimeFormat`. */
27
+ export declare function dateFormatter(locale: string | undefined, options: Intl.DateTimeFormatOptions): Intl.DateTimeFormat;
28
+ /** A memoised `Intl.NumberFormat`. */
29
+ export declare function numberFormatter(locale: string | undefined, options?: Intl.NumberFormatOptions): Intl.NumberFormat;
@@ -0,0 +1 @@
1
+ function t(t,e){return`${t??""}\0${e?JSON.stringify(e):""}`}const e=new Map;export function dateFormatter(n,r){const o=t(n,r);let a=e.get(o);return a||(a=new Intl.DateTimeFormat(n,r),e.set(o,a)),a}const n=new Map;export function numberFormatter(e,r){const o=t(e,r);let a=n.get(o);return a||(a=new Intl.NumberFormat(e,r),n.set(o,a)),a}
@@ -32,6 +32,28 @@
32
32
  * language that has not caught up with it yet.
33
33
  */
34
34
  export interface NebaMessages {
35
+ /**
36
+ * The words more than one component needs.
37
+ *
38
+ * The one namespace here that is not a component, and it exists because five
39
+ * of them draw the same × and would otherwise each carry their own "Close" in
40
+ * eighteen languages. A reader meeting that button on a Dialog, a Drawer, a
41
+ * Popover and a Toast should hear the same word every time, which is easier to
42
+ * guarantee when there is only one of it.
43
+ */
44
+ action: {
45
+ /** The × on a Dialog, a Drawer, a Popover and a Toast. */
46
+ close: string;
47
+ /**
48
+ * And the one on an Alert, which is a different act: a dialog is closed
49
+ * because it has been answered, an alert is waved away.
50
+ */
51
+ dismiss: string;
52
+ /** The × that empties a Combobox. */
53
+ clear: string;
54
+ /** The × on a Chip. */
55
+ remove: string;
56
+ };
35
57
  /** TextLink. */
36
58
  link: {
37
59
  /**
@@ -62,6 +84,51 @@ export interface NebaMessages {
62
84
  /** What the three dots mean. */
63
85
  typing: string;
64
86
  };
87
+ /** Empty. */
88
+ empty: {
89
+ /**
90
+ * The headline over a region with nothing in it.
91
+ *
92
+ * The one string in here that is *drawn* at full size rather than read out
93
+ * or written on a button, and it is here for the same reason the rest are:
94
+ * an empty state has nothing to take its words from. What is missing is the
95
+ * caller's — a search, an inbox, a folder — so the default says only that
96
+ * there is nothing, and anything more specific is the `title` prop.
97
+ */
98
+ title: string;
99
+ };
100
+ /**
101
+ * DataTable.
102
+ *
103
+ * A DataTable is the one component in the library that draws chrome of its
104
+ * own — a search field, a header tick that chooses everything at once, a
105
+ * footer counting what is on screen — so it is also the one that has the most
106
+ * to say without being handed the words.
107
+ */
108
+ table: {
109
+ /** Placeholder and accessible name of the search field. */
110
+ search: string;
111
+ /** The tick in the header row, which chooses every row at once. */
112
+ selectAll: string;
113
+ /** The tick on a row. */
114
+ selectRow: string;
115
+ /** Beside the footer's page-size Select. */
116
+ rowsPerPage: string;
117
+ /**
118
+ * Which rows are on screen, out of how many there are. `{start}`, `{end}`
119
+ * and `{total}` are replaced with the numbers, already formatted for the
120
+ * locale — a template rather than three fragments, because the order the
121
+ * three appear in is exactly what differs between languages.
122
+ */
123
+ range: string;
124
+ /** How many rows are chosen. `{count}` is replaced the same way. */
125
+ selected: string;
126
+ /**
127
+ * What a table with no rows in it says. Shared with Table, which has the
128
+ * same nothing to report and no chrome of its own to say it with.
129
+ */
130
+ empty: string;
131
+ };
65
132
  /**
66
133
  * ColorPicker.
67
134
  *
@@ -87,6 +154,94 @@ export interface NebaMessages {
87
154
  /** What the trigger reads before anything has been chosen. */
88
155
  empty: string;
89
156
  };
157
+ /**
158
+ * Rating.
159
+ *
160
+ * A row of stars is the same case the ColorPicker's rails are: the whole
161
+ * control is a picture, and without these it says nothing at all to a reader
162
+ * who is not looking at it.
163
+ */
164
+ rating: {
165
+ /** Names the group, when the caller has not named it themselves. */
166
+ label: string;
167
+ /**
168
+ * What one star — and the whole control, once it is read only — is called.
169
+ * `{value}` and `{max}` are replaced with the numbers, already formatted
170
+ * for the locale.
171
+ *
172
+ * A sentence with both numbers in it rather than "3 stars", because a count
173
+ * of stars is a plural in most languages and a fraction in none of them:
174
+ * "3 out of 5" is one string per locale, and "3 stars" is one per locale
175
+ * per plural form.
176
+ */
177
+ value: string;
178
+ /** And what it is called before anything has been chosen. */
179
+ empty: string;
180
+ };
181
+ /**
182
+ * NumberField.
183
+ *
184
+ * Two buttons with an arrow on each and nothing else, which is the same case
185
+ * the ColorPicker's rails are.
186
+ */
187
+ number: {
188
+ /** The stepper that goes up. */
189
+ increase: string;
190
+ /** And the one that goes down. */
191
+ decrease: string;
192
+ };
193
+ /**
194
+ * Pagination.
195
+ *
196
+ * Every string here names a control that is a number or an arrow, so without
197
+ * them the row reads out as a list of digits with no idea what they page
198
+ * through.
199
+ */
200
+ pagination: {
201
+ /** Names the `<nav>` landmark. */
202
+ label: string;
203
+ /** One page button. `{page}` is replaced with the number. */
204
+ page: string;
205
+ /**
206
+ * Where the reader is, read out rather than drawn. `{page}` and `{total}`
207
+ * are both replaced — one sentence rather than two fragments, because a
208
+ * count of pages and the page you are on go in opposite orders depending on
209
+ * the language.
210
+ */
211
+ status: string;
212
+ previous: string;
213
+ next: string;
214
+ first: string;
215
+ last: string;
216
+ };
217
+ /** Carousel. */
218
+ carousel: {
219
+ /** Names the region, beside the `carousel` roledescription. */
220
+ label: string;
221
+ /** One slide. `{index}` and `{total}` are replaced with the numbers. */
222
+ slide: string;
223
+ previous: string;
224
+ next: string;
225
+ };
226
+ /** Breadcrumb. */
227
+ breadcrumb: {
228
+ /** Names the `<nav>` landmark. */
229
+ label: string;
230
+ /** The `…` that puts the folded middle of the trail back. */
231
+ expand: string;
232
+ };
233
+ /** Combobox. */
234
+ combobox: {
235
+ /** The line where the list would be, when nothing matched what was typed. */
236
+ empty: string;
237
+ /** The × on one chosen entry. `{label}` is replaced with its own label. */
238
+ remove: string;
239
+ };
240
+ /** Overlay. */
241
+ overlay: {
242
+ /** Names the sheet that covers whatever it was wrapped around. */
243
+ label: string;
244
+ };
90
245
  }
91
246
  /**
92
247
  * The strings for a locale, merged over English.
@@ -101,3 +256,14 @@ export interface NebaMessages {
101
256
  export declare function resolveMessages(locale?: string): NebaMessages;
102
257
  /** The same, as a hook, for the components that read it during a render. */
103
258
  export declare function useMessages(locale?: string): NebaMessages;
259
+ /**
260
+ * Fills the `{placeholders}` in one of the strings above.
261
+ *
262
+ * Two of them carry numbers, and neither could be assembled out of fragments:
263
+ * "1–25 of 1,204" is "전체 1,204개 중 1–25" in Korean and "1,204 kayıttan 1–25"
264
+ * in Turkish, so what differs between languages is the *order*, which only a
265
+ * whole sentence can state. A `{name}` with no value is left alone rather than
266
+ * blanked, so a mistranslated placeholder shows up as itself instead of as a
267
+ * hole in the middle of a sentence.
268
+ */
269
+ export declare function fillMessage(template: string, values: Record<string, string>): string;
@@ -1 +1 @@
1
- import*as e from"react";const a={link:{newTab:"(opens in a new tab)"},spoiler:{reveal:"Reveal",hide:"Hide",notice:"This may contain spoilers"},chat:{sending:"Sending",sent:"Sent",delivered:"Delivered",read:"Read",failed:"Not sent",typing:"Typing…"},color:{area:"Saturation and brightness",hue:"Hue",alpha:"Opacity",value:"Colour value",swatches:"Preset colours",clear:"Clear",empty:"Choose a colour"}},n={ko:{link:{newTab:"(새 창에서 열림)"},spoiler:{reveal:"내용 보기",hide:"숨기기",notice:"스포일러가 포함되어 있을 수 있습니다"},chat:{sending:"보내는 중",sent:"보냄",delivered:"전달됨",read:"읽음",failed:"전송 실패",typing:"입력 중…"},color:{area:"채도와 명도",hue:"색상",alpha:"불투명도",value:"색상 값",swatches:"기본 색상",clear:"지우기",empty:"색상 선택"}},ja:{link:{newTab:"(新しいタブで開きます)"},spoiler:{reveal:"表示する",hide:"隠す",notice:"ネタバレを含む可能性があります"},chat:{sending:"送信中",sent:"送信済み",delivered:"配信済み",read:"既読",failed:"送信できませんでした",typing:"入力中…"},color:{area:"彩度と明度",hue:"色相",alpha:"不透明度",value:"カラー値",swatches:"プリセットの色",clear:"クリア",empty:"色を選択"}},"zh-hans":{link:{newTab:"(在新标签页中打开)"},spoiler:{reveal:"显示内容",hide:"隐藏",notice:"此内容可能包含剧透"},chat:{sending:"发送中",sent:"已发送",delivered:"已送达",read:"已读",failed:"发送失败",typing:"正在输入…"},color:{area:"饱和度和明度",hue:"色相",alpha:"不透明度",value:"颜色值",swatches:"预设颜色",clear:"清除",empty:"选择颜色"}},"zh-hant":{link:{newTab:"(在新分頁中開啟)"},spoiler:{reveal:"顯示內容",hide:"隱藏",notice:"此內容可能包含劇透"},chat:{sending:"傳送中",sent:"已傳送",delivered:"已送達",read:"已讀",failed:"傳送失敗",typing:"正在輸入…"},color:{area:"飽和度與明度",hue:"色相",alpha:"不透明度",value:"顏色值",swatches:"預設顏色",clear:"清除",empty:"選擇顏色"}},es:{link:{newTab:"(se abre en una pestaña nueva)"},spoiler:{reveal:"Mostrar",hide:"Ocultar",notice:"Puede contener spoilers"},chat:{sending:"Enviando",sent:"Enviado",delivered:"Entregado",read:"Leído",failed:"No enviado",typing:"Escribiendo…"},color:{area:"Saturación y brillo",hue:"Tono",alpha:"Opacidad",value:"Valor del color",swatches:"Colores predefinidos",clear:"Borrar",empty:"Elegir un color"}},pt:{link:{newTab:"(abre em uma nova aba)"},spoiler:{reveal:"Mostrar",hide:"Ocultar",notice:"Pode conter spoilers"},chat:{sending:"Enviando",sent:"Enviado",delivered:"Entregue",read:"Lido",failed:"Não enviado",typing:"Digitando…"},color:{area:"Saturação e brilho",hue:"Matiz",alpha:"Opacidade",value:"Valor da cor",swatches:"Cores predefinidas",clear:"Limpar",empty:"Escolher uma cor"}},fr:{link:{newTab:"(s’ouvre dans un nouvel onglet)"},spoiler:{reveal:"Afficher",hide:"Masquer",notice:"Peut contenir des spoilers"},chat:{sending:"Envoi en cours",sent:"Envoyé",delivered:"Distribué",read:"Lu",failed:"Non envoyé",typing:"En train d’écrire…"},color:{area:"Saturation et luminosité",hue:"Teinte",alpha:"Opacité",value:"Valeur de la couleur",swatches:"Couleurs prédéfinies",clear:"Effacer",empty:"Choisir une couleur"}},de:{link:{newTab:"(wird in einem neuen Tab geöffnet)"},spoiler:{reveal:"Anzeigen",hide:"Ausblenden",notice:"Kann Spoiler enthalten"},chat:{sending:"Wird gesendet",sent:"Gesendet",delivered:"Zugestellt",read:"Gelesen",failed:"Nicht gesendet",typing:"Schreibt…"},color:{area:"Sättigung und Helligkeit",hue:"Farbton",alpha:"Deckkraft",value:"Farbwert",swatches:"Vorgegebene Farben",clear:"Löschen",empty:"Farbe auswählen"}},it:{link:{newTab:"(si apre in una nuova scheda)"},spoiler:{reveal:"Mostra",hide:"Nascondi",notice:"Può contenere spoiler"},chat:{sending:"Invio in corso",sent:"Inviato",delivered:"Consegnato",read:"Letto",failed:"Non inviato",typing:"Sta scrivendo…"},color:{area:"Saturazione e luminosità",hue:"Tonalità",alpha:"Opacità",value:"Valore del colore",swatches:"Colori predefiniti",clear:"Cancella",empty:"Scegli un colore"}},nl:{link:{newTab:"(opent in een nieuw tabblad)"},spoiler:{reveal:"Tonen",hide:"Verbergen",notice:"Kan spoilers bevatten"},chat:{sending:"Wordt verzonden",sent:"Verzonden",delivered:"Afgeleverd",read:"Gelezen",failed:"Niet verzonden",typing:"Aan het typen…"},color:{area:"Verzadiging en helderheid",hue:"Kleurtoon",alpha:"Dekking",value:"Kleurwaarde",swatches:"Vooraf ingestelde kleuren",clear:"Wissen",empty:"Kies een kleur"}},pl:{link:{newTab:"(otwiera się w nowej karcie)"},spoiler:{reveal:"Pokaż",hide:"Ukryj",notice:"Może zawierać spoilery"},chat:{sending:"Wysyłanie",sent:"Wysłano",delivered:"Dostarczono",read:"Przeczytano",failed:"Nie wysłano",typing:"Pisze…"},color:{area:"Nasycenie i jasność",hue:"Barwa",alpha:"Krycie",value:"Wartość koloru",swatches:"Kolory predefiniowane",clear:"Wyczyść",empty:"Wybierz kolor"}},ru:{link:{newTab:"(откроется в новой вкладке)"},spoiler:{reveal:"Показать",hide:"Скрыть",notice:"Может содержать спойлеры"},chat:{sending:"Отправляется",sent:"Отправлено",delivered:"Доставлено",read:"Прочитано",failed:"Не отправлено",typing:"Печатает…"},color:{area:"Насыщенность и яркость",hue:"Оттенок",alpha:"Непрозрачность",value:"Значение цвета",swatches:"Готовые цвета",clear:"Очистить",empty:"Выберите цвет"}},tr:{link:{newTab:"(yeni sekmede açılır)"},spoiler:{reveal:"Göster",hide:"Gizle",notice:"Spoiler içerebilir"},chat:{sending:"Gönderiliyor",sent:"Gönderildi",delivered:"İletildi",read:"Okundu",failed:"Gönderilemedi",typing:"Yazıyor…"},color:{area:"Doygunluk ve parlaklık",hue:"Renk tonu",alpha:"Opaklık",value:"Renk değeri",swatches:"Hazır renkler",clear:"Temizle",empty:"Bir renk seçin"}},ar:{link:{newTab:"(يفتح في علامة تبويب جديدة)"},spoiler:{reveal:"إظهار",hide:"إخفاء",notice:"قد يحتوي على حرق للأحداث"},chat:{sending:"جارٍ الإرسال",sent:"تم الإرسال",delivered:"تم التسليم",read:"تمت القراءة",failed:"لم يتم الإرسال",typing:"يكتب الآن…"},color:{area:"التشبع والسطوع",hue:"درجة اللون",alpha:"العتامة",value:"قيمة اللون",swatches:"ألوان جاهزة",clear:"مسح",empty:"اختر لونًا"}},hi:{link:{newTab:"(नए टैब में खुलता है)"},spoiler:{reveal:"दिखाएँ",hide:"छिपाएँ",notice:"इसमें स्पॉइलर हो सकते हैं"},chat:{sending:"भेजा जा रहा है",sent:"भेजा गया",delivered:"डिलीवर हुआ",read:"पढ़ा गया",failed:"नहीं भेजा गया",typing:"टाइप कर रहे हैं…"},color:{area:"संतृप्ति और चमक",hue:"रंग",alpha:"अपारदर्शिता",value:"रंग मान",swatches:"पूर्व निर्धारित रंग",clear:"साफ़ करें",empty:"एक रंग चुनें"}},id:{link:{newTab:"(terbuka di tab baru)"},spoiler:{reveal:"Tampilkan",hide:"Sembunyikan",notice:"Mungkin mengandung spoiler"},chat:{sending:"Mengirim",sent:"Terkirim",delivered:"Diterima",read:"Dibaca",failed:"Gagal terkirim",typing:"Sedang mengetik…"},color:{area:"Saturasi dan kecerahan",hue:"Rona",alpha:"Opasitas",value:"Nilai warna",swatches:"Warna preset",clear:"Hapus",empty:"Pilih warna"}},vi:{link:{newTab:"(mở trong tab mới)"},spoiler:{reveal:"Hiện nội dung",hide:"Ẩn",notice:"Có thể chứa nội dung tiết lộ"},chat:{sending:"Đang gửi",sent:"Đã gửi",delivered:"Đã nhận",read:"Đã xem",failed:"Chưa gửi được",typing:"Đang nhập…"},color:{area:"Độ bão hòa và độ sáng",hue:"Sắc độ",alpha:"Độ mờ đục",value:"Giá trị màu",swatches:"Màu dựng sẵn",clear:"Xóa",empty:"Chọn màu"}},th:{link:{newTab:"(เปิดในแท็บใหม่)"},spoiler:{reveal:"แสดงเนื้อหา",hide:"ซ่อน",notice:"อาจมีการเปิดเผยเนื้อหา"},chat:{sending:"กำลังส่ง",sent:"ส่งแล้ว",delivered:"ส่งถึงแล้ว",read:"อ่านแล้ว",failed:"ส่งไม่สำเร็จ",typing:"กำลังพิมพ์…"},color:{area:"ความอิ่มตัวและความสว่าง",hue:"เฉดสี",alpha:"ความทึบ",value:"ค่าสี",swatches:"สีที่กำหนดไว้",clear:"ล้าง",empty:"เลือกสี"}}},i={zh:"zh-hans","zh-cn":"zh-hans","zh-my":"zh-hans","zh-sg":"zh-hans","zh-hk":"zh-hant","zh-mo":"zh-hant","zh-tw":"zh-hant"};const r=new Map([["",a]]);export function resolveMessages(e){const l=e?.trim()??"",t=r.get(l);if(t)return t;const o=function(e){const a=e.toLowerCase().split(/[-_]/).filter(Boolean),n=a[0];if(!n)return[];const i=a.slice(1),r=i.find(e=>/^[a-z]{4}$/.test(e)),l=i.find(e=>/^([a-z]{2}|\d{3})$/.test(e));return[r?`${n}-${r}`:"",l?`${n}-${l}`:"",n].filter(Boolean)}(l).map(e=>n[e]??n[i[e]??""]).find(Boolean),s=o?{link:{...a.link,...o.link},spoiler:{...a.spoiler,...o.spoiler},chat:{...a.chat,...o.chat},color:{...a.color,...o.color}}:a;return r.set(l,s),s}export function useMessages(a){return e.useMemo(()=>resolveMessages(a),[a])}
1
+ import*as e from"react";const a={action:{close:"Close",dismiss:"Dismiss",clear:"Clear",remove:"Remove"},link:{newTab:"(opens in a new tab)"},spoiler:{reveal:"Reveal",hide:"Hide",notice:"This may contain spoilers"},chat:{sending:"Sending",sent:"Sent",delivered:"Delivered",read:"Read",failed:"Not sent",typing:"Typing…"},empty:{title:"Nothing here"},table:{search:"Search",selectAll:"Select all rows",selectRow:"Select row",rowsPerPage:"Rows per page",range:"{start}–{end} of {total}",selected:"{count} selected",empty:"No data"},color:{area:"Saturation and brightness",hue:"Hue",alpha:"Opacity",value:"Colour value",swatches:"Preset colours",clear:"Clear",empty:"Choose a colour"},rating:{label:"Rating",value:"{value} out of {max}",empty:"No rating"},number:{increase:"Increase",decrease:"Decrease"},pagination:{label:"Pagination",page:"Page {page}",status:"Page {page} of {total}",previous:"Previous page",next:"Next page",first:"First page",last:"Last page"},carousel:{label:"Carousel",slide:"Slide {index} of {total}",previous:"Previous slide",next:"Next slide"},breadcrumb:{label:"Breadcrumb",expand:"Show hidden steps"},combobox:{empty:"No matches",remove:"Remove {label}"},overlay:{label:"Overlay"}},l={ko:{action:{close:"닫기",dismiss:"알림 닫기",clear:"지우기",remove:"삭제"},link:{newTab:"(새 창에서 열림)"},spoiler:{reveal:"내용 보기",hide:"숨기기",notice:"스포일러가 포함되어 있을 수 있습니다"},chat:{sending:"보내는 중",sent:"보냄",delivered:"전달됨",read:"읽음",failed:"전송 실패",typing:"입력 중…"},empty:{title:"내용이 없습니다"},table:{search:"검색",selectAll:"모든 행 선택",selectRow:"행 선택",rowsPerPage:"페이지당 행 수",range:"전체 {total}개 중 {start}–{end}",selected:"{count}개 선택됨",empty:"데이터 없음"},color:{area:"채도와 명도",hue:"색상",alpha:"불투명도",value:"색상 값",swatches:"기본 색상",clear:"지우기",empty:"색상 선택"},rating:{label:"별점",value:"{max}점 만점에 {value}점",empty:"별점 없음"},number:{increase:"값 늘리기",decrease:"값 줄이기"},pagination:{label:"페이지 매기기",page:"{page}페이지",status:"전체 {total}페이지 중 {page}페이지",previous:"이전 페이지",next:"다음 페이지",first:"첫 페이지",last:"마지막 페이지"},carousel:{label:"캐러셀",slide:"전체 {total}장 중 {index}장",previous:"이전 슬라이드",next:"다음 슬라이드"},breadcrumb:{label:"탐색 경로",expand:"숨겨진 단계 보기"},combobox:{empty:"일치하는 항목 없음",remove:"{label} 삭제"},overlay:{label:"오버레이"}},ja:{action:{close:"閉じる",dismiss:"閉じる",clear:"クリア",remove:"削除"},link:{newTab:"(新しいタブで開きます)"},spoiler:{reveal:"表示する",hide:"隠す",notice:"ネタバレを含む可能性があります"},chat:{sending:"送信中",sent:"送信済み",delivered:"配信済み",read:"既読",failed:"送信できませんでした",typing:"入力中…"},empty:{title:"表示するものがありません"},table:{search:"検索",selectAll:"すべての行を選択",selectRow:"行を選択",rowsPerPage:"1 ページの行数",range:"{total} 件中 {start}–{end} 件",selected:"{count} 件を選択中",empty:"データがありません"},color:{area:"彩度と明度",hue:"色相",alpha:"不透明度",value:"カラー値",swatches:"プリセットの色",clear:"クリア",empty:"色を選択"},rating:{label:"評価",value:"{max} 段階中 {value}",empty:"評価なし"},number:{increase:"増やす",decrease:"減らす"},pagination:{label:"ページ送り",page:"{page} ページ",status:"{total} ページ中 {page} ページ",previous:"前のページ",next:"次のページ",first:"最初のページ",last:"最後のページ"},carousel:{label:"カルーセル",slide:"{total} 枚中 {index} 枚目",previous:"前のスライド",next:"次のスライド"},breadcrumb:{label:"パンくずリスト",expand:"省略された階層を表示"},combobox:{empty:"一致する項目がありません",remove:"{label} を削除"},overlay:{label:"オーバーレイ"}},"zh-hans":{action:{close:"关闭",dismiss:"关闭",clear:"清除",remove:"移除"},link:{newTab:"(在新标签页中打开)"},spoiler:{reveal:"显示内容",hide:"隐藏",notice:"此内容可能包含剧透"},chat:{sending:"发送中",sent:"已发送",delivered:"已送达",read:"已读",failed:"发送失败",typing:"正在输入…"},empty:{title:"暂无内容"},table:{search:"搜索",selectAll:"全选所有行",selectRow:"选择此行",rowsPerPage:"每页行数",range:"第 {start}–{end} 行,共 {total} 行",selected:"已选择 {count} 行",empty:"暂无数据"},color:{area:"饱和度和明度",hue:"色相",alpha:"不透明度",value:"颜色值",swatches:"预设颜色",clear:"清除",empty:"选择颜色"},rating:{label:"评分",value:"{max} 分中的 {value} 分",empty:"未评分"},number:{increase:"增加",decrease:"减少"},pagination:{label:"分页",page:"第 {page} 页",status:"第 {page} 页,共 {total} 页",previous:"上一页",next:"下一页",first:"第一页",last:"最后一页"},carousel:{label:"轮播",slide:"第 {index} 张,共 {total} 张",previous:"上一张",next:"下一张"},breadcrumb:{label:"面包屑导航",expand:"显示隐藏的层级"},combobox:{empty:"无匹配项",remove:"移除 {label}"},overlay:{label:"遮罩层"}},"zh-hant":{action:{close:"關閉",dismiss:"關閉",clear:"清除",remove:"移除"},link:{newTab:"(在新分頁中開啟)"},spoiler:{reveal:"顯示內容",hide:"隱藏",notice:"此內容可能包含劇透"},chat:{sending:"傳送中",sent:"已傳送",delivered:"已送達",read:"已讀",failed:"傳送失敗",typing:"正在輸入…"},empty:{title:"沒有內容"},table:{search:"搜尋",selectAll:"全選所有列",selectRow:"選擇此列",rowsPerPage:"每頁列數",range:"第 {start}–{end} 列,共 {total} 列",selected:"已選擇 {count} 列",empty:"沒有資料"},color:{area:"飽和度與明度",hue:"色相",alpha:"不透明度",value:"顏色值",swatches:"預設顏色",clear:"清除",empty:"選擇顏色"},rating:{label:"評分",value:"{max} 分中的 {value} 分",empty:"未評分"},number:{increase:"增加",decrease:"減少"},pagination:{label:"分頁",page:"第 {page} 頁",status:"第 {page} 頁,共 {total} 頁",previous:"上一頁",next:"下一頁",first:"第一頁",last:"最後一頁"},carousel:{label:"輪播",slide:"第 {index} 張,共 {total} 張",previous:"上一張",next:"下一張"},breadcrumb:{label:"麵包屑導覽",expand:"顯示隱藏的層級"},combobox:{empty:"沒有相符的項目",remove:"移除 {label}"},overlay:{label:"遮罩層"}},es:{action:{close:"Cerrar",dismiss:"Descartar",clear:"Borrar",remove:"Quitar"},link:{newTab:"(se abre en una pestaña nueva)"},spoiler:{reveal:"Mostrar",hide:"Ocultar",notice:"Puede contener spoilers"},chat:{sending:"Enviando",sent:"Enviado",delivered:"Entregado",read:"Leído",failed:"No enviado",typing:"Escribiendo…"},empty:{title:"No hay nada aquí"},table:{search:"Buscar",selectAll:"Seleccionar todas las filas",selectRow:"Seleccionar fila",rowsPerPage:"Filas por página",range:"{start}–{end} de {total}",selected:"{count} seleccionadas",empty:"Sin datos"},color:{area:"Saturación y brillo",hue:"Tono",alpha:"Opacidad",value:"Valor del color",swatches:"Colores predefinidos",clear:"Borrar",empty:"Elegir un color"},rating:{label:"Valoración",value:"{value} de {max}",empty:"Sin valoración"},number:{increase:"Aumentar",decrease:"Disminuir"},pagination:{label:"Paginación",page:"Página {page}",status:"Página {page} de {total}",previous:"Página anterior",next:"Página siguiente",first:"Primera página",last:"Última página"},carousel:{label:"Carrusel",slide:"Diapositiva {index} de {total}",previous:"Diapositiva anterior",next:"Diapositiva siguiente"},breadcrumb:{label:"Ruta de navegación",expand:"Mostrar los pasos ocultos"},combobox:{empty:"Sin coincidencias",remove:"Quitar {label}"},overlay:{label:"Superposición"}},pt:{action:{close:"Fechar",dismiss:"Dispensar",clear:"Limpar",remove:"Remover"},link:{newTab:"(abre em uma nova aba)"},spoiler:{reveal:"Mostrar",hide:"Ocultar",notice:"Pode conter spoilers"},chat:{sending:"Enviando",sent:"Enviado",delivered:"Entregue",read:"Lido",failed:"Não enviado",typing:"Digitando…"},empty:{title:"Nada por aqui"},table:{search:"Pesquisar",selectAll:"Selecionar todas as linhas",selectRow:"Selecionar linha",rowsPerPage:"Linhas por página",range:"{start}–{end} de {total}",selected:"{count} selecionadas",empty:"Sem dados"},color:{area:"Saturação e brilho",hue:"Matiz",alpha:"Opacidade",value:"Valor da cor",swatches:"Cores predefinidas",clear:"Limpar",empty:"Escolher uma cor"},rating:{label:"Avaliação",value:"{value} de {max}",empty:"Sem avaliação"},number:{increase:"Aumentar",decrease:"Diminuir"},pagination:{label:"Paginação",page:"Página {page}",status:"Página {page} de {total}",previous:"Página anterior",next:"Próxima página",first:"Primeira página",last:"Última página"},carousel:{label:"Carrossel",slide:"Slide {index} de {total}",previous:"Slide anterior",next:"Próximo slide"},breadcrumb:{label:"Trilha de navegação",expand:"Mostrar as etapas ocultas"},combobox:{empty:"Nenhuma correspondência",remove:"Remover {label}"},overlay:{label:"Sobreposição"}},fr:{action:{close:"Fermer",dismiss:"Ignorer",clear:"Effacer",remove:"Supprimer"},link:{newTab:"(s’ouvre dans un nouvel onglet)"},spoiler:{reveal:"Afficher",hide:"Masquer",notice:"Peut contenir des spoilers"},chat:{sending:"Envoi en cours",sent:"Envoyé",delivered:"Distribué",read:"Lu",failed:"Non envoyé",typing:"En train d’écrire…"},empty:{title:"Rien ici"},table:{search:"Rechercher",selectAll:"Sélectionner toutes les lignes",selectRow:"Sélectionner la ligne",rowsPerPage:"Lignes par page",range:"{start}–{end} sur {total}",selected:"{count} sélectionnées",empty:"Aucune donnée"},color:{area:"Saturation et luminosité",hue:"Teinte",alpha:"Opacité",value:"Valeur de la couleur",swatches:"Couleurs prédéfinies",clear:"Effacer",empty:"Choisir une couleur"},rating:{label:"Note",value:"{value} sur {max}",empty:"Aucune note"},number:{increase:"Augmenter",decrease:"Diminuer"},pagination:{label:"Pagination",page:"Page {page}",status:"Page {page} sur {total}",previous:"Page précédente",next:"Page suivante",first:"Première page",last:"Dernière page"},carousel:{label:"Carrousel",slide:"Diapositive {index} sur {total}",previous:"Diapositive précédente",next:"Diapositive suivante"},breadcrumb:{label:"Fil d’Ariane",expand:"Afficher les étapes masquées"},combobox:{empty:"Aucun résultat",remove:"Supprimer {label}"},overlay:{label:"Superposition"}},de:{action:{close:"Schließen",dismiss:"Ausblenden",clear:"Löschen",remove:"Entfernen"},link:{newTab:"(wird in einem neuen Tab geöffnet)"},spoiler:{reveal:"Anzeigen",hide:"Ausblenden",notice:"Kann Spoiler enthalten"},chat:{sending:"Wird gesendet",sent:"Gesendet",delivered:"Zugestellt",read:"Gelesen",failed:"Nicht gesendet",typing:"Schreibt…"},empty:{title:"Nichts vorhanden"},table:{search:"Suchen",selectAll:"Alle Zeilen auswählen",selectRow:"Zeile auswählen",rowsPerPage:"Zeilen pro Seite",range:"{start}–{end} von {total}",selected:"{count} ausgewählt",empty:"Keine Daten"},color:{area:"Sättigung und Helligkeit",hue:"Farbton",alpha:"Deckkraft",value:"Farbwert",swatches:"Vorgegebene Farben",clear:"Löschen",empty:"Farbe auswählen"},rating:{label:"Bewertung",value:"{value} von {max}",empty:"Keine Bewertung"},number:{increase:"Erhöhen",decrease:"Verringern"},pagination:{label:"Seitennavigation",page:"Seite {page}",status:"Seite {page} von {total}",previous:"Vorherige Seite",next:"Nächste Seite",first:"Erste Seite",last:"Letzte Seite"},carousel:{label:"Karussell",slide:"Folie {index} von {total}",previous:"Vorherige Folie",next:"Nächste Folie"},breadcrumb:{label:"Breadcrumb-Navigation",expand:"Ausgeblendete Schritte anzeigen"},combobox:{empty:"Keine Treffer",remove:"{label} entfernen"},overlay:{label:"Overlay"}},it:{action:{close:"Chiudi",dismiss:"Ignora",clear:"Cancella",remove:"Rimuovi"},link:{newTab:"(si apre in una nuova scheda)"},spoiler:{reveal:"Mostra",hide:"Nascondi",notice:"Può contenere spoiler"},chat:{sending:"Invio in corso",sent:"Inviato",delivered:"Consegnato",read:"Letto",failed:"Non inviato",typing:"Sta scrivendo…"},empty:{title:"Non c’è nulla"},table:{search:"Cerca",selectAll:"Seleziona tutte le righe",selectRow:"Seleziona riga",rowsPerPage:"Righe per pagina",range:"{start}–{end} di {total}",selected:"{count} selezionate",empty:"Nessun dato"},color:{area:"Saturazione e luminosità",hue:"Tonalità",alpha:"Opacità",value:"Valore del colore",swatches:"Colori predefiniti",clear:"Cancella",empty:"Scegli un colore"},rating:{label:"Valutazione",value:"{value} su {max}",empty:"Nessuna valutazione"},number:{increase:"Aumenta",decrease:"Diminuisci"},pagination:{label:"Impaginazione",page:"Pagina {page}",status:"Pagina {page} di {total}",previous:"Pagina precedente",next:"Pagina successiva",first:"Prima pagina",last:"Ultima pagina"},carousel:{label:"Carosello",slide:"Diapositiva {index} di {total}",previous:"Diapositiva precedente",next:"Diapositiva successiva"},breadcrumb:{label:"Percorso di navigazione",expand:"Mostra i passaggi nascosti"},combobox:{empty:"Nessun risultato",remove:"Rimuovi {label}"},overlay:{label:"Sovrapposizione"}},nl:{action:{close:"Sluiten",dismiss:"Negeren",clear:"Wissen",remove:"Verwijderen"},link:{newTab:"(opent in een nieuw tabblad)"},spoiler:{reveal:"Tonen",hide:"Verbergen",notice:"Kan spoilers bevatten"},chat:{sending:"Wordt verzonden",sent:"Verzonden",delivered:"Afgeleverd",read:"Gelezen",failed:"Niet verzonden",typing:"Aan het typen…"},empty:{title:"Hier is niets"},table:{search:"Zoeken",selectAll:"Alle rijen selecteren",selectRow:"Rij selecteren",rowsPerPage:"Rijen per pagina",range:"{start}–{end} van {total}",selected:"{count} geselecteerd",empty:"Geen gegevens"},color:{area:"Verzadiging en helderheid",hue:"Kleurtoon",alpha:"Dekking",value:"Kleurwaarde",swatches:"Vooraf ingestelde kleuren",clear:"Wissen",empty:"Kies een kleur"},rating:{label:"Beoordeling",value:"{value} van {max}",empty:"Geen beoordeling"},number:{increase:"Verhogen",decrease:"Verlagen"},pagination:{label:"Paginering",page:"Pagina {page}",status:"Pagina {page} van {total}",previous:"Vorige pagina",next:"Volgende pagina",first:"Eerste pagina",last:"Laatste pagina"},carousel:{label:"Carrousel",slide:"Dia {index} van {total}",previous:"Vorige dia",next:"Volgende dia"},breadcrumb:{label:"Kruimelpad",expand:"Verborgen stappen tonen"},combobox:{empty:"Geen resultaten",remove:"{label} verwijderen"},overlay:{label:"Overlay"}},pl:{action:{close:"Zamknij",dismiss:"Odrzuć",clear:"Wyczyść",remove:"Usuń"},link:{newTab:"(otwiera się w nowej karcie)"},spoiler:{reveal:"Pokaż",hide:"Ukryj",notice:"Może zawierać spoilery"},chat:{sending:"Wysyłanie",sent:"Wysłano",delivered:"Dostarczono",read:"Przeczytano",failed:"Nie wysłano",typing:"Pisze…"},empty:{title:"Nic tu nie ma"},table:{search:"Szukaj",selectAll:"Zaznacz wszystkie wiersze",selectRow:"Zaznacz wiersz",rowsPerPage:"Wierszy na stronę",range:"{start}–{end} z {total}",selected:"Zaznaczono: {count}",empty:"Brak danych"},color:{area:"Nasycenie i jasność",hue:"Barwa",alpha:"Krycie",value:"Wartość koloru",swatches:"Kolory predefiniowane",clear:"Wyczyść",empty:"Wybierz kolor"},rating:{label:"Ocena",value:"{value} z {max}",empty:"Brak oceny"},number:{increase:"Zwiększ",decrease:"Zmniejsz"},pagination:{label:"Paginacja",page:"Strona {page}",status:"Strona {page} z {total}",previous:"Poprzednia strona",next:"Następna strona",first:"Pierwsza strona",last:"Ostatnia strona"},carousel:{label:"Karuzela",slide:"Slajd {index} z {total}",previous:"Poprzedni slajd",next:"Następny slajd"},breadcrumb:{label:"Ścieżka nawigacji",expand:"Pokaż ukryte kroki"},combobox:{empty:"Brak wyników",remove:"Usuń {label}"},overlay:{label:"Nakładka"}},ru:{action:{close:"Закрыть",dismiss:"Скрыть",clear:"Очистить",remove:"Удалить"},link:{newTab:"(откроется в новой вкладке)"},spoiler:{reveal:"Показать",hide:"Скрыть",notice:"Может содержать спойлеры"},chat:{sending:"Отправляется",sent:"Отправлено",delivered:"Доставлено",read:"Прочитано",failed:"Не отправлено",typing:"Печатает…"},empty:{title:"Здесь пусто"},table:{search:"Поиск",selectAll:"Выбрать все строки",selectRow:"Выбрать строку",rowsPerPage:"Строк на странице",range:"{start}–{end} из {total}",selected:"Выбрано: {count}",empty:"Нет данных"},color:{area:"Насыщенность и яркость",hue:"Оттенок",alpha:"Непрозрачность",value:"Значение цвета",swatches:"Готовые цвета",clear:"Очистить",empty:"Выберите цвет"},rating:{label:"Оценка",value:"{value} из {max}",empty:"Без оценки"},number:{increase:"Увеличить",decrease:"Уменьшить"},pagination:{label:"Постраничная навигация",page:"Страница {page}",status:"Страница {page} из {total}",previous:"Предыдущая страница",next:"Следующая страница",first:"Первая страница",last:"Последняя страница"},carousel:{label:"Карусель",slide:"Слайд {index} из {total}",previous:"Предыдущий слайд",next:"Следующий слайд"},breadcrumb:{label:"Навигационная цепочка",expand:"Показать скрытые шаги"},combobox:{empty:"Совпадений нет",remove:"Удалить {label}"},overlay:{label:"Наложение"}},tr:{action:{close:"Kapat",dismiss:"Yoksay",clear:"Temizle",remove:"Kaldır"},link:{newTab:"(yeni sekmede açılır)"},spoiler:{reveal:"Göster",hide:"Gizle",notice:"Spoiler içerebilir"},chat:{sending:"Gönderiliyor",sent:"Gönderildi",delivered:"İletildi",read:"Okundu",failed:"Gönderilemedi",typing:"Yazıyor…"},empty:{title:"Burada bir şey yok"},table:{search:"Ara",selectAll:"Tüm satırları seç",selectRow:"Satırı seç",rowsPerPage:"Sayfa başına satır",range:"{total} kayıttan {start}–{end}",selected:"{count} seçildi",empty:"Veri yok"},color:{area:"Doygunluk ve parlaklık",hue:"Renk tonu",alpha:"Opaklık",value:"Renk değeri",swatches:"Hazır renkler",clear:"Temizle",empty:"Bir renk seçin"},rating:{label:"Değerlendirme",value:"{max} üzerinden {value}",empty:"Değerlendirilmedi"},number:{increase:"Artır",decrease:"Azalt"},pagination:{label:"Sayfalama",page:"{page}. sayfa",status:"{total} sayfadan {page}. sayfa",previous:"Önceki sayfa",next:"Sonraki sayfa",first:"İlk sayfa",last:"Son sayfa"},carousel:{label:"Karusel",slide:"{total} slayttan {index}. slayt",previous:"Önceki slayt",next:"Sonraki slayt"},breadcrumb:{label:"Gezinti yolu",expand:"Gizli adımları göster"},combobox:{empty:"Eşleşme yok",remove:"{label} kaldır"},overlay:{label:"Kaplama"}},ar:{action:{close:"إغلاق",dismiss:"تجاهل",clear:"مسح",remove:"إزالة"},link:{newTab:"(يفتح في علامة تبويب جديدة)"},spoiler:{reveal:"إظهار",hide:"إخفاء",notice:"قد يحتوي على حرق للأحداث"},chat:{sending:"جارٍ الإرسال",sent:"تم الإرسال",delivered:"تم التسليم",read:"تمت القراءة",failed:"لم يتم الإرسال",typing:"يكتب الآن…"},empty:{title:"لا يوجد شيء هنا"},table:{search:"بحث",selectAll:"تحديد كل الصفوف",selectRow:"تحديد الصف",rowsPerPage:"صفوف لكل صفحة",range:"{start}–{end} من {total}",selected:"تم تحديد {count}",empty:"لا توجد بيانات"},color:{area:"التشبع والسطوع",hue:"درجة اللون",alpha:"العتامة",value:"قيمة اللون",swatches:"ألوان جاهزة",clear:"مسح",empty:"اختر لونًا"},rating:{label:"التقييم",value:"{value} من {max}",empty:"بدون تقييم"},number:{increase:"زيادة",decrease:"إنقاص"},pagination:{label:"ترقيم الصفحات",page:"الصفحة {page}",status:"الصفحة {page} من {total}",previous:"الصفحة السابقة",next:"الصفحة التالية",first:"الصفحة الأولى",last:"الصفحة الأخيرة"},carousel:{label:"شريط عرض",slide:"الشريحة {index} من {total}",previous:"الشريحة السابقة",next:"الشريحة التالية"},breadcrumb:{label:"مسار التنقل",expand:"إظهار الخطوات المخفية"},combobox:{empty:"لا توجد نتائج مطابقة",remove:"إزالة {label}"},overlay:{label:"تراكب"}},hi:{action:{close:"बंद करें",dismiss:"खारिज करें",clear:"साफ़ करें",remove:"हटाएँ"},link:{newTab:"(नए टैब में खुलता है)"},spoiler:{reveal:"दिखाएँ",hide:"छिपाएँ",notice:"इसमें स्पॉइलर हो सकते हैं"},chat:{sending:"भेजा जा रहा है",sent:"भेजा गया",delivered:"डिलीवर हुआ",read:"पढ़ा गया",failed:"नहीं भेजा गया",typing:"टाइप कर रहे हैं…"},empty:{title:"यहाँ कुछ नहीं है"},table:{search:"खोजें",selectAll:"सभी पंक्तियाँ चुनें",selectRow:"पंक्ति चुनें",rowsPerPage:"प्रति पृष्ठ पंक्तियाँ",range:"{total} में से {start}–{end}",selected:"{count} चुनी गईं",empty:"कोई डेटा नहीं"},color:{area:"संतृप्ति और चमक",hue:"रंग",alpha:"अपारदर्शिता",value:"रंग मान",swatches:"पूर्व निर्धारित रंग",clear:"साफ़ करें",empty:"एक रंग चुनें"},rating:{label:"रेटिंग",value:"{max} में से {value}",empty:"कोई रेटिंग नहीं"},number:{increase:"बढ़ाएँ",decrease:"घटाएँ"},pagination:{label:"पृष्ठ क्रमांकन",page:"पृष्ठ {page}",status:"{total} में से पृष्ठ {page}",previous:"पिछला पृष्ठ",next:"अगला पृष्ठ",first:"पहला पृष्ठ",last:"अंतिम पृष्ठ"},carousel:{label:"कैरोसेल",slide:"{total} में से स्लाइड {index}",previous:"पिछली स्लाइड",next:"अगली स्लाइड"},breadcrumb:{label:"ब्रेडक्रंब",expand:"छिपे हुए चरण दिखाएँ"},combobox:{empty:"कोई मिलान नहीं",remove:"{label} हटाएँ"},overlay:{label:"ओवरले"}},id:{action:{close:"Tutup",dismiss:"Abaikan",clear:"Bersihkan",remove:"Hapus"},link:{newTab:"(terbuka di tab baru)"},spoiler:{reveal:"Tampilkan",hide:"Sembunyikan",notice:"Mungkin mengandung spoiler"},chat:{sending:"Mengirim",sent:"Terkirim",delivered:"Diterima",read:"Dibaca",failed:"Gagal terkirim",typing:"Sedang mengetik…"},empty:{title:"Tidak ada apa-apa di sini"},table:{search:"Cari",selectAll:"Pilih semua baris",selectRow:"Pilih baris",rowsPerPage:"Baris per halaman",range:"{start}–{end} dari {total}",selected:"{count} dipilih",empty:"Tidak ada data"},color:{area:"Saturasi dan kecerahan",hue:"Rona",alpha:"Opasitas",value:"Nilai warna",swatches:"Warna preset",clear:"Hapus",empty:"Pilih warna"},rating:{label:"Peringkat",value:"{value} dari {max}",empty:"Belum ada peringkat"},number:{increase:"Tambah",decrease:"Kurangi"},pagination:{label:"Penomoran halaman",page:"Halaman {page}",status:"Halaman {page} dari {total}",previous:"Halaman sebelumnya",next:"Halaman berikutnya",first:"Halaman pertama",last:"Halaman terakhir"},carousel:{label:"Korsel",slide:"Slide {index} dari {total}",previous:"Slide sebelumnya",next:"Slide berikutnya"},breadcrumb:{label:"Remah roti",expand:"Tampilkan langkah tersembunyi"},combobox:{empty:"Tidak ada yang cocok",remove:"Hapus {label}"},overlay:{label:"Hamparan"}},vi:{action:{close:"Đóng",dismiss:"Bỏ qua",clear:"Xóa",remove:"Gỡ bỏ"},link:{newTab:"(mở trong tab mới)"},spoiler:{reveal:"Hiện nội dung",hide:"Ẩn",notice:"Có thể chứa nội dung tiết lộ"},chat:{sending:"Đang gửi",sent:"Đã gửi",delivered:"Đã nhận",read:"Đã xem",failed:"Chưa gửi được",typing:"Đang nhập…"},empty:{title:"Không có gì ở đây"},table:{search:"Tìm kiếm",selectAll:"Chọn tất cả các hàng",selectRow:"Chọn hàng",rowsPerPage:"Số hàng mỗi trang",range:"{start}–{end} trên {total}",selected:"Đã chọn {count}",empty:"Không có dữ liệu"},color:{area:"Độ bão hòa và độ sáng",hue:"Sắc độ",alpha:"Độ mờ đục",value:"Giá trị màu",swatches:"Màu dựng sẵn",clear:"Xóa",empty:"Chọn màu"},rating:{label:"Đánh giá",value:"{value} trên {max}",empty:"Chưa đánh giá"},number:{increase:"Tăng",decrease:"Giảm"},pagination:{label:"Phân trang",page:"Trang {page}",status:"Trang {page} trên {total}",previous:"Trang trước",next:"Trang sau",first:"Trang đầu",last:"Trang cuối"},carousel:{label:"Băng chuyền",slide:"Trang chiếu {index} trên {total}",previous:"Trang chiếu trước",next:"Trang chiếu sau"},breadcrumb:{label:"Đường dẫn",expand:"Hiện các bước đã ẩn"},combobox:{empty:"Không có kết quả",remove:"Gỡ bỏ {label}"},overlay:{label:"Lớp phủ"}},th:{action:{close:"ปิด",dismiss:"ปิดการแจ้งเตือน",clear:"ล้าง",remove:"นำออก"},link:{newTab:"(เปิดในแท็บใหม่)"},spoiler:{reveal:"แสดงเนื้อหา",hide:"ซ่อน",notice:"อาจมีการเปิดเผยเนื้อหา"},chat:{sending:"กำลังส่ง",sent:"ส่งแล้ว",delivered:"ส่งถึงแล้ว",read:"อ่านแล้ว",failed:"ส่งไม่สำเร็จ",typing:"กำลังพิมพ์…"},empty:{title:"ไม่มีอะไรที่นี่"},table:{search:"ค้นหา",selectAll:"เลือกทุกแถว",selectRow:"เลือกแถวนี้",rowsPerPage:"จำนวนแถวต่อหน้า",range:"{start}–{end} จาก {total}",selected:"เลือกแล้ว {count} รายการ",empty:"ไม่มีข้อมูล"},color:{area:"ความอิ่มตัวและความสว่าง",hue:"เฉดสี",alpha:"ความทึบ",value:"ค่าสี",swatches:"สีที่กำหนดไว้",clear:"ล้าง",empty:"เลือกสี"},rating:{label:"คะแนน",value:"{value} จาก {max}",empty:"ยังไม่มีคะแนน"},number:{increase:"เพิ่ม",decrease:"ลด"},pagination:{label:"การแบ่งหน้า",page:"หน้า {page}",status:"หน้า {page} จาก {total}",previous:"หน้าก่อนหน้า",next:"หน้าถัดไป",first:"หน้าแรก",last:"หน้าสุดท้าย"},carousel:{label:"ภาพเลื่อน",slide:"สไลด์ {index} จาก {total}",previous:"สไลด์ก่อนหน้า",next:"สไลด์ถัดไป"},breadcrumb:{label:"เส้นทางนำทาง",expand:"แสดงขั้นตอนที่ซ่อนอยู่"},combobox:{empty:"ไม่พบรายการที่ตรงกัน",remove:"นำ {label} ออก"},overlay:{label:"เลเยอร์ซ้อน"}}},t={zh:"zh-hans","zh-cn":"zh-hans","zh-my":"zh-hans","zh-sg":"zh-hans","zh-hk":"zh-hant","zh-mo":"zh-hant","zh-tw":"zh-hant"};const r=new Map([["",a]]);export function resolveMessages(e){const i=e?.trim()??"",n=r.get(i);if(n)return n;const s=function(e){const a=e.toLowerCase().split(/[-_]/).filter(Boolean),l=a[0];if(!l)return[];const t=a.slice(1),r=t.find(e=>/^[a-z]{4}$/.test(e)),i=t.find(e=>/^([a-z]{2}|\d{3})$/.test(e));return[r?`${l}-${r}`:"",i?`${l}-${i}`:"",l].filter(Boolean)}(i).map(e=>l[e]??l[t[e]??""]).find(Boolean),o=s?{action:{...a.action,...s.action},link:{...a.link,...s.link},spoiler:{...a.spoiler,...s.spoiler},chat:{...a.chat,...s.chat},empty:{...a.empty,...s.empty},table:{...a.table,...s.table},color:{...a.color,...s.color},rating:{...a.rating,...s.rating},number:{...a.number,...s.number},pagination:{...a.pagination,...s.pagination},carousel:{...a.carousel,...s.carousel},breadcrumb:{...a.breadcrumb,...s.breadcrumb},combobox:{...a.combobox,...s.combobox},overlay:{...a.overlay,...s.overlay}}:a;return r.set(i,o),o}export function useMessages(a){return e.useMemo(()=>resolveMessages(a),[a])}export function fillMessage(e,a){return e.replace(/\{(\w+)\}/g,(e,l)=>a[l]??e)}
@@ -90,6 +90,8 @@ export declare function ExternalLinkIcon(): React.JSX.Element;
90
90
  * the button that opens the collapsed middle of a trail.
91
91
  */
92
92
  export declare function EllipsisIcon(): React.JSX.Element;
93
+ export declare function StarIcon(): React.JSX.Element;
94
+ export declare function StarOutlineIcon(): React.JSX.Element;
93
95
  /** The filled dot: the chosen one of a set, where a tick would say "and". */
94
96
  export declare function DotIcon(): React.JSX.Element;
95
97
  /**
@@ -1 +1 @@
1
- import{jsx as r,jsxs as e}from"react/jsx-runtime";export function CloseIcon(){return r("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:r("path",{d:"m4.5 4.5 7 7m0-7-7 7",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round"})})}export function ChevronIcon(){return r("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:r("path",{d:"m4.5 6.5 3.5 3.5 3.5-3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})}export function CheckIcon(){return r("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:r("path",{d:"m3.5 8.5 3 3 6-6",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round"})})}export function MinusIcon(){return r("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:r("path",{d:"M3.5 8h9",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round"})})}export function PlusIcon(){return r("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:r("path",{d:"M8 3.5v9M3.5 8h9",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round"})})}export function TrendUpIcon(){return e("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[r("path",{d:"M3 11 6.5 7.5 9 10l4-4",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round"}),r("path",{d:"M9.5 6h3.5v3.5",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round"})]})}export function TrendDownIcon(){return e("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[r("path",{d:"M3 5 6.5 8.5 9 6l4 4",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round"}),r("path",{d:"M9.5 10h3.5V6.5",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round"})]})}export function CalendarIcon(){return e("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[r("rect",{x:"2",y:"3.25",width:"12",height:"10.75",rx:"2",stroke:"currentColor",strokeWidth:"1.5"}),r("path",{d:"M2 6.75h12",stroke:"currentColor",strokeWidth:"1.5"}),r("path",{d:"M5.25 1.75v2.5M10.75 1.75v2.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}export function ClockIcon(){return e("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[r("circle",{cx:"8",cy:"8",r:"6.25",stroke:"currentColor",strokeWidth:"1.5"}),r("path",{d:"M8 4.5V8l2.4 1.6",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})}export function ArrowRightIcon(){return r("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:r("path",{d:"M3 8h10m-3.5-3.5L13 8l-3.5 3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})}export function LinkIcon(){return e("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[r("path",{d:"M6.5 9.5a2.75 2.75 0 0 0 4 .25l1.75-1.75a2.75 2.75 0 0 0-3.9-3.9L7.75 5.2",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"}),r("path",{d:"M9.5 6.5a2.75 2.75 0 0 0-4-.25L3.75 8a2.75 2.75 0 0 0 3.9 3.9l.6-.6",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}export function ExternalLinkIcon(){return e("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[r("path",{d:"M12.75 9.25v2.5a1.5 1.5 0 0 1-1.5 1.5h-7a1.5 1.5 0 0 1-1.5-1.5v-7a1.5 1.5 0 0 1 1.5-1.5h2.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"}),r("path",{d:"M9.5 2.75h3.75V6.5M7.25 8.75l5.75-5.75",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})}export function EllipsisIcon(){return e("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[r("circle",{cx:"3.5",cy:"8",r:"1.15",fill:"currentColor"}),r("circle",{cx:"8",cy:"8",r:"1.15",fill:"currentColor"}),r("circle",{cx:"12.5",cy:"8",r:"1.15",fill:"currentColor"})]})}export function DotIcon(){return r("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:r("circle",{cx:"8",cy:"8",r:"3.25",fill:"currentColor"})})}function o(){return e("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[r("circle",{cx:"8",cy:"8",r:"6.25",stroke:"currentColor",strokeWidth:"1.5"}),r("path",{d:"M8 7.25v4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"}),r("circle",{cx:"8",cy:"4.9",r:"0.85",fill:"currentColor"})]})}export const severityIcons={primary:r(o,{}),secondary:r(o,{}),info:r(o,{}),success:e("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[r("circle",{cx:"8",cy:"8",r:"6.25",stroke:"currentColor",strokeWidth:"1.5"}),r("path",{d:"m5.25 8.25 1.9 1.9 3.6-3.9",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]}),warning:e("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[r("path",{d:"M7.13 2.6 1.9 11.7a1 1 0 0 0 .87 1.5h10.46a1 1 0 0 0 .87-1.5L8.87 2.6a1 1 0 0 0-1.74 0Z",stroke:"currentColor",strokeWidth:"1.5",strokeLinejoin:"round"}),r("path",{d:"M8 6.1v3",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"}),r("circle",{cx:"8",cy:"11.2",r:"0.85",fill:"currentColor"})]}),danger:e("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[r("circle",{cx:"8",cy:"8",r:"6.25",stroke:"currentColor",strokeWidth:"1.5"}),r("path",{d:"m5.9 5.9 4.2 4.2m0-4.2-4.2 4.2",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})};
1
+ import{jsx as r,jsxs as e}from"react/jsx-runtime";export function CloseIcon(){return r("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:r("path",{d:"m4.5 4.5 7 7m0-7-7 7",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round"})})}export function ChevronIcon(){return r("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:r("path",{d:"m4.5 6.5 3.5 3.5 3.5-3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})}export function CheckIcon(){return r("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:r("path",{d:"m3.5 8.5 3 3 6-6",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round"})})}export function MinusIcon(){return r("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:r("path",{d:"M3.5 8h9",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round"})})}export function PlusIcon(){return r("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:r("path",{d:"M8 3.5v9M3.5 8h9",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round"})})}export function TrendUpIcon(){return e("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[r("path",{d:"M3 11 6.5 7.5 9 10l4-4",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round"}),r("path",{d:"M9.5 6h3.5v3.5",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round"})]})}export function TrendDownIcon(){return e("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[r("path",{d:"M3 5 6.5 8.5 9 6l4 4",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round"}),r("path",{d:"M9.5 10h3.5V6.5",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round"})]})}export function CalendarIcon(){return e("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[r("rect",{x:"2",y:"3.25",width:"12",height:"10.75",rx:"2",stroke:"currentColor",strokeWidth:"1.5"}),r("path",{d:"M2 6.75h12",stroke:"currentColor",strokeWidth:"1.5"}),r("path",{d:"M5.25 1.75v2.5M10.75 1.75v2.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}export function ClockIcon(){return e("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[r("circle",{cx:"8",cy:"8",r:"6.25",stroke:"currentColor",strokeWidth:"1.5"}),r("path",{d:"M8 4.5V8l2.4 1.6",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})}export function ArrowRightIcon(){return r("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:r("path",{d:"M3 8h10m-3.5-3.5L13 8l-3.5 3.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})}export function LinkIcon(){return e("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[r("path",{d:"M6.5 9.5a2.75 2.75 0 0 0 4 .25l1.75-1.75a2.75 2.75 0 0 0-3.9-3.9L7.75 5.2",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"}),r("path",{d:"M9.5 6.5a2.75 2.75 0 0 0-4-.25L3.75 8a2.75 2.75 0 0 0 3.9 3.9l.6-.6",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}export function ExternalLinkIcon(){return e("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[r("path",{d:"M12.75 9.25v2.5a1.5 1.5 0 0 1-1.5 1.5h-7a1.5 1.5 0 0 1-1.5-1.5v-7a1.5 1.5 0 0 1 1.5-1.5h2.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"}),r("path",{d:"M9.5 2.75h3.75V6.5M7.25 8.75l5.75-5.75",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]})}export function EllipsisIcon(){return e("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[r("circle",{cx:"3.5",cy:"8",r:"1.15",fill:"currentColor"}),r("circle",{cx:"8",cy:"8",r:"1.15",fill:"currentColor"}),r("circle",{cx:"12.5",cy:"8",r:"1.15",fill:"currentColor"})]})}const o="M8 1.4 9.71 5.65 14.28 5.96 10.76 8.9 11.88 13.34 8 10.9 4.12 13.34 5.24 8.9 1.72 5.96 6.29 5.65Z";export function StarIcon(){return r("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:r("path",{d:o,fill:"currentColor",stroke:"currentColor",strokeLinejoin:"round"})})}export function StarOutlineIcon(){return r("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:r("path",{d:o,stroke:"currentColor",strokeWidth:"1.25",strokeLinejoin:"round"})})}export function DotIcon(){return r("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:r("circle",{cx:"8",cy:"8",r:"3.25",fill:"currentColor"})})}function n(){return e("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[r("circle",{cx:"8",cy:"8",r:"6.25",stroke:"currentColor",strokeWidth:"1.5"}),r("path",{d:"M8 7.25v4",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"}),r("circle",{cx:"8",cy:"4.9",r:"0.85",fill:"currentColor"})]})}export const severityIcons={primary:r(n,{}),secondary:r(n,{}),info:r(n,{}),success:e("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[r("circle",{cx:"8",cy:"8",r:"6.25",stroke:"currentColor",strokeWidth:"1.5"}),r("path",{d:"m5.25 8.25 1.9 1.9 3.6-3.9",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]}),warning:e("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[r("path",{d:"M7.13 2.6 1.9 11.7a1 1 0 0 0 .87 1.5h10.46a1 1 0 0 0 .87-1.5L8.87 2.6a1 1 0 0 0-1.74 0Z",stroke:"currentColor",strokeWidth:"1.5",strokeLinejoin:"round"}),r("path",{d:"M8 6.1v3",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"}),r("circle",{cx:"8",cy:"11.2",r:"0.85",fill:"currentColor"})]}),danger:e("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[r("circle",{cx:"8",cy:"8",r:"6.25",stroke:"currentColor",strokeWidth:"1.5"}),r("path",{d:"m5.9 5.9 4.2 4.2m0-4.2-4.2 4.2",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})};
@@ -0,0 +1,193 @@
1
+ /**
2
+ * The device a Mockup is a picture of: the tables that say how big it is, and
3
+ * the drawings that go on its screen.
4
+ *
5
+ * It lives here for the reason `internal/color.ts` does. Only one component
6
+ * reads it, but what it holds is a body of reference data rather than a piece of
7
+ * that component — five resolutions per device, three shells, six systems' worth
8
+ * of chrome — and a component file with all of that in it would be a table with
9
+ * a `forwardRef` at the bottom.
10
+ *
11
+ * Two conventions run through the whole file:
12
+ *
13
+ * **Every length in here is a device pixel.** The screen is laid out at the
14
+ * resolution it claims to have and the whole frame is scaled once, at the top,
15
+ * so a 54px status bar is 54px on the phone rather than 54px on the page. That
16
+ * is also why the geometry is written as inline styles rather than as utilities:
17
+ * these are numbers off a table, computed per render, and Tailwind only ever
18
+ * sees class names that appear literally in the source. Utilities are still what
19
+ * does the layout — the inline styles are only ever the measurements.
20
+ *
21
+ * **The chrome draws no words except the clock.** A menu bar's titles, a dock's
22
+ * icons and a status bar's carrier are abstract shapes, which is what keeps this
23
+ * an impression of a system rather than a copy of one: nothing to translate,
24
+ * nothing to redraw when a version ships, and no other party's marks in the
25
+ * library. The clock is the exception because a blank rectangle where the time
26
+ * goes reads as a bug, and it is a prop.
27
+ */
28
+ import * as React from 'react';
29
+ import type { NebaSize } from '../types';
30
+ /** Which machine the mockup is a picture of. */
31
+ export type NebaMockupDevice = 'desktop' | 'tablet' | 'mobile';
32
+ /**
33
+ * The system whose chrome is drawn on the screen.
34
+ *
35
+ * One union across all three devices rather than one per device: a caller
36
+ * reading the type should see the whole set, and a device offered an OS that is
37
+ * not its own falls back to its default rather than failing to compile — which
38
+ * is the behaviour a single `Mockup` with a `device` prop has to have anyway.
39
+ */
40
+ export type NebaMockupOs = 'macos' | 'windows' | 'linux' | 'ios' | 'ipados' | 'android';
41
+ /** What the hardware around a desktop screen is. */
42
+ export type NebaMockupHardware = 'monitor' | 'laptop';
43
+ /**
44
+ * The camera cut-out at the top of a screen.
45
+ *
46
+ * Hardware, not chrome — it is drawn whether or not `systemUi` is on, because a
47
+ * phone with the status bar hidden still has a hole in its screen.
48
+ */
49
+ export type NebaMockupNotch = 'none' | 'notch' | 'dynamic-island' | 'punch-hole';
50
+ /**
51
+ * How much hardware there is around the screen.
52
+ *
53
+ * `none` is not a thinner bezel — it is no hardware at all: no frame, no stand,
54
+ * no laptop base, just the screen with its corners cut. It is what a mockup that
55
+ * only wants to say "this is a phone-shaped viewport" asks for.
56
+ *
57
+ * `thick` is an older device rather than a wider version of `standard`: the
58
+ * sides stay narrow and the forehead and chin grow, which is where a bezel
59
+ * actually goes when there is a lot of it.
60
+ */
61
+ export type NebaMockupBezel = 'none' | 'thin' | 'standard' | 'thick';
62
+ /** What the hardware is made of. */
63
+ export type NebaMockupFinish = 'graphite' | 'silver' | 'white';
64
+ /**
65
+ * Which way a handheld is held.
66
+ *
67
+ * `portrait`/`landscape` rather than `NebaOrientation`'s `vertical`/`horizontal`,
68
+ * and this is the one place the library spells the idea twice on purpose. A
69
+ * Divider running horizontally is not "landscape", and a device held upright is
70
+ * not "vertical" in any vocabulary a designer or a media query uses. CSS itself
71
+ * keeps both pairs for exactly this reason.
72
+ */
73
+ export type NebaMockupOrientation = 'portrait' | 'landscape';
74
+ /** A screen's logical resolution, in CSS pixels. */
75
+ export interface NebaMockupResolution {
76
+ width: number;
77
+ height: number;
78
+ }
79
+ /**
80
+ * The system a device will actually draw.
81
+ *
82
+ * An OS the device does not run falls back to its default, with one nicety: a
83
+ * caller who writes `ios` on a tablet or `ipados` on a phone meant the Apple one
84
+ * and gets it, rather than being sent back to the start of the list.
85
+ */
86
+ export declare function resolveOs(device: NebaMockupDevice, os?: NebaMockupOs): NebaMockupOs;
87
+ /** What a device puts in its screen when the caller says nothing. */
88
+ export declare function defaultNotch(device: NebaMockupDevice, os: NebaMockupOs): NebaMockupNotch;
89
+ export declare const resolutions: Record<NebaMockupDevice, Record<NebaSize, NebaMockupResolution>>;
90
+ /** How much hardware sits on each side of the screen. */
91
+ export interface MockupInset {
92
+ x: number;
93
+ top: number;
94
+ bottom: number;
95
+ }
96
+ /** Every number the component needs to lay a device out, in device pixels. */
97
+ export interface MockupMetrics {
98
+ /** The screen, after `orientation` has had its say. */
99
+ screen: NebaMockupResolution;
100
+ /** The hardware around it. Zero on all four sides when `bezel` is `none`. */
101
+ bezel: MockupInset;
102
+ /** Screen plus bezel: the part you would call the device's face. */
103
+ body: {
104
+ width: number;
105
+ height: number;
106
+ };
107
+ /** Face plus whatever holds it up. This is what gets scaled to fit. */
108
+ frame: {
109
+ width: number;
110
+ height: number;
111
+ };
112
+ frameRadius: number;
113
+ screenRadius: number;
114
+ /** A monitor's neck and foot, when there is one. */
115
+ stand: {
116
+ neckWidth: number;
117
+ neckHeight: number;
118
+ footWidth: number;
119
+ footHeight: number;
120
+ } | null;
121
+ /** A laptop's base, when there is one. */
122
+ base: {
123
+ width: number;
124
+ height: number;
125
+ lipWidth: number;
126
+ } | null;
127
+ }
128
+ export declare function mockupMetrics(options: {
129
+ device: NebaMockupDevice;
130
+ size: NebaSize;
131
+ resolution?: NebaMockupResolution;
132
+ orientation: NebaMockupOrientation;
133
+ bezel: NebaMockupBezel;
134
+ hardware: NebaMockupHardware;
135
+ }): MockupMetrics;
136
+ export declare const finishSlots: Record<NebaMockupFinish, React.CSSProperties>;
137
+ /**
138
+ * The hardware's surface: the finish, a light top edge and a hairline all the
139
+ * way round, which is the plate the design language puts on everything else. No
140
+ * dark bevel underneath — the shade is a ring, not a shadow.
141
+ */
142
+ export declare const shellClasses = "bg-(--n-shell) [box-shadow:inset_0_1px_0_var(--n-shell-edge),inset_0_0_0_1px_var(--n-shell-shade)]";
143
+ /** How far off the page the whole device sits, as a silhouette rather than a box.
144
+ *
145
+ * `drop-shadow` rather than `box-shadow` for one reason: the shadow has to
146
+ * follow a rounded lid on a narrow neck on a wide foot, and a box-shadow would
147
+ * draw the rectangle that contains all three. It also sits outside the scale,
148
+ * so a device shrunk to a third of its size does not get a third of its shadow.
149
+ */
150
+ export declare const elevationFilters: readonly ["none", "drop-shadow(0 1px 2px var(--neba-shadow-ambient))", "drop-shadow(0 2px 4px var(--neba-shadow-ambient)) drop-shadow(0 8px 12px var(--neba-shadow-ambient))", "drop-shadow(0 4px 6px var(--neba-shadow-ambient)) drop-shadow(0 18px 28px var(--neba-shadow-ambient))"];
151
+ /**
152
+ * The camera, drawn on the glass.
153
+ *
154
+ * Portrait puts it against the top edge and landscape against the leading one,
155
+ * which is where it goes on a real device turned the same way — and it is why
156
+ * the island does not collide with the status bar in landscape: it has moved out
157
+ * from under it.
158
+ */
159
+ export declare function MockupCutout({ notch, screen, landscape }: {
160
+ notch: NebaMockupNotch;
161
+ screen: NebaMockupResolution;
162
+ landscape: boolean;
163
+ }): React.JSX.Element | null;
164
+ /** What a system puts on the screen, and how much room it takes. */
165
+ export interface MockupChrome {
166
+ top?: {
167
+ size: number;
168
+ node: React.ReactNode;
169
+ };
170
+ bottom?: {
171
+ size: number;
172
+ node: React.ReactNode;
173
+ };
174
+ /** A dock down the leading edge. Only Linux has one. */
175
+ start?: {
176
+ size: number;
177
+ node: React.ReactNode;
178
+ };
179
+ }
180
+ /**
181
+ * The bars, per system.
182
+ *
183
+ * Each one takes its own space rather than floating over the content: a caller
184
+ * putting a screenshot in a mockup wants all of the screenshot, and a status bar
185
+ * that covered the top of it would be a crop nobody asked for. The cut-out is
186
+ * the exception, because that one really is a hole in the glass.
187
+ */
188
+ export declare function mockupChrome(options: {
189
+ os: NebaMockupOs;
190
+ notch: NebaMockupNotch;
191
+ landscape: boolean;
192
+ time: string;
193
+ }): MockupChrome;