@keboola/design 11.4.0 → 11.6.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 (184) hide show
  1. package/AGENTS.md +198 -7
  2. package/CHANGELOG.md +383 -0
  3. package/COMPONENT-API.md +73 -52
  4. package/dist/{AIKit-DDg5DBCG.js → AIKit-BExvt9pt.js} +390 -70
  5. package/dist/AIKit-BExvt9pt.js.map +1 -0
  6. package/dist/{Alert-DHJFrWnS.js → Alert-Ba5b2YPq.js} +2 -2
  7. package/dist/{Alert-DHJFrWnS.js.map → Alert-Ba5b2YPq.js.map} +1 -1
  8. package/dist/{Badge-Ch26CXoP.js → Badge-D0pXdekt.js} +2 -2
  9. package/dist/Badge-D0pXdekt.js.map +1 -0
  10. package/dist/{BrandEditor-Go7w8Zj2.js → BrandEditor-CSANsxUz.js} +6 -6
  11. package/dist/{BrandEditor-Go7w8Zj2.js.map → BrandEditor-CSANsxUz.js.map} +1 -1
  12. package/dist/{BrandLogo-Dmi7jo21.js → BrandLogo-CoKBk4MI.js} +4 -4
  13. package/dist/BrandLogo-CoKBk4MI.js.map +1 -0
  14. package/dist/{Breadcrumb-uEkM6adI.js → Breadcrumb-g_xn_-Nf.js} +2 -2
  15. package/dist/{Breadcrumb-uEkM6adI.js.map → Breadcrumb-g_xn_-Nf.js.map} +1 -1
  16. package/dist/{Checkbox-fC0BuO2B.js → Checkbox-CUIn2jap.js} +2 -2
  17. package/dist/{Checkbox-fC0BuO2B.js.map → Checkbox-CUIn2jap.js.map} +1 -1
  18. package/dist/{Clipboard-ChPdiUy3.js → Clipboard-BTW6C-b_.js} +2 -2
  19. package/dist/{Clipboard-ChPdiUy3.js.map → Clipboard-BTW6C-b_.js.map} +1 -1
  20. package/dist/{ClipboardButton-D9pDjgkB.js → ClipboardButton-CwZJdRaz.js} +2 -2
  21. package/dist/{ClipboardButton-D9pDjgkB.js.map → ClipboardButton-CwZJdRaz.js.map} +1 -1
  22. package/dist/{CodeEditor-Cxy3HnKH.js → CodeEditor-C9zy7PxK.js} +6 -6
  23. package/dist/{CodeEditor-Cxy3HnKH.js.map → CodeEditor-C9zy7PxK.js.map} +1 -1
  24. package/dist/{ColorInput-Bxj-1eLT.js → ColorInput-BZV-u_94.js} +3 -3
  25. package/dist/{ColorInput-Bxj-1eLT.js.map → ColorInput-BZV-u_94.js.map} +1 -1
  26. package/dist/{Combobox-Cs_1pj2q.js → Combobox-BfIfaVMA.js} +273 -104
  27. package/dist/Combobox-BfIfaVMA.js.map +1 -0
  28. package/dist/{Command-B7ML9YMv.js → Command-Bfa1kpbt.js} +2 -2
  29. package/dist/{Command-B7ML9YMv.js.map → Command-Bfa1kpbt.js.map} +1 -1
  30. package/dist/{CopyField-BO_sh-HO.js → CopyField-DpT0Ngz1.js} +2 -2
  31. package/dist/{CopyField-BO_sh-HO.js.map → CopyField-DpT0Ngz1.js.map} +1 -1
  32. package/dist/{DateInput-ZdaMQo5i.js → DateInput-DiEd5uCL.js} +3 -3
  33. package/dist/{DateInput-ZdaMQo5i.js.map → DateInput-DiEd5uCL.js.map} +1 -1
  34. package/dist/{DateRangeInput-DkvNh_sT.js → DateRangeInput-DPfVYchl.js} +3 -3
  35. package/dist/{DateRangeInput-DkvNh_sT.js.map → DateRangeInput-DPfVYchl.js.map} +1 -1
  36. package/dist/DiagramSource-C5_d8Gdj.js +11 -0
  37. package/dist/DiagramSource-C5_d8Gdj.js.map +1 -0
  38. package/dist/{FieldItem-CCd9-xnp.js → FieldItem-B7XMmZSz.js} +3 -3
  39. package/dist/{FieldItem-CCd9-xnp.js.map → FieldItem-B7XMmZSz.js.map} +1 -1
  40. package/dist/{Form-k6PH-em3.js → Form-CsttTHn4.js} +7 -7
  41. package/dist/Form-CsttTHn4.js.map +1 -0
  42. package/dist/{FormGroup-DbcDtrgU.js → FormGroup-DHvTFdno.js} +3 -3
  43. package/dist/{FormGroup-DbcDtrgU.js.map → FormGroup-DHvTFdno.js.map} +1 -1
  44. package/dist/{FullScreenModal-BvPuYibe.js → FullScreenModal-CN9nAs72.js} +50 -2
  45. package/dist/FullScreenModal-CN9nAs72.js.map +1 -0
  46. package/dist/{InputGroup-BnLHY0eq.js → InputGroup-DcZRlVnN.js} +22 -14
  47. package/dist/InputGroup-DcZRlVnN.js.map +1 -0
  48. package/dist/{Kbd-CvSM3D3-.js → Kbd-Cvvt91Q8.js} +14 -4
  49. package/dist/Kbd-Cvvt91Q8.js.map +1 -0
  50. package/dist/{MermaidDiagram-WkonYErO.js → MermaidDiagram-DSI7xMu2.js} +21 -19
  51. package/dist/MermaidDiagram-DSI7xMu2.js.map +1 -0
  52. package/dist/{MultiActionButtonGroup-CxWH7yWK.js → MultiActionButtonGroup-DokHbPgM.js} +2 -2
  53. package/dist/{MultiActionButtonGroup-CxWH7yWK.js.map → MultiActionButtonGroup-DokHbPgM.js.map} +1 -1
  54. package/dist/{Navbar-B2UsolVU.js → Navbar-Liy1TPI7.js} +6 -6
  55. package/dist/{Navbar-B2UsolVU.js.map → Navbar-Liy1TPI7.js.map} +1 -1
  56. package/dist/PageHeader-Q3IpCnQd.js.map +1 -1
  57. package/dist/{PageToolbar-DnbFt14Q.js → PageToolbar-DExqEYGl.js} +2 -2
  58. package/dist/{PageToolbar-DnbFt14Q.js.map → PageToolbar-DExqEYGl.js.map} +1 -1
  59. package/dist/{Popconfirm-CILjmzKI.js → Popconfirm-5pBzT_HQ.js} +10 -11
  60. package/dist/{Popconfirm-CILjmzKI.js.map → Popconfirm-5pBzT_HQ.js.map} +1 -1
  61. package/dist/{RadioGroup-XFzFd1ti.js → RadioGroup-DXPbSj8P.js} +2 -2
  62. package/dist/{RadioGroup-XFzFd1ti.js.map → RadioGroup-DXPbSj8P.js.map} +1 -1
  63. package/dist/{Search-4Bxtt8hS.js → Search-5uQAiNIP.js} +2 -2
  64. package/dist/{Search-4Bxtt8hS.js.map → Search-5uQAiNIP.js.map} +1 -1
  65. package/dist/{SearchInput-f_oY9T4Z.js → SearchInput-D4UgAXJK.js} +3 -3
  66. package/dist/{SearchInput-f_oY9T4Z.js.map → SearchInput-D4UgAXJK.js.map} +1 -1
  67. package/dist/{SectionNav-BpJlisbT.js → SectionNav-OkKCjSA-.js} +3 -3
  68. package/dist/{SectionNav-BpJlisbT.js.map → SectionNav-OkKCjSA-.js.map} +1 -1
  69. package/dist/{Select-DpcgKqKB.js → Select-DV3Hak_l.js} +3 -4
  70. package/dist/Select-DV3Hak_l.js.map +1 -0
  71. package/dist/{Sidebar-Cm6I4dE1.js → Sidebar-D3cY1kha.js} +44 -20
  72. package/dist/Sidebar-D3cY1kha.js.map +1 -0
  73. package/dist/{Slider-pPC_3gz9.js → Slider-CRf-bB4y.js} +2 -2
  74. package/dist/{Slider-pPC_3gz9.js.map → Slider-CRf-bB4y.js.map} +1 -1
  75. package/dist/{Switch-ChfPKcTE.js → Switch-B0WdGSjz.js} +7 -7
  76. package/dist/{Switch-ChfPKcTE.js.map → Switch-B0WdGSjz.js.map} +1 -1
  77. package/dist/{TextInput-DHM6dHmn.js → TextInput-DH5SkbsE.js} +3 -3
  78. package/dist/{TextInput-DHM6dHmn.js.map → TextInput-DH5SkbsE.js.map} +1 -1
  79. package/dist/{ThemeProvider-DrQJtzpd.js → ThemeProvider-2RMdVGxO.js} +17 -12
  80. package/dist/{ThemeProvider-DrQJtzpd.js.map → ThemeProvider-2RMdVGxO.js.map} +1 -1
  81. package/dist/{Timeline-6btyJl4D.js → Timeline-BG5Xogxh.js} +11 -11
  82. package/dist/{Timeline-6btyJl4D.js.map → Timeline-BG5Xogxh.js.map} +1 -1
  83. package/dist/{Workbench-BzE-Vvd9.js → Workbench-UR2FBC7I.js} +3 -1
  84. package/dist/Workbench-UR2FBC7I.js.map +1 -0
  85. package/dist/{ZoomableSvg-BWnDkR61.js → ZoomableSvg-pooPb1Cu.js} +3 -3
  86. package/dist/{ZoomableSvg-BWnDkR61.js.map → ZoomableSvg-pooPb1Cu.js.map} +1 -1
  87. package/dist/editors.js +4 -4
  88. package/dist/flint.js +136 -9
  89. package/dist/flint.js.map +1 -1
  90. package/dist/index.d.ts +801 -324
  91. package/dist/index.js +41 -40
  92. package/dist/internal/blocks/AIKit.js +2 -2
  93. package/dist/internal/blocks/AuthLayout.js +118 -0
  94. package/dist/internal/blocks/AuthLayout.js.map +1 -0
  95. package/dist/internal/blocks/BrandEditor.js +1 -1
  96. package/dist/internal/blocks/ClipboardButton.js +1 -1
  97. package/dist/internal/blocks/ColorInput.js +1 -1
  98. package/dist/internal/blocks/Command.js +1 -1
  99. package/dist/internal/blocks/CopyField.js +1 -1
  100. package/dist/internal/blocks/DateInput.js +1 -1
  101. package/dist/internal/blocks/DateRangeInput.js +1 -1
  102. package/dist/internal/blocks/ExportMenu.js +1 -1
  103. package/dist/internal/blocks/Form/connectors/MultiComboboxField.js +1 -1
  104. package/dist/internal/blocks/Form.js +1 -1
  105. package/dist/internal/blocks/FormGroup.js +1 -1
  106. package/dist/internal/blocks/MultiActionButtonGroup.js +1 -1
  107. package/dist/internal/blocks/MultiCombobox.js +107 -48
  108. package/dist/internal/blocks/MultiCombobox.js.map +1 -1
  109. package/dist/internal/blocks/NumberInput.js +1 -1
  110. package/dist/internal/blocks/PageToolbar.js +1 -1
  111. package/dist/internal/blocks/PasswordInput.js +2 -2
  112. package/dist/internal/blocks/SearchInput.js +1 -1
  113. package/dist/internal/blocks/SearchInputWithNavigation.js +2 -2
  114. package/dist/internal/blocks/SectionNav.js +1 -1
  115. package/dist/internal/blocks/TextInput.js +1 -1
  116. package/dist/internal/blocks/Textarea.js +1 -1
  117. package/dist/internal/blocks/TimeInput.js +2 -2
  118. package/dist/internal/components/Alert.js +1 -1
  119. package/dist/internal/components/Avatar.js +1 -1
  120. package/dist/internal/components/Badge.js +1 -1
  121. package/dist/internal/components/BrandLogo.js +1 -1
  122. package/dist/internal/components/Breadcrumb.js +1 -1
  123. package/dist/internal/components/Checkbox.js +1 -1
  124. package/dist/internal/components/Clipboard.js +1 -1
  125. package/dist/internal/components/CollapsiblePanel.js +1 -1
  126. package/dist/internal/components/Combobox.js +2 -2
  127. package/dist/internal/components/FullScreenModal.js +1 -1
  128. package/dist/internal/components/InputGroup.js +1 -1
  129. package/dist/internal/components/Kbd.js +1 -1
  130. package/dist/internal/components/Navbar.js +1 -1
  131. package/dist/internal/components/Popconfirm.js +1 -1
  132. package/dist/internal/components/Progress.js +3 -1
  133. package/dist/internal/components/Progress.js.map +1 -1
  134. package/dist/internal/components/RadioGroup.js +1 -1
  135. package/dist/internal/components/Search.js +1 -1
  136. package/dist/internal/components/Select.js +1 -1
  137. package/dist/internal/components/Sidebar.js +1 -1
  138. package/dist/internal/components/Slider.js +1 -1
  139. package/dist/internal/components/Switch.js +1 -1
  140. package/dist/internal/components/ThemeProvider.js +1 -1
  141. package/dist/internal/components/Timeline.js +1 -1
  142. package/dist/internal/components/Tooltip.js +1 -1
  143. package/dist/internal/components/Truncated.js +1 -1
  144. package/dist/internal/components/Workbench.js +1 -1
  145. package/dist/internal/components/ZoomableSvg.js +1 -1
  146. package/dist/internal/utils.js +2 -2
  147. package/dist/markdown-editor.js +29 -23
  148. package/dist/markdown-editor.js.map +1 -1
  149. package/dist/mermaid.js +1 -1
  150. package/dist/rjsf.js +22 -23
  151. package/dist/rjsf.js.map +1 -1
  152. package/dist/styles.css +1 -1
  153. package/dist/{svgTransforms-C9njt92h.js → svgTransforms-CJAYPk7o.js} +2 -10
  154. package/dist/svgTransforms-CJAYPk7o.js.map +1 -0
  155. package/dist/testing.js +1 -1
  156. package/dist/{useColorSchemeState-klihG9-i.js → themeScopeContext-D7fSyb06.js} +16 -3
  157. package/dist/themeScopeContext-D7fSyb06.js.map +1 -0
  158. package/dist/{themeTokens-D70HeNVF.js → themeTokens-qP1-55O7.js} +37 -10
  159. package/dist/themeTokens-qP1-55O7.js.map +1 -0
  160. package/dist/{utils-B5Z52hYs.js → utils-DSvrhU8E.js} +6 -2
  161. package/dist/{utils-B5Z52hYs.js.map → utils-DSvrhU8E.js.map} +1 -1
  162. package/dist/vega.d.ts +1 -1
  163. package/dist/vega.js +3 -3
  164. package/dist/vega.js.map +1 -1
  165. package/dist/{vegaTheme-DfoEQhOy.js → vegaTheme-CSvFEMBl.js} +6 -6
  166. package/dist/vegaTheme-CSvFEMBl.js.map +1 -0
  167. package/package.json +11 -9
  168. package/src/styles.css +3 -0
  169. package/dist/AIKit-DDg5DBCG.js.map +0 -1
  170. package/dist/Badge-Ch26CXoP.js.map +0 -1
  171. package/dist/BrandLogo-Dmi7jo21.js.map +0 -1
  172. package/dist/Combobox-Cs_1pj2q.js.map +0 -1
  173. package/dist/Form-k6PH-em3.js.map +0 -1
  174. package/dist/FullScreenModal-BvPuYibe.js.map +0 -1
  175. package/dist/InputGroup-BnLHY0eq.js.map +0 -1
  176. package/dist/Kbd-CvSM3D3-.js.map +0 -1
  177. package/dist/MermaidDiagram-WkonYErO.js.map +0 -1
  178. package/dist/Select-DpcgKqKB.js.map +0 -1
  179. package/dist/Sidebar-Cm6I4dE1.js.map +0 -1
  180. package/dist/Workbench-BzE-Vvd9.js.map +0 -1
  181. package/dist/svgTransforms-C9njt92h.js.map +0 -1
  182. package/dist/themeTokens-D70HeNVF.js.map +0 -1
  183. package/dist/useColorSchemeState-klihG9-i.js.map +0 -1
  184. package/dist/vegaTheme-DfoEQhOy.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { cn } from "./classNames-BzrkDnOD.js";
