@1money/component-ui 0.0.95-alpha.1 → 0.0.95-alpha.11

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 (131) hide show
  1. package/es/business/Dialog/BaseDialog/BaseDialog.d.ts +0 -1
  2. package/es/business/Dialog/BaseDialog/BaseDialog.js +43 -66
  3. package/es/business/Dialog/BaseDialog/constants.d.ts +7 -8
  4. package/es/business/Dialog/BaseDialog/constants.js +8 -9
  5. package/es/business/Dialog/VerificationDialog/VerificationDialog.js +10 -6
  6. package/es/business/Dialog/VerificationDialog/interface.d.ts +9 -2
  7. package/es/business/Dialog/variants/LoadingDialog.js +3 -3
  8. package/es/business/{PageForm → Form/PageForm}/PageForm.d.ts +1 -1
  9. package/es/business/Form/PageForm/PageForm.js +98 -0
  10. package/es/business/Form/PageForm/index.js +5 -0
  11. package/es/business/{PageForm → Form/PageForm}/interface.d.ts +10 -9
  12. package/es/business/Form/PageForm/interface.js +2 -0
  13. package/es/business/Form/ResultForm/ResultForm.d.ts +2 -0
  14. package/es/business/Form/ResultForm/ResultForm.js +38 -0
  15. package/es/business/Form/ResultForm/index.d.ts +4 -0
  16. package/es/business/Form/ResultForm/index.js +5 -0
  17. package/es/business/Form/ResultForm/interface.d.ts +10 -0
  18. package/es/business/Form/ResultForm/interface.js +2 -0
  19. package/es/business/Form/index.d.ts +3 -0
  20. package/es/business/Form/index.js +15 -0
  21. package/es/business/Form/variants/ExpiredForm.d.ts +3 -0
  22. package/es/business/Form/variants/ExpiredForm.js +21 -0
  23. package/es/business/Form/variants/FailureForm.d.ts +3 -0
  24. package/es/business/Form/variants/FailureForm.js +20 -0
  25. package/es/business/Form/variants/PendingForm.d.ts +3 -0
  26. package/es/business/Form/variants/PendingForm.js +20 -0
  27. package/es/business/Form/variants/SuccessForm.d.ts +3 -0
  28. package/es/business/Form/variants/SuccessForm.js +20 -0
  29. package/es/business/Form/variants/index.d.ts +8 -0
  30. package/es/business/Form/variants/index.js +12 -0
  31. package/es/business/index.d.ts +1 -1
  32. package/es/business/index.js +2 -2
  33. package/es/components/ActionBar/ActionBar.js +49 -19
  34. package/es/components/ActionBar/constants.d.ts +8 -0
  35. package/es/components/ActionBar/constants.js +8 -1
  36. package/es/components/ActionBar/interface.d.ts +42 -8
  37. package/es/components/ActionBar/style/ActionBar.css +3 -0
  38. package/es/components/Dialog/interface.d.ts +10 -4
  39. package/es/components/FormLayout/config.d.ts +23 -19
  40. package/es/components/FormLayout/config.js +19 -15
  41. package/es/components/FormLayout/interface.d.ts +7 -2
  42. package/es/components/PanelLayout/PanelLayout.d.ts +3 -0
  43. package/es/components/PanelLayout/PanelLayout.js +163 -0
  44. package/es/components/PanelLayout/constants.d.ts +60 -0
  45. package/es/components/PanelLayout/constants.js +48 -0
  46. package/es/components/PanelLayout/index.d.ts +6 -0
  47. package/es/components/PanelLayout/index.js +6 -0
  48. package/es/components/PanelLayout/interface.d.ts +73 -0
  49. package/es/components/PanelLayout/interface.js +2 -0
  50. package/es/components/PanelLayout/style/PanelLayout.css +56 -0
  51. package/es/components/PanelLayout/style/css.js +2 -0
  52. package/es/components/PanelLayout/style/index.d.ts +1 -0
  53. package/es/components/PanelLayout/style/index.js +2 -0
  54. package/es/index.css +1 -1
  55. package/es/index.d.ts +2 -0
  56. package/es/index.js +2 -1
  57. package/lib/business/Dialog/BaseDialog/BaseDialog.d.ts +0 -1
  58. package/lib/business/Dialog/BaseDialog/BaseDialog.js +42 -65
  59. package/lib/business/Dialog/BaseDialog/constants.d.ts +7 -8
  60. package/lib/business/Dialog/BaseDialog/constants.js +9 -10
  61. package/lib/business/Dialog/VerificationDialog/VerificationDialog.js +10 -6
  62. package/lib/business/Dialog/VerificationDialog/interface.d.ts +9 -2
  63. package/lib/business/Dialog/variants/LoadingDialog.js +3 -3
  64. package/lib/business/{PageForm → Form/PageForm}/PageForm.d.ts +1 -1
  65. package/lib/business/Form/PageForm/PageForm.js +104 -0
  66. package/lib/business/Form/PageForm/index.js +30 -0
  67. package/lib/business/{PageForm → Form/PageForm}/interface.d.ts +10 -9
  68. package/lib/business/Form/PageForm/interface.js +6 -0
  69. package/lib/business/Form/ResultForm/ResultForm.d.ts +2 -0
  70. package/lib/business/Form/ResultForm/ResultForm.js +44 -0
  71. package/lib/business/Form/ResultForm/index.d.ts +4 -0
  72. package/lib/business/Form/ResultForm/index.js +30 -0
  73. package/lib/business/Form/ResultForm/interface.d.ts +10 -0
  74. package/lib/business/Form/ResultForm/interface.js +6 -0
  75. package/lib/business/Form/index.d.ts +3 -0
  76. package/lib/business/Form/index.js +39 -0
  77. package/lib/business/Form/variants/ExpiredForm.d.ts +3 -0
  78. package/lib/business/Form/variants/ExpiredForm.js +27 -0
  79. package/lib/business/Form/variants/FailureForm.d.ts +3 -0
  80. package/lib/business/Form/variants/FailureForm.js +26 -0
  81. package/lib/business/Form/variants/PendingForm.d.ts +3 -0
  82. package/lib/business/Form/variants/PendingForm.js +26 -0
  83. package/lib/business/Form/variants/SuccessForm.d.ts +3 -0
  84. package/lib/business/Form/variants/SuccessForm.js +26 -0
  85. package/lib/business/Form/variants/index.d.ts +8 -0
  86. package/lib/business/Form/variants/index.js +34 -0
  87. package/lib/business/index.d.ts +1 -1
  88. package/lib/business/index.js +5 -5
  89. package/lib/components/ActionBar/ActionBar.js +48 -18
  90. package/lib/components/ActionBar/constants.d.ts +8 -0
  91. package/lib/components/ActionBar/constants.js +9 -2
  92. package/lib/components/ActionBar/interface.d.ts +42 -8
  93. package/lib/components/ActionBar/style/ActionBar.css +3 -0
  94. package/lib/components/Dialog/interface.d.ts +10 -4
  95. package/lib/components/FormLayout/config.d.ts +23 -19
  96. package/lib/components/FormLayout/config.js +19 -15
  97. package/lib/components/FormLayout/interface.d.ts +7 -2
  98. package/lib/components/PanelLayout/PanelLayout.d.ts +3 -0
  99. package/lib/components/PanelLayout/PanelLayout.js +172 -0
  100. package/lib/components/PanelLayout/constants.d.ts +60 -0
  101. package/lib/components/PanelLayout/constants.js +54 -0
  102. package/lib/components/PanelLayout/index.d.ts +6 -0
  103. package/lib/components/PanelLayout/index.js +52 -0
  104. package/lib/components/PanelLayout/interface.d.ts +73 -0
  105. package/lib/components/PanelLayout/interface.js +6 -0
  106. package/lib/components/PanelLayout/style/PanelLayout.css +56 -0
  107. package/lib/components/PanelLayout/style/css.js +4 -0
  108. package/lib/components/PanelLayout/style/index.d.ts +1 -0
  109. package/lib/components/PanelLayout/style/index.js +4 -0
  110. package/lib/index.css +1 -1
  111. package/lib/index.d.ts +2 -0
  112. package/lib/index.js +14 -1
  113. package/package.json +29 -4
  114. package/scripts/mcp-server/examples.generated.json +48 -6
  115. package/scripts/mcp-server/index.generated.json +240 -7
  116. package/es/business/Dialog/BaseDialog/style/BaseDialog.css +0 -72
  117. package/es/business/Dialog/BaseDialog/style/css.js +0 -2
  118. package/es/business/Dialog/BaseDialog/style/index.d.ts +0 -1
  119. package/es/business/Dialog/BaseDialog/style/index.js +0 -2
  120. package/es/business/PageForm/PageForm.js +0 -97
  121. package/es/business/PageForm/index.js +0 -5
  122. package/es/business/PageForm/interface.js +0 -2
  123. package/lib/business/Dialog/BaseDialog/style/BaseDialog.css +0 -72
  124. package/lib/business/Dialog/BaseDialog/style/css.js +0 -4
  125. package/lib/business/Dialog/BaseDialog/style/index.d.ts +0 -1
  126. package/lib/business/Dialog/BaseDialog/style/index.js +0 -4
  127. package/lib/business/PageForm/PageForm.js +0 -103
  128. package/lib/business/PageForm/index.js +0 -30
  129. package/lib/business/PageForm/interface.js +0 -6
  130. /package/es/business/{PageForm → Form/PageForm}/index.d.ts +0 -0
  131. /package/lib/business/{PageForm → Form/PageForm}/index.d.ts +0 -0
