@k2b/ui 0.44.0 → 0.45.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 (123) hide show
  1. package/dist/browser/actions/Tabs.js +3 -4
  2. package/dist/browser/actions/Tabs.js.map +1 -1
  3. package/dist/browser/actions/menu-sheet.js +2 -3
  4. package/dist/browser/actions/menu-sheet.js.map +1 -1
  5. package/dist/browser/actions/phone-sheet.js +4 -0
  6. package/dist/browser/actions/phone-sheet.js.map +1 -0
  7. package/dist/browser/content/DataTable.js +47 -51
  8. package/dist/browser/content/DataTable.js.map +1 -1
  9. package/dist/browser/feedback/dialog-core.js +5 -1
  10. package/dist/browser/feedback/dialog-core.js.map +1 -1
  11. package/dist/browser/feedback/dialog-tone.js +26 -0
  12. package/dist/browser/feedback/dialog-tone.js.map +1 -0
  13. package/dist/browser/feedback/index.js.map +1 -1
  14. package/dist/browser/feedback/prompt-confirm.js +223 -0
  15. package/dist/browser/feedback/prompt-confirm.js.map +1 -0
  16. package/dist/browser/feedback/prompts.js +195 -343
  17. package/dist/browser/feedback/prompts.js.map +1 -1
  18. package/dist/browser/inputs/ChoiceList.js +45 -17
  19. package/dist/browser/inputs/ChoiceList.js.map +1 -1
  20. package/dist/browser/inputs/DatePicker.js +1647 -334
  21. package/dist/browser/inputs/DatePicker.js.map +1 -1
  22. package/dist/browser/inputs/TextInput.js +5 -4
  23. package/dist/browser/inputs/TextInput.js.map +1 -1
  24. package/dist/browser/inputs/date-input-messages.js +128 -0
  25. package/dist/browser/inputs/date-input-messages.js.map +1 -0
  26. package/dist/browser/inputs/date-input-status.js +132 -0
  27. package/dist/browser/inputs/date-input-status.js.map +1 -0
  28. package/dist/browser/inputs/date-input.js +334 -0
  29. package/dist/browser/inputs/date-input.js.map +1 -0
  30. package/dist/browser/inputs/date-sheet.js +49 -0
  31. package/dist/browser/inputs/date-sheet.js.map +1 -0
  32. package/dist/browser/internal/reveal-in-scroller.js +28 -0
  33. package/dist/browser/internal/reveal-in-scroller.js.map +1 -0
  34. package/dist/browser/intl/messages.js +6 -0
  35. package/dist/browser/intl/messages.js.map +1 -1
  36. package/dist/browser/layout/AppWorkspace.js +536 -512
  37. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  38. package/dist/browser/layout/BottomSheet.js +3 -0
  39. package/dist/browser/layout/BottomSheet.js.map +1 -1
  40. package/dist/browser/layout/PanelDialog.js +167 -132
  41. package/dist/browser/layout/PanelDialog.js.map +1 -1
  42. package/dist/browser/layout/Settings.js +175 -139
  43. package/dist/browser/layout/Settings.js.map +1 -1
  44. package/dist/browser/layout/SettingsModal.js +2 -4
  45. package/dist/browser/layout/SettingsModal.js.map +1 -1
  46. package/dist/browser/layout/index.js.map +1 -1
  47. package/dist/browser/surfaces/StatusBadge.js +47 -14
  48. package/dist/browser/surfaces/StatusBadge.js.map +1 -1
  49. package/dist/browser/text-editor/TextEditor.js +7 -0
  50. package/dist/browser/text-editor/TextEditor.js.map +1 -1
  51. package/dist/ssr/actions/Tabs.js +3 -4
  52. package/dist/ssr/actions/Tabs.js.map +1 -1
  53. package/dist/ssr/actions/menu-sheet.js +2 -3
  54. package/dist/ssr/actions/menu-sheet.js.map +1 -1
  55. package/dist/ssr/actions/phone-sheet.js +4 -0
  56. package/dist/ssr/actions/phone-sheet.js.map +1 -0
  57. package/dist/ssr/content/DataTable.js +1 -2
  58. package/dist/ssr/content/DataTable.js.map +1 -1
  59. package/dist/ssr/feedback/dialog-core.js +5 -1
  60. package/dist/ssr/feedback/dialog-core.js.map +1 -1
  61. package/dist/ssr/feedback/dialog-tone.js +26 -0
  62. package/dist/ssr/feedback/dialog-tone.js.map +1 -0
  63. package/dist/ssr/feedback/index.js.map +1 -1
  64. package/dist/ssr/feedback/prompt-confirm.js +123 -0
  65. package/dist/ssr/feedback/prompt-confirm.js.map +1 -0
  66. package/dist/ssr/feedback/prompts.js +60 -132
  67. package/dist/ssr/feedback/prompts.js.map +1 -1
  68. package/dist/ssr/inputs/ChoiceList.js +29 -9
  69. package/dist/ssr/inputs/ChoiceList.js.map +1 -1
  70. package/dist/ssr/inputs/DatePicker.js +1183 -166
  71. package/dist/ssr/inputs/DatePicker.js.map +1 -1
  72. package/dist/ssr/inputs/TextInput.js +5 -4
  73. package/dist/ssr/inputs/TextInput.js.map +1 -1
  74. package/dist/ssr/inputs/date-input-messages.js +128 -0
  75. package/dist/ssr/inputs/date-input-messages.js.map +1 -0
  76. package/dist/ssr/inputs/date-input-status.js +132 -0
  77. package/dist/ssr/inputs/date-input-status.js.map +1 -0
  78. package/dist/ssr/inputs/date-input.js +334 -0
  79. package/dist/ssr/inputs/date-input.js.map +1 -0
  80. package/dist/ssr/inputs/date-sheet.js +44 -0
  81. package/dist/ssr/inputs/date-sheet.js.map +1 -0
  82. package/dist/ssr/internal/reveal-in-scroller.js +28 -0
  83. package/dist/ssr/internal/reveal-in-scroller.js.map +1 -0
  84. package/dist/ssr/intl/messages.js +6 -0
  85. package/dist/ssr/intl/messages.js.map +1 -1
  86. package/dist/ssr/layout/AppWorkspace.js +44 -23
  87. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  88. package/dist/ssr/layout/BottomSheet.js +3 -0
  89. package/dist/ssr/layout/BottomSheet.js.map +1 -1
  90. package/dist/ssr/layout/PanelDialog.js +48 -30
  91. package/dist/ssr/layout/PanelDialog.js.map +1 -1
  92. package/dist/ssr/layout/Settings.js +34 -18
  93. package/dist/ssr/layout/Settings.js.map +1 -1
  94. package/dist/ssr/layout/SettingsModal.js +2 -4
  95. package/dist/ssr/layout/SettingsModal.js.map +1 -1
  96. package/dist/ssr/layout/index.js.map +1 -1
  97. package/dist/ssr/surfaces/StatusBadge.js +26 -8
  98. package/dist/ssr/surfaces/StatusBadge.js.map +1 -1
  99. package/dist/ssr/text-editor/TextEditor.js +7 -0
  100. package/dist/ssr/text-editor/TextEditor.js.map +1 -1
  101. package/dist/styles.css +1 -1
  102. package/dist/types/actions/menu-sheet.d.ts +1 -3
  103. package/dist/types/actions/phone-sheet.d.ts +3 -0
  104. package/dist/types/feedback/dialog-tone.d.ts +10 -0
  105. package/dist/types/feedback/index.d.ts +1 -0
  106. package/dist/types/feedback/prompt-confirm.d.ts +19 -0
  107. package/dist/types/feedback/prompts.d.ts +4 -8
  108. package/dist/types/inputs/ChoiceList.d.ts +7 -3
  109. package/dist/types/inputs/DatePicker.d.ts +13 -3
  110. package/dist/types/inputs/TextInput.d.ts +1 -1
  111. package/dist/types/inputs/date-input-messages.d.ts +64 -0
  112. package/dist/types/inputs/date-input-status.d.ts +35 -0
  113. package/dist/types/inputs/date-input.d.ts +90 -0
  114. package/dist/types/inputs/date-sheet.d.ts +14 -0
  115. package/dist/types/internal/reveal-in-scroller.d.ts +6 -0
  116. package/dist/types/intl/messages.d.ts +3 -0
  117. package/dist/types/layout/AppWorkspace.d.ts +14 -0
  118. package/dist/types/layout/BottomSheet.d.ts +3 -0
  119. package/dist/types/layout/PanelDialog.d.ts +3 -0
  120. package/dist/types/layout/Settings.d.ts +17 -1
  121. package/dist/types/layout/index.d.ts +1 -1
  122. package/dist/types/surfaces/StatusBadge.d.ts +5 -0
  123. package/package.json +1 -1