2
- import { Tooltip, TooltipProvider, copyToClipboard, isMac } from "./utils-B5Z52hYs.js";
2
+ import { Tooltip, TooltipProvider, copyToClipboard, isMac } from "./utils-DSvrhU8E.js";
3
3
  import { DEFAULT_BRAND_ID, DEFAULT_COLOR_SCHEME } from "./defaults-i_xG2F_1.js";
4
4
  import { ArgoDesignContext, useArgoDesign, useTheme } from "./context-D7X470dy.js";
5
5
  import { findLiteralMatches, hasLiteralMatch } from "./findLiteralMatches-BGBw8Vbl.js";
@@ -9,13 +9,13 @@ import { ButtonGroup } from "./internal/components/ButtonGroup.js";
9
9
  import { DropdownMenu } from "./DropdownMenu-CASr-jgl.js";
10
10
  import { ScrollArea, ScrollBar } from "./internal/components/ScrollArea.js";
11
11
  import { SplitButton } from "./internal/blocks/SplitButton.js";
12
- import { MultiActionButtonGroup } from "./MultiActionButtonGroup-CxWH7yWK.js";
12
+ import { MultiActionButtonGroup } from "./MultiActionButtonGroup-DokHbPgM.js";
13
13
  import { Toggle } from "./internal/components/Toggle.js";
