oolib 2.225.2 → 2.225.4

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.
@@ -10,16 +10,57 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || (function () {
30
+ var ownKeys = function(o) {
31
+ ownKeys = Object.getOwnPropertyNames || function (o) {
32
+ var ar = [];
33
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
34
+ return ar;
35
+ };
36
+ return ownKeys(o);
37
+ };
38
+ return function (mod) {
39
+ if (mod && mod.__esModule) return mod;
40
+ var result = {};
41
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
42
+ __setModuleDefault(result, mod);
43
+ return result;
44
+ };
45
+ })();
13
46
  var __importDefault = (this && this.__importDefault) || function (mod) {
14
47
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
48
  };
16
49
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.EdgeCases = exports.Tooltip_ = void 0;
18
- var react_1 = __importDefault(require("react"));
50
+ exports.AdvancedLayouts = exports.ClickTrigger = exports.DropdownOptionsWithTooltips = exports.ChartsAndListItems = exports.AdvancedComponents = exports.ComponentCompatibility = exports.EdgeCases = exports.Tooltip_ = void 0;
51
+ var react_1 = __importStar(require("react"));
19
52
  var Tooltip_1 = __importDefault(require("../../../v2/components/Tooltip"));
20
53
  var icons_1 = require("../../../icons");
21
54
  var Typo_1 = require("../../../components/Typo");
22
- var Info = icons_1.icons.Info;
55
+ var Buttons_1 = require("../../../v2/components/Buttons");
56
+ var OKELink_1 = require("../../../v2/components/OKELink");
57
+ var DropdownSingle_1 = require("../../../v2/components/Dropdowns/DropdownSingle");
58
+ var DropdownMulti_1 = require("../../../v2/components/Dropdowns/DropdownMulti");
59
+ var ActionMenu_1 = require("../../../components/ActionMenu");
60
+ var Switches_1 = require("../../../v2/components/Switches");
61
+ var Tags_1 = require("../../../v2/components/Tags");
62
+ var List_1 = require("../../../v2/components/List");
63
+ var Info = icons_1.icons.Info, WarningCircle = icons_1.icons.WarningCircle, Eye = icons_1.icons.Eye, User = icons_1.icons.User, GearSix = icons_1.icons.GearSix, Envelope = icons_1.icons.Envelope, MapPin = icons_1.icons.MapPin, Check = icons_1.icons.Check, PencilSimple = icons_1.icons.PencilSimple, Trash = icons_1.icons.Trash;
23
64
  var contentOptions = {
24
65
  'None': null,
25
66
  'TooltipText': {
@@ -120,6 +161,12 @@ exports.default = {
120
161
  control: 'boolean',
121
162
  description: 'Invert tooltip colors (white background, black text)',
122
163
  },
164
+ trigger: {
165
+ name: "Trigger",
166
+ options: ['hover', 'click'],
167
+ control: { type: 'inline-radio' },
168
+ description: 'Trigger mode: hover (default) shows on mouse over, click toggles on click',
169
+ },
123
170
  },
124
171
  args: {
125
172
  text: 'The purple elephant danced across the neon sky, balancing a slice of pepperoni pizza on its trunk.',
@@ -136,6 +183,7 @@ exports.default = {
136
183
  followCursor: false,
137
184
  cursorOffset: 10,
138
185
  invert: false,
186
+ trigger: 'hover',
139
187
  }
140
188
  };
141
189
  var Tooltip_ = function (args) {
@@ -154,7 +202,7 @@ var Tooltip_ = function (args) {
154
202
  // Simple API - only used when primaryContent is not selected
155
203
  text: usePrimaryContent ? undefined : args.text, heading: usePrimaryContent ? undefined : (args.heading || undefined),
156
204
  // Advanced API - only used when primaryContent is selected
157
- primaryContent: usePrimaryContent ? contentOptions[args.primaryContentType] : undefined, secondaryContent: contentOptions[args.secondaryContentType], progressiveDelay: args.progressiveDelay, progressiveGap: args.progressiveGap, placement: args.placement, showDelay: args.showDelay, hideDelay: args.hideDelay, animation: args.animation, showPointer: args.showPointer, followCursor: args.followCursor, cursorOffset: args.cursorOffset, invert: args.invert }, args.followCursor ? (react_1.default.createElement("div", { style: {
205
+ primaryContent: usePrimaryContent ? contentOptions[args.primaryContentType] : undefined, secondaryContent: contentOptions[args.secondaryContentType], progressiveDelay: args.progressiveDelay, progressiveGap: args.progressiveGap, placement: args.placement, showDelay: args.showDelay, hideDelay: args.hideDelay, animation: args.animation, showPointer: args.showPointer, followCursor: args.followCursor, cursorOffset: args.cursorOffset, invert: args.invert, trigger: args.trigger }, args.followCursor ? (react_1.default.createElement("div", { style: {
158
206
  width: '200px',
159
207
  height: '150px',
160
208
  backgroundColor: '#f0f0f0',
@@ -165,7 +213,7 @@ var Tooltip_ = function (args) {
165
213
  border: '2px dashed #ccc',
166
214
  cursor: 'default',
167
215
  } },
168
- react_1.default.createElement(Typo_1.SANS_2, null, "Hover and move cursor"))) : (react_1.default.createElement(Info, { size: 24 })))));
216
+ react_1.default.createElement(Typo_1.SANS_2, null, "Hover and move cursor"))) : (react_1.default.createElement(Buttons_1.ButtonGhost, { icon: 'Info' })))));
169
217
  };
170
218
  exports.Tooltip_ = Tooltip_;