@@ -17,7 +17,7 @@ export interface FormLayoutProps extends Omit<HTMLAttributes<HTMLDivElement>, 't
17
17
  /**
18
18
  * Panel size within the variant. `large` (default) is the variant baseline;
19
19
  * `small` layers a deviation. Only `page/small` deviates today — the compact
20
- * auth-card surface (448 wide, 24 padding, 16 gaps); other variant/size
20
+ * auth-card surface (380 wide, 24 padding, 16 gaps); other variant/size
21
21
  * combos fall back to the baseline.
22
22
  */
23
23
  size?: FormLayoutSize;
@@ -27,7 +27,12 @@ export interface FormLayoutProps extends Omit<HTMLAttributes<HTMLDivElement>, 't
27
27
  * footer stay pinned); when `false` content always grows the panel.
28
28
  */
29
29
  scroll?: boolean;
30
- /** Heading; a plain string renders as Headline/md (24px). */
30
+ /**
31
+ * Heading; a plain string renders as `Headline/sm` (24 / 28) regardless of
32
+ * variant or size. Pass a node to compose your own header block (e.g. a
33
+ * title with a description under it) — the automatic wrapping is skipped,
34
+ * so supply the `Headline/sm` typography yourself.
35
+ */
31
36
  title?: ReactNode;
32
37
  /** Trailing slot on the title row (e.g. an environment switcher). */
33
38
  extra?: ReactNode;