14
14
  import { ToggleGroup } from "./ToggleGroup-Cy_10Mvu.js";
15
- import { Clipboard } from "./Clipboard-ChPdiUy3.js";
16
- import { ClipboardButton, ClipboardInline } from "./ClipboardButton-D9pDjgkB.js";
15
+ import { Clipboard } from "./Clipboard-BTW6C-b_.js";
16
+ import { ClipboardButton, ClipboardInline } from "./ClipboardButton-CwZJdRaz.js";
17
17
  import { ExportMenu } from "./internal/blocks/ExportMenu.js";
18
- import { CopyField } from "./CopyField-BO_sh-HO.js";
18
+ import { CopyField } from "./CopyField-DpT0Ngz1.js";
19
19
  import { Label } from "./internal/components/Label.js";
20
20
  import { MicrosoftButton } from "./internal/blocks/MicrosoftButton.js";
21
21
  import { GoogleButton } from "./internal/blocks/GoogleButton.js";
@@ -23,52 +23,53 @@ import { Link } from "./internal/components/Link.js";
23
23
  import { AlertModal } from "./AlertModal-BGJdaRRj.js";
24
24
  import { Modal } from "./Modal-Coj-H02o.js";
25
25
  import { Separator } from "./internal/components/Separator.js";
26
- import { FullScreenModal, FullScreenModalBody, FullScreenModalHeader } from "./FullScreenModal-BvPuYibe.js";
26
+ import { FullScreenModal, FullScreenModalBody, FullScreenModalHeader } from "./FullScreenModal-CN9nAs72.js";
27
27
  import { Truncated } from "./internal/components/Truncated.js";
28
28
  import { Sheet } from "./Sheet-Chf0kX1E.js";
29
+ import { useStableCallback } from "./internal/hooks/useStableCallback.js";
29
30
  import { Popover } from "./Popover-BEbQrC_P.js";
30
- import { Popconfirm } from "./Popconfirm-CILjmzKI.js";
31
+ import { Popconfirm } from "./Popconfirm-5pBzT_HQ.js";
31
32
  import { HoverCard } from "./HoverCard-B9ZMJxjn.js";
32
- import { Command, CommandGroup, CommandInput, CommandItem, CommandList, defaultFilter, useCommandState } from "./Command-B7ML9YMv.js";
33
- import { InputGroup } from "./InputGroup-BnLHY0eq.js";
34
- import { TextInput } from "./TextInput-DHM6dHmn.js";
33
+ import { Command, CommandGroup, CommandInput, CommandItem, CommandList, defaultFilter, useCommandState } from "./Command-Bfa1kpbt.js";
34
+ import { InputGroup } from "./InputGroup-DcZRlVnN.js";
35
+ import { TextInput } from "./TextInput-DH5SkbsE.js";
35
36
  import { SpotlightBackdrop, useTargetRect } from "./internal/components/SpotlightBackdrop.js";
36
37
  import { Calendar } from "./Calendar-cG5NIJ4O.js";
37
38
  import { DatePicker } from "./DatePicker-nA8YdE84.js";
38
39
  import { TimePicker } from "./TimePicker-BGeqc-Ed.js";
39
40
  import { DateRangePicker } from "./DateRangePicker-DjSUFjh4.js";
40
- import { Switch } from "./Switch-ChfPKcTE.js";
41
- import { RadioGroup } from "./RadioGroup-XFzFd1ti.js";
42
- import { Slider } from "./Slider-pPC_3gz9.js";
43
- import { Search, SearchForm } from "./Search-4Bxtt8hS.js";
44
- import { Select } from "./Select-DpcgKqKB.js";
45
- import { Checkbox } from "./Checkbox-fC0BuO2B.js";
46
- import { Badge } from "./Badge-Ch26CXoP.js";
47
- import { Combobox } from "./Combobox-Cs_1pj2q.js";
41
+ import { Switch } from "./Switch-B0WdGSjz.js";
42
+ import { RadioGroup } from "./RadioGroup-DXPbSj8P.js";
43
+ import { Slider } from "./Slider-CRf-bB4y.js";
44
+ import { Search, SearchForm } from "./Search-5uQAiNIP.js";
45
+ import { Select } from "./Select-DV3Hak_l.js";
46
+ import { Checkbox } from "./Checkbox-CUIn2jap.js";
47
+ import { Combobox, filterByWords, matchByWords, namedLabel, withBlankValues } from "./Combobox-BfIfaVMA.js";
48
+ import { Badge } from "./Badge-D0pXdekt.js";
48
49
  import { MultiCombobox } from "./internal/blocks/MultiCombobox.js";
49
- import { FormGroup } from "./FormGroup-DbcDtrgU.js";
50
- import { ColorInput } from "./ColorInput-Bxj-1eLT.js";
50
+ import { FormGroup } from "./FormGroup-DHvTFdno.js";
51
+ import { ColorInput } from "./ColorInput-BZV-u_94.js";
51
52
  import { HelpBlock } from "./internal/components/HelpBlock.js";
52
53
  import { NumberInput } from "./internal/blocks/NumberInput.js";
53
54
  import { Textarea } from "./internal/blocks/Textarea.js";
54
55
  import { MultiComboboxField } from "./internal/blocks/Form/connectors/MultiComboboxField.js";
55
56
  import { AutoSaveTextarea } from "./AutoSaveTextarea-BeuWuszr.js";
56
57
  import { ColorModeSwitch } from "./ColorModeSwitch-CsWLiTBX.js";
57
- import { DateInput } from "./DateInput-ZdaMQo5i.js";
58
+ import { DateInput } from "./DateInput-DiEd5uCL.js";
58
59
  import { PasswordInput } from "./internal/blocks/PasswordInput.js";
59
60
  import { TimeInput } from "./internal/blocks/TimeInput.js";
60
- import { DateRangeInput } from "./DateRangeInput-DkvNh_sT.js";
61
+ import { DateRangeInput } from "./DateRangeInput-DPfVYchl.js";
61
62
  import { OtpInput, REGEXP_ONLY_CHARS, REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS } from "./OtpInput-CbbymqYs.js";
62
- import { SearchInput } from "./SearchInput-f_oY9T4Z.js";
63
+ import { SearchInput } from "./SearchInput-D4UgAXJK.js";
63
64
  import { SearchInputWithNavigation } from "./internal/blocks/SearchInputWithNavigation.js";