@@ -1,35 +1,29 @@
1
1
  import { ssrStyleProperty as _$ssrStyleProperty } from "solid-js/web";
2
+ import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
2
3
  import { mergeProps as _$mergeProps } from "solid-js/web";
3
4
  import { memo as _$memo } from "solid-js/web";
5
+ import { createComponent as _$createComponent } from "solid-js/web";
4
6
  import { ssr as _$ssr } from "solid-js/web";
5
- import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
6
7
  import { escape as _$escape } from "solid-js/web";
7
- import { createComponent as _$createComponent } from "solid-js/web";
8
- var _tmpl$ = ["<header class=\"k2b-dialog__header\">", "", "<button type=\"button\" class=\"k2b-dialog__close\"", "><i class=\"ti ti-x\" aria-hidden=\"true\"></i></button></header>"],
9
- _tmpl$2 = ["<i", " aria-hidden=\"true\"></i>"],
10
- _tmpl$3 = "<span class=\"k2b-dialog__header-spacer\"></span>",
11
- _tmpl$4 = ["<h2>", "</h2>"],
12
- _tmpl$5 = ["<p>", "</p>"],
13
- _tmpl$6 = ["<button type=\"button\" class=\"k2b-button\" data-variant=\"secondary\">", "</button>"],
14
- _tmpl$7 = ["<form class=\"k2b-dialog__panel\">", "<div class=\"k2b-dialog__body k2b-prompt-form\">", "</div><footer class=\"k2b-dialog__actions\">", "<button type=\"submit\" class=\"k2b-button\"", ">", "</button></footer></form>"],
15
- _tmpl$8 = ["<div class=\"k2b-prompt-form__info\">", "</div>"],
16
- _tmpl$9 = "<i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\"></i>",
17
- _tmpl$0 = ["<div", " class=\"k2b-prompt-search__list\" role=\"listbox\"", ">", "</div>"],
18
- _tmpl$1 = ["<div class=\"k2b-prompt-search-shell\">", "<div class=\"k2b-prompt-search\"><label class=\"k2b-prompt-search__input\"><i", " aria-hidden=\"true\"></i><input", " type=\"search\" role=\"combobox\"", " aria-autocomplete=\"list\"", " spellcheck=\"false\" autocapitalize=\"off\" autocomplete=\"off\" autocorrect=\"off\">", "</label><div class=\"k2b-prompt-search__collapse\" style=\"", "\"><div class=\"k2b-prompt-search__results\">", "", "</div></div></div></div>"],
19
- _tmpl$10 = ["<p class=\"k2b-prompt-search-shell__title\">", "</p>"],
20
- _tmpl$11 = ["<div class=\"k2b-prompt-search__error\" role=\"status\" aria-live=\"polite\">", "</div>"],
21
- _tmpl$12 = ["<p role=\"status\" aria-live=\"polite\">", "</p>"],
22
- _tmpl$13 = ["<img", " alt>"],
23
- _tmpl$14 = ["<span class=\"k2b-prompt-search__preview\">", "</span>"],
24
- _tmpl$15 = ["<button type=\"button\"", " role=\"option\"", ">", "<span class=\"k2b-prompt-search__copy\"><strong>", "</strong>", "</span></button>"],
25
- _tmpl$16 = ["<small>", "</small>"],
26
- _tmpl$17 = ["<div class=\"k2b-prompt-copy\">", "</div>"],
27
- _tmpl$18 = ["<div class=\"k2b-dialog__panel\">", "<div class=\"k2b-dialog__body\">", "</div><footer class=\"k2b-dialog__actions\"><button type=\"button\" class=\"k2b-button\"", ">", "</button></footer></div>"],
28
- _tmpl$19 = ["<div class=\"k2b-dialog__panel\">", "<div class=\"k2b-dialog__body\">", "</div><footer class=\"k2b-dialog__actions\"><button type=\"button\" class=\"k2b-button\" data-variant=\"secondary\">", "</button><button type=\"button\" class=\"k2b-button\"", ">", "</button></footer></div>"],
29
- _tmpl$20 = ["<form class=\"k2b-dialog__panel\">", "<div class=\"k2b-dialog__body k2b-prompt-form\"><div class=\"k2b-prompt-copy\">", "</div>", "</div><footer class=\"k2b-dialog__actions\"><button type=\"button\" class=\"k2b-button\" data-variant=\"secondary\">", "</button><button type=\"submit\" class=\"k2b-button\"", "", ">", "</button></footer></form>"],
30
- _tmpl$21 = ["<code class=\"k2b-confirmation-phrase\">", "</code>"],
31
- _tmpl$22 = ["<div class=\"k2b-dialog__panel k2b-dialog__stack\">", "<div class=\"k2b-dialog__content\">", "</div></div>"],
32
- _tmpl$23 = ["<div class=\"k2b-dialog__panel\">", "<div class=\"k2b-dialog__body\">", "</div><footer class=\"k2b-dialog__actions\"><button type=\"button\" class=\"k2b-button\">", "</button></footer></div>"];
8
+ var _tmpl$ = ["<p>", "</p>"],
9
+ _tmpl$2 = ["<button type=\"button\" class=\"k2b-button\" data-variant=\"secondary\">", "</button>"],
10
+ _tmpl$3 = ["<form class=\"k2b-dialog__panel\">", "<div class=\"k2b-dialog__body k2b-prompt-form\">", "</div><footer class=\"k2b-dialog__actions\">", "<button type=\"submit\" class=\"k2b-button\"", ">", "</button></footer></form>"],
11
+ _tmpl$4 = ["<div class=\"k2b-prompt-form__info\">", "</div>"],
12
+ _tmpl$5 = "<i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\"></i>",
13
+ _tmpl$6 = ["<div", " class=\"k2b-prompt-search__list\" role=\"listbox\"", ">", "</div>"],
14
+ _tmpl$7 = ["<div class=\"k2b-prompt-search-shell\">", "<div class=\"k2b-prompt-search\"><label class=\"k2b-prompt-search__input\"><i", " aria-hidden=\"true\"></i><input", " type=\"search\" role=\"combobox\"", " aria-autocomplete=\"list\"", " spellcheck=\"false\" autocapitalize=\"off\" autocomplete=\"off\" autocorrect=\"off\">", "</label><div class=\"k2b-prompt-search__collapse\" style=\"", "\"><div class=\"k2b-prompt-search__results\">", "", "</div></div></div></div>"],
15
+ _tmpl$8 = ["<p class=\"k2b-prompt-search-shell__title\">", "</p>"],
16
+ _tmpl$9 = ["<div class=\"k2b-prompt-search__error\" role=\"status\" aria-live=\"polite\">", "</div>"],
17
+ _tmpl$0 = ["<p role=\"status\" aria-live=\"polite\">", "</p>"],
18
+ _tmpl$1 = ["<img", " alt>"],
19
+ _tmpl$10 = ["<span class=\"k2b-prompt-search__preview\">", "</span>"],
20
+ _tmpl$11 = ["<button type=\"button\"", " role=\"option\"", ">", "<span class=\"k2b-prompt-search__copy\"><strong>", "</strong>", "</span></button>"],
21
+ _tmpl$12 = ["<i", " aria-hidden=\"true\"></i>"],
22
+ _tmpl$13 = ["<small>", "</small>"],
23
+ _tmpl$14 = ["<div class=\"k2b-prompt-copy\">", "</div>"],
24
+ _tmpl$15 = ["<div class=\"k2b-dialog__panel\">", "<div class=\"k2b-dialog__body\">", "</div><footer class=\"k2b-dialog__actions\"><button type=\"button\" class=\"k2b-button\"", ">", "</button></footer></div>"],
25
+ _tmpl$16 = ["<div class=\"k2b-dialog__panel k2b-dialog__stack\">", "<div class=\"k2b-dialog__content\">", "</div></div>"],
26
+ _tmpl$17 = ["<div class=\"k2b-dialog__panel\">", "<div class=\"k2b-dialog__body\">", "</div><footer class=\"k2b-dialog__actions\"><button type=\"button\" class=\"k2b-button\">", "</button></footer></div>"];
33
27
  import { mutation, timed } from "@k2b/stdlib/solid";
