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

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 (94) 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/variants/LoadingDialog.js +3 -3
  6. package/es/business/{PageForm → Form/PageForm}/PageForm.d.ts +1 -1
  7. package/es/business/Form/PageForm/PageForm.js +97 -0
  8. package/es/business/Form/PageForm/index.js +5 -0
  9. package/es/business/{PageForm → Form/PageForm}/interface.d.ts +5 -5
  10. package/es/business/Form/PageForm/interface.js +2 -0
  11. package/es/business/Form/ResultForm/ResultForm.d.ts +2 -0
  12. package/es/business/Form/ResultForm/ResultForm.js +32 -0
  13. package/es/business/Form/ResultForm/index.d.ts +4 -0
  14. package/es/business/Form/ResultForm/index.js +5 -0
  15. package/es/business/Form/ResultForm/interface.d.ts +10 -0
  16. package/es/business/Form/ResultForm/interface.js +2 -0
  17. package/es/business/Form/index.d.ts +2 -0
  18. package/es/business/Form/index.js +14 -0
  19. package/es/business/index.d.ts +1 -1
  20. package/es/business/index.js +2 -2
  21. package/es/components/ActionBar/ActionBar.js +3 -4
  22. package/es/components/Dialog/interface.d.ts +10 -4
  23. package/es/components/FormLayout/interface.d.ts +6 -1
  24. package/es/components/PanelLayout/PanelLayout.d.ts +3 -0
  25. package/es/components/PanelLayout/PanelLayout.js +142 -0
  26. package/es/components/PanelLayout/constants.d.ts +60 -0
  27. package/es/components/PanelLayout/constants.js +48 -0
  28. package/es/components/PanelLayout/index.d.ts +6 -0
  29. package/es/components/PanelLayout/index.js +6 -0
  30. package/es/components/PanelLayout/interface.d.ts +68 -0
  31. package/es/components/PanelLayout/interface.js +2 -0
  32. package/es/components/PanelLayout/style/PanelLayout.css +50 -0
  33. package/es/components/PanelLayout/style/css.js +2 -0
  34. package/es/components/PanelLayout/style/index.d.ts +1 -0
  35. package/es/components/PanelLayout/style/index.js +2 -0
  36. package/es/index.css +1 -1
  37. package/es/index.d.ts +2 -0
  38. package/es/index.js +2 -1
  39. package/lib/business/Dialog/BaseDialog/BaseDialog.d.ts +0 -1
  40. package/lib/business/Dialog/BaseDialog/BaseDialog.js +42 -65
  41. package/lib/business/Dialog/BaseDialog/constants.d.ts +7 -8
  42. package/lib/business/Dialog/BaseDialog/constants.js +9 -10
  43. package/lib/business/Dialog/variants/LoadingDialog.js +3 -3
  44. package/lib/business/{PageForm → Form/PageForm}/PageForm.d.ts +1 -1
  45. package/lib/business/Form/PageForm/PageForm.js +103 -0
  46. package/lib/business/Form/PageForm/index.js +30 -0
  47. package/lib/business/{PageForm → Form/PageForm}/interface.d.ts +5 -5
  48. package/lib/business/Form/PageForm/interface.js +6 -0
  49. package/lib/business/Form/ResultForm/ResultForm.d.ts +2 -0
  50. package/lib/business/Form/ResultForm/ResultForm.js +38 -0
  51. package/lib/business/Form/ResultForm/index.d.ts +4 -0
  52. package/lib/business/Form/ResultForm/index.js +30 -0
  53. package/lib/business/Form/ResultForm/interface.d.ts +10 -0
  54. package/lib/business/Form/ResultForm/interface.js +6 -0
  55. package/lib/business/Form/index.d.ts +2 -0
  56. package/lib/business/Form/index.js +28 -0
  57. package/lib/business/index.d.ts +1 -1
  58. package/lib/business/index.js +5 -5
  59. package/lib/components/ActionBar/ActionBar.js +3 -4
  60. package/lib/components/Dialog/interface.d.ts +10 -4
  61. package/lib/components/FormLayout/interface.d.ts +6 -1
  62. package/lib/components/PanelLayout/PanelLayout.d.ts +3 -0
  63. package/lib/components/PanelLayout/PanelLayout.js +151 -0
  64. package/lib/components/PanelLayout/constants.d.ts +60 -0
  65. package/lib/components/PanelLayout/constants.js +54 -0
  66. package/lib/components/PanelLayout/index.d.ts +6 -0
  67. package/lib/components/PanelLayout/index.js +52 -0
  68. package/lib/components/PanelLayout/interface.d.ts +68 -0
  69. package/lib/components/PanelLayout/interface.js +6 -0
  70. package/lib/components/PanelLayout/style/PanelLayout.css +50 -0
  71. package/lib/components/PanelLayout/style/css.js +4 -0
  72. package/lib/components/PanelLayout/style/index.d.ts +1 -0
  73. package/lib/components/PanelLayout/style/index.js +4 -0
  74. package/lib/index.css +1 -1
  75. package/lib/index.d.ts +2 -0
  76. package/lib/index.js +14 -1
  77. package/package.json +24 -4
  78. package/scripts/mcp-server/index.generated.json +2 -2
  79. package/es/business/Dialog/BaseDialog/style/BaseDialog.css +0 -72
  80. package/es/business/Dialog/BaseDialog/style/css.js +0 -2
  81. package/es/business/Dialog/BaseDialog/style/index.d.ts +0 -1
  82. package/es/business/Dialog/BaseDialog/style/index.js +0 -2
  83. package/es/business/PageForm/PageForm.js +0 -97
  84. package/es/business/PageForm/index.js +0 -5
  85. package/es/business/PageForm/interface.js +0 -2
  86. package/lib/business/Dialog/BaseDialog/style/BaseDialog.css +0 -72
  87. package/lib/business/Dialog/BaseDialog/style/css.js +0 -4
  88. package/lib/business/Dialog/BaseDialog/style/index.d.ts +0 -1
  89. package/lib/business/Dialog/BaseDialog/style/index.js +0 -4
  90. package/lib/business/PageForm/PageForm.js +0 -103
  91. package/lib/business/PageForm/index.js +0 -30
  92. package/lib/business/PageForm/interface.js +0 -6
  93. /package/es/business/{PageForm → Form/PageForm}/index.d.ts +0 -0
  94. /package/lib/business/{PageForm → Form/PageForm}/index.d.ts +0 -0