64
65
  import { FileUpload, useFileDropTarget, useFileUploadRejections } from "./FileUpload-ABThVZyg.js";
65
- import { AnswerSummary, CollapsibleStepHeader, InlineStepDetail, InlineStepLabel, Markdown, MessageBubble, PlanApproval, PlanRewritingIndicator, PromptInput, Question, QuestionBlock, SuggestedPrompt, ThinkingIndicator, ToolCallApproval, ToolCallChip, ToolCallStatusHeader, UsageStats, UsageStatsRing } from "./AIKit-DDg5DBCG.js";
66
+ import { AnswerActions, AnswerSummary, CollapsibleStepHeader, DIAGRAM_LANGUAGES, InlineStepDetail, InlineStepLabel, Markdown, MarkdownTable, MessageBubble, PlanApproval, PlanRewritingIndicator, PromptInput, Question, QuestionBlock, SuggestedPrompt, ThinkingIndicator, ToolCallApproval, ToolCallChip, ToolCallStatusHeader, UsageStats, UsageStatsRing, clampPercentage, formatPercentage } from "./AIKit-BExvt9pt.js";
66
67
  import { Table, tableAriaSort } from "./Table-CvYuTuNU.js";
67
68
  import { Skeleton } from "./internal/components/Skeleton/Skeleton.js";
68
69
  import { DiagramSkeleton } from "./internal/blocks/DiagramShared/DiagramSkeleton.js";
69
70
  import { Progress } from "./internal/components/Progress.js";
70
71
  import { Collapsible } from "./Collapsible-BQXWEOBC.js";
71
- import { Alert } from "./Alert-DHJFrWnS.js";
72
+ import { Alert } from "./Alert-Ba5b2YPq.js";
72
73
  import { toast } from "./toast-DIC0iNRf.js";
73
74
  import { Toaster, useNotification } from "./Toast-Dr6Uw7ao.js";
74
75
  import { EmptySearchContent } from "./internal/components/EmptySearchContent.js";
@@ -80,25 +81,26 @@ import { SkeletonList } from "./internal/components/Skeleton/SkeletonList.js";
80
81
  import { DotsLoader } from "./internal/components/DotsLoader.js";
81
82
  import { CollapsiblePanel } from "./internal/components/CollapsiblePanel.js";
82
83
  import { PanelWithDetails } from "./internal/components/PanelWithDetails.js";
83
- import { ThemeProvider, ThemeScope, brandSchema, exampleCustomer, keboola, keboolaLegacySidebar, keboolaLegacyTopnav, useThemeScopeContainer } from "./ThemeProvider-DrQJtzpd.js";
84
+ import { ThemeProvider, ThemeScope, brandSchema, exampleCustomer, keboola, keboolaLegacySidebar, keboolaLegacyTopnav, useThemeScopeContainer } from "./ThemeProvider-2RMdVGxO.js";
84
85
  import { AppShell, appShellSlotSelector } from "./AppShell-DRgJxpXW.js";
86
+ import { BrandLogo } from "./BrandLogo-CoKBk4MI.js";
87
+ import { AuthLayout } from "./internal/blocks/AuthLayout.js";
85
88
  import { PageLayout } from "./PageLayout-DSVM-ASz.js";
86
89
  import { PageHeader } from "./PageHeader-Q3IpCnQd.js";
87
- import { PageToolbar } from "./PageToolbar-DnbFt14Q.js";
88
- import { SectionNav } from "./SectionNav-BpJlisbT.js";
89
- import { BrandLogo } from "./BrandLogo-Dmi7jo21.js";
90
+ import { PageToolbar } from "./PageToolbar-DExqEYGl.js";
91
+ import { SectionNav } from "./SectionNav-OkKCjSA-.js";
90
92
  import { ResizableHandle, ResizablePanel, ResizablePanelGroup, useDefaultLayout } from "./Resizable-D3vYToZH.js";
91
- import { Sidebar, SidebarProvider, useOptionalSidebar, useSidebar } from "./Sidebar-Cm6I4dE1.js";
93
+ import { Sidebar, SidebarProvider, useOptionalSidebar, useSidebar } from "./Sidebar-D3cY1kha.js";
92
94
  import { useScrollbarPosition } from "./internal/hooks/useScrollbarPosition.js";
93
- import { Navbar } from "./Navbar-B2UsolVU.js";
94
- import { DEFAULT_WORKBENCH_BAR_HEIGHT_IN_REM, DEFAULT_WORKBENCH_PANEL_HEIGHT_IN_PX, MIN_WORKBENCH_PANEL_HEIGHT_IN_PX, Workbench, useWorkbench } from "./Workbench-BzE-Vvd9.js";
95
- import { Breadcrumb } from "./Breadcrumb-uEkM6adI.js";
95
+ import { Navbar } from "./Navbar-Liy1TPI7.js";
96
+ import { DEFAULT_WORKBENCH_BAR_HEIGHT_IN_REM, DEFAULT_WORKBENCH_PANEL_HEIGHT_IN_PX, MIN_WORKBENCH_PANEL_HEIGHT_IN_PX, Workbench, useWorkbench } from "./Workbench-UR2FBC7I.js";
97
+ import { Breadcrumb } from "./Breadcrumb-g_xn_-Nf.js";
96
98
  import { Tabs, TabsContent } from "./Tabs-eB974xJf.js";
97
99
  import { Stepper } from "./Stepper-C8sm9ZFM.js";
98
- import { Timeline } from "./Timeline-6btyJl4D.js";
100
+ import { Timeline } from "./Timeline-BG5Xogxh.js";
99
101
  import { Avatar } from "./internal/components/Avatar.js";
100
102
  import { MarkedText } from "./MarkedText-DNGEUVWc.js";
101
- import { Kbd, kbdVariants, keys } from "./Kbd-CvSM3D3-.js";
103
+ import { Kbd, kbdVariants, keys } from "./Kbd-Cvvt91Q8.js";
102
104
  import { Pagination } from "./Pagination-C_b7Xhey.js";
103
105
  import { DiffType, DiffView, computeDiffRows, computeLineInformation } from "./DiffView-ppTIzh2h.js";
104
106
  import { PaneHeader } from "./internal/components/MergeEditor/PaneHeader.js";
@@ -107,10 +109,9 @@ import { useMergeDiff } from "./useMergeDiff-CvowEXJ1.js";
107
109
  import { DashboardHero } from "./internal/blocks/DashboardHero.js";
108
110
  import { StatCard, StatCardGrid } from "./internal/blocks/StatCard.js";
109
111
  import { ChartPanel } from "./internal/blocks/ChartPanel.js";
110
- import { setServerFieldErrors, setSubmitError, useAppForm, withForm } from "./Form-k6PH-em3.js";
112
+ import { setServerFieldErrors, setSubmitError, useAppForm, withForm } from "./Form-CsttTHn4.js";
111
113
  import { useAutosizeInput } from "./internal/hooks/useAutosizeInput.js";
112
- import { useStableCallback } from "./internal/hooks/useStableCallback.js";
113
- import { ZoomableSvg, svgToPngBlob, toSvgFileContent } from "./ZoomableSvg-BWnDkR61.js";
114
- import { BrandEditor, DEFAULT_FALLBACK_FONT, DEFAULT_FONT_OPTIONS, channelsToHex, contrastRatio, hexToChannels, wcagLevel } from "./BrandEditor-Go7w8Zj2.js";
114
+ import { ZoomableSvg, svgToPngBlob, toSvgFileContent } from "./ZoomableSvg-pooPb1Cu.js";
115
+ import { BrandEditor, DEFAULT_FALLBACK_FONT, DEFAULT_FONT_OPTIONS, channelsToHex, contrastRatio, hexToChannels, wcagLevel } from "./BrandEditor-CSANsxUz.js";
115
116
  import { Slot } from "@radix-ui/react-slot";