34
28
  import { createEffect, createMemo, createSignal, createUniqueId, For, onCleanup, Show } from "solid-js";
35
29
  import { createStore } from "solid-js/store";
@@ -45,8 +39,9 @@ import { TextInput } from "../inputs/TextInput";
45
39
  import { KeyedFor } from "../internal/keyed-for";
46
40
  import { resolveUiMessages } from "../intl/messages";
47
41
  import { dialogCore } from "./dialog-core";
42
+ import { contentClass, DialogHeader, panelClass, promptTone, sharedPrompts } from "./prompt-confirm";
48
43
  import { resolvePromptMessages } from "./prompt-messages";
49
- const PHRASE_SLOT = "\u0000";
44
+ export { DialogHeader } from "./prompt-confirm";
50
45
  const isEmpty = value => value === undefined || value === null || value === "" || Array.isArray(value) && value.length === 0;
51
46
  export const createFormState = schema => {
52
47
  const messages = resolveUiMessages();
@@ -117,28 +112,8 @@ export const createFormState = schema => {
117
112
  reset
118
113
  };
119
114
  };
120
- export const DialogHeader = props => _$ssr(_tmpl$, _$escape(_$createComponent(Show, {
121
- get when() {
122
- return props.icon;
123
- },
124
- children: icon => _$ssr(_tmpl$2, _$ssrAttribute("class", _$escape(icon(), true), false))
125
- })), _$escape(_$createComponent(Show, {
126
- get when() {
127
- return props.title;
128
- },
129
- get fallback() {
130
- return _$ssr(_tmpl$3);
131
- },
132
- children: title => _$ssr(_tmpl$4, _$escape(title()))
133
- })), _$ssrAttribute("aria-label", _$escape(resolveUiMessages().closeDialog, true), false));
134
- const panelClass = options => {
135
- const size = options?.size ?? "medium";
136
- const variant = options?.variant && options.variant !== "primary" ? ` k2b-dialog--${options.variant}` : "";
137
- return `k2b-dialog k2b-dialog--${size}${variant}${options?.surface === "bare" ? " is-bare" : ""}`;
138
- };
139
- const contentClass = surface => surface === "bare" ? "k2b-dialog__viewport is-bare" : "k2b-dialog__viewport";
140
115
  const renderInfo = content => {
141
- if (typeof content === "string") return _$ssr(_tmpl$5, _$escape(content));
116
+ if (typeof content === "string") return _$ssr(_tmpl$, _$escape(content));
142
117
  if (typeof content === "function") return content();
143
118
  return content;
144
119
  };