@@ -0,0 +1,151 @@
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: results and confirms are only some
28
+ * of what it carries — `VerificationDialog` is a challenge, the 2FA setup
29
+ * flow is a stepped wizard (hence `backSlot`), and terminal pages carry no
30
+ * action at all. A scenario shell that needs recurring copy (a `preset`) is
31
+ * built ON TOP of this, not inside it.
32
+ *
33
+ * Assembly:
34
+ *
35
+ * FormLayout card chrome (surface, hairline, radius) + the 24
36
+ * │ padding and 16 region gap. Its `page/small` width
37
+ * │ (448, the sign-in card) is NOT used — the panel width
38
+ * │ comes from the config table.
39
+ * ├─ header slot back / illustration / eyebrow / title / description as
40
+ * │ ONE block on 8px seams. It goes in the title slot, not
41
+ * │ the content region, because it is all header copy —
42
+ * │ that also keeps it pinned when the content scrolls.
43
+ * ├─ content region `children` — free-form (a QR code, an OTP input, rows)
44
+ * └─ ActionBar(fill) the actions.
45
+ *
46
+ * It owns no copy and no loose numbers: everything host-specific comes from
47
+ * `PANEL_LAYOUT_CONFIG`, so a divergence between page and dialog is a value
48
+ * change in that table and nothing else.
49
+ */
50
+ var PanelLayoutBase = function PanelLayoutBase(_ref) {
51
+ var _ref$variant = _ref.variant,
52
+ variant = _ref$variant === void 0 ? 'page' : _ref$variant,
53
+ scroll = _ref.scroll,
54
+ width = _ref.width,
55
+ className = _ref.className,
56
+ showBackIcon = _ref.showBackIcon,
57
+ onBack = _ref.onBack,
58
+ backIcon = _ref.backIcon,
59
+ eyebrow = _ref.eyebrow,
60
+ title = _ref.title,
61
+ description = _ref.description,
62
+ _ref$descriptionStron = _ref.descriptionStrong,
63
+ descriptionStrong = _ref$descriptionStron === void 0 ? true : _ref$descriptionStron,
64
+ illustration = _ref.illustration,
65
+ primary = _ref.primary,
66
+ secondary = _ref.secondary,
67
+ direction = _ref.direction,
68
+ footnote = _ref.footnote,
69
+ children = _ref.children;
70
+ var classes = (0, _classnames["default"])(_constants.PANEL_LAYOUT_PREFIX);
71
+ var config = (0, _constants.resolvePanelLayoutConfig)(variant);
72
+ // A plain string becomes the family heading; a node passes through so
73
+ // callers can compose (e.g. a Tag above a two-line title).
74
+ var titleNode = typeof title === 'string' || typeof title === 'number' ? (0, _jsxRuntime.jsx)(_Typography.Typography.Headline, {
75
+ size: 'sm',
76
+ as: 'h2',
77
+ color: 'default',
78
+ children: title
79
+ }) : title;
80
+ var illustrationNode = typeof illustration === 'string' ? (0, _jsxRuntime.jsx)(_Icons.Icons, {
81
+ name: illustration,
82
+ size: config.illustrationSize
83
+ }) : illustration;
84
+ // Its own row above everything else, on the block's 8px seam — the shape
85
+ // stepped flows use in both hosts (2FA setup on a page, wizard dialogs).
86
+ var backNode = showBackIcon ? (0, _jsxRuntime.jsx)("button", {
87
+ type: 'button',
88
+ className: classes('back'),
89
+ "aria-label": _constants.PANEL_LAYOUT_BACK_LABEL,
90
+ onClick: onBack,
91
+ children: backIcon !== null && backIcon !== void 0 ? backIcon : (0, _jsxRuntime.jsx)(_Icons.Icons, {
92
+ name: 'arrowLeft',
93
+ size: _constants.PANEL_LAYOUT_BACK_ICON_SIZE
94
+ })
95
+ }) : null;
96
+ var hasHeader = showBackIcon || illustration != null || eyebrow != null || title != null || description != null;
97
+ var header = hasHeader ? (0, _jsxRuntime.jsxs)("div", {
98
+ className: classes('header'),
99
+ children: [backNode, illustrationNode != null && (0, _jsxRuntime.jsx)("div", {
100
+ className: classes('illustration'),
101
+ children: illustrationNode
102
+ }), eyebrow != null && (0, _jsxRuntime.jsx)("div", {
103
+ children: eyebrow
104
+ }), titleNode, description != null && (0, _jsxRuntime.jsx)(_Typography.Typography.Body, {
105
+ as: 'p',
106
+ size: 'md',
107
+ strong: descriptionStrong,
108
+ color: 'default-secondary',
109
+ children: description
110
+ })]
111
+ }) : undefined;
112
+ // The bar owns the button size, so the family size is applied per action
113
+ // rather than as a bar-level prop; an explicit per-action `size` still wins.
114
+ var withSize = function withSize(action) {
115
+ var _a;
116
+ return action && Object.assign(Object.assign({}, action), {
117
+ size: (_a = action.size) !== null && _a !== void 0 ? _a : config.buttonSize
118
+ });
119
+ };
120
+ var footer = primary || secondary || footnote ? (0, _jsxRuntime.jsx)(_ActionBar.ActionBar, {
121
+ direction: direction,
122
+ primary: withSize(primary),
123
+ secondary: withSize(secondary),
124
+ footnote: footnote
125
+ }) : undefined;
126
+ return (0, _jsxRuntime.jsx)(_FormLayout.FormLayout
127
+ // `page/small` is used for its 24 padding and 16 region gap, which are
128
+ // already the result family's numbers. Its 448 width is NOT — that is
129
+ // the sign-in card; the result panel is 380, from the config table.
130
+ , {
131
+ // `page/small` is used for its 24 padding and 16 region gap, which are
132
+ // already the result family's numbers. Its 448 width is NOT — that is
133
+ // the sign-in card; the result panel is 380, from the config table.
134
+ variant: 'page',
135
+ size: 'small',
136
+ scroll: scroll,
137
+ // In a dialog the Dialog panel carries the width (BaseDialog reads the
138
+ // same entry) and the layout fills it: sizing a bare panel from its
139
+ // child hits the shrink-to-fit percentage circularity.
140
+ width: width !== null && width !== void 0 ? width : variant === 'modal' ? '100%' : config.width,
141
+ className: (0, _classnames.joinCls)(classes(), classes(variant), className),
142
+ style: {
143
+ '--form-layout-action-gap': "".concat(config.actionGap, "px")
144
+ },
145
+ title: header,
146
+ footer: footer,
147
+ children: children
148
+ });
149
+ };
150
+ var PanelLayout = exports.PanelLayout = /*#__PURE__*/(0, _react.memo)(PanelLayoutBase);
151
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUGFuZWxMYXlvdXQvUGFuZWxMYXlvdXQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL1BhbmVsTGF5b3V0L1BhbmVsTGF5b3V0LnRzeCJdLCJuYW1lcyI6WyJfanN4UnVudGltZSIsInJlcXVpcmUiLCJfcmVhY3QiLCJfQWN0aW9uQmFyIiwiX0Zvcm1MYXlvdXQiLCJfSWNvbnMiLCJfVHlwb2dyYXBoeSIsIl9jbGFzc25hbWVzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfY29uc3RhbnRzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiUGFuZWxMYXlvdXRCYXNlIiwiX3JlZiIsIl9yZWYkdmFyaWFudCIsInZhcmlhbnQiLCJzY3JvbGwiLCJ3aWR0aCIsImNsYXNzTmFtZSIsInNob3dCYWNrSWNvbiIsIm9uQmFjayIsImJhY2tJY29uIiwiZXllYnJvdyIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJfcmVmJGRlc2NyaXB0aW9uU3Ryb24iLCJkZXNjcmlwdGlvblN0cm9uZyIsImlsbHVzdHJhdGlvbiIsInByaW1hcnkiLCJzZWNvbmRhcnkiLCJkaXJlY3Rpb24iLCJmb290bm90ZSIsImNoaWxkcmVuIiwiY2xhc3NlcyIsImNsYXNzbmFtZXMiLCJQQU5FTF9MQVlPVVRfUFJFRklYIiwiY29uZmlnIiwicmVzb2x2ZVBhbmVsTGF5b3V0Q29uZmlnIiwidGl0bGVOb2RlIiwiX2pzeCIsIlR5cG9ncmFwaHkiLCJIZWFkbGluZSIsInNpemUiLCJhcyIsImNvbG9yIiwiaWxsdXN0cmF0aW9uTm9kZSIsIkljb25zIiwibmFtZSIsImlsbHVzdHJhdGlvblNpemUiLCJiYWNrTm9kZSIsInR5cGUiLCJQQU5FTF9MQVlPVVRfQkFDS19MQUJFTCIsIm9uQ2xpY2siLCJQQU5FTF9MQVlPVVRfQkFDS19JQ09OX1NJWkUiLCJoYXNIZWFkZXIiLCJoZWFkZXIiLCJfanN4cyIsIkJvZHkiLCJzdHJvbmciLCJ1bmRlZmluZWQiLCJ3aXRoU2l6ZSIsImFjdGlvbiIsIl9hIiwiYXNzaWduIiwiYnV0dG9uU2l6ZSIsImZvb3RlciIsIkFjdGlvbkJhciIsIkZvcm1MYXlvdXQiLCJqb2luQ2xzIiwic3R5bGUiLCJjb25jYXQiLCJhY3Rpb25HYXAiLCJQYW5lbExheW91dCIsImV4cG9ydHMiLCJtZW1vIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsV0FBQSxHQUFBQyxPQUFBO0FDQUEsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsVUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsV0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksTUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssV0FBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sV0FBQSxHQUFBQyx1QkFBQSxDQUFBUCxPQUFBO0FBQ0EsSUFBQVEsVUFBQSxHQUFBUixPQUFBO0FBVUFBLE9BQUE7QUFBaUIsU0FBQVMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFILHdCQUFBRyxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEsQ0FBQUwsQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFH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SUFDQXBELE9BQU8sRUFBQyxNQUFNO0lBQ2QyQixJQUFJLEVBQUMsT0FBTztJQUNaMUIsTUFBTSxFQUFFQSxNQUFNO0lBQ2Q7SUFDQTtJQUNBO0lBQ0FDLEtBQUssRUFBRUEsS0FBSyxLQUFBLElBQUEsSUFBTEEsS0FBSyxLQUFBLEtBQUEsQ0FBQSxHQUFMQSxLQUFLLEdBQUtGLE9BQU8sS0FBSyxPQUFPLEdBQUcsTUFBTSxHQUFHcUIsTUFBTSxDQUFDbkIsS0FBTTtJQUM3REMsU0FBUyxFQUFFLElBQUFrRCxtQkFBTyxFQUFDbkMsT0FBTyxDQUFBLENBQUUsRUFBRUEsT0FBTyxDQUFDbEIsT0FBTyxDQUFDLEVBQUVHLFNBQVMsQ0FBQztJQUMxRG1ELEtBQUssRUFBRTtNQUFFLDBCQUEwQixLQUFBQyxNQUFBLENBQUtsQyxNQUFNLENBQUNtQyxTQUFTO0lBQUksQ0FBbUI7SUFDL0VoRCxLQUFLLEVBQUVnQyxNQUFNO0lBQ2JVLE1BQU0sRUFBRUEsTUFBTTtJQUFBakMsUUFBQSxFQUViQTtFQUFRLENBQUEsQ0FDRTtBQUVqQixDQUFDO0FBRU0sSUFBTXdDLFdBQVcsR0FBQUMsT0FBQSxDQUFBRCxXQUFBLGdCQUFHLElBQUFFLFdBQUksRUFBQzlELGVBQWUsQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL1BhbmVsTGF5b3V0L1BhbmVsTGF5b3V0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBBY3Rpb25CYXIgfSBmcm9tICcuLi9BY3Rpb25CYXInO1xuaW1wb3J0IHsgRm9ybUxheW91dCB9IGZyb20gJy4uL0Zvcm1MYXlvdXQnO1xuaW1wb3J0IHsgSWNvbnMgfSBmcm9tICcuLi9JY29ucyc7XG5pbXBvcnQgeyBUeXBvZ3JhcGh5IH0gZnJvbSAnLi4vVHlwb2dyYXBoeSc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMsIGpvaW5DbHMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IFBBTkVMX0xBWU9VVF9CQUNLX0lDT05fU0laRSwgUEFORUxfTEFZT1VUX0JBQ0tfTEFCRUwsIFBBTkVMX0xBWU9VVF9QUkVGSVgsIHJlc29sdmVQYW5lbExheW91dENvbmZpZywgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgJy4vc3R5bGUnO1xuLyoqXG4gKiBUaGUgbm9uLWZvcm0gY29udGVudCBQQU5FTCDigJQgdGhlIGNvdW50ZXJwYXJ0IHRvIGBGb3JtTGF5b3V0YDogdGhhdCBvbmVcbiAqIGhvbGRzIGZpZWxkcywgdGhpcyBvbmUgaG9sZHMgYW4gaWxsdXN0cmF0aW9uLCBjb3B5IGFuZCBhY3Rpb25zLiBPTkUgc3VyZmFjZVxuICogc2VydmluZyB0d28gaG9zdHM6XG4gKlxuICogICBwYWdlIGhvc3QgICAgPFBhbmVsTGF5b3V0IC8+ICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgZGlyZWN0bHlcbiAqICAgZGlhbG9nIGhvc3QgIEJhc2VEaWFsb2cgPSBEaWFsb2coYmFyZSkgKyB0aGlzKG1vZGFsKSBvbmx5IGFkZHMgdGhlIG92ZXJsYXlcbiAqXG4gKiBEZWxpYmVyYXRlbHkgTk9UIG5hbWVkIGZvciBhIHNjZW5hcmlvOiByZXN1bHRzIGFuZCBjb25maXJtcyBhcmUgb25seSBzb21lXG4gKiBvZiB3aGF0IGl0IGNhcnJpZXMg4oCUIGBWZXJpZmljYXRpb25EaWFsb2dgIGlzIGEgY2hhbGxlbmdlLCB0aGUgMkZBIHNldHVwXG4gKiBmbG93IGlzIGEgc3RlcHBlZCB3aXphcmQgKGhlbmNlIGBiYWNrU2xvdGApLCBhbmQgdGVybWluYWwgcGFnZXMgY2Fycnkgbm9cbiAqIGFjdGlvbiBhdCBhbGwuIEEgc2NlbmFyaW8gc2hlbGwgdGhhdCBuZWVkcyByZWN1cnJpbmcgY29weSAoYSBgcHJlc2V0YCkgaXNcbiAqIGJ1aWx0IE9OIFRPUCBvZiB0aGlzLCBub3QgaW5zaWRlIGl0LlxuICpcbiAqIEFzc2VtYmx5OlxuICpcbiAqICAgRm9ybUxheW91dCAgICAgICAgICBjYXJkIGNocm9tZSAoc3VyZmFjZSwgaGFpcmxpbmUsIHJhZGl1cykgKyB0aGUgMjRcbiAqICAg4pSCICAgICAgICAgICAgICAgICAgIHBhZGRpbmcgYW5kIDE2IHJlZ2lvbiBnYXAuIEl0cyBgcGFnZS9zbWFsbGAgd2lkdGhcbiAqICAg4pSCICAgICAgICAgICAgICAgICAgICg0NDgsIHRoZSBzaWduLWluIGNhcmQpIGlzIE5PVCB1c2VkIOKAlCB0aGUgcGFuZWwgd2lkdGhcbiAqICAg4pSCICAgICAgICAgICAgICAgICAgIGNvbWVzIGZyb20gdGhlIGNvbmZpZyB0YWJsZS5cbiAqICAg4pSc4pSAIGhlYWRlciBzbG90ICAgICAgYmFjayAvIGlsbHVzdHJhdGlvbiAvIGV5ZWJyb3cgLyB0aXRsZSAvIGRlc2NyaXB0aW9uIGFzXG4gKiAgIOKUgiAgICAgICAgICAgICAgICAgICBPTkUgYmxvY2sgb24gOHB4IHNlYW1zLiBJdCBnb2VzIGluIHRoZSB0aXRsZSBzbG90LCBub3RcbiAqICAg4pSCICAgICAgICAgICAgICAgICAgIHRoZSBjb250ZW50IHJlZ2lvbiwgYmVjYXVzZSBpdCBpcyBhbGwgaGVhZGVyIGNvcHkg4oCUXG4gKiAgIOKUgiAgICAgICAgICAgICAgICAgICB0aGF0IGFsc28ga2VlcHMgaXQgcGlubmVkIHdoZW4gdGhlIGNvbnRlbnQgc2Nyb2xscy5cbiAqICAg4pSc4pSAIGNvbnRlbnQgcmVnaW9uICAgYGNoaWxkcmVuYCDigJQgZnJlZS1mb3JtIChhIFFSIGNvZGUsIGFuIE9UUCBpbnB1dCwgcm93cylcbiAqICAg4pSU4pSAIEFjdGlvbkJhcihmaWxsKSAgdGhlIGFjdGlvbnMuXG4gKlxuICogSXQgb3ducyBubyBjb3B5IGFuZCBubyBsb29zZSBudW1iZXJzOiBldmVyeXRoaW5nIGhvc3Qtc3BlY2lmaWMgY29tZXMgZnJvbVxuICogYFBBTkVMX0xBWU9VVF9DT05GSUdgLCBzbyBhIGRpdmVyZ2VuY2UgYmV0d2VlbiBwYWdlIGFuZCBkaWFsb2cgaXMgYSB2YWx1ZVxuICogY2hhbmdlIGluIHRoYXQgdGFibGUgYW5kIG5vdGhpbmcgZWxzZS5cbiAqL1xuY29uc3QgUGFuZWxMYXlvdXRCYXNlID0gKHsgdmFyaWFudCA9ICdwYWdlJywgc2Nyb2xsLCB3aWR0aCwgY2xhc3NOYW1lLCBzaG93QmFja0ljb24sIG9uQmFjaywgYmFja0ljb24sIGV5ZWJyb3csIHRpdGxlLCBkZXNjcmlwdGlvbiwgZGVzY3JpcHRpb25TdHJvbmcgPSB0cnVlLCBpbGx1c3RyYXRpb24sIHByaW1hcnksIHNlY29uZGFyeSwgZGlyZWN0aW9uLCBmb290bm90ZSwgY2hpbGRyZW4sIH0pID0+IHtcbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhQQU5FTF9MQVlPVVRfUFJFRklYKTtcbiAgICBjb25zdCBjb25maWcgPSByZXNvbHZlUGFuZWxMYXlvdXRDb25maWcodmFyaWFudCk7XG4gICAgLy8gQSBwbGFpbiBzdHJpbmcgYmVjb21lcyB0aGUgZmFtaWx5IGhlYWRpbmc7IGEgbm9kZSBwYXNzZXMgdGhyb3VnaCBzb1xuICAgIC8vIGNhbGxlcnMgY2FuIGNvbXBvc2UgKGUuZy4gYSBUYWcgYWJvdmUgYSB0d28tbGluZSB0aXRsZSkuXG4gICAgY29uc3QgdGl0bGVOb2RlID0gdHlwZW9mIHRpdGxlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdGl0bGUgPT09ICdudW1iZXInID8gKF9qc3goVHlwb2dyYXBoeS5IZWFkbGluZSwgeyBzaXplOiAnc20nLCBhczogJ2gyJywgY29sb3I6ICdkZWZhdWx0JywgY2hpbGRyZW46IHRpdGxlIH0pKSA6ICh0aXRsZSk7XG4gICAgY29uc3QgaWxsdXN0cmF0aW9uTm9kZSA9IHR5cGVvZiBpbGx1c3RyYXRpb24gPT09ICdzdHJpbmcnID8gKF9qc3goSWNvbnMsIHsgbmFtZTogaWxsdXN0cmF0aW9uLCBzaXplOiBjb25maWcuaWxsdXN0cmF0aW9uU2l6ZSB9KSkgOiAoaWxsdXN0cmF0aW9uKTtcbiAgICAvLyBJdHMgb3duIHJvdyBhYm92ZSBldmVyeXRoaW5nIGVsc2UsIG9uIHRoZSBibG9jaydzIDhweCBzZWFtIOKAlCB0aGUgc2hhcGVcbiAgICAvLyBzdGVwcGVkIGZsb3dzIHVzZSBpbiBib3RoIGhvc3RzICgyRkEgc2V0dXAgb24gYSBwYWdlLCB3aXphcmQgZGlhbG9ncykuXG4gICAgY29uc3QgYmFja05vZGUgPSBzaG93QmFja0ljb24gPyAoX2pzeChcImJ1dHRvblwiLCB7IHR5cGU6ICdidXR0b24nLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2JhY2snKSwgXCJhcmlhLWxhYmVsXCI6IFBBTkVMX0xBWU9VVF9CQUNLX0xBQkVMLCBvbkNsaWNrOiBvbkJhY2ssIGNoaWxkcmVuOiBiYWNrSWNvbiAhPT0gbnVsbCAmJiBiYWNrSWNvbiAhPT0gdm9pZCAwID8gYmFja0ljb24gOiBfanN4KEljb25zLCB7IG5hbWU6ICdhcnJvd0xlZnQnLCBzaXplOiBQQU5FTF9MQVlPVVRfQkFDS19JQ09OX1NJWkUgfSkgfSkpIDogbnVsbDtcbiAgICBjb25zdCBoYXNIZWFkZXIgPSBzaG93QmFja0ljb24gfHxcbiAgICAgICAgaWxsdXN0cmF0aW9uICE9IG51bGwgfHxcbiAgICAgICAgZXllYnJvdyAhPSBudWxsIHx8XG4gICAgICAgIHRpdGxlICE9IG51bGwgfHxcbiAgICAgICAgZGVzY3JpcHRpb24gIT0gbnVsbDtcbiAgICBjb25zdCBoZWFkZXIgPSBoYXNIZWFkZXIgPyAoX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2hlYWRlcicpLCBjaGlsZHJlbjogW2JhY2tOb2RlLCBpbGx1c3RyYXRpb25Ob2RlICE9IG51bGwgJiYgKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2lsbHVzdHJhdGlvbicpLCBjaGlsZHJlbjogaWxsdXN0cmF0aW9uTm9kZSB9KSksIGV5ZWJyb3cgIT0gbnVsbCAmJiBfanN4KFwiZGl2XCIsIHsgY2hpbGRyZW46IGV5ZWJyb3cgfSksIHRpdGxlTm9kZSwgZGVzY3JpcHRpb24gIT0gbnVsbCAmJiAoX2pzeChUeXBvZ3JhcGh5LkJvZHksIHsgYXM6ICdwJywgc2l6ZTogJ21kJywgc3Ryb25nOiBkZXNjcmlwdGlvblN0cm9uZywgY29sb3I6ICdkZWZhdWx0LXNlY29uZGFyeScsIGNoaWxkcmVuOiBkZXNjcmlwdGlvbiB9KSldIH0pKSA6IHVuZGVmaW5lZDtcbiAgICAvLyBUaGUgYmFyIG93bnMgdGhlIGJ1dHRvbiBzaXplLCBzbyB0aGUgZmFtaWx5IHNpemUgaXMgYXBwbGllZCBwZXIgYWN0aW9uXG4gICAgLy8gcmF0aGVyIHRoYW4gYXMgYSBiYXItbGV2ZWwgcHJvcDsgYW4gZXhwbGljaXQgcGVyLWFjdGlvbiBgc2l6ZWAgc3RpbGwgd2lucy5cbiAgICBjb25zdCB3aXRoU2l6ZSA9IChhY3Rpb24pID0+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,68 @@
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
+ /** Small badge/label row rendered above the title (e.g. a Tag). */
39
+ eyebrow?: ReactNode;
40
+ /** Heading. A plain string renders as `Headline sm`. */
41
+ title?: ReactNode;
42
+ /** Supporting copy under the title. */
43
+ description?: ReactNode;
44
+ /**
45
+ * Render the description in the strong (medium) weight — the family spec.
46
+ * Defaults to `true`. Pass `false` for plain body copy, e.g. when the copy
47
+ * embeds an email (or other span) that should be the emphasized part.
48
+ */
49
+ descriptionStrong?: boolean;
50
+ /** Illustration above the title, `IconName` or node. */
51
+ illustration?: ReactNode | IconName;
52
+ /**
53
+ * Primary action. With only one action the button spans the full row; with
54
+ * both, secondary sits left and they split the row evenly.
55
+ */
56
+ primary?: ActionBarAction;
57
+ /** Optional secondary (left) action. */
58
+ secondary?: ActionBarAction;
59
+ /**
60
+ * Action arrangement, forwarded to ActionBar: `horizontal` (default,
61
+ * row-splitting) or `vertical` (stacked full-width).
62
+ */
63
+ direction?: ActionBarDirection;
64
+ /** Optional centered footnote row below the actions. */
65
+ footnote?: ActionBarFootnote;
66
+ /** Extra content between the header block and the actions (e.g. bricks). */
67
+ children?: ReactNode;
68
+ }
@@ -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,50 @@
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-illustration {
31
+ display: flex;
32
+ align-items: center;
33
+ justify-content: flex-start;
34
+ line-height: 0;
35
+ }
36
+ .om-component-ui-panel-layout .om-component-ui-panel-layout-back {
37
+ display: inline-flex;
38
+ align-items: center;
39
+ justify-content: center;
40
+ width: 24px;
41
+ height: 24px;
42
+ padding: 0;
43
+ color: var(--om-icon-default, #131313);
44
+ background: transparent;
45
+ border: none;
46
+ cursor: pointer;
47
+ }
48
+ .om-component-ui-panel-layout .om-component-ui-panel-layout-back .om-component-ui-icons-wrapper {
49
+ --icon-color: currentcolor;
50
+ }
@@ -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