116
- export { Alert, AlertModal, AnswerSummary, AppShell, ArgoDesignContext, AutoSaveTextarea, Avatar, Badge, BrandEditor, BrandLogo, Breadcrumb, Button, ButtonGroup, ButtonInline, Calendar, Card, ChartPanel, Checkbox, Clipboard, ClipboardButton, ClipboardInline, Collapsible, CollapsiblePanel, CollapsibleStepHeader, ColorInput, ColorModeSwitch, Combobox, Command, CommandGroup, CommandInput, CommandItem, CommandList, ConflictStatusIndicator, CopyField, DEFAULT_COLOR_SCHEME, DEFAULT_FALLBACK_FONT, DEFAULT_FONT_OPTIONS, DEFAULT_BRAND_ID as DEFAULT_KEBOOLA_BRAND_ID, DEFAULT_WORKBENCH_BAR_HEIGHT_IN_REM, DEFAULT_WORKBENCH_PANEL_HEIGHT_IN_PX, DashboardHero, DateInput, DatePicker, DateRangeInput, DateRangePicker, DiagramSkeleton, DiffType, DiffView, DotsLoader, DropdownMenu, EmptyConfigurationActionCard, EmptySearchContent, EmptyState, ErrorState, ExportMenu, FileUpload, FormGroup, FullScreenModal, FullScreenModalBody, FullScreenModalHeader, GoogleButton, HelpBlock, HoverCard, InlineStepDetail, InlineStepLabel, InputGroup, Kbd, Label, Link, MIN_WORKBENCH_PANEL_HEIGHT_IN_PX, Markdown, MarkedText, MessageBubble, MicrosoftButton, Modal, MultiActionButtonGroup, MultiCombobox, MultiComboboxField, Navbar, NumberInput, OtpInput, PageHeader, PageLayout, PageToolbar, Pagination, PaneHeader, PanelWithDetails, PasswordInput, PlanApproval, PlanRewritingIndicator, Popconfirm, Popover, Progress, PromptInput, Question, QuestionBlock, REGEXP_ONLY_CHARS, REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS, RadioGroup, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScrollArea, ScrollBar, Search, SearchForm, SearchInput, SearchInputWithNavigation, SectionNav, Select, Separator, Sheet, Sidebar, SidebarProvider, Skeleton, SkeletonList, Slider, Slot, SplitButton, SpotlightBackdrop, StatCard, StatCardGrid, Stepper, SuggestedPrompt, Switch, Table, Tabs, TabsContent, TextInput, Textarea, ThemeProvider, ThemeScope, ThinkingIndicator, TimeInput, TimePicker, Timeline, Toaster, Toggle, ToggleGroup, ToolCallApproval, ToolCallChip, ToolCallStatusHeader, Tooltip, TooltipProvider, Truncated, UsageStats, UsageStatsRing, Workbench, ZoomableSvg, appShellSlotSelector, argoVariants, brandSchema, channelsToHex, cn, computeDiffRows, computeLineInformation, contrastRatio, copyToClipboard, defaultFilter, exampleCustomer, findLiteralMatches, hasLiteralMatch, hexToChannels, isMac, kbdVariants, keboola, keboolaLegacySidebar, keboolaLegacyTopnav, keys, mergeRefs, setServerFieldErrors, setSubmitError, svgToPngBlob, tableAriaSort, toSvgFileContent, toast, useAppForm, useArgoDesign, useAutosizeInput, useCommandState, useDefaultLayout, useFileDropTarget, useFileUploadRejections, useMergeDiff, useNotification, useOptionalSidebar, useScrollbarPosition, useSidebar, useStableCallback, useTargetRect, useTheme, useThemeScopeContainer, useWorkbench, wcagLevel, withForm };
117
+ export { Alert, AlertModal, AnswerActions, AnswerSummary, AppShell, ArgoDesignContext, AuthLayout, AutoSaveTextarea, Avatar, Badge, BrandEditor, BrandLogo, Breadcrumb, Button, ButtonGroup, ButtonInline, Calendar, Card, ChartPanel, Checkbox, Clipboard, ClipboardButton, ClipboardInline, Collapsible, CollapsiblePanel, CollapsibleStepHeader, ColorInput, ColorModeSwitch, Combobox, Command, CommandGroup, CommandInput, CommandItem, CommandList, ConflictStatusIndicator, CopyField, DEFAULT_COLOR_SCHEME, DEFAULT_FALLBACK_FONT, DEFAULT_FONT_OPTIONS, DEFAULT_BRAND_ID as DEFAULT_KEBOOLA_BRAND_ID, DEFAULT_WORKBENCH_BAR_HEIGHT_IN_REM, DEFAULT_WORKBENCH_PANEL_HEIGHT_IN_PX, DIAGRAM_LANGUAGES, DashboardHero, DateInput, DatePicker, DateRangeInput, DateRangePicker, DiagramSkeleton, DiffType, DiffView, DotsLoader, DropdownMenu, EmptyConfigurationActionCard, EmptySearchContent, EmptyState, ErrorState, ExportMenu, FileUpload, FormGroup, FullScreenModal, FullScreenModalBody, FullScreenModalHeader, GoogleButton, HelpBlock, HoverCard, InlineStepDetail, InlineStepLabel, InputGroup, Kbd, Label, Link, MIN_WORKBENCH_PANEL_HEIGHT_IN_PX, Markdown, MarkdownTable, MarkedText, MessageBubble, MicrosoftButton, Modal, MultiActionButtonGroup, MultiCombobox, MultiComboboxField, Navbar, NumberInput, OtpInput, PageHeader, PageLayout, PageToolbar, Pagination, PaneHeader, PanelWithDetails, PasswordInput, PlanApproval, PlanRewritingIndicator, Popconfirm, Popover, Progress, PromptInput, Question, QuestionBlock, REGEXP_ONLY_CHARS, REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS, RadioGroup, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScrollArea, ScrollBar, Search, SearchForm, SearchInput, SearchInputWithNavigation, SectionNav, Select, Separator, Sheet, Sidebar, SidebarProvider, Skeleton, SkeletonList, Slider, Slot, SplitButton, SpotlightBackdrop, StatCard, StatCardGrid, Stepper, SuggestedPrompt, Switch, Table, Tabs, TabsContent, TextInput, Textarea, ThemeProvider, ThemeScope, ThinkingIndicator, TimeInput, TimePicker, Timeline, Toaster, Toggle, ToggleGroup, ToolCallApproval, ToolCallChip, ToolCallStatusHeader, Tooltip, TooltipProvider, Truncated, UsageStats, UsageStatsRing, Workbench, ZoomableSvg, appShellSlotSelector, argoVariants, brandSchema, channelsToHex, clampPercentage, cn, computeDiffRows, computeLineInformation, contrastRatio, copyToClipboard, defaultFilter, exampleCustomer, filterByWords, findLiteralMatches, formatPercentage, hasLiteralMatch, hexToChannels, isMac, kbdVariants, keboola, keboolaLegacySidebar, keboolaLegacyTopnav, keys, matchByWords, mergeRefs, namedLabel, setServerFieldErrors, setSubmitError, svgToPngBlob, tableAriaSort, toSvgFileContent, toast, useAppForm, useArgoDesign, useAutosizeInput, useCommandState, useDefaultLayout, useFileDropTarget, useFileUploadRejections, useMergeDiff, useNotification, useOptionalSidebar, useScrollbarPosition, useSidebar, useStableCallback, useTargetRect, useTheme, useThemeScopeContainer, useWorkbench, wcagLevel, withBlankValues, withForm };
@@ -1,2 +1,2 @@
1
- import { AnswerSummary, CollapsibleStepHeader, InlineStepDetail, InlineStepLabel, Markdown, MessageBubble, PlanApproval, PlanRewritingIndicator, PromptInput, Question, QuestionBlock, SuggestedPrompt, ThinkingIndicator, ToolCallApproval, ToolCallChip, ToolCallStatusHeader, UsageStats, UsageStatsRing } from "../../AIKit-DDg5DBCG.js";
2
- export { AnswerSummary, CollapsibleStepHeader, InlineStepDetail, InlineStepLabel, Markdown, MessageBubble, PlanApproval, PlanRewritingIndicator, PromptInput, Question, QuestionBlock, SuggestedPrompt, ThinkingIndicator, ToolCallApproval, ToolCallChip, ToolCallStatusHeader, UsageStats, UsageStatsRing };
1
+ import { AnswerActions, AnswerSummary, CollapsibleStepHeader, DIAGRAM_LANGUAGES, InlineStepDetail, InlineStepLabel, Markdown, MarkdownTable, MessageBubble, PlanApproval, PlanRewritingIndicator, PromptInput, Question, QuestionBlock, SuggestedPrompt, ThinkingIndicator, ToolCallApproval, ToolCallChip, ToolCallStatusHeader, UsageStats, UsageStatsRing, clampPercentage, formatPercentage } from "../../AIKit-BExvt9pt.js";
2
+ export { AnswerActions, AnswerSummary, CollapsibleStepHeader, DIAGRAM_LANGUAGES, InlineStepDetail, InlineStepLabel, Markdown, MarkdownTable, MessageBubble, PlanApproval, PlanRewritingIndicator, PromptInput, Question, QuestionBlock, SuggestedPrompt, ThinkingIndicator, ToolCallApproval, ToolCallChip, ToolCallStatusHeader, UsageStats, UsageStatsRing, clampPercentage, formatPercentage };
@@ -0,0 +1,118 @@
1
+ import { cn } from "../../classNames-BzrkDnOD.js";
2
+ import { BrandLogo } from "../../BrandLogo-CoKBk4MI.js";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ //#region src/blocks/AuthLayout/AuthLayout.tsx
5
+ const widthClass = {
6
+ form: "tw:max-w-md",
7
+ wide: "tw:max-w-[34rem]"
8
+ };
9
+ /**
10
+ * Column tracks of the split geometry: the form track carries a floor, the aside takes the rest.
11
+ *
12
+ * - The floor is the column's own width plus `SURFACE`'s gutters (`2rem` a side from `sm` up).
13
+ * - A bare `1fr` makes the track a share of the viewport instead — `1fr` of `1fr 2fr` is a third of
14
+ * it — so the floor binds up to 1536px for `form` and 1824px for `wide`. Below that a bare `1fr`
15
+ * hands the column less than `widthClass` asks for and a two-field row collapses to ~180px each.
16
+ * - `2fr` keeps the aside the wider half once the floor is met.
17
+ */
18
+ const splitClass = {
19
+ form: {
20
+ end: "tw:lg:grid-cols-[minmax(32rem,1fr)_2fr]",
21
+ start: "tw:lg:grid-cols-[2fr_minmax(32rem,1fr)]"
22
+ },
23
+ wide: {
24
+ end: "tw:lg:grid-cols-[minmax(38rem,1fr)_2fr]",
25
+ start: "tw:lg:grid-cols-[2fr_minmax(38rem,1fr)]"
26
+ }
27
+ };
28
+ const SCREEN = "tw:min-h-svh";
29
+ const SURFACE = "tw:flex tw:justify-center tw:px-4 tw:py-12 tw:sm:px-8";
30
+ const COLUMN = "tw:flex tw:w-full tw:flex-col tw:items-center tw:gap-6";
31
+ const Root = ({ ref, className, width = "form", aside, asideSide = "end", asideCollapse = "hide", children, ...props }) => {
32
+ const column = /* @__PURE__ */ jsx("div", {
33
+ className: cn(COLUMN, widthClass[width]),
34
+ children
35
+ });
36
+ if (!aside) return /* @__PURE__ */ jsx("div", {
37
+ ref,
38
+ className: cn(SURFACE, SCREEN, "tw:items-center tw:bg-muted", className),
39
+ ...props,
40
+ children: column
41
+ });
42
+ const panel = /* @__PURE__ */ jsx("aside", {
43
+ className: cn("tw:bg-muted", asideCollapse === "stack" ? "tw:flex" : "tw:hidden tw:lg:flex"),
44
+ children: aside
45
+ });
46
+ const form = /* @__PURE__ */ jsx("div", {
47
+ className: cn(SURFACE, "tw:bg-background"),
48
+ children: column
49
+ });
50
+ return /* @__PURE__ */ jsxs("div", {
51
+ ref,
52
+ className: cn("tw:grid", SCREEN, splitClass[width][asideSide], className),
53
+ ...props,
54
+ children: [asideSide === "start" ? panel : form, asideSide === "start" ? form : panel]
55
+ });
56
+ };
57
+ const Header = ({ ref, className, actions, productName, children, ...props }) => /* @__PURE__ */ jsxs("header", {
58
+ ref,
59
+ className: cn("tw:flex tw:items-center tw:gap-4", actions && "tw:w-full tw:justify-between", className),
60
+ ...props,
61
+ children: [children ?? /* @__PURE__ */ jsxs("span", {
62
+ className: "tw:flex tw:items-center tw:gap-3",
63
+ children: [/* @__PURE__ */ jsx(BrandLogo, {
64
+ variant: "mark",
65
+ className: "tw:h-8 tw:text-primary"
66
+ }), /* @__PURE__ */ jsx("span", {
67
+ className: "tw:text-lg tw:font-semibold",
68
+ children: productName
69
+ })]
70
+ }), actions && /* @__PURE__ */ jsx("div", {
71
+ className: "tw:flex tw:items-center tw:gap-1",
72
+ children: actions
73
+ })]
74
+ });
75
+ const Content = ({ ref, className, children, ...props }) => /* @__PURE__ */ jsx("main", {
76
+ ref,
77
+ className: cn("tw:flex tw:min-h-0 tw:w-full tw:flex-1 tw:flex-col tw:gap-6", className),
78
+ ...props,
79
+ children
80
+ });
81
+ const Footer = ({ ref, className, children, ...props }) => /* @__PURE__ */ jsx("footer", {
82
+ ref,
83
+ className: cn("tw:mt-auto tw:w-full tw:text-xs tw:text-muted-foreground", className),
84
+ ...props,
85
+ children
86
+ });
87
+ /**
88
+ * The signed-out page frame — sign-in, sign-up, password reset, MFA, project picker, stack picker.
89
+ *
90
+ * - Third member of the page-chrome family: `AppShell` frames the signed-in app, `PageLayout` its
91
+ * content column, `AuthLayout` the pages a visitor reaches without a session.
92
+ * - Owns the landmarks. `Header` / `Content` / `Footer` are `header` / `main` / `footer`, so every
93
+ * element on the page sits inside one — the thing each hand-built copy got wrong differently.
94
+ * - Owns the lockup. `Header` pairs the active brand's mark with the `productName` it is given, so
95
+ * the page re-skins and still names the product when the brand ships no logo; pass children
96
+ * instead to replace the pair with an app-specific lockup.
97
+ * - Does **not** own the card. Two of the pages it frames deliberately have none (the form column
98
+ * *is* the surface), so `Content` is a plain column — wrap the body in `Card` at the call site.
99
+ * - The tinted surface is whatever is not the form: without an `aside` the page is `bg-muted` and the
100
+ * card supplies the contrast; with one the form column is `bg-background` and the panel `bg-muted`.
101
+ * - Below `lg` the split collapses to one column and the `aside` is dropped. A page whose pitch has
102
+ * to survive that — an acquisition funnel — passes `asideCollapse="stack"` to keep it.
103
+ *
104
+ * **When NOT to use:** a signed-out page that is *navigational* rather than an auth step — a public
105
+ * catalog, a shared authorization link — is a document, not a form. Use `AppShell` + `PageLayout`.
106
+ */
107
+ const AuthLayout = Object.assign(Root, {
108
+ /** Lockup row: `productName` beside the brand's mark, or your own children. `actions` sit opposite. */
109
+ Header,
110
+ /** The form column. Wrap the body in `Card` here if the page wants one. */
111
+ Content,
112
+ /** Legal copy, a way back out, social proof. Pinned to the bottom of the column in the split geometry. */
113
+ Footer
114
+ });
115
+ //#endregion
116
+ export { AuthLayout };
117
+
118
+ //# sourceMappingURL=AuthLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthLayout.js","names":[],"sources":["../../../src/blocks/AuthLayout/AuthLayout.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from 'react';\n\nimport { BrandLogo } from '../../components/BrandLogo';\nimport { cn } from '../../utils';\n\n/**\n * Content-column width.\n *\n * - `form` (28rem) — one field per row: sign-in, MFA, password reset, project picker.\n * - `wide` (34rem) — multi-field or two-column forms: registration.\n */\ntype Width = 'form' | 'wide';\n\nconst widthClass = {\n form: 'tw:max-w-md',\n wide: 'tw:max-w-[34rem]',\n} as const satisfies Record<Width, string>;\n\n/**\n * Column tracks of the split geometry: the form track carries a floor, the aside takes the rest.\n *\n * - The floor is the column's own width plus `SURFACE`'s gutters (`2rem` a side from `sm` up).\n * - A bare `1fr` makes the track a share of the viewport instead — `1fr` of `1fr 2fr` is a third of\n * it — so the floor binds up to 1536px for `form` and 1824px for `wide`. Below that a bare `1fr`\n * hands the column less than `widthClass` asks for and a two-field row collapses to ~180px each.\n * - `2fr` keeps the aside the wider half once the floor is met.\n */\nconst splitClass = {\n form: {\n end: 'tw:lg:grid-cols-[minmax(32rem,1fr)_2fr]',\n start: 'tw:lg:grid-cols-[2fr_minmax(32rem,1fr)]',\n },\n wide: {\n end: 'tw:lg:grid-cols-[minmax(38rem,1fr)_2fr]',\n start: 'tw:lg:grid-cols-[2fr_minmax(38rem,1fr)]',\n },\n} as const satisfies Record<Width, Record<'start' | 'end', string>>;\n\n// `svh` rather than `vh`: the page is one screen tall by design, and `vh` on mobile reserves height\n// for browser chrome that is not there, leaving the column scrollable by the height of the toolbar.\nconst SCREEN = 'tw:min-h-svh';\n\n// Padding and horizontal centring of the form column — the screen height is deliberately not here.\n// In the split geometry the grid root carries it and its rows stretch to fill, so the column is\n// full-height anyway; its own `min-h-svh` would instead reserve a whole screen *under* a stacked\n// aside, leaving a short card with an empty viewport below it.\nconst SURFACE = 'tw:flex tw:justify-center tw:px-4 tw:py-12 tw:sm:px-8';\n\nconst COLUMN = 'tw:flex tw:w-full tw:flex-col tw:items-center tw:gap-6';\n\ntype RootProps = ComponentProps<'div'> & {\n width?: Width;\n /** Marketing / illustration panel. Its presence switches the page to the split geometry. */\n aside?: ReactNode;\n /** Which side the `aside` takes on wide screens. */\n asideSide?: 'start' | 'end';\n /**\n * What the `aside` does below `lg`, where the split collapses to one column.\n *\n * - `hide` (default) — the panel is dropped. Right for a page a signed-out *user* asked for: they\n * came to sign in, and the pitch is not why they are here.\n * - `stack` — the panel keeps its `asideSide` order relative to the form and renders above or\n * below it. Right for a page that has to sell: an acquisition funnel loses its social proof\n * otherwise, on the devices most of it arrives on.\n */\n asideCollapse?: 'hide' | 'stack';\n};\n\nconst Root = ({\n ref,\n className,\n width = 'form',\n aside,\n asideSide = 'end',\n asideCollapse = 'hide',\n children,\n ...props\n}: RootProps) => {\n const column = <div className={cn(COLUMN, widthClass[width])}>{children}</div>;\n\n if (!aside) {\n return (\n <div\n ref={ref}\n className={cn(SURFACE, SCREEN, 'tw:items-center tw:bg-muted', className)}\n {...props}\n >\n {column}\n </div>\n );\n }\n\n // The form column is always the floored track and the aside the `2fr` one, whichever side it takes —\n // so DOM order, not an `order` utility, decides the side and the reading order matches the visual one.\n const panel = (\n <aside\n className={cn('tw:bg-muted', asideCollapse === 'stack' ? 'tw:flex' : 'tw:hidden tw:lg:flex')}\n >\n {aside}\n </aside>\n );\n const form = <div className={cn(SURFACE, 'tw:bg-background')}>{column}</div>;\n\n return (\n <div\n ref={ref}\n className={cn('tw:grid', SCREEN, splitClass[width][asideSide], className)}\n {...props}\n >\n {asideSide === 'start' ? panel : form}\n {asideSide === 'start' ? form : panel}\n </div>\n );\n};\n\n/**\n * The lockup: either the page's own, or the brand's mark beside the product name.\n *\n * - Exactly one of the two is required. A logo-only default cannot be trusted to name the product:\n * `BrandLogo` returns `null` for a brand that ships no logo, and falls back to the mark for one\n * that ships no wordmark — an auth page has no bar around it, so what is left names nothing.\n * - `productName` is text, not part of the image, for the same reason.\n */\ntype Lockup =\n | { children: ReactNode; productName?: never }\n | { children?: never; productName: ReactNode };\n\ntype HeaderProps = Omit<ComponentProps<'header'>, 'children'> & {\n actions?: ReactNode;\n} & Lockup;\n\nconst Header = ({ ref, className, actions, productName, children, ...props }: HeaderProps) => (\n <header\n ref={ref}\n className={cn(\n 'tw:flex tw:items-center tw:gap-4',\n // Controls need somewhere to sit apart from the mark; without them the mark centres instead.\n actions && 'tw:w-full tw:justify-between',\n className,\n )}\n {...props}\n >\n {children ?? (\n <span className=\"tw:flex tw:items-center tw:gap-3\">\n {/* `variant=\"mark\"`: a wordmark already spells the brand, so pairing it with the product\n name states the brand twice. `h-8`, not the bar's `h-6` — with no chrome around it the\n lockup is the only thing naming the product. */}\n <BrandLogo variant=\"mark\" className=\"tw:h-8 tw:text-primary\" />\n <span className=\"tw:text-lg tw:font-semibold\">{productName}</span>\n </span>\n )}\n {actions && <div className=\"tw:flex tw:items-center tw:gap-1\">{actions}</div>}\n </header>\n);\n\nconst Content = ({ ref, className, children, ...props }: ComponentProps<'main'>) => (\n <main\n ref={ref}\n className={cn('tw:flex tw:min-h-0 tw:w-full tw:flex-1 tw:flex-col tw:gap-6', className)}\n {...props}\n >\n {children}\n </main>\n);\n\nconst Footer = ({ ref, className, children, ...props }: ComponentProps<'footer'>) => (\n <footer\n ref={ref}\n className={cn('tw:mt-auto tw:w-full tw:text-xs tw:text-muted-foreground', className)}\n {...props}\n >\n {children}\n </footer>\n);\n\n/**\n * The signed-out page frame — sign-in, sign-up, password reset, MFA, project picker, stack picker.\n *\n * - Third member of the page-chrome family: `AppShell` frames the signed-in app, `PageLayout` its\n * content column, `AuthLayout` the pages a visitor reaches without a session.\n * - Owns the landmarks. `Header` / `Content` / `Footer` are `header` / `main` / `footer`, so every\n * element on the page sits inside one — the thing each hand-built copy got wrong differently.\n * - Owns the lockup. `Header` pairs the active brand's mark with the `productName` it is given, so\n * the page re-skins and still names the product when the brand ships no logo; pass children\n * instead to replace the pair with an app-specific lockup.\n * - Does **not** own the card. Two of the pages it frames deliberately have none (the form column\n * *is* the surface), so `Content` is a plain column — wrap the body in `Card` at the call site.\n * - The tinted surface is whatever is not the form: without an `aside` the page is `bg-muted` and the\n * card supplies the contrast; with one the form column is `bg-background` and the panel `bg-muted`.\n * - Below `lg` the split collapses to one column and the `aside` is dropped. A page whose pitch has\n * to survive that — an acquisition funnel — passes `asideCollapse=\"stack\"` to keep it.\n *\n * **When NOT to use:** a signed-out page that is *navigational* rather than an auth step — a public\n * catalog, a shared authorization link — is a document, not a form. Use `AppShell` + `PageLayout`.\n */\nexport const AuthLayout = Object.assign(Root, {\n /** Lockup row: `productName` beside the brand's mark, or your own children. `actions` sit opposite. */\n Header,\n /** The form column. Wrap the body in `Card` here if the page wants one. */\n Content,\n /** Legal copy, a way back out, social proof. Pinned to the bottom of the column in the split geometry. */\n Footer,\n});\n\nexport type { RootProps as AuthLayoutProps };\n"],"mappings":";;;;AAaA,MAAM,aAAa;CACjB,MAAM;CACN,MAAM;AACR;;;;;;;;;;AAWA,MAAM,aAAa;CACjB,MAAM;EACJ,KAAK;EACL,OAAO;CACT;CACA,MAAM;EACJ,KAAK;EACL,OAAO;CACT;AACF;AAIA,MAAM,SAAS;AAMf,MAAM,UAAU;AAEhB,MAAM,SAAS;AAoBf,MAAM,QAAQ,EACZ,KACA,WACA,QAAQ,QACR,OACA,YAAY,OACZ,gBAAgB,QAChB,UACA,GAAG,YACY;CACf,MAAM,SAAS,oBAAC,OAAD;EAAK,WAAW,GAAG,QAAQ,WAAW,MAAM;EAAI;CAAc,CAAA;CAE7E,IAAI,CAAC,OACH,OACE,oBAAC,OAAD;EACO;EACL,WAAW,GAAG,SAAS,QAAQ,+BAA+B,SAAS;EACvE,GAAI;EAEH,UAAA;CACE,CAAA;CAMT,MAAM,QACJ,oBAAC,SAAD;EACE,WAAW,GAAG,eAAe,kBAAkB,UAAU,YAAY,sBAAsB;EAE1F,UAAA;CACI,CAAA;CAET,MAAM,OAAO,oBAAC,OAAD;EAAK,WAAW,GAAG,SAAS,kBAAkB;EAAI,UAAA;CAAY,CAAA;CAE3E,OACE,qBAAC,OAAD;EACO;EACL,WAAW,GAAG,WAAW,QAAQ,WAAW,MAAM,CAAC,YAAY,SAAS;EACxE,GAAI;EAHN,UAAA,CAKG,cAAc,UAAU,QAAQ,MAChC,cAAc,UAAU,OAAO,KAC7B;;AAET;AAkBA,MAAM,UAAU,EAAE,KAAK,WAAW,SAAS,aAAa,UAAU,GAAG,YACnE,qBAAC,UAAD;CACO;CACL,WAAW,GACT,oCAEA,WAAW,gCACX,SACF;CACA,GAAI;CARN,UAAA,CAUG,YACC,qBAAC,QAAD;EAAM,WAAU;EAAhB,UAAA,CAIE,oBAAC,WAAD;GAAW,SAAQ;GAAO,WAAU;EAA0B,CAAA,GAC9D,oBAAC,QAAD;GAAM,WAAU;GAA+B,UAAA;EAAkB,CAAA,CAC7D;CAEP,CAAA,GAAA,WAAW,oBAAC,OAAD;EAAK,WAAU;EAAoC,UAAA;CAAa,CAAA,CACtE;;AAGV,MAAM,WAAW,EAAE,KAAK,WAAW,UAAU,GAAG,YAC9C,oBAAC,QAAD;CACO;CACL,WAAW,GAAG,+DAA+D,SAAS;CACtF,GAAI;CAEH;AACG,CAAA;AAGR,MAAM,UAAU,EAAE,KAAK,WAAW,UAAU,GAAG,YAC7C,oBAAC,UAAD;CACO;CACL,WAAW,GAAG,4DAA4D,SAAS;CACnF,GAAI;CAEH;AACK,CAAA;;;;;;;;;;;;;;;;;;;;;AAuBV,MAAa,aAAa,OAAO,OAAO,MAAM;;CAE5C;;CAEA;;CAEA;AACF,CAAC"}
@@ -1,2 +1,2 @@
1
- import { BrandEditor, DEFAULT_FALLBACK_FONT, DEFAULT_FONT_OPTIONS, channelsToHex, contrastRatio, hexToChannels, wcagLevel } from "../../BrandEditor-Go7w8Zj2.js";
1
+ import { BrandEditor, DEFAULT_FALLBACK_FONT, DEFAULT_FONT_OPTIONS, channelsToHex, contrastRatio, hexToChannels, wcagLevel } from "../../BrandEditor-CSANsxUz.js";
2
2
  export { BrandEditor, DEFAULT_FALLBACK_FONT, DEFAULT_FONT_OPTIONS, channelsToHex, contrastRatio, hexToChannels, wcagLevel };