171
219
  var TooltipItem = function (_a) {
@@ -195,3 +243,931 @@ exports.EdgeCases = EdgeCases;
195
243
  exports.EdgeCases.parameters = {
196
244
  controls: { disable: true }
197
245
  };
246
+ // Component compatibility story
247
+ var ComponentItem = function (_a) {
248
+ var label = _a.label, children = _a.children;
249
+ return (react_1.default.createElement("div", { style: {
250
+ display: 'flex',
251
+ flexDirection: 'column',
252
+ alignItems: 'center',
253
+ gap: '8px',
254
+ padding: '16px',
255
+ border: '1px solid #eee',
256
+ borderRadius: '8px',
257
+ minWidth: '150px',
258
+ } },
259
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666', fontWeight: 500 } }, label),
260
+ react_1.default.createElement(Tooltip_1.default, { text: "This tooltip works on hover!" }, children)));
261
+ };
262
+ var ComponentCompatibility = function () { return (react_1.default.createElement("div", { style: { padding: '2rem' } },
263
+ react_1.default.createElement("h2", { style: { marginBottom: '2rem', fontSize: '18px', fontWeight: 600 } }, "Tooltip with Various Components"),
264
+ react_1.default.createElement("p", { style: { marginBottom: '2rem', color: '#666', fontSize: '14px' } }, "Hover over each component to verify the tooltip works correctly."),
265
+ react_1.default.createElement("div", { style: {
266
+ display: 'flex',
267
+ flexWrap: 'wrap',
268
+ gap: '16px',
269
+ marginBottom: '3rem',
270
+ } },
271
+ react_1.default.createElement(ComponentItem, { label: "ButtonGhost" },
272
+ react_1.default.createElement(Buttons_1.ButtonGhost, { icon: "Info" })),
273
+ react_1.default.createElement(ComponentItem, { label: "ButtonGhost with text" },
274
+ react_1.default.createElement(Buttons_1.ButtonGhost, { icon: "Info", value: "Info" })),
275
+ react_1.default.createElement(ComponentItem, { label: "ButtonPrimary" },
276
+ react_1.default.createElement(Buttons_1.ButtonPrimary, { value: "Primary" })),
277
+ react_1.default.createElement(ComponentItem, { label: "ButtonSecondary" },
278
+ react_1.default.createElement(Buttons_1.ButtonSecondary, { value: "Secondary" })),
279
+ react_1.default.createElement(ComponentItem, { label: "ButtonTertiary" },
280
+ react_1.default.createElement(Buttons_1.ButtonTertiary, { value: "Tertiary" })),
281
+ react_1.default.createElement(ComponentItem, { label: "Info Icon" },
282
+ react_1.default.createElement(Info, { size: 24 })),
283
+ react_1.default.createElement(ComponentItem, { label: "WarningCircle Icon" },
284
+ react_1.default.createElement(WarningCircle, { size: 24 })),
285
+ react_1.default.createElement(ComponentItem, { label: "Eye Icon" },
286
+ react_1.default.createElement(Eye, { size: 24 })),
287
+ react_1.default.createElement(ComponentItem, { label: "User Icon" },
288
+ react_1.default.createElement(User, { size: 24 })),
289
+ react_1.default.createElement(ComponentItem, { label: "GearSix Icon" },
290
+ react_1.default.createElement(GearSix, { size: 24 })),
291
+ react_1.default.createElement(ComponentItem, { label: "Envelope Icon" },
292
+ react_1.default.createElement(Envelope, { size: 24 })),
293
+ react_1.default.createElement(ComponentItem, { label: "MapPin Icon" },
294
+ react_1.default.createElement(MapPin, { size: 24 })),
295
+ react_1.default.createElement(ComponentItem, { label: "Check Icon" },
296
+ react_1.default.createElement(Check, { size: 24 })),
297
+ react_1.default.createElement(ComponentItem, { label: "OKELink" },
298
+ react_1.default.createElement(OKELink_1.OKELink, { text: "Click me", onClick: function () { } })),
299
+ react_1.default.createElement(ComponentItem, { label: "OKELink with icon" },
300
+ react_1.default.createElement(OKELink_1.OKELink, { text: "Settings", icon: "GearSix", onClick: function () { } })),
301
+ react_1.default.createElement(ComponentItem, { label: "Native button" },
302
+ react_1.default.createElement("button", { style: { padding: '8px 16px', cursor: 'pointer' } }, "Native Button")),
303
+ react_1.default.createElement(ComponentItem, { label: "Div element" },
304
+ react_1.default.createElement("div", { style: {
305
+ padding: '8px 16px',
306
+ backgroundColor: '#f0f0f0',
307
+ borderRadius: '4px',
308
+ cursor: 'pointer',
309
+ } }, "Div Element")),
310
+ react_1.default.createElement(ComponentItem, { label: "Span element" },
311
+ react_1.default.createElement("span", { style: {
312
+ padding: '8px 16px',
313
+ backgroundColor: '#e0e0e0',
314
+ borderRadius: '4px',
315
+ cursor: 'pointer',
316
+ } }, "Span Element")),
317
+ react_1.default.createElement(ComponentItem, { label: "Image" },
318
+ react_1.default.createElement("img", { src: "https://via.placeholder.com/50", alt: "placeholder", style: { borderRadius: '4px', cursor: 'pointer' } }))),
319
+ react_1.default.createElement("h3", { style: { marginBottom: '1rem', fontSize: '16px', fontWeight: 600 } }, "Different Placements with ButtonGhost"),
320
+ react_1.default.createElement("div", { style: {
321
+ display: 'flex',
322
+ flexWrap: 'wrap',
323
+ gap: '16px',
324
+ marginBottom: '3rem',
325
+ } }, ['top', 'bottom', 'left', 'right'].map(function (placement) { return (react_1.default.createElement("div", { key: placement, style: {
326
+ display: 'flex',
327
+ flexDirection: 'column',
328
+ alignItems: 'center',
329
+ gap: '8px',
330
+ padding: '16px',
331
+ border: '1px solid #eee',
332
+ borderRadius: '8px',
333
+ } },
334
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } },
335
+ "placement=\"",
336
+ placement,
337
+ "\""),
338
+ react_1.default.createElement(Tooltip_1.default, { text: "Tooltip on ".concat(placement), placement: placement },
339
+ react_1.default.createElement(Buttons_1.ButtonGhost, { icon: "Info" })))); })),
340
+ react_1.default.createElement("h3", { style: { marginBottom: '1rem', fontSize: '16px', fontWeight: 600 } }, "Click to Pin Tooltip"),
341
+ react_1.default.createElement("p", { style: { marginBottom: '1rem', color: '#666', fontSize: '14px' } }, "Click on the button to pin the tooltip. Click again to dismiss."),
342
+ react_1.default.createElement("div", { style: {
343
+ display: 'flex',
344
+ gap: '16px',
345
+ } },
346
+ react_1.default.createElement(Tooltip_1.default, { text: "Click to pin this tooltip, click again to dismiss" },
347
+ react_1.default.createElement(Buttons_1.ButtonPrimary, { icon: "Check", value: "Click to pin" })),
348
+ react_1.default.createElement(Tooltip_1.default, { text: "This works with any button variant" },
349
+ react_1.default.createElement(Buttons_1.ButtonSecondary, { icon: "Eye", value: "Or this one" }))))); };
350
+ exports.ComponentCompatibility = ComponentCompatibility;
351
+ exports.ComponentCompatibility.parameters = {
352
+ controls: { disable: true }
353
+ };
354
+ // Dropdown options for testing (with icons)
355
+ var dropdownOptions = [
356
+ { value: 'option1', display: 'Edit Profile', icon: 'User' },
357
+ { value: 'option2', display: 'Settings', icon: 'GearSix' },
358
+ { value: 'option3', display: 'View Details', icon: 'Eye' },
359
+ { value: 'option4', display: 'Send Email', icon: 'Envelope' },
360
+ { value: 'option5', display: 'Location', icon: 'MapPin' },
361
+ ];
362
+ // Action menu actions for testing
363
+ var actionMenuActions = [
364
+ { display: 'Edit', icon: 'PencilSimple', onClick: function () { return console.log('Edit clicked'); } },
365
+ { display: 'Delete', icon: 'Trash', onClick: function () { return console.log('Delete clicked'); } },
366
+ { display: 'Share', icon: 'ShareNetwork', onClick: function () { return console.log('Share clicked'); } },
367
+ ];
368
+ // Advanced component compatibility story with form elements
369
+ var AdvancedComponents = function () {
370
+ var _a = (0, react_1.useState)(null), dropdownValue = _a[0], setDropdownValue = _a[1];
371
+ var _b = (0, react_1.useState)([]), multiDropdownValue = _b[0], setMultiDropdownValue = _b[1];
372
+ var _c = (0, react_1.useState)(false), radioValue = _c[0], setRadioValue = _c[1];
373
+ var _d = (0, react_1.useState)(false), checkboxValue = _d[0], setCheckboxValue = _d[1];
374
+ var _e = (0, react_1.useState)(undefined), switchValue = _e[0], setSwitchValue = _e[1];
375
+ return (react_1.default.createElement("div", { style: { padding: '2rem' } },
376
+ react_1.default.createElement("h2", { style: { marginBottom: '2rem', fontSize: '18px', fontWeight: 600 } }, "Tooltip with Advanced Components"),
377
+ react_1.default.createElement("p", { style: { marginBottom: '2rem', color: '#666', fontSize: '14px' } }, "Test tooltip behavior with dropdowns, action menus, form controls, and other complex components."),
378
+ react_1.default.createElement("h3", { style: { marginBottom: '1rem', fontSize: '16px', fontWeight: 600 } }, "Dropdowns"),
379
+ react_1.default.createElement("div", { style: {
380
+ display: 'flex',
381
+ flexWrap: 'wrap',
382
+ gap: '24px',
383
+ marginBottom: '3rem',
384
+ alignItems: 'flex-start',
385
+ } },
386
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px' } },
387
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "DropdownSingle with Tooltip"),
388
+ react_1.default.createElement(Tooltip_1.default, { text: "Select a single option from dropdown" },
389
+ react_1.default.createElement(DropdownSingle_1.DropdownSingle, { id: "dropdown-single", value: dropdownValue, options: dropdownOptions, onChange: function (id, val) { return setDropdownValue(val); }, placeholder: "Select option" }))),
390
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px' } },
391
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "DropdownMulti with Tooltip"),
392
+ react_1.default.createElement(Tooltip_1.default, { text: "Select multiple options" },
393
+ react_1.default.createElement(DropdownMulti_1.DropdownMulti, { id: "dropdown-multi", value: multiDropdownValue, options: dropdownOptions, onChange: function (id, val) { return setMultiDropdownValue(val); }, placeholder: "Select options" })))),
394
+ react_1.default.createElement("h3", { style: { marginBottom: '1rem', fontSize: '16px', fontWeight: 600 } }, "Action Menu"),
395
+ react_1.default.createElement("div", { style: {
396
+ display: 'flex',
397
+ flexWrap: 'wrap',
398
+ gap: '24px',
399
+ marginBottom: '3rem',
400
+ } },
401
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
402
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "ActionMenu with Tooltip"),
403
+ react_1.default.createElement(Tooltip_1.default, { text: "Click to see actions" },
404
+ react_1.default.createElement(ActionMenu_1.ActionMenu, { actions: actionMenuActions, icon: "DotsThree" }))),
405
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
406
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "ActionMenu (GearSix icon)"),
407
+ react_1.default.createElement(Tooltip_1.default, { text: "Settings menu" },
408
+ react_1.default.createElement(ActionMenu_1.ActionMenu, { actions: actionMenuActions, icon: "GearSix" })))),
409
+ react_1.default.createElement("h3", { style: { marginBottom: '1rem', fontSize: '16px', fontWeight: 600 } }, "Form Controls"),
410
+ react_1.default.createElement("div", { style: {
411
+ display: 'flex',
412
+ flexWrap: 'wrap',
413
+ gap: '24px',
414
+ marginBottom: '3rem',
415
+ alignItems: 'center',
416
+ } },
417
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
418
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "SwitchSingle"),
419
+ react_1.default.createElement(Tooltip_1.default, { text: "Toggle this switch" },
420
+ react_1.default.createElement(Switches_1.SwitchSingle, { id: "switch-single", value: switchValue, option: { value: 'enabled', display: 'Enable' }, onChange: function (id, val) { return setSwitchValue(val); } })))),
421
+ react_1.default.createElement("h3", { style: { marginBottom: '1rem', fontSize: '16px', fontWeight: 600 } }, "Tags"),
422
+ react_1.default.createElement("div", { style: {
423
+ display: 'flex',
424
+ flexWrap: 'wrap',
425
+ gap: '16px',
426
+ marginBottom: '3rem',
427
+ } },
428
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
429
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "TagDisplay Default"),
430
+ react_1.default.createElement(Tooltip_1.default, { text: "This is a default tag" },
431
+ react_1.default.createElement(Tags_1.TagDisplay, { display: "Default Tag" }))),
432
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
433
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "TagDisplay Positive"),
434
+ react_1.default.createElement(Tooltip_1.default, { text: "This is a positive/success tag" },
435
+ react_1.default.createElement(Tags_1.TagDisplay, { display: "Success", colorPreset: "positive" }))),
436
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
437
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "TagDisplay Warning"),
438
+ react_1.default.createElement(Tooltip_1.default, { text: "This is a warning tag" },
439
+ react_1.default.createElement(Tags_1.TagDisplay, { display: "Warning", colorPreset: "warning" }))),
440
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
441
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "TagDisplay Negative"),
442
+ react_1.default.createElement(Tooltip_1.default, { text: "This is a negative/error tag" },
443
+ react_1.default.createElement(Tags_1.TagDisplay, { display: "Error", colorPreset: "negative" }))),
444
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
445
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "TagDisplay with Icon"),
446
+ react_1.default.createElement(Tooltip_1.default, { text: "Tag with an icon" },
447
+ react_1.default.createElement(Tags_1.TagDisplay, { display: "With Icon", icon: "Check" })))),
448
+ react_1.default.createElement("h3", { style: { marginBottom: '1rem', fontSize: '16px', fontWeight: 600 } }, "Complex Nested Elements"),
449
+ react_1.default.createElement("div", { style: {
450
+ display: 'flex',
451
+ flexWrap: 'wrap',
452
+ gap: '24px',
453
+ marginBottom: '3rem',
454
+ } },
455
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
456
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "Card-like Container"),
457
+ react_1.default.createElement(Tooltip_1.default, { text: "Tooltip on a card component" },
458
+ react_1.default.createElement("div", { style: {
459
+ padding: '16px',
460
+ backgroundColor: '#fff',
461
+ border: '1px solid #eee',
462
+ borderRadius: '8px',
463
+ boxShadow: '0 2px 4px rgba(0,0,0,0.1)',
464
+ cursor: 'pointer',
465
+ } },
466
+ react_1.default.createElement("div", { style: { fontWeight: 600, marginBottom: '4px' } }, "Card Title"),
467
+ react_1.default.createElement("div", { style: { fontSize: '12px', color: '#666' } }, "Card description text")))),
468
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
469
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "Icon Button Group"),
470
+ react_1.default.createElement(Tooltip_1.default, { text: "Group of action buttons" },
471
+ react_1.default.createElement("div", { style: { display: 'flex', gap: '4px' } },
472
+ react_1.default.createElement(Buttons_1.ButtonGhost, { icon: "Eye" }),
473
+ react_1.default.createElement(Buttons_1.ButtonGhost, { icon: "PencilSimple" }),
474
+ react_1.default.createElement(Buttons_1.ButtonGhost, { icon: "Trash" })))),
475
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
476
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "Avatar Placeholder"),
477
+ react_1.default.createElement(Tooltip_1.default, { text: "User profile" },
478
+ react_1.default.createElement("div", { style: {
479
+ width: '40px',
480
+ height: '40px',
481
+ borderRadius: '50%',
482
+ backgroundColor: '#e0e0e0',
483
+ display: 'flex',
484
+ alignItems: 'center',
485
+ justifyContent: 'center',
486
+ cursor: 'pointer',
487
+ } },
488
+ react_1.default.createElement(User, { size: 20 })))),
489
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
490
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "Badge/Notification"),
491
+ react_1.default.createElement(Tooltip_1.default, { text: "3 unread notifications" },
492
+ react_1.default.createElement("div", { style: {
493
+ position: 'relative',
494
+ cursor: 'pointer',
495
+ } },
496
+ react_1.default.createElement(Envelope, { size: 24 }),
497
+ react_1.default.createElement("span", { style: {
498
+ position: 'absolute',
499
+ top: '-4px',
500
+ right: '-4px',
501
+ backgroundColor: '#ff4444',
502
+ color: 'white',
503
+ fontSize: '10px',
504
+ fontWeight: 'bold',
505
+ borderRadius: '50%',
506
+ width: '16px',
507
+ height: '16px',
508
+ display: 'flex',
509
+ alignItems: 'center',
510
+ justifyContent: 'center',
511
+ } }, "3")))),
512
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
513
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "Progress Indicator"),
514
+ react_1.default.createElement(Tooltip_1.default, { text: "75% complete" },
515
+ react_1.default.createElement("div", { style: {
516
+ width: '100px',
517
+ height: '8px',
518
+ backgroundColor: '#e0e0e0',
519
+ borderRadius: '4px',
520
+ overflow: 'hidden',
521
+ cursor: 'pointer',
522
+ } },
523
+ react_1.default.createElement("div", { style: {
524
+ width: '75%',
525
+ height: '100%',
526
+ backgroundColor: '#4CAF50',
527
+ } }))))),
528
+ react_1.default.createElement("h3", { style: { marginBottom: '1rem', fontSize: '16px', fontWeight: 600 } }, "Interactive Elements (SVG, Canvas placeholders)"),
529
+ react_1.default.createElement("div", { style: {
530
+ display: 'flex',
531
+ flexWrap: 'wrap',
532
+ gap: '24px',
533
+ marginBottom: '3rem',
534
+ } },
535
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
536
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "SVG Element"),
537
+ react_1.default.createElement(Tooltip_1.default, { text: "This is an SVG circle" },
538
+ react_1.default.createElement("svg", { width: "50", height: "50", style: { cursor: 'pointer' } },
539
+ react_1.default.createElement("circle", { cx: "25", cy: "25", r: "20", fill: "#4CAF50" })))),
540
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
541
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "Chart Placeholder"),
542
+ react_1.default.createElement(Tooltip_1.default, { text: "Chart data: Sales increased by 25%" },
543
+ react_1.default.createElement("div", { style: {
544
+ width: '120px',
545
+ height: '80px',
546
+ backgroundColor: '#f5f5f5',
547
+ border: '1px solid #ddd',
548
+ borderRadius: '4px',
549
+ display: 'flex',
550
+ alignItems: 'flex-end',
551
+ justifyContent: 'space-around',
552
+ padding: '8px',
553
+ cursor: 'pointer',
554
+ } },
555
+ react_1.default.createElement("div", { style: { width: '12px', height: '30%', backgroundColor: '#2196F3' } }),
556
+ react_1.default.createElement("div", { style: { width: '12px', height: '50%', backgroundColor: '#2196F3' } }),
557
+ react_1.default.createElement("div", { style: { width: '12px', height: '70%', backgroundColor: '#2196F3' } }),
558
+ react_1.default.createElement("div", { style: { width: '12px', height: '90%', backgroundColor: '#4CAF50' } })))),
559
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
560
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "Table Cell"),
561
+ react_1.default.createElement(Tooltip_1.default, { text: "Click to edit this cell" },
562
+ react_1.default.createElement("div", { style: {
563
+ padding: '8px 12px',
564
+ backgroundColor: '#fff',
565
+ border: '1px solid #ddd',
566
+ cursor: 'pointer',
567
+ minWidth: '100px',
568
+ } }, "Cell Value"))))));
569
+ };
570
+ exports.AdvancedComponents = AdvancedComponents;
571
+ exports.AdvancedComponents.parameters = {
572
+ controls: { disable: true }
573
+ };
574
+ // Chart data for real charts
575
+ var barChartData = [
576
+ { name: 'Jan', value: 400 },
577
+ { name: 'Feb', value: 300 },
578
+ { name: 'Mar', value: 600 },
579
+ { name: 'Apr', value: 800 },
580
+ { name: 'May', value: 500 },
581
+ ];
582
+ var pieChartData = [
583
+ { name: 'Group A', value: 400 },
584
+ { name: 'Group B', value: 300 },
585
+ { name: 'Group C', value: 300 },
586
+ { name: 'Group D', value: 200 },
587
+ ];
588
+ var lineChartData = [
589
+ { name: 'Week 1', value: 400 },
590
+ { name: 'Week 2', value: 300 },
591
+ { name: 'Week 3', value: 500 },
592
+ { name: 'Week 4', value: 280 },
593
+ { name: 'Week 5', value: 590 },
594
+ ];
595
+ var COLORS = ['#0088FE', '#00C49F', '#FFBB28', '#FF8042'];
596
+ // List options with descriptions for tooltip demo
597
+ var listOptionsWithTooltips = [
598
+ { value: 'edit', display: 'Edit Profile', icon: 'PencilSimple', desc: 'Modify your profile information' },
599
+ { value: 'settings', display: 'Settings', icon: 'GearSix', desc: 'Configure application settings' },
600
+ { value: 'delete', display: 'Delete Account', icon: 'Trash', desc: 'Permanently remove your account' },
601
+ ];
602
+ // Charts and List Items story
603
+ var ChartsAndListItems = function () {
604
+ return (react_1.default.createElement("div", { style: { padding: '2rem' } },
605
+ react_1.default.createElement("h3", { style: { marginBottom: '1rem', fontSize: '16px', fontWeight: 600 } }, "List Items with Individual Tooltips (Dropdown Option Pattern)"),
606
+ react_1.default.createElement("p", { style: { marginBottom: '1rem', color: '#666', fontSize: '14px' } }, "Each list item has its own tooltip - simulating how tooltips could work on dropdown options."),
607
+ react_1.default.createElement("div", { style: {
608
+ display: 'flex',
609
+ flexWrap: 'wrap',
610
+ gap: '24px',
611
+ marginBottom: '3rem',
612
+ } },
613
+ react_1.default.createElement("div", { style: {
614
+ backgroundColor: '#fff',
615
+ border: '1px solid #eee',
616
+ borderRadius: '8px',
617
+ boxShadow: '0 2px 8px rgba(0,0,0,0.1)',
618
+ padding: '8px',
619
+ minWidth: '200px',
620
+ } },
621
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666', padding: '8px', display: 'block' } }, "Simulated Dropdown Options"),
622
+ listOptionsWithTooltips.map(function (option) { return (react_1.default.createElement(Tooltip_1.default, { key: option.value, text: option.desc, placement: "right" },
623
+ react_1.default.createElement("div", { style: {
624
+ display: 'flex',
625
+ alignItems: 'center',
626
+ gap: '8px',
627
+ padding: '10px 12px',
628
+ cursor: 'pointer',
629
+ borderRadius: '4px',
630
+ transition: 'background-color 0.2s',
631
+ }, onMouseEnter: function (e) { return e.currentTarget.style.backgroundColor = '#f5f5f5'; }, onMouseLeave: function (e) { return e.currentTarget.style.backgroundColor = 'transparent'; } },
632
+ option.icon === 'PencilSimple' && react_1.default.createElement(PencilSimple, { size: 16 }),
633
+ option.icon === 'GearSix' && react_1.default.createElement(GearSix, { size: 16 }),
634
+ option.icon === 'Trash' && react_1.default.createElement(Trash, { size: 16 }),
635
+ react_1.default.createElement("span", null, option.display)))); })),
636
+ react_1.default.createElement("div", { style: {
637
+ backgroundColor: '#fff',
638
+ border: '1px solid #eee',
639
+ borderRadius: '8px',
640
+ boxShadow: '0 2px 8px rgba(0,0,0,0.1)',
641
+ padding: '8px',
642
+ minWidth: '200px',
643
+ } },
644
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666', padding: '8px', display: 'block' } }, "Menu Items (tooltip on bottom)"),
645
+ react_1.default.createElement(Tooltip_1.default, { text: "View and edit your profile", placement: "bottom" },
646
+ react_1.default.createElement("div", { style: { display: 'flex', alignItems: 'center', gap: '8px', padding: '10px 12px', cursor: 'pointer', borderRadius: '4px' }, onMouseEnter: function (e) { return e.currentTarget.style.backgroundColor = '#f5f5f5'; }, onMouseLeave: function (e) { return e.currentTarget.style.backgroundColor = 'transparent'; } },
647
+ react_1.default.createElement(User, { size: 16 }),
648
+ react_1.default.createElement("span", null, "Profile"))),
649
+ react_1.default.createElement(Tooltip_1.default, { text: "Configure your preferences", placement: "bottom" },
650
+ react_1.default.createElement("div", { style: { display: 'flex', alignItems: 'center', gap: '8px', padding: '10px 12px', cursor: 'pointer', borderRadius: '4px' }, onMouseEnter: function (e) { return e.currentTarget.style.backgroundColor = '#f5f5f5'; }, onMouseLeave: function (e) { return e.currentTarget.style.backgroundColor = 'transparent'; } },
651
+ react_1.default.createElement(GearSix, { size: 16 }),
652
+ react_1.default.createElement("span", null, "Settings"))),
653
+ react_1.default.createElement(Tooltip_1.default, { text: "Check your messages", placement: "bottom" },
654
+ react_1.default.createElement("div", { style: { display: 'flex', alignItems: 'center', gap: '8px', padding: '10px 12px', cursor: 'pointer', borderRadius: '4px' }, onMouseEnter: function (e) { return e.currentTarget.style.backgroundColor = '#f5f5f5'; }, onMouseLeave: function (e) { return e.currentTarget.style.backgroundColor = 'transparent'; } },
655
+ react_1.default.createElement(Envelope, { size: 16 }),
656
+ react_1.default.createElement("span", null, "Messages"))))),
657
+ react_1.default.createElement("h3", { style: { marginBottom: '1rem', fontSize: '16px', fontWeight: 600 } }, "List Component with Tooltip Wrapper"),
658
+ react_1.default.createElement("div", { style: {
659
+ display: 'flex',
660
+ flexWrap: 'wrap',
661
+ gap: '24px',
662
+ marginBottom: '3rem',
663
+ } },
664
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px' } },
665
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "Entire List with Tooltip"),
666
+ react_1.default.createElement(Tooltip_1.default, { text: "Select an option from this list" },
667
+ react_1.default.createElement(List_1.List, { id: "tooltip-list", options: dropdownOptions, onChange: function (id, val) { return console.log('Selected:', val); }, disableShadow: true, enableBorder: true })))),
668
+ react_1.default.createElement("h3", { style: { marginBottom: '1rem', fontSize: '16px', fontWeight: 600 } }, "Table Rows with Tooltips"),
669
+ react_1.default.createElement("div", { style: { marginBottom: '3rem' } },
670
+ react_1.default.createElement("table", { style: {
671
+ width: '100%',
672
+ maxWidth: '600px',
673
+ borderCollapse: 'collapse',
674
+ backgroundColor: '#fff',
675
+ borderRadius: '8px',
676
+ overflow: 'hidden',
677
+ boxShadow: '0 1px 3px rgba(0,0,0,0.1)',
678
+ } },
679
+ react_1.default.createElement("thead", null,
680
+ react_1.default.createElement("tr", { style: { backgroundColor: '#f5f5f5' } },
681
+ react_1.default.createElement("th", { style: { padding: '12px', textAlign: 'left', borderBottom: '1px solid #eee' } }, "Name"),
682
+ react_1.default.createElement("th", { style: { padding: '12px', textAlign: 'left', borderBottom: '1px solid #eee' } }, "Status"),
683
+ react_1.default.createElement("th", { style: { padding: '12px', textAlign: 'left', borderBottom: '1px solid #eee' } }, "Actions"))),
684
+ react_1.default.createElement("tbody", null,
685
+ react_1.default.createElement("tr", null,
686
+ react_1.default.createElement("td", { style: { padding: '12px', borderBottom: '1px solid #eee' } },
687
+ react_1.default.createElement(Tooltip_1.default, { text: "Click to view John's profile" },
688
+ react_1.default.createElement("span", { style: { cursor: 'pointer', color: '#2196F3' } }, "John Doe"))),
689
+ react_1.default.createElement("td", { style: { padding: '12px', borderBottom: '1px solid #eee' } },
690
+ react_1.default.createElement(Tooltip_1.default, { text: "User is currently active" },
691
+ react_1.default.createElement(Tags_1.TagDisplay, { display: "Active", colorPreset: "positive" }))),
692
+ react_1.default.createElement("td", { style: { padding: '12px', borderBottom: '1px solid #eee' } },
693
+ react_1.default.createElement("div", { style: { display: 'flex', gap: '4px' } },
694
+ react_1.default.createElement(Tooltip_1.default, { text: "Edit user" },
695
+ react_1.default.createElement(Buttons_1.ButtonGhost, { icon: "PencilSimple" })),
696
+ react_1.default.createElement(Tooltip_1.default, { text: "Delete user" },
697
+ react_1.default.createElement(Buttons_1.ButtonGhost, { icon: "Trash" }))))),
698
+ react_1.default.createElement("tr", null,
699
+ react_1.default.createElement("td", { style: { padding: '12px', borderBottom: '1px solid #eee' } },
700
+ react_1.default.createElement(Tooltip_1.default, { text: "Click to view Jane's profile" },
701
+ react_1.default.createElement("span", { style: { cursor: 'pointer', color: '#2196F3' } }, "Jane Smith"))),
702
+ react_1.default.createElement("td", { style: { padding: '12px', borderBottom: '1px solid #eee' } },
703
+ react_1.default.createElement(Tooltip_1.default, { text: "User account is pending verification" },
704
+ react_1.default.createElement(Tags_1.TagDisplay, { display: "Pending", colorPreset: "warning" }))),
705
+ react_1.default.createElement("td", { style: { padding: '12px', borderBottom: '1px solid #eee' } },
706
+ react_1.default.createElement("div", { style: { display: 'flex', gap: '4px' } },
707
+ react_1.default.createElement(Tooltip_1.default, { text: "Edit user" },
708
+ react_1.default.createElement(Buttons_1.ButtonGhost, { icon: "PencilSimple" })),
709
+ react_1.default.createElement(Tooltip_1.default, { text: "Delete user" },
710
+ react_1.default.createElement(Buttons_1.ButtonGhost, { icon: "Trash" }))))))))));
711
+ };
712
+ exports.ChartsAndListItems = ChartsAndListItems;
713
+ exports.ChartsAndListItems.parameters = {
714
+ controls: { disable: true }
715
+ };
716
+ // Dropdown options with tooltips - demonstrating the tooltip prop on dropdown options
717
+ var dropdownOptionsWithTooltips = [
718
+ { value: 'text', display: 'Short Text', icon: 'TextAa', tooltip: 'Single line text input for names, titles, or brief responses' },
719
+ { value: 'textarea', display: 'Long Text', icon: 'TextAlignLeft', tooltip: 'Multi-line text area for descriptions, comments, or detailed content' },
720
+ { value: 'number', display: 'Number', icon: 'Hash', tooltip: 'Numeric input for quantities, amounts, or measurements' },
721
+ { value: 'date', display: 'Date', icon: 'Calendar', tooltip: 'Date picker for selecting specific dates' },
722
+ { value: 'select', display: 'Single Select', icon: 'ListBullets', tooltip: 'Dropdown to choose one option from a predefined list' },
723
+ { value: 'multiselect', display: 'Multi Select', icon: 'CheckSquare', tooltip: 'Select multiple options from a predefined list' },
724
+ { value: 'email', display: 'Email', icon: 'Envelope', tooltip: 'Email address field with validation' },
725
+ { value: 'url', display: 'URL', icon: 'Link', tooltip: 'Website or link field with URL validation' },
726
+ ];
727
+ // Dropdown options with advanced tooltip layouts
728
+ var dropdownOptionsWithAdvancedTooltips = [
729
+ {
730
+ value: 'text',
731
+ display: 'Short Text',
732
+ icon: 'TextAa',
733
+ // Using heading + text props
734
+ tooltip: {
735
+ heading: 'Short Text Field',
736
+ text: 'Single line text input for names, titles, or brief responses.',
737
+ }
738
+ },
739
+ {
740
+ value: 'textarea',
741
+ display: 'Long Text',
742
+ icon: 'TextAlignLeft',
743
+ // Using primaryContent with blocks and links
744
+ tooltip: {
745
+ primaryContent: {
746
+ layout: 'TooltipHeading',
747
+ props: {
748
+ blocks: [
749
+ { heading: 'Long Text Field' },
750
+ { text: 'Multi-line text area for descriptions, comments, or detailed content.' },
751
+ { link: { text: 'Learn more about formatting', href: 'https://example.com/formatting', newTab: true } }
752
+ ]
753
+ }
754
+ }
755
+ }
756
+ },
757
+ {
758
+ value: 'number',
759
+ display: 'Number',
760
+ icon: 'Hash',
761
+ // Using primaryContent + invert
762
+ tooltip: {
763
+ primaryContent: {
764
+ layout: 'TooltipText',
765
+ props: {
766
+ text: 'Numeric input for quantities, amounts, or measurements.',
767
+ link: { text: 'See validation rules', href: 'https://example.com/number-validation', newTab: true, position: 'end' }
768
+ }
769
+ },
770
+ }
771
+ },
772
+ {
773
+ value: 'date',
774
+ display: 'Date',
775
+ icon: 'Calendar',
776
+ // Using primaryContent + animation + showDelay
777
+ tooltip: {
778
+ primaryContent: {
779
+ layout: 'TooltipHeading',
780
+ props: {
781
+ heading: 'Date Picker',
782
+ text: 'Select specific dates with calendar interface. Supports date ranges and validation.'
783
+ }
784
+ },
785
+ animation: 'fade',
786
+ showDelay: 200,
787
+ }
788
+ },
789
+ {
790
+ value: 'select',
791
+ display: 'Single Select',
792
+ icon: 'ListBullets',
793
+ // Using primaryContent + secondaryContent (progressive tooltip)
794
+ tooltip: {
795
+ primaryContent: {
796
+ layout: 'TooltipHeading',
797
+ props: {
798
+ heading: 'Single Select',
799
+ text: 'Choose one option from a predefined list.',
800
+ }
801
+ },
802
+ secondaryContent: {
803
+ layout: 'TooltipText',
804
+ props: {
805
+ text: 'Best for status fields, categories, or any exclusive choice.',
806
+ }
807
+ },
808
+ progressiveDelay: 800,
809
+ }
810
+ },
811
+ ];
812
+ var DropdownOptionsWithTooltips = function () {
813
+ var _a = (0, react_1.useState)(null), singleValue = _a[0], setSingleValue = _a[1];
814
+ var _b = (0, react_1.useState)([]), multiValue = _b[0], setMultiValue = _b[1];
815
+ var _c = (0, react_1.useState)(null), advancedValue = _c[0], setAdvancedValue = _c[1];
816
+ return (react_1.default.createElement("div", { style: { padding: '2rem' } },
817
+ react_1.default.createElement("h2", { style: { marginBottom: '2rem', fontSize: '18px', fontWeight: 600 } }, "Dropdown Options with Tooltips"),
818
+ react_1.default.createElement("p", { style: { marginBottom: '2rem', color: '#666', fontSize: '14px' } },
819
+ "Each dropdown option can have a ",
820
+ react_1.default.createElement("code", null, "tooltip"),
821
+ " prop that displays additional information when hovering over the option. This is useful for field type selectors or any dropdown where options benefit from extra context."),
822
+ react_1.default.createElement("h3", { style: { marginBottom: '1rem', fontSize: '16px', fontWeight: 600 } }, "Simple Text Tooltips"),
823
+ react_1.default.createElement("div", { style: {
824
+ display: 'flex',
825
+ flexWrap: 'wrap',
826
+ gap: '48px',
827
+ marginBottom: '3rem',
828
+ alignItems: 'flex-start',
829
+ justifyContent: 'end'
830
+ } },
831
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', minWidth: '250px' } },
832
+ react_1.default.createElement("span", { style: { fontSize: '14px', fontWeight: 500, marginBottom: '4px' } }, "Single Select with Tooltips"),
833
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666', marginBottom: '8px' } }, "Hover over each option to see its tooltip on the right"),
834
+ react_1.default.createElement(DropdownSingle_1.DropdownSingle, { id: "dropdown-with-tooltips", value: singleValue, options: dropdownOptionsWithTooltips, onChange: function (id, val) { return setSingleValue(val); }, placeholder: "Select field type..." })),
835
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', minWidth: '250px' } },
836
+ react_1.default.createElement("span", { style: { fontSize: '14px', fontWeight: 500, marginBottom: '4px' } }, "Multi Select with Tooltips"),
837
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666', marginBottom: '8px' } }, "Works with multi-select dropdowns too"),
838
+ react_1.default.createElement(DropdownMulti_1.DropdownMulti, { id: "dropdown-multi-with-tooltips", value: multiValue, options: dropdownOptionsWithTooltips, onChange: function (id, val) { return setMultiValue(val); }, placeholder: "Select field types..." }))),
839
+ react_1.default.createElement("h3", { style: { marginBottom: '1rem', fontSize: '16px', fontWeight: 600 } }, "Advanced Layout Tooltips"),
840
+ react_1.default.createElement("p", { style: { marginBottom: '1rem', color: '#666', fontSize: '14px' } }, "Instead of a simple string, you can pass a layout object to display rich tooltips with headings, multiple blocks, and links."),
841
+ react_1.default.createElement("div", { style: {
842
+ display: 'flex',
843
+ flexWrap: 'wrap',
844
+ gap: '48px',
845
+ marginBottom: '3rem',
846
+ alignItems: 'flex-start',
847
+ justifyContent: 'end'
848
+ } },
849
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', minWidth: '250px' } },
850
+ react_1.default.createElement("span", { style: { fontSize: '14px', fontWeight: 500, marginBottom: '4px' } }, "With Headings, Blocks & Links"),
851
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666', marginBottom: '8px' } }, "Hover over options to see advanced layouts"),
852
+ react_1.default.createElement(DropdownSingle_1.DropdownSingle, { id: "dropdown-with-advanced-tooltips", value: advancedValue, options: dropdownOptionsWithAdvancedTooltips, onChange: function (id, val) { return setAdvancedValue(val); }, placeholder: "Select field type..." }))),
853
+ react_1.default.createElement("h3", { style: { marginBottom: '1rem', fontSize: '16px', fontWeight: 600 } }, "Usage Examples"),
854
+ react_1.default.createElement("pre", { style: {
855
+ backgroundColor: '#f5f5f5',
856
+ padding: '16px',
857
+ borderRadius: '8px',
858
+ fontSize: '13px',
859
+ overflow: 'auto',
860
+ } }, "// Format 1: Simple string\ntooltip: 'Single line text input for names'\n\n// Format 2: Tooltip props object (same props as <Tooltip> component)\ntooltip: {\n heading: 'Short Text Field',\n text: 'Description text here.',\n}\n\n// With primaryContent layout\ntooltip: {\n primaryContent: {\n layout: 'TooltipHeading',\n props: {\n blocks: [\n { heading: 'Title' },\n { text: 'Description' },\n { link: { text: 'Learn more', href: '...', newTab: true } }\n ]\n }\n },\n invert: true, // White background\n animation: 'fade', // Fade animation\n showDelay: 200, // Delay before showing\n}\n\n// With progressive tooltip (primary + secondary)\ntooltip: {\n primaryContent: { layout: 'TooltipHeading', props: { heading: 'Title' } },\n secondaryContent: { layout: 'TooltipText', props: { text: 'More details...' } },\n progressiveDelay: 800,\n}")));
861
+ };
862
+ exports.DropdownOptionsWithTooltips = DropdownOptionsWithTooltips;
863
+ exports.DropdownOptionsWithTooltips.parameters = {
864
+ controls: { disable: true }
865
+ };
866
+ // Click Trigger Mode story
867
+ var ClickTrigger = function () {
868
+ return (react_1.default.createElement("div", { style: { padding: '2rem' } },
869
+ react_1.default.createElement("h2", { style: { marginBottom: '2rem', fontSize: '18px', fontWeight: 600 } }, "Click Trigger Mode"),
870
+ react_1.default.createElement("p", { style: { marginBottom: '2rem', color: '#666', fontSize: '14px' } },
871
+ "Use ",
872
+ react_1.default.createElement("code", null, "trigger=\"click\""),
873
+ " to make tooltips toggle on click instead of hover. Click the button to show the tooltip, click again or click outside to dismiss."),
874
+ react_1.default.createElement("div", { style: {
875
+ display: 'flex',
876
+ flexWrap: 'wrap',
877
+ gap: '24px',
878
+ marginBottom: '3rem',
879
+ } },
880
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
881
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "Click to toggle"),
882
+ react_1.default.createElement(Tooltip_1.default, { text: "This tooltip appears on click!", trigger: "click" },
883
+ react_1.default.createElement(Buttons_1.ButtonPrimary, { value: "Click me" }))),
884
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
885
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "Click with placement"),
886
+ react_1.default.createElement(Tooltip_1.default, { text: "Tooltip on the right side", trigger: "click", placement: "right" },
887
+ react_1.default.createElement(Buttons_1.ButtonSecondary, { value: "Click (right)" }))),
888
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
889
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "Icon button click"),
890
+ react_1.default.createElement(Tooltip_1.default, { text: "More information about this feature", trigger: "click" },
891
+ react_1.default.createElement(Buttons_1.ButtonGhost, { icon: "Info" }))),
892
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
893
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "Hover (default)"),
894
+ react_1.default.createElement(Tooltip_1.default, { text: "This is the default hover behavior" },
895
+ react_1.default.createElement(Buttons_1.ButtonTertiary, { value: "Hover me" })))),
896
+ react_1.default.createElement("h3", { style: { marginBottom: '1rem', fontSize: '16px', fontWeight: 600 } }, "Usage Example"),
897
+ react_1.default.createElement("pre", { style: {
898
+ backgroundColor: '#f5f5f5',
899
+ padding: '16px',
900
+ borderRadius: '8px',
901
+ fontSize: '13px',
902
+ overflow: 'auto',
903
+ } }, "// Click trigger - tooltip toggles on click\n<Tooltip text=\"Click to see this!\" trigger=\"click\">\n <Button>Click me</Button>\n</Tooltip>\n\n// Hover trigger (default) - tooltip shows on hover\n<Tooltip text=\"Hover to see this!\">\n <Button>Hover me</Button>\n</Tooltip>")));
904
+ };
905
+ exports.ClickTrigger = ClickTrigger;
906
+ exports.ClickTrigger.parameters = {
907
+ controls: { disable: true }
908
+ };
909
+ // Advanced Layouts with Blocks and Links
910
+ var AdvancedLayouts = function () {
911
+ return (react_1.default.createElement("div", { style: { padding: '2rem' } },
912
+ react_1.default.createElement("h2", { style: { marginBottom: '2rem', fontSize: '18px', fontWeight: 600 } }, "Advanced Tooltip Layouts"),
913
+ react_1.default.createElement("p", { style: { marginBottom: '2rem', color: '#666', fontSize: '14px' } }, "Tooltips support multiple content blocks with headings, paragraphs, and hyperlinks."),
914
+ react_1.default.createElement("h3", { style: { marginBottom: '1rem', fontSize: '16px', fontWeight: 600 } }, "Multiple Blocks"),
915
+ react_1.default.createElement("div", { style: {
916
+ display: 'flex',
917
+ flexWrap: 'wrap',
918
+ gap: '24px',
919
+ marginBottom: '3rem',
920
+ } },
921
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
922
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "Multiple heading/text blocks"),
923
+ react_1.default.createElement(Tooltip_1.default, { primaryContent: {
924
+ layout: 'TooltipHeading',
925
+ props: {
926
+ blocks: [
927
+ { heading: 'First Section', text: 'This is the first paragraph with details.' },
928
+ { heading: 'Second Section', text: 'This is another section with more info.' },
929
+ { text: 'Just a paragraph without heading.' },
930
+ ]
931
+ }
932
+ } },
933
+ react_1.default.createElement(Buttons_1.ButtonPrimary, { value: "Multiple Blocks" }))),
934
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
935
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "Headings only"),
936
+ react_1.default.createElement(Tooltip_1.default, { primaryContent: {
937
+ layout: 'TooltipHeading',
938
+ props: {
939
+ blocks: [
940
+ { heading: 'Step 1: Select a file' },
941
+ { heading: 'Step 2: Configure options' },
942
+ { heading: 'Step 3: Submit' },
943
+ ]
944
+ }
945
+ } },
946
+ react_1.default.createElement(Buttons_1.ButtonSecondary, { value: "Steps List" })))),
947
+ react_1.default.createElement("h3", { style: { marginBottom: '1rem', fontSize: '16px', fontWeight: 600 } }, "With Hyperlinks"),
948
+ react_1.default.createElement("div", { style: {
949
+ display: 'flex',
950
+ flexWrap: 'wrap',
951
+ gap: '24px',
952
+ marginBottom: '3rem',
953
+ } },
954
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
955
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "Text with link at end"),
956
+ react_1.default.createElement(Tooltip_1.default, { primaryContent: {
957
+ layout: 'TooltipText',
958
+ props: {
959
+ text: 'Learn more about this feature',
960
+ link: {
961
+ text: 'Read docs',
962
+ href: 'https://example.com/docs',
963
+ newTab: true,
964
+ position: 'end'
965
+ }
966
+ }
967
+ } },
968
+ react_1.default.createElement(Buttons_1.ButtonGhost, { icon: "Info" }))),
969
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
970
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "Link at start"),
971
+ react_1.default.createElement(Tooltip_1.default, { primaryContent: {
972
+ layout: 'TooltipText',
973
+ props: {
974
+ text: 'for more information about settings.',
975
+ link: {
976
+ text: 'Click here',
977
+ href: 'https://example.com',
978
+ newTab: true,
979
+ position: 'start'
980
+ }
981
+ }
982
+ } },
983
+ react_1.default.createElement(Buttons_1.ButtonTertiary, { value: "Link at Start" }))),
984
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
985
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "Link only"),
986
+ react_1.default.createElement(Tooltip_1.default, { primaryContent: {
987
+ layout: 'TooltipText',
988
+ props: {
989
+ link: {
990
+ text: 'View Documentation',
991
+ href: 'https://example.com/docs',
992
+ newTab: true
993
+ }
994
+ }
995
+ } },
996
+ react_1.default.createElement(Buttons_1.ButtonGhost, { icon: "Link" }))),
997
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
998
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "No underline (custom style)"),
999
+ react_1.default.createElement(Tooltip_1.default, { primaryContent: {
1000
+ layout: 'TooltipText',
1001
+ props: {
1002
+ text: 'Check out our',
1003
+ link: {
1004
+ text: 'API Reference',
1005
+ href: 'https://example.com/api',
1006
+ newTab: true,
1007
+ position: 'end'
1008
+ },
1009
+ linkStyle: { textDecoration: 'none' }
1010
+ }
1011
+ } },
1012
+ react_1.default.createElement(Buttons_1.ButtonSecondary, { value: "No Underline" }))),
1013
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
1014
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "Heading with link"),
1015
+ react_1.default.createElement(Tooltip_1.default, { primaryContent: {
1016
+ layout: 'TooltipHeading',
1017
+ props: {
1018
+ blocks: [
1019
+ {
1020
+ heading: 'Quick Actions',
1021
+ link: { text: 'View all', href: 'https://example.com/actions', newTab: true }
1022
+ }
1023
+ ]
1024
+ }
1025
+ } },
1026
+ react_1.default.createElement(Buttons_1.ButtonPrimary, { value: "Heading + Link" }))),
1027
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
1028
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "Multiple headings with links"),
1029
+ react_1.default.createElement(Tooltip_1.default, { primaryContent: {
1030
+ layout: 'TooltipHeading',
1031
+ props: {
1032
+ blocks: [
1033
+ {
1034
+ heading: 'Documentation',
1035
+ link: { text: 'Read docs', href: 'https://example.com/docs', newTab: true }
1036
+ },
1037
+ {
1038
+ heading: 'Support',
1039
+ link: { text: 'Get help', href: 'https://example.com/support', newTab: true }
1040
+ }
1041
+ ]
1042
+ }
1043
+ } },
1044
+ react_1.default.createElement(Buttons_1.ButtonTertiary, { value: "Multiple Headings" })))),
1045
+ react_1.default.createElement("h3", { style: { marginBottom: '1rem', fontSize: '16px', fontWeight: 600 } }, "Link Styles"),
1046
+ react_1.default.createElement("div", { style: {
1047
+ display: 'flex',
1048
+ flexWrap: 'wrap',
1049
+ gap: '24px',
1050
+ marginBottom: '3rem',
1051
+ } },
1052
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
1053
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "Default (underline)"),
1054
+ react_1.default.createElement(Tooltip_1.default, { primaryContent: {
1055
+ layout: 'TooltipText',
1056
+ props: {
1057
+ link: {
1058
+ text: 'Default Link Style',
1059
+ href: 'https://example.com',
1060
+ newTab: true
1061
+ }
1062
+ }
1063
+ } },
1064
+ react_1.default.createElement(Buttons_1.ButtonPrimary, { value: "Default" }))),
1065
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
1066
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "No underline"),
1067
+ react_1.default.createElement(Tooltip_1.default, { primaryContent: {
1068
+ layout: 'TooltipText',
1069
+ props: {
1070
+ link: {
1071
+ text: 'No Underline Link',
1072
+ href: 'https://example.com',
1073
+ newTab: true
1074
+ },
1075
+ linkStyle: { textDecoration: 'none' }
1076
+ }
1077
+ } },
1078
+ react_1.default.createElement(Buttons_1.ButtonSecondary, { value: "No Underline" }))),
1079
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
1080
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "Custom color"),
1081
+ react_1.default.createElement(Tooltip_1.default, { primaryContent: {
1082
+ layout: 'TooltipText',
1083
+ props: {
1084
+ text: 'Visit our',
1085
+ link: {
1086
+ text: 'Help Center',
1087
+ href: 'https://example.com/help',
1088
+ newTab: true,
1089
+ position: 'end'
1090
+ },
1091
+ linkStyle: { color: '#90caf9' }
1092
+ }
1093
+ } },
1094
+ react_1.default.createElement(Buttons_1.ButtonTertiary, { value: "Custom Color" }))),
1095
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
1096
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "Bold link"),
1097
+ react_1.default.createElement(Tooltip_1.default, { primaryContent: {
1098
+ layout: 'TooltipText',
1099
+ props: {
1100
+ text: 'Read the',
1101
+ link: {
1102
+ text: 'Terms of Service',
1103
+ href: 'https://example.com/terms',
1104
+ newTab: true,
1105
+ position: 'end'
1106
+ },
1107
+ linkStyle: { fontWeight: 600 }
1108
+ }
1109
+ } },
1110
+ react_1.default.createElement(Buttons_1.ButtonGhost, { icon: "FileText" })))),
1111
+ react_1.default.createElement("h3", { style: { marginBottom: '1rem', fontSize: '16px', fontWeight: 600 } }, "Blocks with Links"),
1112
+ react_1.default.createElement("div", { style: {
1113
+ display: 'flex',
1114
+ flexWrap: 'wrap',
1115
+ gap: '24px',
1116
+ marginBottom: '3rem',
1117
+ } },
1118
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
1119
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "Multiple blocks with links"),
1120
+ react_1.default.createElement(Tooltip_1.default, { primaryContent: {
1121
+ layout: 'TooltipHeading',
1122
+ props: {
1123
+ blocks: [
1124
+ {
1125
+ heading: 'Getting Started',
1126
+ text: 'Learn the basics of our platform.',
1127
+ link: { text: 'Tutorial', href: 'https://example.com/tutorial', newTab: true }
1128
+ },
1129
+ {
1130
+ heading: 'Advanced Features',
1131
+ text: 'Explore powerful capabilities.',
1132
+ link: { text: 'Learn more', href: 'https://example.com/advanced', newTab: true }
1133
+ },
1134
+ {
1135
+ link: { text: 'Full Documentation', href: 'https://example.com/docs', newTab: true }
1136
+ }
1137
+ ]
1138
+ }
1139
+ } },
1140
+ react_1.default.createElement(Buttons_1.ButtonPrimary, { value: "Full Example" }))),
1141
+ react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '8px', alignItems: 'center' } },
1142
+ react_1.default.createElement("span", { style: { fontSize: '12px', color: '#666' } }, "Help tooltip pattern"),
1143
+ react_1.default.createElement(Tooltip_1.default, { trigger: "click", primaryContent: {
1144
+ layout: 'TooltipHeading',
1145
+ props: {
1146
+ blocks: [
1147
+ {
1148
+ heading: 'What is this field?',
1149
+ text: 'This field accepts a unique identifier for your record.'
1150
+ },
1151
+ {
1152
+ text: 'The ID must be alphanumeric and between 3-20 characters.'
1153
+ },
1154
+ {
1155
+ link: { text: 'See naming conventions', href: 'https://example.com/help', newTab: true }
1156
+ }
1157
+ ]
1158
+ }
1159
+ } },
1160
+ react_1.default.createElement(Buttons_1.ButtonGhost, { icon: "Question" })))),
1161
+ react_1.default.createElement("h3", { style: { marginBottom: '1rem', fontSize: '16px', fontWeight: 600 } }, "Usage Examples"),
1162
+ react_1.default.createElement("pre", { style: {
1163
+ backgroundColor: '#f5f5f5',
1164
+ padding: '16px',
1165
+ borderRadius: '8px',
1166
+ fontSize: '13px',
1167
+ overflow: 'auto',
1168
+ } }, "// Multiple blocks with headings and text\n<Tooltip\n primaryContent={{\n layout: 'TooltipHeading',\n props: {\n blocks: [\n { heading: 'Section 1', text: 'Description for section 1' },\n { heading: 'Section 2', text: 'Description for section 2' },\n { text: 'Just a paragraph without heading' },\n ]\n }\n }}\n>\n <Button>Hover me</Button>\n</Tooltip>\n\n// Text with hyperlink\n<Tooltip\n primaryContent={{\n layout: 'TooltipText',\n props: {\n text: 'Learn more about this feature',\n link: {\n text: 'Read docs',\n href: 'https://example.com',\n newTab: true,\n position: 'end' // or 'start'\n }\n }\n }}\n>\n <Button>With Link</Button>\n</Tooltip>\n\n// Link only (no text)\n<Tooltip\n primaryContent={{\n layout: 'TooltipText',\n props: {\n link: {\n text: 'View Documentation',\n href: 'https://example.com',\n newTab: true\n }\n }\n }}\n>\n <Button>Link Only</Button>\n</Tooltip>")));
1169
+ };
1170
+ exports.AdvancedLayouts = AdvancedLayouts;
1171
+ exports.AdvancedLayouts.parameters = {
1172
+ controls: { disable: true }
1173
+ };