@@ -373,20 +348,23 @@ const PromptFormDialog = props => {
373
348
  event.preventDefault();
374
349
  submit();
375
350
  };
376
- return _$ssr(_tmpl$7, _$escape(_$createComponent(DialogHeader, {
351
+ return _$ssr(_tmpl$3, _$escape(_$createComponent(DialogHeader, {
377
352
  get title() {
378
353
  return props.config.title;
379
354
  },
380
355
  get icon() {
381
356
  return props.config.icon;
382
357
  },
358
+ get tone() {
359
+ return promptTone(props.config.variant);
360
+ },
383
361
  close: () => props.close(null)
384
362
  })), _$escape(_$createComponent(For, {
385
363
  get each() {
386
364
  return Object.entries(props.config.fields);
387
365
  },
388
366
  children: ([key, field]) => {
389
- if (field.type === "info") return _$ssr(_tmpl$8, _$escape(renderInfo(field.content)));
367
+ if (field.type === "info") return _$ssr(_tmpl$4, _$escape(renderInfo(field.content)));
390
368
  return _$createComponent(PromptControl, {
391
369
  field: field,
392
370
  value: () => state.values[key],
@@ -400,7 +378,7 @@ const PromptFormDialog = props => {
400
378
  return props.config.cancelText !== false;
401
379
  },
402
380
  get children() {
403
- return _$ssr(_tmpl$6, _$escape(props.config.cancelText || resolveUiMessages().cancel));
381
+ return _$ssr(_tmpl$2, _$escape(props.config.cancelText || resolveUiMessages().cancel));
404
382
  }
405
383
  })), _$ssrAttribute("data-variant", _$escape(props.config.variant ?? "primary", true), false), _$escape(props.config.confirmText ?? resolveUiMessages().save));
406
384
  };
@@ -516,50 +494,50 @@ const openSearchPrompt = (resolver, options) => dialogCore.open(close => {
516
494
  cancelDebounce();
517
495
  searchMutation.abort();
518
496
  });
519
- return _$ssr(_tmpl$1, _$escape(_$createComponent(Show, {
497
+ return _$ssr(_tmpl$7, _$escape(_$createComponent(Show, {
520
498
  get when() {
521
499
  return options?.title;
522
500
  },
523
- children: title => _$ssr(_tmpl$10, _$escape(title()))
501
+ children: title => _$ssr(_tmpl$8, _$escape(title()))
524
502
  })), _$ssrAttribute("class", _$escape(options?.icon ?? "ti ti-search", true), false), _$ssrAttribute("id", _$escape(searchId, true), false), _$ssrAttribute("aria-label", _$escape(options?.ariaLabel ?? options?.title ?? resolveUiMessages().search, true), false), _$ssrAttribute("aria-controls", _$escape(listboxId, true), false) + _$ssrAttribute("aria-expanded", _$escape(shouldShowResults(), true), false) + _$ssrAttribute("aria-activedescendant", shouldShowResults() && items().length > 0 ? _$escape(optionId(activeIndex()), true) : _$escape(undefined, true), false) + _$ssrAttribute("aria-busy", _$escape(searchMutation.loading(), true), false) + _$ssrAttribute("value", _$escape(query(), true), false) + _$ssrAttribute("placeholder", _$escape(options?.placeholder ?? resolveUiMessages().search, true), false), _$escape(_$createComponent(Show, {
525
503
  get when() {
526
504
  return searchMutation.loading();
527
505
  },
528
506
  get children() {
529
- return _$ssr(_tmpl$9);
507
+ return _$ssr(_tmpl$5);
530
508
  }
531
509
  })), _$ssrStyleProperty("height:", shouldShowResults() ? "var(--k2b-search-body-max)" : "0px") + _$ssrStyleProperty(";opacity:", shouldShowResults() ? "1" : "0"), _$escape(_$createComponent(Show, {
532
510
  get when() {
533
511
  return searchError();
534
512
  },
535
- children: message => _$ssr(_tmpl$11, _$escape(message()))
513
+ children: message => _$ssr(_tmpl$9, _$escape(message()))
536
514
  })), _$escape(_$createComponent(Show, {
537
515
  get when() {
538
516
  return items().length > 0;
539
517
  },
540
518
  get fallback() {
541
- return _$ssr(_tmpl$12, _$escape(emptyStateText()));
519
+ return _$ssr(_tmpl$0, _$escape(emptyStateText()));
542
520
  },
543
521
  get children() {
544
- return _$ssr(_tmpl$0, _$ssrAttribute("id", _$escape(listboxId, true), false), _$ssrAttribute("aria-label", _$escape(resolveUiMessages().searchResults, true), false), _$escape(_$createComponent(KeyedFor, {
522
+ return _$ssr(_tmpl$6, _$ssrAttribute("id", _$escape(listboxId, true), false), _$ssrAttribute("aria-label", _$escape(resolveUiMessages().searchResults, true), false), _$escape(_$createComponent(KeyedFor, {
545
523
  get each() {
546
524
  return items();
547
525
  },
548
526
  by: searchRowIdentity,
549
- children: (item, index) => _$ssr(_tmpl$15, _$ssrAttribute("id", _$escape(optionId(index()), true), false), _$ssrAttribute("aria-selected", _$escape(activeIndex(), true) === _$escape(index(), true), false) + _$ssrAttribute("data-active", activeIndex() === index() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-has-description", item().desc ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
527
+ children: (item, index) => _$ssr(_tmpl$11, _$ssrAttribute("id", _$escape(optionId(index()), true), false), _$ssrAttribute("aria-selected", _$escape(activeIndex(), true) === _$escape(index(), true), false) + _$ssrAttribute("data-active", activeIndex() === index() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-has-description", item().desc ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
550
528
  get when() {
551
529
  return item().previewUrl?.startsWith("/") || item().icon;
552
530
  },
553
531
  get children() {
554
- return _$ssr(_tmpl$14, _$escape(_$createComponent(Show, {
532
+ return _$ssr(_tmpl$10, _$escape(_$createComponent(Show, {
555
533
  get when() {
556
534
  return _$memo(() => !!item().previewUrl?.startsWith("/"))() && !failedPreviews[index()];
557
535
  },
558
536
  get fallback() {
559
- return _$ssr(_tmpl$2, _$ssrAttribute("class", _$escape(item().icon ?? "ti ti-file", true), false));
537
+ return _$ssr(_tmpl$12, _$ssrAttribute("class", _$escape(item().icon ?? "ti ti-file", true), false));
560
538
  },
561
539
  get children() {
562
- return _$ssr(_tmpl$13, _$ssrAttribute("src", _$escape(item().previewUrl, true), false));
540
+ return _$ssr(_tmpl$1, _$ssrAttribute("src", _$escape(item().previewUrl, true), false));
563
541
  }
564
542
  })));
565
543
  }
@@ -567,7 +545,7 @@ const openSearchPrompt = (resolver, options) => dialogCore.open(close => {
567
545
  get when() {
568
546
  return item().desc;
569
547
  },
570
- children: description => _$ssr(_tmpl$16, _$escape(description()))
548
+ children: description => _$ssr(_tmpl$13, _$escape(description()))
571
549
  })))
572
550
  })));
573
551
  }
@@ -586,7 +564,7 @@ const promptText = (content, defaultValue, options) => prompts.form({
586
564
  fields: {
587
565
  message: {
588
566
  type: "info",
589
- content: () => _$ssr(_tmpl$17, _$escape(content))
567
+ content: () => _$ssr(_tmpl$14, _$escape(content))
590
568
  },
591
569
  value: {
592
570
  type: "text",
@@ -600,7 +578,7 @@ const promptNumber = (content, defaultValue, options) => prompts.form({
600
578
  fields: {
601
579
  message: {
602
580
  type: "info",
603
- content: () => _$ssr(_tmpl$17, _$escape(content))
581
+ content: () => _$ssr(_tmpl$14, _$escape(content))
604
582
  },
605
583
  value: {
606
584
  type: "number",
@@ -611,14 +589,20 @@ const promptNumber = (content, defaultValue, options) => prompts.form({
611
589
  }
612
590
  }
613
591
  }).then(result => result?.value ?? null);
614
- export const prompts = {
615
- alert: (content, options) => dialogCore.open(close => _$ssr(_tmpl$18, _$escape(_$createComponent(DialogHeader, {
592
+
593
+ // The same object as `sharedPrompts`, which `PanelDialog` uses for its discard question: replacing `prompts.confirm`
594
+ // (for example in a test) therefore reaches every confirmation.
595
+ export const prompts = Object.assign(sharedPrompts, {
596
+ alert: (content, options) => dialogCore.open(close => _$ssr(_tmpl$15, _$escape(_$createComponent(DialogHeader, {
616
597
  get title() {
617
598
  return options?.title || resolveUiMessages().info;
618
599
  },
619
600
  get icon() {
620
601
  return options?.icon;
621
602
  },
603
+ get tone() {
604
+ return promptTone(options?.variant);
605
+ },
622
606
  close: () => close()
623
607
  })), _$escape(content), _$ssrAttribute("data-variant", _$escape(options?.variant ?? "primary", true), false), _$escape(options?.confirmText || resolveUiMessages().ok)), {
624
608
  panelClassName: panelClass(options),
@@ -631,68 +615,8 @@ export const prompts = {
631
615
  success: (content, options) => prompts.alert(content, {
632
616
  ...options,
633
617
  variant: "success",
634
- title: options?.title ?? resolveUiMessages().success,
635
- icon: options?.icon ?? "ti ti-check"
618
+ title: options?.title ?? resolveUiMessages().success
636
619
  }),
637
- confirm: (content, options) => {
638
- const confirmationPhrase = options?.confirmationPhrase;
639
- if (confirmationPhrase !== undefined && (confirmationPhrase.trim().length === 0 || /[\r\n\t]/.test(confirmationPhrase))) {
640
- throw new Error("confirmationPhrase must be non-empty, visible, and single-line");
641
- }
642
- let confirmationInput;
643
- return dialogCore.open(close => {
644
- if (!confirmationPhrase) {
645
- return _$ssr(_tmpl$19, _$escape(_$createComponent(DialogHeader, {
646
- get title() {
647
- return options?.title;
648
- },
649
- get icon() {
650
- return options?.icon;
651
- },
652
- close: () => close(false)
653
- })), _$escape(content), _$escape(options?.cancelText || resolveUiMessages().cancel), _$ssrAttribute("data-variant", _$escape(options?.variant ?? "primary", true), false), _$escape(options?.confirmText || resolvePromptMessages().confirm));
654
- }
655
-
656
- // The catalog owns word order; the slot marks where the verbatim phrase is rendered as code.
657
- const [labelBefore, labelAfter] = resolvePromptMessages().typeToConfirm({
658
- phrase: PHRASE_SLOT
659
- }).split(PHRASE_SLOT);
660
- const [confirmationValue, setConfirmationValue] = createSignal("");
661
- const canConfirm = () => confirmationValue() === confirmationPhrase;
662
- const submit = event => {
663
- event.preventDefault();
664
- if (canConfirm()) close(true);
665
- };
666
- return _$ssr(_tmpl$20, _$escape(_$createComponent(DialogHeader, {
667
- get title() {
668
- return options?.title;
669
- },
670
- get icon() {
671
- return options?.icon;
672
- },
673
- close: () => close(false)
674
- })), _$escape(content), _$escape(_$createComponent(TextInput, {
675
- get label() {
676
- return [labelBefore, _$ssr(_tmpl$21, _$escape(confirmationPhrase)), labelAfter];
677
- },
678
- value: confirmationValue,
679
- onValueChange: setConfirmationValue,
680
- autocomplete: "off",
681
- autocapitalize: "off",
682
- spellcheck: false,
683
- monospace: true,
684
- required: true
685
- })), _$escape(options?.cancelText || resolveUiMessages().cancel), _$ssrAttribute("data-variant", _$escape(options?.variant ?? "primary", true), false), _$ssrAttribute("disabled", !canConfirm(), true), _$escape(options?.confirmText || resolvePromptMessages().confirm));
686
- }, {
687
- panelClassName: panelClass(options),
688
- contentClassName: contentClass(options?.surface),
689
- initialFocus: confirmationPhrase ? () => confirmationInput ?? null : undefined,
690
- signal: options?.signal,
691
- cancelBehavior: options?.cancelBehavior,
692
- history: options?.history,
693
- ariaLabel: options?.ariaLabel ?? options?.title ?? resolvePromptMessages().confirmation
694
- });
695
- },
696
620
  prompt: promptText,
697
621
  promptNumber,
698
622
  form: async config => (await dialogCore.open(close => _$createComponent(PromptFormDialog, {
@@ -722,7 +646,7 @@ export const prompts = {
722
646
  }
723
647
  });
724
648
  if (options?.surface === "bare" && options.header === false) return body;
725
- return _$ssr(_tmpl$22, _$escape(_$createComponent(Show, {
649
+ return _$ssr(_tmpl$16, _$escape(_$createComponent(Show, {
726
650
  get when() {
727
651
  return options?.header !== false;
728
652
  },
@@ -734,6 +658,9 @@ export const prompts = {
734
658
  get icon() {
735
659
  return options?.icon;
736
660
  },
661
+ get tone() {
662
+ return promptTone(options?.variant);
663
+ },
737
664
  close: () => dismiss()
738
665
  });
739
666
  }
@@ -747,13 +674,14 @@ export const prompts = {
747
674
  ariaLabel: options?.ariaLabel ?? options?.title ?? resolveUiMessages().dialog
748
675
  }),
749
676
  search: openSearchPrompt,
750
- error: (content, options) => dialogCore.open(close => _$ssr(_tmpl$23, _$escape(_$createComponent(DialogHeader, {
677
+ error: (content, options) => dialogCore.open(close => _$ssr(_tmpl$17, _$escape(_$createComponent(DialogHeader, {
751
678
  get title() {
752
679
  return options?.title ?? resolveUiMessages().error;
753
680
  },
754
681
  get icon() {
755
- return options?.icon ?? "ti ti-alert-circle";
682
+ return options?.icon;
756
683
  },
684
+ tone: "danger",
757
685
  close: close
758
686
  })), _$escape(content), _$escape(options?.confirmText || resolveUiMessages().close)), {
759
687
  panelClassName: panelClass({
@@ -766,5 +694,5 @@ export const prompts = {
766
694
  history: options?.history,
767
695
  ariaLabel: options?.ariaLabel ?? options?.title ?? resolveUiMessages().error
768
696
  })
769
- };
697
+ });
770
698
  //# sourceMappingURL=prompts.js.map