@@ -1,2 +1,2 @@
1
- import { ClipboardButton, ClipboardInline } from "../../ClipboardButton-D9pDjgkB.js";
1
+ import { ClipboardButton, ClipboardInline } from "../../ClipboardButton-CwZJdRaz.js";
2
2
  export { ClipboardButton, ClipboardInline };
@@ -1,2 +1,2 @@
1
- import { ColorInput } from "../../ColorInput-Bxj-1eLT.js";
1
+ import { ColorInput } from "../../ColorInput-BZV-u_94.js";
2
2
  export { ColorInput };
@@ -1,2 +1,2 @@
1
- import { Command, CommandGroup, CommandInput, CommandItem, CommandList, defaultFilter, useCommandState } from "../../Command-B7ML9YMv.js";
1
+ import { Command, CommandGroup, CommandInput, CommandItem, CommandList, defaultFilter, useCommandState } from "../../Command-Bfa1kpbt.js";
2
2
  export { Command, CommandGroup, CommandInput, CommandItem, CommandList, defaultFilter, useCommandState };
@@ -1,2 +1,2 @@
1
- import { CopyField } from "../../CopyField-BO_sh-HO.js";
1
+ import { CopyField } from "../../CopyField-DpT0Ngz1.js";
2
2
  export { CopyField };