@@ -0,0 +1,3 @@
1
+ import type { PanelLayoutProps } from './interface';
2
+ import './style';
3
+ export declare const PanelLayout: import("react").NamedExoticComponent<PanelLayoutProps>;
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.PanelLayout = void 0;
8
+ var _jsxRuntime = require("react/jsx-runtime");
9
+ var _react = require("react");
10
+ var _ActionBar = require("../ActionBar");
11
+ var _FormLayout = require("../FormLayout");
12
+ var _Icons = require("../Icons");
13
+ var _Typography = require("../Typography");
14
+ var _classnames = _interopRequireWildcard(require("../../utils/classnames"));
15
+ var _constants = require("./constants");
16
+ require("./style");
17
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
18
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
19
+ /**
20
+ * The non-form content PANEL — the counterpart to `FormLayout`: that one
21
+ * holds fields, this one holds an illustration, copy and actions. ONE surface
22
+ * serving two hosts:
23
+ *
24
+ * page host <PanelLayout /> used directly
25
+ * dialog host BaseDialog = Dialog(bare) + this(modal) only adds the overlay
26
+ *
27
+ * Deliberately NOT named for a scenario, because it carries several: a
28
+ * verification challenge, a stepped wizard (2FA setup — hence the back
29
+ * arrow), a terminal page with no action at all.
30
+ *
31
+ * On a page, ONE of those scenarios has a shell of its own and the rest do
32
+ * not — which decides where business code should reach:
33
+ *
34
+ * a result (success / failure / expired / …) → `ResultForm`, business/Form
35
+ * anything else → this, directly
36
+ *
37
+ * So being used directly is the normal case here, not a fallback. Only add
38
+ * another shell on top when a scenario earns a name AND recurring copy (a
39
+ * `preset`); a shell that just re-exports this one buys nothing.
40
+ *
41
+ * Assembly:
42
+ *
43
+ * FormLayout card chrome (surface, hairline, radius) + the 24
44
+ * │ padding and 16 region gap. Its `page/small` width
45
+ * │ (448, the sign-in card) is NOT used — the panel width
46
+ * │ comes from the config table.
47
+ * ├─ header slot back / illustration / eyebrow / title / description as
48
+ * │ ONE block on 8px seams. It goes in the title slot, not
49
+ * │ the content region, because it is all header copy —
50
+ * │ that also keeps it pinned when the content scrolls.
51
+ * ├─ content region `children` — free-form (a QR code, an OTP input, rows)
52
+ * └─ ActionBar(fill) the actions.
53
+ *
54
+ * It owns no copy and no loose numbers: everything host-specific comes from
55
+ * `PANEL_LAYOUT_CONFIG`, so a divergence between page and dialog is a value
56
+ * change in that table and nothing else.
57
+ */
58
+ var PanelLayoutBase = function PanelLayoutBase(_ref) {
59
+ var _ref$variant = _ref.variant,
60
+ variant = _ref$variant === void 0 ? 'page' : _ref$variant,
61
+ scroll = _ref.scroll,
62
+ width = _ref.width,
63
+ className = _ref.className,
64
+ showBackIcon = _ref.showBackIcon,
65
+ onBack = _ref.onBack,
66
+ backIcon = _ref.backIcon,
67
+ eyebrow = _ref.eyebrow,
68
+ title = _ref.title,
69
+ description = _ref.description,
70
+ _ref$descriptionStron = _ref.descriptionStrong,
71
+ descriptionStrong = _ref$descriptionStron === void 0 ? true : _ref$descriptionStron,
72
+ illustration = _ref.illustration,
73
+ primary = _ref.primary,
74
+ secondary = _ref.secondary,
75
+ direction = _ref.direction,
76
+ footnote = _ref.footnote,
77
+ children = _ref.children;
78
+ var classes = (0, _classnames["default"])(_constants.PANEL_LAYOUT_PREFIX);
79
+ var config = (0, _constants.resolvePanelLayoutConfig)(variant);
80
+ // A plain string becomes the family heading; a node passes through so
81
+ // callers can compose (e.g. a Tag above a two-line title).
82
+ var titleNode = typeof title === 'string' || typeof title === 'number' ? (0, _jsxRuntime.jsx)(_Typography.Typography.Headline, {
83
+ size: 'sm',
84
+ as: 'h2',
85
+ color: 'default',
86
+ children: title
87
+ }) : title;
88
+ // Same contract as `title`: a plain string gets the family treatment (the
89
+ // muted label of "Step 2 of 3"), a node passes through so a Tag or a
90
+ // composed row still works. Without this every caller with a text eyebrow
91
+ // would hand-roll the same Typography.
92
+ //
93
+ // An EMPTY string counts as absent. Callers routinely hold the eyebrow in a
94
+ // state object that starts as `''`, and rendering an empty label would open
95
+ // an 8px seam above the title for nothing — so they can pass the value
96
+ // straight through instead of guarding it at every call site.
97
+ var eyebrowNode = eyebrow == null || eyebrow === '' ? null : typeof eyebrow === 'string' || typeof eyebrow === 'number' ? (0, _jsxRuntime.jsx)(_Typography.Typography.Body, {
98
+ size: 'sm',
99
+ color: 'default-tertiary',
100
+ children: eyebrow
101
+ }) : eyebrow;
102
+ var illustrationNode = typeof illustration === 'string' ? (0, _jsxRuntime.jsx)(_Icons.Icons, {
103
+ name: illustration,
104
+ size: config.illustrationSize
105
+ }) : illustration;
106
+ // Its own row above everything else, on the block's 8px seam — the shape
107
+ // stepped flows use in both hosts (2FA setup on a page, wizard dialogs).
108
+ var backNode = showBackIcon ? (0, _jsxRuntime.jsx)("button", {
109
+ type: 'button',
110
+ className: classes('back'),
111
+ "aria-label": _constants.PANEL_LAYOUT_BACK_LABEL,
112
+ onClick: onBack,
113
+ children: backIcon !== null && backIcon !== void 0 ? backIcon : (0, _jsxRuntime.jsx)(_Icons.Icons, {
114
+ name: 'arrowLeft',
115
+ size: _constants.PANEL_LAYOUT_BACK_ICON_SIZE
116
+ })
117
+ }) : null;
118
+ var hasHeader = showBackIcon || illustration != null || eyebrowNode != null || title != null || description != null;
119
+ var header = hasHeader ? (0, _jsxRuntime.jsxs)("div", {
120
+ className: classes('header'),
121
+ children: [backNode, illustrationNode != null && (0, _jsxRuntime.jsx)("div", {
122
+ className: classes('illustration'),
123
+ children: illustrationNode
124
+ }), eyebrowNode, titleNode, description != null && (0, _jsxRuntime.jsx)(_Typography.Typography.Body, {
125
+ as: 'p',
126
+ size: 'md',
127
+ strong: descriptionStrong,
128
+ color: 'default-secondary',
129
+ className: classes('description'),
130
+ children: description
131
+ })]
132
+ }) : undefined;
133
+ // The bar owns the button size, so the family size is applied per action
134
+ // rather than as a bar-level prop; an explicit per-action `size` still wins.
135
+ var withSize = function withSize(action) {
136
+ var _a;
137
+ return action && Object.assign(Object.assign({}, action), {
138
+ size: (_a = action.size) !== null && _a !== void 0 ? _a : config.buttonSize
139
+ });
140
+ };
141
+ var footer = primary || secondary || footnote ? (0, _jsxRuntime.jsx)(_ActionBar.ActionBar, {
142
+ direction: direction,
143
+ primary: withSize(primary),
144
+ secondary: withSize(secondary),
145
+ footnote: footnote
146
+ }) : undefined;
147
+ return (0, _jsxRuntime.jsx)(_FormLayout.FormLayout
148
+ // `page/small` is used for its 24 padding and 16 region gap, which are
149
+ // already the result family's numbers. Its 448 width is NOT — that is
150
+ // the sign-in card; the result panel is 380, from the config table.
151
+ , {
152
+ // `page/small` is used for its 24 padding and 16 region gap, which are
153
+ // already the result family's numbers. Its 448 width is NOT — that is
154
+ // the sign-in card; the result panel is 380, from the config table.
155
+ variant: 'page',
156
+ size: 'small',
157
+ scroll: scroll,
158
+ // In a dialog the Dialog panel carries the width (BaseDialog reads the
159
+ // same entry) and the layout fills it: sizing a bare panel from its
160
+ // child hits the shrink-to-fit percentage circularity.
161
+ width: width !== null && width !== void 0 ? width : variant === 'modal' ? '100%' : config.width,
162
+ className: (0, _classnames.joinCls)(classes(), classes(variant), className),
163
+ style: {
164
+ '--form-layout-action-gap': "".concat(config.actionGap, "px")
165
+ },
166
+ title: header,
167
+ footer: footer,
168
+ children: children
169
+ });
170
+ };
171
+ var PanelLayout = exports.PanelLayout = /*#__PURE__*/(0, _react.memo)(PanelLayoutBase);
172
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUGFuZWxMYXlvdXQvUGFuZWxMYXlvdXQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL1BhbmVsTGF5b3V0L1BhbmVsTGF5b3V0LnRzeCJdLCJuYW1lcyI6WyJfanN4UnVudGltZSIsInJlcXVpcmUiLCJfcmVhY3QiLCJfQWN0aW9uQmFyIiwiX0Zvcm1MYXlvdXQiLCJfSWNvbnMiLCJfVHlwb2dyYXBoeSIsIl9jbGFzc25hbWVzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfY29uc3RhbnRzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiUGFuZWxMYXlvdXRCYXNlIiwiX3JlZiIsIl9yZWYkdmFyaWFudCIsInZhcmlhbnQiLCJzY3JvbGwiLCJ3aWR0aCIsImNsYXNzTmFtZSIsInNob3dCYWNrSWNvbiIsIm9uQmFjayIsImJhY2tJY29uIiwiZXllYnJvdyIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJfcmVmJGRlc2NyaXB0aW9uU3Ryb24iLCJkZXNjcmlwdGlvblN0cm9uZyIsImlsbHVzdHJhdGlvbiIsInByaW1hcnkiLCJzZWNvbmRhcnkiLCJkaXJlY3Rpb24iLCJmb290bm90ZSIsImNoaWxkcmVuIiwiY2xhc3NlcyIsImNsYXNzbmFtZXMiLCJQQU5FTF9MQVlPVVRfUFJFRklYIiwiY29uZmlnIiwicmVzb2x2ZVBhbmVsTGF5b3V0Q29uZmlnIiwidGl0bGVOb2RlIiwiX2pzeCIsIlR5cG9ncmFwaHkiLCJIZWFkbGluZSIsInNpemUiLCJhcyIsImNvbG9yIiwiZXllYnJvd05vZGUiLCJCb2R5IiwiaWxsdXN0cmF0aW9uTm9kZSIsIkljb25zIiwibmFtZSIsImlsbHVzdHJhdGlvblNpemUiLCJiYWNrTm9kZSIsInR5cGUiLCJQQU5FTF9MQVlPVVRfQkFDS19MQUJFTCIsIm9uQ2xpY2siLCJQQU5FTF9MQVlPVVRfQkFDS19JQ09OX1NJWkUiLCJoYXNIZWFkZXIiLCJoZWFkZXIiLCJfanN4cyIsInN0cm9uZyIsInVuZGVmaW5lZCIsIndpdGhTaXplIiwiYWN0aW9uIiwiX2EiLCJhc3NpZ24iLCJidXR0b25TaXplIiwiZm9vdGVyIiwiQWN0aW9uQmFyIiwiRm9ybUxheW91dCIsImpvaW5DbHMiLCJzdHlsZSIsImNvbmNhdCIsImFjdGlvbkdhcCIsIlBhbmVsTGF5b3V0IiwiZXhwb3J0cyIsIm1lbW8iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxXQUFBLEdBQUFDLE9BQUE7QUNBQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxVQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxXQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxNQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxXQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxXQUFBLEdBQUFDLHVCQUFBLENBQUFQLE9BQUE7QUFDQSxJQUFBUSxVQUFBLEdBQUFSLE9BQUE7QUFVQUEsT0FBQTtBQUFpQixTQUFBUyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQUgsd0JBQUFHLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssT0FBQSxDQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxDQUFBLFFBQUFHLENBQUEsR0FB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bExheW91dC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQWN0aW9uQmFyIH0gZnJvbSAnLi4vQWN0aW9uQmFyJztcbmltcG9ydCB7IEZvcm1MYXlvdXQgfSBmcm9tICcuLi9Gb3JtTGF5b3V0JztcbmltcG9ydCB7IEljb25zIH0gZnJvbSAnLi4vSWNvbnMnO1xuaW1wb3J0IHsgVHlwb2dyYXBoeSB9IGZyb20gJy4uL1R5cG9ncmFwaHknO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBjbGFzc25hbWVzLCBqb2luQ2xzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBQQU5FTF9MQVlPVVRfQkFDS19JQ09OX1NJWkUsIFBBTkVMX0xBWU9VVF9CQUNLX0xBQkVMLCBQQU5FTF9MQVlPVVRfUFJFRklYLCByZXNvbHZlUGFuZWxMYXlvdXRDb25maWcsIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0ICcuL3N0eWxlJztcbi8qKlxuICogVGhlIG5vbi1mb3JtIGNvbnRlbnQgUEFORUwg4oCUIHRoZSBjb3VudGVycGFydCB0byBgRm9ybUxheW91dGA6IHRoYXQgb25lXG4gKiBob2xkcyBmaWVsZHMsIHRoaXMgb25lIGhvbGRzIGFuIGlsbHVzdHJhdGlvbiwgY29weSBhbmQgYWN0aW9ucy4gT05FIHN1cmZhY2VcbiAqIHNlcnZpbmcgdHdvIGhvc3RzOlxuICpcbiAqICAgcGFnZSBob3N0ICAgIDxQYW5lbExheW91dCAvPiAgICAgICAgICAgICAgICAgICAgICAgICB1c2VkIGRpcmVjdGx5XG4gKiAgIGRpYWxvZyBob3N0ICBCYXNlRGlhbG9nID0gRGlhbG9nKGJhcmUpICsgdGhpcyhtb2RhbCkgb25seSBhZGRzIHRoZSBvdmVybGF5XG4gKlxuICogRGVsaWJlcmF0ZWx5IE5PVCBuYW1lZCBmb3IgYSBzY2VuYXJpbywgYmVjYXVzZSBpdCBjYXJyaWVzIHNldmVyYWw6IGFcbiAqIHZlcmlmaWNhdGlvbiBjaGFsbGVuZ2UsIGEgc3RlcHBlZCB3aXphcmQgKDJGQSBzZXR1cCDigJQgaGVuY2UgdGhlIGJhY2tcbiAqIGFycm93KSwgYSB0ZXJtaW5hbCBwYWdlIHdpdGggbm8gYWN0aW9uIGF0IGFsbC5cbiAqXG4gKiBPbiBhIHBhZ2UsIE9ORSBvZiB0aG9zZSBzY2VuYXJpb3MgaGFzIGEgc2hlbGwgb2YgaXRzIG93biBhbmQgdGhlIHJlc3QgZG9cbiAqIG5vdCDigJQgd2hpY2ggZGVjaWRlcyB3aGVyZSBidXNpbmVzcyBjb2RlIHNob3VsZCByZWFjaDpcbiAqXG4gKiAgIGEgcmVzdWx0IChzdWNjZXNzIC8gZmFpbHVyZSAvIGV4cGlyZWQgLyDigKYpICDihpIgYFJlc3VsdEZvcm1gLCBidXNpbmVzcy9Gb3JtXG4gKiAgIGFueXRoaW5nIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaSIHRoaXMsIGRpcmVjdGx5XG4gKlxuICogU28gYmVpbmcgdXNlZCBkaXJlY3RseSBpcyB0aGUgbm9ybWFsIGNhc2UgaGVyZSwgbm90IGEgZmFsbGJhY2suIE9ubHkgYWRkXG4gKiBhbm90aGVyIHNoZWxsIG9uIHRvcCB3aGVuIGEgc2NlbmFyaW8gZWFybnMgYSBuYW1lIEFORCByZWN1cnJpbmcgY29weSAoYVxuICogYHByZXNldGApOyBhIHNoZWxsIHRoYXQganVzdCByZS1leHBvcnRzIHRoaXMgb25lIGJ1eXMgbm90aGluZy5cbiAqXG4gKiBBc3NlbWJseTpcbiAqXG4gKiAgIEZvcm1MYXlvdXQgICAgICAgICAgY2FyZCBjaHJvbWUgKHN1cmZhY2UsIGhhaXJsaW5lLCByYWRpdXMpICsgdGhlIDI0XG4gKiAgIOKUgiAgICAgICAgICAgICAgICAgICBwYWRkaW5nIGFuZCAxNiByZWdpb24gZ2FwLiBJdHMgYHBhZ2Uvc21hbGxgIHdpZHRoXG4gKiAgIOKUgiAgICAgICAgICAgICAgICAgICAoNDQ4LCB0aGUgc2lnbi1pbiBjYXJkKSBpcyBOT1QgdXNlZCDigJQgdGhlIHBhbmVsIHdpZHRoXG4gKiAgIOKUgiAgICAgICAgICAgICAgICAgICBjb21lcyBmcm9tIHRoZSBjb25maWcgdGFibGUuXG4gKiAgIOKUnOKUgCBoZWFkZXIgc2xvdCAgICAgIGJhY2sgLyBpbGx1c3RyYXRpb24gLyBleWVicm93IC8gdGl0bGUgLyBkZXNjcmlwdGlvbiBhc1xuICogICDilIIgICAgICAgICAgICAgICAgICAgT05FIGJsb2NrIG9uIDhweCBzZWFtcy4gSXQgZ29lcyBpbiB0aGUgdGl0bGUgc2xvdCwgbm90XG4gKiAgIOKUgiAgICAgICAgICAgICAgICAgICB0aGUgY29udGVudCByZWdpb24sIGJlY2F1c2UgaXQgaXMgYWxsIGhlYWRlciBjb3B5IOKAlFxuICogICDilIIgICAgICAgICAgICAgICAgICAgdGhhdCBhbHNvIGtlZXBzIGl0IHBpbm5lZCB3aGVuIHRoZSBjb250ZW50IHNjcm9sbHMuXG4gKiAgIOKUnOKUgCBjb250ZW50IHJlZ2lvbiAgIGBjaGlsZHJlbmAg4oCUIGZyZWUtZm9ybSAoYSBRUiBjb2RlLCBhbiBPVFAgaW5wdXQsIHJvd3MpXG4gKiAgIOKUlOKUgCBBY3Rpb25CYXIoZmlsbCkgIHRoZSBhY3Rpb25zLlxuICpcbiAqIEl0IG93bnMgbm8gY29weSBhbmQgbm8gbG9vc2UgbnVtYmVyczogZXZlcnl0aGluZyBob3N0LXNwZWNpZmljIGNvbWVzIGZyb21cbiAqIGBQQU5FTF9MQVlPVVRfQ09ORklHYCwgc28gYSBkaXZlcmdlbmNlIGJldHdlZW4gcGFnZSBhbmQgZGlhbG9nIGlzIGEgdmFsdWVcbiAqIGNoYW5nZSBpbiB0aGF0IHRhYmxlIGFuZCBub3RoaW5nIGVsc2UuXG4gKi9cbmNvbnN0IFBhbmVsTGF5b3V0QmFzZSA9ICh7IHZhcmlhbnQgPSAncGFnZScsIHNjcm9sbCwgd2lkdGgsIGNsYXNzTmFtZSwgc2hvd0JhY2tJY29uLCBvbkJhY2ssIGJhY2tJY29uLCBleWVicm93LCB0aXRsZSwgZGVzY3JpcHRpb24sIGRlc2NyaXB0aW9uU3Ryb25nID0gdHJ1ZSwgaWxsdXN0cmF0aW9uLCBwcmltYXJ5LCBzZWNvbmRhcnksIGRpcmVjdGlvbiwgZm9vdG5vdGUsIGNoaWxkcmVuLCB9KSA9PiB7XG4gICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMoUEFORUxfTEFZT1VUX1BSRUZJWCk7XG4gICAgY29uc3QgY29uZmlnID0gcmVzb2x2ZVBhbmVsTGF5b3V0Q29uZmlnKHZhcmlhbnQpO1xuICAgIC8vIEEgcGxhaW4gc3RyaW5nIGJlY29tZXMgdGhlIGZhbWlseSBoZWFkaW5nOyBhIG5vZGUgcGFzc2VzIHRocm91Z2ggc29cbiAgICAvLyBjYWxsZXJzIGNhbiBjb21wb3NlIChlLmcuIGEgVGFnIGFib3ZlIGEgdHdvLWxpbmUgdGl0bGUpLlxuICAgIGNvbnN0IHRpdGxlTm9kZSA9IHR5cGVvZiB0aXRsZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHRpdGxlID09PSAnbnVtYmVyJyA/IChfanN4KFR5cG9ncmFwaHkuSGVhZGxpbmUsIHsgc2l6ZTogJ3NtJywgYXM6ICdoMicsIGNvbG9yOiAnZGVmYXVsdCcsIGNoaWxkcmVuOiB0aXRsZSB9KSkgOiAodGl0bGUpO1xuICAgIC8vIFNhbWUgY29udHJhY3QgYXMgYHRpdGxlYDogYSBwbGFpbiBzdHJpbmcgZ2V0cyB0aGUgZmFtaWx5IHRyZWF0bWVudCAodGhlXG4gICAgLy8gbXV0ZWQgbGFiZWwgb2YgXCJTdGVwIDIgb2YgM1wiKSwgYSBub2RlIHBhc3NlcyB0aHJvdWdoIHNvIGEgVGFnIG9yIGFcbiAgICAvLyBjb21wb3NlZCByb3cgc3RpbGwgd29ya3MuIFdpdGhvdXQgdGhpcyBldmVyeSBjYWxsZXIgd2l0aCBhIHRleHQgZXllYnJvd1xuICAgIC8vIHdvdWxkIGhhbmQtcm9sbCB0aGUgc2FtZSBUeXBvZ3JhcGh5LlxuICAgIC8vXG4gICAgLy8gQW4gRU1QVFkgc3RyaW5nIGNvdW50cyBhcyBhYnNlbnQuIENhbGxlcnMgcm91dGluZWx5IGhvbGQgdGhlIGV5ZWJyb3cgaW4gYVxuICAgIC8vIHN0YXRlIG9iamVjdCB0aGF0IHN0YXJ0cyBhcyBgJydgLCBhbmQgcmVuZGVyaW5nIGFuIGVtcHR5IGxhYmVsIHdvdWxkIG9wZW5cbiAgICAvLyBhbiA4cHggc2VhbSBhYm92ZSB0aGUgdGl0bGUgZm9yIG5vdGhpbmcg4oCUIHNvIHRoZXkgY2FuIHBhc3MgdGhlIHZhbHVlXG4gICAgLy8gc3RyYWlnaHQgdGhyb3VnaCBpbnN0ZWFkIG9mIGd1YXJkaW5nIGl0IGF0IGV2ZXJ5IGNhbGwgc2l0ZS5cbiAgICBjb25zdCBleWVicm93Tm9kZSA9IGV5ZWJyb3cgPT0gbnVsbCB8fCBleWVicm93ID09PSAnJyA/IG51bGxcbiAgICAgICAgOiB0eXBlb2YgZXllYnJvdyA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGV5ZWJyb3cgPT09ICdudW1iZXInID8gKF9qc3goVHlwb2dyYXBoeS5Cb2R5LCB7IHNpemU6ICdzbScsIGNvbG9yOiAnZGVmYXVsdC10ZXJ0aWFyeScsIGNoaWxkcmVuOiBleWVicm93IH0pKSA6IChleWVicm93KTtcbiAgICBjb25zdCBpbGx1c3RyYXRpb25Ob2RlID0gdHlwZW9mIGlsbHVzdHJhdGlvbiA9PT0gJ3N0cmluZycgPyAoX2pzeChJY29ucywgeyBuYW1lOiBpbGx1c3RyYXRpb24sIHNpemU6IGNvbmZpZy5pbGx1c3RyYXRpb25TaXplIH0pKSA6IChpbGx1c3RyYXRpb24pO1xuICAgIC8vIEl0cyBvd24gcm93IGFib3ZlIGV2ZXJ5dGhpbmcgZWxzZSwgb24gdGhlIGJsb2NrJ3MgOHB4IHNlYW0g4oCUIHRoZSBzaGFwZVxuICAgIC8vIHN0ZXBwZWQgZmxvd3MgdXNlIGluIGJvdGggaG9zdHMgKDJGQSBzZXR1cCBvbiBhIHBhZ2UsIHdpemFyZCBkaWFsb2dzKS5cbiAgICBjb25zdCBiYWNrTm9kZSA9IHNob3dCYWNrSWNvbiA/IChfanN4KFwiYnV0dG9uXCIsIHsgdHlwZTogJ2J1dHRvbicsIGNsYXNzTmFtZTogY2xhc3NlcygnYmFjaycpLCBcImFyaWEtbGFiZWxcIjogUEFORUxfTEFZT1VUX0JBQ0tfTEFCRUwsIG9uQ2xpY2s6IG9uQmFjaywgY2hpbGRyZW46IGJhY2tJY29uICE9PSBudWxsICYmIGJhY2tJY29uICE9PSB2b2lkIDAgPyBiYWNrSWNvbiA6IF9qc3goSWNvbnMsIHsgbmFtZTogJ2Fycm93TGVmdCcsIHNpemU6IFBBTkVMX0xBWU9VVF9CQUNLX0lDT05fU0laRSB9KSB9KSkgOiBudWxsO1xuICAgIGNvbnN0IGhhc0hlYWRlciA9IHNob3dCYWNrSWNvbiB8fFxuICAgICAgICBpbGx1c3RyYXRpb24gIT0gbnVsbCB8fFxuICAgICAgICBleWVicm93Tm9kZSAhPSBudWxsIHx8XG4gICAgICAgIHRpdGxlICE9IG51bGwgfHxcbiAgICAgICAgZGVzY3JpcHRpb24gIT0gbnVsbDtcbiAgICBjb25zdCBoZWFkZXIgPSBoYXNIZWFkZXIgPyAoX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2hlYWRlcicpLCBjaGlsZHJlbjogW2JhY2tOb2RlLCBpbGx1c3RyYXRpb25Ob2RlICE9IG51bGwgJiYgKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2lsbHVzdHJhdGlvbicpLCBjaGlsZHJlbjogaWxsdXN0cmF0aW9uTm9kZSB9KSksIGV5ZWJyb3dOb2RlLCB0aXRsZU5vZGUsIGRlc2NyaXB0aW9uICE9IG51bGwgJiYgKF9qc3goVHlwb2dyYXBoeS5Cb2R5LCB7IGFzOiAncCcsIHNpemU6ICdtZCcsIHN0cm9uZzogZGVzY3JpcHRpb25TdHJvbmcsIGNvbG9yOiAnZGVmYXVsdC1zZWNvbmRhcnknLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2Rlc2NyaXB0aW9uJyksIGNoaWxkcmVuOiBkZXNjcmlwdGlvbiB9KSldIH0pKSA6IHVuZGVmaW5lZDtcbiAgICAvLyBUaGUgYmFyIG93bnMgdGhlIGJ1dHRvbiBzaXplLCBzbyB0aGUgZmFtaWx5IHNpemUgaXMgYXBwbGllZCBwZXIgYWN0aW9uXG4gICAgLy8gcmF0aGVyIHRoYW4gYXMgYSBiYXItbGV2ZWwgcHJvcDsgYW4gZXhwbGljaXQgcGVyLWFjdGlvbiBgc2l6ZWAgc3RpbGwgd2lucy5cbiAgICBjb25zdCB3aXRoU2l6ZSA9IChhY3Rpb24pID0+IHsgdmFyIF9hOyByZXR1cm4gYWN0aW9uICYmIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgYWN0aW9uKSwgeyBzaXplOiAoX2EgPSBhY3Rpb24uc2l6ZSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogY29uZmlnLmJ1dHRvblNpemUgfSk7IH07XG4gICAgY29uc3QgZm9vdGVyID0gcHJpbWFyeSB8fCBzZWNvbmRhcnkgfHwgZm9vdG5vdGUgPyAoX2pzeChBY3Rpb25CYXIsIHsgZGlyZWN0aW9uOiBkaXJlY3Rpb24sIHByaW1hcnk6IHdpdGhTaXplKHByaW1hcnkpLCBzZWNvbmRhcnk6IHdpdGhTaXplKHNlY29uZGFyeSksIGZvb3Rub3RlOiBmb290bm90ZSB9KSkgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIChfanN4KEZvcm1MYXlvdXRcbiAgICAvLyBgcGFnZS9zbWFsbGAgaXMgdXNlZCBmb3IgaXRzIDI0IHBhZGRpbmcgYW5kIDE2IHJlZ2lvbiBnYXAsIHdoaWNoIGFyZVxuICAgIC8vIGFscmVhZHkgdGhlIHJlc3VsdCBmYW1pbHkncyBudW1iZXJzLiBJdHMgNDQ4IHdpZHRoIGlzIE5PVCDigJQgdGhhdCBpc1xuICAgIC8vIHRoZSBzaWduLWluIGNhcmQ7IHRoZSByZXN1bHQgcGFuZWwgaXMgMzgwLCBmcm9tIHRoZSBjb25maWcgdGFibGUuXG4gICAgLCB7IFxuICAgICAgICAvLyBgcGFnZS9zbWFsbGAgaXMgdXNlZCBmb3IgaXRzIDI0IHBhZGRpbmcgYW5kIDE2IHJlZ2lvbiBnYXAsIHdoaWNoIGFyZVxuICAgICAgICAvLyBhbHJlYWR5IHRoZSByZXN1bHQgZmFtaWx5J3MgbnVtYmVycy4gSXRzIDQ0OCB3aWR0aCBpcyBOT1Qg4oCUIHRoYXQgaXNcbiAgICAgICAgLy8gdGhlIHNpZ24taW4gY2FyZDsgdGhlIHJlc3VsdCBwYW5lbCBpcyAzODAsIGZyb20gdGhlIGNvbmZpZyB0YWJsZS5cbiAgICAgICAgdmFyaWFudDogJ3BhZ2UnLCBzaXplOiAnc21hbGwnLCBzY3JvbGw6IHNjcm9sbCwgXG4gICAgICAgIC8vIEluIGEgZGlhbG9nIHRoZSBEaWFsb2cgcGFuZWwgY2FycmllcyB0aGUgd2lkdGggKEJhc2VEaWFsb2cgcmVhZHMgdGhlXG4gICAgICAgIC8vIHNhbWUgZW50cnkpIGFuZCB0aGUgbGF5b3V0IGZpbGxzIGl0OiBzaXppbmcgYSBiYXJlIHBhbmVsIGZyb20gaXRzXG4gICAgICAgIC8vIGNoaWxkIGhpdHMgdGhlIHNocmluay10by1maXQgcGVyY2VudGFnZSBjaXJjdWxhcml0eS5cbiAgICAgICAgd2lkdGg6IHdpZHRoICE9PSBudWxsICYmIHdpZHRoICE9PSB2b2lkIDAgPyB3aWR0aCA6ICh2YXJpYW50ID09PSAnbW9kYWwnID8gJzEwMCUnIDogY29uZmlnLndpZHRoKSwgY2xhc3NOYW1lOiBqb2luQ2xzKGNsYXNzZXMoKSwgY2xhc3Nlcyh2YXJpYW50KSwgY2xhc3NOYW1lKSwgc3R5bGU6IHsgJy0tZm9ybS1sYXlvdXQtYWN0aW9uLWdhcCc6IGAke2NvbmZpZy5hY3Rpb25HYXB9cHhgIH0sIHRpdGxlOiBoZWFkZXIsIGZvb3RlcjogZm9vdGVyLCBjaGlsZHJlbjogY2hpbGRyZW4gfSkpO1xufTtcbmV4cG9ydCBjb25zdCBQYW5lbExheW91dCA9IG1lbW8oUGFuZWxMYXlvdXRCYXNlKTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -0,0 +1,60 @@
1
+ export declare const PANEL_LAYOUT_PREFIX = "panel-layout";
2
+ /** Back-arrow control: 24px icon, and its accessible name. */
3
+ export declare const PANEL_LAYOUT_BACK_ICON_SIZE = 24;
4
+ export declare const PANEL_LAYOUT_BACK_LABEL = "Go back";
5
+ /**
6
+ * THE density table for content panels — the single thing to edit when the
7
+ * design changes. Same shape as `FORM_LAYOUT_CONFIG`: one entry per host, so
8
+ * a divergence between the two is a value change, never a structural one.
9
+ *
10
+ * The two entries are currently IDENTICAL, and that is the design: a panel
11
+ * renders the same on a page and in a dialog, the only difference being
12
+ * whether a `Dialog(bare)` is wrapped around it. They are still spelled out
13
+ * separately so that (a) the sameness reads as deliberate rather than as an
14
+ * oversight, and (b) a divergence later is a value change here and nothing
15
+ * else — no consumer passes these numbers, they only pass `variant`.
16
+ *
17
+ * `width` is the panel width used in BOTH hosts (380). It is NOT inherited
18
+ * from FormLayout's `page/small` density — that entry is 448, the app's
19
+ * sign-in card, a different surface. Only the padding (24) and the region gap
20
+ * (16) come from that density, and those already match. Inside a dialog the
21
+ * value goes on the Dialog panel and the layout fills at 100%: sizing a bare
22
+ * panel from its child hits the shrink-to-fit percentage circularity (the
23
+ * same reason FormDialog gives).
24
+ */
25
+ export declare const PANEL_LAYOUT_CONFIG: {
26
+ /** Standalone on a page. */
27
+ readonly page: {
28
+ /** Panel width (px). */
29
+ readonly width: 380;
30
+ /** Illustration above the header copy (px). */
31
+ readonly illustrationSize: 52;
32
+ /** Footer action button size. */
33
+ readonly buttonSize: "medium";
34
+ /** Gap between footer action buttons (px); ActionBar reads it via var. */
35
+ readonly actionGap: 8;
36
+ };
37
+ /** Inside a dialog, wrapped by `BaseDialog` in a `Dialog(bare)`. */
38
+ readonly modal: {
39
+ readonly width: 380;
40
+ readonly illustrationSize: 52;
41
+ readonly buttonSize: "medium";
42
+ readonly actionGap: 8;
43
+ };
44
+ };
45
+ export type PanelLayoutVariant = keyof typeof PANEL_LAYOUT_CONFIG;
46
+ export declare const resolvePanelLayoutConfig: (variant: PanelLayoutVariant) => {
47
+ /** Panel width (px). */
48
+ readonly width: 380;
49
+ /** Illustration above the header copy (px). */
50
+ readonly illustrationSize: 52;
51
+ /** Footer action button size. */
52
+ readonly buttonSize: "medium";
53
+ /** Gap between footer action buttons (px); ActionBar reads it via var. */
54
+ readonly actionGap: 8;
55
+ } | {
56
+ readonly width: 380;
57
+ readonly illustrationSize: 52;
58
+ readonly buttonSize: "medium";
59
+ readonly actionGap: 8;
60
+ };
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.resolvePanelLayoutConfig = exports.PANEL_LAYOUT_PREFIX = exports.PANEL_LAYOUT_CONFIG = exports.PANEL_LAYOUT_BACK_LABEL = exports.PANEL_LAYOUT_BACK_ICON_SIZE = void 0;
7
+ var PANEL_LAYOUT_PREFIX = exports.PANEL_LAYOUT_PREFIX = 'panel-layout';
8
+ /** Back-arrow control: 24px icon, and its accessible name. */
9
+ var PANEL_LAYOUT_BACK_ICON_SIZE = exports.PANEL_LAYOUT_BACK_ICON_SIZE = 24;
10
+ var PANEL_LAYOUT_BACK_LABEL = exports.PANEL_LAYOUT_BACK_LABEL = 'Go back';
11
+ /**
12
+ * THE density table for content panels — the single thing to edit when the
13
+ * design changes. Same shape as `FORM_LAYOUT_CONFIG`: one entry per host, so
14
+ * a divergence between the two is a value change, never a structural one.
15
+ *
16
+ * The two entries are currently IDENTICAL, and that is the design: a panel
17
+ * renders the same on a page and in a dialog, the only difference being
18
+ * whether a `Dialog(bare)` is wrapped around it. They are still spelled out
19
+ * separately so that (a) the sameness reads as deliberate rather than as an
20
+ * oversight, and (b) a divergence later is a value change here and nothing
21
+ * else — no consumer passes these numbers, they only pass `variant`.
22
+ *
23
+ * `width` is the panel width used in BOTH hosts (380). It is NOT inherited
24
+ * from FormLayout's `page/small` density — that entry is 448, the app's
25
+ * sign-in card, a different surface. Only the padding (24) and the region gap
26
+ * (16) come from that density, and those already match. Inside a dialog the
27
+ * value goes on the Dialog panel and the layout fills at 100%: sizing a bare
28
+ * panel from its child hits the shrink-to-fit percentage circularity (the
29
+ * same reason FormDialog gives).
30
+ */
31
+ var PANEL_LAYOUT_CONFIG = exports.PANEL_LAYOUT_CONFIG = {
32
+ /** Standalone on a page. */
33
+ page: {
34
+ /** Panel width (px). */
35
+ width: 380,
36
+ /** Illustration above the header copy (px). */
37
+ illustrationSize: 52,
38
+ /** Footer action button size. */
39
+ buttonSize: 'medium',
40
+ /** Gap between footer action buttons (px); ActionBar reads it via var. */
41
+ actionGap: 8
42
+ },
43
+ /** Inside a dialog, wrapped by `BaseDialog` in a `Dialog(bare)`. */
44
+ modal: {
45
+ width: 380,
46
+ illustrationSize: 52,
47
+ buttonSize: 'medium',
48
+ actionGap: 8
49
+ }
50
+ };
51
+ var resolvePanelLayoutConfig = exports.resolvePanelLayoutConfig = function resolvePanelLayoutConfig(variant) {
52
+ return PANEL_LAYOUT_CONFIG[variant];
53
+ };
54
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUGFuZWxMYXlvdXQvY29uc3RhbnRzLnRzIiwiY29tcG9uZW50cy9QYW5lbExheW91dC9jb25zdGFudHMuanMiXSwibmFtZXMiOlsiUEFORUxfTEFZT1VUX1BSRUZJWCIsImV4cG9ydHMiLCJQQU5FTF9MQVlPVVRfQkFDS19JQ09OX1NJWkUiLCJQQU5FTF9MQVlPVVRfQkFDS19MQUJFTCIsIlBBTkVMX0xBWU9VVF9DT05GSUciLCJwYWdlIiwid2lkdGgiLCJpbGx1c3RyYXRpb25TaXplIiwiYnV0dG9uU2l6ZSIsImFjdGlvbkdhcCIsIm1vZGFsIiwicmVzb2x2ZVBhbmVsTGF5b3V0Q29uZmlnIiwidmFyaWFudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRU8sSUFBTUEsbUJBQW1CLEdBQUFDLE9BQUEsQ0FBQUQsbUJBQUEsR0FBRyxjQUFjO0FBRWpEO0FBQ08sSUFBTUUsMkJBQTJCLEdBQUFELE9BQUEsQ0FBQUMsMkJBQUEsR0FBRyxFQUFFO0FBQ3RDLElBQU1DLHVCQUF1QixHQUFBRixPQUFBLENBQUFFLHVCQUFBLEdBQUcsU0FBUztBQUVoRDtBQ0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FES08sSUFBTUMsbUJBQW1CLEdBQUFILE9BQUEsQ0FBQUcsbUJBQUEsR0FBRztFQUNqQztFQUNBQyxJQUFJLEVBQUU7SUFDSjtJQUNBQyxLQUFLLEVBQUUsR0FBRztJQUNWO0lBQ0FDLGdCQUFnQixFQUFFLEVBQUU7SUFDcEI7SUFDQUMsVUFBVSxFQUFFLFFBQTZCO0lBQ3pDO0lBQ0FDLFNBQVMsRUFBRTtFQ0hYLENESUQ7RUFDRDtFQUNBQyxLQUFLLEVBQUU7SUFDTEosS0FBSyxFQUFFLEdBQUc7SUFDVkMsZ0JBQWdCLEVBQUUsRUFBRTtJQUNwQkMsVUFBVSxFQUFFLFFBQTZCO0lBQ3pDQyxTQUFTLEVBQUU7RUNIWDtBQUNKLENESVU7QUFJSCxJQUFNRSx3QkFBd0IsR0FBQVYsT0FBQSxDQUFBVSx3QkFBQSxHQUFHLFNBQTNCQSx3QkFBd0JBLENBQUlDLE9BQTJCO0VBQUEsT0FDbEVSLG1CQUFtQixDQUFDUSxPQUFPLENBQUM7QUFBQSIsImZpbGUiOiJjb21wb25lbnRzL1BhbmVsTGF5b3V0L2NvbnN0YW50cy5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiZXhwb3J0IGNvbnN0IFBBTkVMX0xBWU9VVF9QUkVGSVggPSAncGFuZWwtbGF5b3V0Jztcbi8qKiBCYWNrLWFycm93IGNvbnRyb2w6IDI0cHggaWNvbiwgYW5kIGl0cyBhY2Nlc3NpYmxlIG5hbWUuICovXG5leHBvcnQgY29uc3QgUEFORUxfTEFZT1VUX0JBQ0tfSUNPTl9TSVpFID0gMjQ7XG5leHBvcnQgY29uc3QgUEFORUxfTEFZT1VUX0JBQ0tfTEFCRUwgPSAnR28gYmFjayc7XG4vKipcbiAqIFRIRSBkZW5zaXR5IHRhYmxlIGZvciBjb250ZW50IHBhbmVscyDigJQgdGhlIHNpbmdsZSB0aGluZyB0byBlZGl0IHdoZW4gdGhlXG4gKiBkZXNpZ24gY2hhbmdlcy4gU2FtZSBzaGFwZSBhcyBgRk9STV9MQVlPVVRfQ09ORklHYDogb25lIGVudHJ5IHBlciBob3N0LCBzb1xuICogYSBkaXZlcmdlbmNlIGJldHdlZW4gdGhlIHR3byBpcyBhIHZhbHVlIGNoYW5nZSwgbmV2ZXIgYSBzdHJ1Y3R1cmFsIG9uZS5cbiAqXG4gKiBUaGUgdHdvIGVudHJpZXMgYXJlIGN1cnJlbnRseSBJREVOVElDQUwsIGFuZCB0aGF0IGlzIHRoZSBkZXNpZ246IGEgcGFuZWxcbiAqIHJlbmRlcnMgdGhlIHNhbWUgb24gYSBwYWdlIGFuZCBpbiBhIGRpYWxvZywgdGhlIG9ubHkgZGlmZmVyZW5jZSBiZWluZ1xuICogd2hldGhlciBhIGBEaWFsb2coYmFyZSlgIGlzIHdyYXBwZWQgYXJvdW5kIGl0LiBUaGV5IGFyZSBzdGlsbCBzcGVsbGVkIG91dFxuICogc2VwYXJhdGVseSBzbyB0aGF0IChhKSB0aGUgc2FtZW5lc3MgcmVhZHMgYXMgZGVsaWJlcmF0ZSByYXRoZXIgdGhhbiBhcyBhblxuICogb3ZlcnNpZ2h0LCBhbmQgKGIpIGEgZGl2ZXJnZW5jZSBsYXRlciBpcyBhIHZhbHVlIGNoYW5nZSBoZXJlIGFuZCBub3RoaW5nXG4gKiBlbHNlIOKAlCBubyBjb25zdW1lciBwYXNzZXMgdGhlc2UgbnVtYmVycywgdGhleSBvbmx5IHBhc3MgYHZhcmlhbnRgLlxuICpcbiAqIGB3aWR0aGAgaXMgdGhlIHBhbmVsIHdpZHRoIHVzZWQgaW4gQk9USCBob3N0cyAoMzgwKS4gSXQgaXMgTk9UIGluaGVyaXRlZFxuICogZnJvbSBGb3JtTGF5b3V0J3MgYHBhZ2Uvc21hbGxgIGRlbnNpdHkg4oCUIHRoYXQgZW50cnkgaXMgNDQ4LCB0aGUgYXBwJ3NcbiAqIHNpZ24taW4gY2FyZCwgYSBkaWZmZXJlbnQgc3VyZmFjZS4gT25seSB0aGUgcGFkZGluZyAoMjQpIGFuZCB0aGUgcmVnaW9uIGdhcFxuICogKDE2KSBjb21lIGZyb20gdGhhdCBkZW5zaXR5LCBhbmQgdGhvc2UgYWxyZWFkeSBtYXRjaC4gSW5zaWRlIGEgZGlhbG9nIHRoZVxuICogdmFsdWUgZ29lcyBvbiB0aGUgRGlhbG9nIHBhbmVsIGFuZCB0aGUgbGF5b3V0IGZpbGxzIGF0IDEwMCU6IHNpemluZyBhIGJhcmVcbiAqIHBhbmVsIGZyb20gaXRzIGNoaWxkIGhpdHMgdGhlIHNocmluay10by1maXQgcGVyY2VudGFnZSBjaXJjdWxhcml0eSAodGhlXG4gKiBzYW1lIHJlYXNvbiBGb3JtRGlhbG9nIGdpdmVzKS5cbiAqL1xuZXhwb3J0IGNvbnN0IFBBTkVMX0xBWU9VVF9DT05GSUcgPSB7XG4gICAgLyoqIFN0YW5kYWxvbmUgb24gYSBwYWdlLiAqL1xuICAgIHBhZ2U6IHtcbiAgICAgICAgLyoqIFBhbmVsIHdpZHRoIChweCkuICovXG4gICAgICAgIHdpZHRoOiAzODAsXG4gICAgICAgIC8qKiBJbGx1c3RyYXRpb24gYWJvdmUgdGhlIGhlYWRlciBjb3B5IChweCkuICovXG4gICAgICAgIGlsbHVzdHJhdGlvblNpemU6IDUyLFxuICAgICAgICAvKiogRm9vdGVyIGFjdGlvbiBidXR0b24gc2l6ZS4gKi9cbiAgICAgICAgYnV0dG9uU2l6ZTogJ21lZGl1bScsXG4gICAgICAgIC8qKiBHYXAgYmV0d2VlbiBmb290ZXIgYWN0aW9uIGJ1dHRvbnMgKHB4KTsgQWN0aW9uQmFyIHJlYWRzIGl0IHZpYSB2YXIuICovXG4gICAgICAgIGFjdGlvbkdhcDogOCxcbiAgICB9LFxuICAgIC8qKiBJbnNpZGUgYSBkaWFsb2csIHdyYXBwZWQgYnkgYEJhc2VEaWFsb2dgIGluIGEgYERpYWxvZyhiYXJlKWAuICovXG4gICAgbW9kYWw6IHtcbiAgICAgICAgd2lkdGg6IDM4MCxcbiAgICAgICAgaWxsdXN0cmF0aW9uU2l6ZTogNTIsXG4gICAgICAgIGJ1dHRvblNpemU6ICdtZWRpdW0nLFxuICAgICAgICBhY3Rpb25HYXA6IDgsXG4gICAgfSxcbn07XG5leHBvcnQgY29uc3QgcmVzb2x2ZVBhbmVsTGF5b3V0Q29uZmlnID0gKHZhcmlhbnQpID0+IFBBTkVMX0xBWU9VVF9DT05GSUdbdmFyaWFudF07Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -0,0 +1,6 @@
1
+ import { PanelLayout } from './PanelLayout';
2
+ export { PanelLayout } from './PanelLayout';
3
+ export default PanelLayout;
4
+ export * from './interface';
5
+ export { PANEL_LAYOUT_CONFIG, PANEL_LAYOUT_PREFIX, resolvePanelLayoutConfig, } from './constants';
6
+ export type { PanelLayoutVariant } from './constants';
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _exportNames = {
7
+ PanelLayout: true,
8
+ PANEL_LAYOUT_CONFIG: true,
9
+ PANEL_LAYOUT_PREFIX: true,
10
+ resolvePanelLayoutConfig: true
11
+ };
12
+ Object.defineProperty(exports, "PANEL_LAYOUT_CONFIG", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _constants.PANEL_LAYOUT_CONFIG;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "PANEL_LAYOUT_PREFIX", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _constants.PANEL_LAYOUT_PREFIX;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "PanelLayout", {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _PanelLayout.PanelLayout;
28
+ }
29
+ });
30
+ exports["default"] = void 0;
31
+ Object.defineProperty(exports, "resolvePanelLayoutConfig", {
32
+ enumerable: true,
33
+ get: function get() {
34
+ return _constants.resolvePanelLayoutConfig;
35
+ }
36
+ });
37
+ var _PanelLayout = require("./PanelLayout");
38
+ var _interface = require("./interface");
39
+ Object.keys(_interface).forEach(function (key) {
40
+ if (key === "default" || key === "__esModule") return;
41
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
42
+ if (key in exports && exports[key] === _interface[key]) return;
43
+ Object.defineProperty(exports, key, {
44
+ enumerable: true,
45
+ get: function get() {
46
+ return _interface[key];
47
+ }
48
+ });
49
+ });
50
+ var _constants = require("./constants");
51
+ var _default = exports["default"] = _PanelLayout.PanelLayout;
52
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUGFuZWxMYXlvdXQvaW5kZXgudHMiXSwibmFtZXMiOlsiX1BhbmVsTGF5b3V0IiwicmVxdWlyZSIsIl9pbnRlcmZhY2UiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIl9leHBvcnROYW1lcyIsImV4cG9ydHMiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJfY29uc3RhbnRzIiwiX2RlZmF1bHQiLCJQYW5lbExheW91dCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsWUFBQSxHQUFBQyxPQUFBO0FBTUEsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FBQUFFLE1BQUEsQ0FBQUMsSUFBQSxDQUFBRixVQUFBLEVBQUFHLE9BQUEsV0FBQUMsR0FBQTtFQUFBLElBQUFBLEdBQUEsa0JBQUFBLEdBQUE7RUFBQSxJQUFBSCxNQUFBLENBQUFJLFNBQUEsQ0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFDLFlBQUEsRUFBQUosR0FBQTtFQUFBLElBQUFBLEdBQUEsSUFBQUssT0FBQSxJQUFBQSxPQUFBLENBQUFMLEdBQUEsTUFBQUosVUFBQSxDQUFBSSxHQUFBO0VBQUFILE1BQUEsQ0FBQVMsY0FBQSxDQUFBRCxPQUFBLEVBQUFMLEdBQUE7SUFBQU8sVUFBQTtJQUFBQyxHQUFBLFdBQUFBLElBQUE7TUFBQSxPQUFBWixVQUFBLENBQUFJLEdBQUE7SUFBQTtFQUFBO0FBQUE7QUFDQSxJQUFBUyxVQUFBLEdBQUFkLE9BQUE7QUFJcUIsSUFBQWUsUUFBQSxHQUFBTCxPQUFBLGNBUE5NLHdCQUFXIiwiZmlsZSI6ImNvbXBvbmVudHMvUGFuZWxMYXlvdXQvaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6W251bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -0,0 +1,73 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { ActionBarAction, ActionBarDirection, ActionBarFootnote } from "../ActionBar";
3
+ import type { FormLayoutProps } from "../FormLayout";
4
+ import type { IconName } from "../Icons";
5
+ import type { PanelLayoutVariant } from './constants';
6
+ export interface PanelLayoutProps extends Pick<FormLayoutProps, 'width' | 'className'> {
7
+ /**
8
+ * Which host this panel renders in. Selects the entry in
9
+ * `PANEL_LAYOUT_CONFIG` and the underlying FormLayout density / scroll
10
+ * policy. `page` (default) is the standalone card; `modal` is the panel
11
+ * `BaseDialog` wraps in a `Dialog(bare)`.
12
+ *
13
+ * There is deliberately no `size`: a result has ONE shape. `PageForm`
14
+ * exposes a size axis because a form's density varies with its field count.
15
+ */
16
+ variant?: PanelLayoutVariant;
17
+ /**
18
+ * Override the host's scroll policy. `page` never scrolls internally;
19
+ * `modal` pins header/footer and scrolls the content region when
20
+ * height-constrained. `BaseDialog` maps its `fixed` prop onto this — the
21
+ * two defaults are opposites, so that mapping must stay explicit.
22
+ */
23
+ scroll?: boolean;
24
+ /**
25
+ * Show the back arrow at the TOP of the header block, on the same 8px seam
26
+ * as everything else in it.
27
+ *
28
+ * The panel owns this control in BOTH hosts — stepped page flows (2FA setup)
29
+ * carry it just like dialog flows do. It belongs to the content flow, unlike
30
+ * the dialog's close icon, which is absolutely positioned overlay chrome and
31
+ * stays with Dialog. That is also why `Dialog(bare)` does not render it.
32
+ */
33
+ showBackIcon?: boolean;
34
+ /** Fires when the back arrow is activated. */
35
+ onBack?: () => void;
36
+ /** Replace the default back arrow node (keeps its slot and seam). */
37
+ backIcon?: ReactNode;
38
+ /**
39
+ * Small label row above the title ("Step 2 of 3"). Same contract as
40
+ * `title`: a plain string is rendered in the family style, a node passes
41
+ * through (e.g. a Tag). An empty string counts as absent, so a value held
42
+ * in state needs no guard at the call site.
43
+ */
44
+ eyebrow?: ReactNode;
45
+ /** Heading. A plain string renders as `Headline sm`. */
46
+ title?: ReactNode;
47
+ /** Supporting copy under the title. */
48
+ description?: ReactNode;
49
+ /**
50
+ * Render the description in the strong (medium) weight — the family spec.
51
+ * Defaults to `true`. Pass `false` for plain body copy, e.g. when the copy
52
+ * embeds an email (or other span) that should be the emphasized part.
53
+ */
54
+ descriptionStrong?: boolean;
55
+ /** Illustration above the title, `IconName` or node. */
56
+ illustration?: ReactNode | IconName;
57
+ /**
58
+ * Primary action. With only one action the button spans the full row; with
59
+ * both, secondary sits left and they split the row evenly.
60
+ */
61
+ primary?: ActionBarAction;
62
+ /** Optional secondary (left) action. */
63
+ secondary?: ActionBarAction;
64
+ /**
65
+ * Action arrangement, forwarded to ActionBar: `horizontal` (default,
66
+ * row-splitting) or `vertical` (stacked full-width).
67
+ */
68
+ direction?: ActionBarDirection;
69
+ /** Optional centered footnote row below the actions. */
70
+ footnote?: ActionBarFootnote;
71
+ /** Extra content between the header block and the actions (e.g. bricks). */
72
+ children?: ReactNode;
73
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy9QYW5lbExheW91dC9pbnRlcmZhY2UuanMiLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMiLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUGFuZWxMYXlvdXQvaW50ZXJmYWNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7fTsiXSwibWFwcGluZ3MiOiIiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Retrieves the spacing value for a given token key.
3
+ *
4
+ * @param {string} $key - The spacing token key (e.g., '100', '200').
5
+ * @return {length|null} The computed spacing value or null if the key is invalid.
6
+ * @example
7
+ * .element {
8
+ * padding: om-spacing-token('200'); // Returns 8px if $om-sys-spacing-unit is 4px
9
+ * }
10
+ */
11
+ /**
12
+ * Computes the spacing value based on a token key or a direct length value.
13
+ *
14
+ * @param {string|length} $value - The spacing token key (e.g., '100') or a direct length value (e.g., '16px').
15
+ * @return {length} The computed spacing value.
16
+ * @example
17
+ * .element {
18
+ * margin: om-spacing-value('300'); // Returns 12px if $om-sys-spacing-unit is 4px
19
+ * padding: om-spacing-value(16px); // Returns 16px
20
+ * gap: om-spacing-value(2); // Returns 8px if $om-sys-spacing-unit is 4px
21
+ * }
22
+ */
23
+ .om-component-ui-panel-layout .om-component-ui-panel-layout-header {
24
+ display: flex;
25
+ flex-direction: column;
26
+ gap: var(--om-spacing-200, 8px);
27
+ align-items: flex-start;
28
+ width: 100%;
29
+ }
30
+ .om-component-ui-panel-layout .om-component-ui-panel-layout-description {
31
+ overflow-wrap: anywhere;
32
+ }
33
+ .om-component-ui-panel-layout .om-component-ui-panel-layout-illustration {
34
+ display: flex;
35
+ align-items: center;
36
+ justify-content: flex-start;
37
+ line-height: 0;
38
+ }
39
+ .om-component-ui-panel-layout .om-component-ui-action-bar-actions {
40
+ gap: var(--form-layout-action-gap, var(--om-spacing-200, 8px));
41
+ }
42
+ .om-component-ui-panel-layout .om-component-ui-panel-layout-back {
43
+ display: inline-flex;
44
+ align-items: center;
45
+ justify-content: center;
46
+ width: 24px;
47
+ height: 24px;
48
+ padding: 0;
49
+ color: var(--om-icon-default, #131313);
50
+ background: transparent;
51
+ border: none;
52
+ cursor: pointer;
53
+ }
54
+ .om-component-ui-panel-layout .om-component-ui-panel-layout-back .om-component-ui-icons-wrapper {
55
+ --icon-color: currentcolor;
56
+ }
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ require("./PanelLayout.css");
4
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUGFuZWxMYXlvdXQvc3JjL2NvbXBvbmVudHMvUGFuZWxMYXlvdXQvc3R5bGUvaW5kZXgudHMiXSwibmFtZXMiOlsicmVxdWlyZSJdLCJtYXBwaW5ncyI6Ijs7QUFBQUEsT0FBQSIsImZpbGUiOiJjb21wb25lbnRzL1BhbmVsTGF5b3V0L3N0eWxlL2Nzcy5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -0,0 +1 @@
1
+ import './PanelLayout.css';
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ require("./PanelLayout.css");
4
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUGFuZWxMYXlvdXQvc3JjL2NvbXBvbmVudHMvUGFuZWxMYXlvdXQvc3R5bGUvaW5kZXgudHMiXSwibmFtZXMiOlsicmVxdWlyZSJdLCJtYXBwaW5ncyI6Ijs7QUFBQUEsT0FBQSIsImZpbGUiOiJjb21wb25lbnRzL1BhbmVsTGF5b3V0L3N0eWxlL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9