@@ -1,2 +1,2 @@
1
- import { DateInput } from "../../DateInput-ZdaMQo5i.js";
1
+ import { DateInput } from "../../DateInput-DiEd5uCL.js";
2
2
  export { DateInput };
@@ -1,2 +1,2 @@
1
- import { DateRangeInput } from "../../DateRangeInput-DkvNh_sT.js";
1
+ import { DateRangeInput } from "../../DateRangeInput-DPfVYchl.js";
2
2
  export { DateRangeInput };
@@ -1,4 +1,4 @@
1
- import { Tooltip } from "../../utils-B5Z52hYs.js";
1
+ import { Tooltip } from "../../utils-DSvrhU8E.js";
2
2
  import { Download } from "../../icons-Cek151jC.js";
3
3
  import { Button } from "../../Button-DsRrU5F1.js";
4
4
  import { DropdownMenu } from "../../DropdownMenu-CASr-jgl.js";
@@ -1,5 +1,5 @@
1
1
  import { MultiCombobox } from "../../MultiCombobox.js";
2
- import { FieldItem, useFieldContext } from "../../../../FieldItem-CCd9-xnp.js";
2
+ import { FieldItem, useFieldContext } from "../../../../FieldItem-B7XMmZSz.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  //#region src/blocks/Form/connectors/MultiComboboxField.tsx
5
5
  /**
@@ -1,2 +1,2 @@
1
- import { setServerFieldErrors, setSubmitError, useAppForm, withForm } from "../../Form-k6PH-em3.js";
1
+ import { setServerFieldErrors, setSubmitError, useAppForm, withForm } from "../../Form-CsttTHn4.js";
2
2
  export { setServerFieldErrors, setSubmitError, useAppForm, withForm };
@@ -1,2 +1,2 @@
1
- import { FormGroup } from "../../FormGroup-DbcDtrgU.js";
1
+ import { FormGroup } from "../../FormGroup-DHvTFdno.js";
2
2
  export { FormGroup };
@@ -1,2 +1,2 @@
1
- import { MultiActionButtonGroup } from "../../MultiActionButtonGroup-CxWH7yWK.js";
1
+ import { MultiActionButtonGroup } from "../../MultiActionButtonGroup-DokHbPgM.js";
2
2
  export { MultiActionButtonGroup };