@cratis/components 1.8.2 → 1.9.1

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 (60) hide show
  1. package/dist/cjs/CommandDialog/CommandStepper.js +6 -0
  2. package/dist/cjs/CommandDialog/CommandStepper.js.map +1 -1
  3. package/dist/cjs/Toolbar/Toolbar.css +105 -2
  4. package/dist/cjs/Toolbar/ToolbarButton.js +10 -3
  5. package/dist/cjs/Toolbar/ToolbarButton.js.map +1 -1
  6. package/dist/cjs/Toolbar/ToolbarContext.js.map +1 -1
  7. package/dist/cjs/Toolbar/ToolbarFolder.js +12 -7
  8. package/dist/cjs/Toolbar/ToolbarFolder.js.map +1 -1
  9. package/dist/cjs/Toolbar/ToolbarFolderContext.js +20 -0
  10. package/dist/cjs/Toolbar/ToolbarFolderContext.js.map +1 -0
  11. package/dist/cjs/Toolbar/ToolbarGroup.js +102 -0
  12. package/dist/cjs/Toolbar/ToolbarGroup.js.map +1 -0
  13. package/dist/cjs/Toolbar/ToolbarSection.js +44 -5
  14. package/dist/cjs/Toolbar/ToolbarSection.js.map +1 -1
  15. package/dist/cjs/Toolbar/ToolbarSlot.js +125 -0
  16. package/dist/cjs/Toolbar/ToolbarSlot.js.map +1 -0
  17. package/dist/cjs/Toolbar/index.js +6 -0
  18. package/dist/cjs/Toolbar/index.js.map +1 -1
  19. package/dist/cjs/tailwind-utilities.css +12 -0
  20. package/dist/esm/CommandDialog/CommandStepper.d.ts.map +1 -1
  21. package/dist/esm/CommandDialog/CommandStepper.js +6 -0
  22. package/dist/esm/CommandDialog/CommandStepper.js.map +1 -1
  23. package/dist/esm/Toolbar/Toolbar.css +105 -2
  24. package/dist/esm/Toolbar/Toolbar.stories.d.ts +6 -1
  25. package/dist/esm/Toolbar/Toolbar.stories.d.ts.map +1 -1
  26. package/dist/esm/Toolbar/Toolbar.stories.js +69 -16
  27. package/dist/esm/Toolbar/Toolbar.stories.js.map +1 -1
  28. package/dist/esm/Toolbar/ToolbarButton.d.ts +2 -2
  29. package/dist/esm/Toolbar/ToolbarButton.d.ts.map +1 -1
  30. package/dist/esm/Toolbar/ToolbarButton.js +11 -4
  31. package/dist/esm/Toolbar/ToolbarButton.js.map +1 -1
  32. package/dist/esm/Toolbar/ToolbarContext.d.ts +1 -0
  33. package/dist/esm/Toolbar/ToolbarContext.d.ts.map +1 -1
  34. package/dist/esm/Toolbar/ToolbarContext.js.map +1 -1
  35. package/dist/esm/Toolbar/ToolbarFolder.d.ts +4 -2
  36. package/dist/esm/Toolbar/ToolbarFolder.d.ts.map +1 -1
  37. package/dist/esm/Toolbar/ToolbarFolder.js +13 -8
  38. package/dist/esm/Toolbar/ToolbarFolder.js.map +1 -1
  39. package/dist/esm/Toolbar/ToolbarFolderContext.d.ts +4 -0
  40. package/dist/esm/Toolbar/ToolbarFolderContext.d.ts.map +1 -0
  41. package/dist/esm/Toolbar/ToolbarFolderContext.js +17 -0
  42. package/dist/esm/Toolbar/ToolbarFolderContext.js.map +1 -0
  43. package/dist/esm/Toolbar/ToolbarGroup.d.ts +8 -0
  44. package/dist/esm/Toolbar/ToolbarGroup.d.ts.map +1 -0
  45. package/dist/esm/Toolbar/ToolbarGroup.js +100 -0
  46. package/dist/esm/Toolbar/ToolbarGroup.js.map +1 -0
  47. package/dist/esm/Toolbar/ToolbarSection.d.ts.map +1 -1
  48. package/dist/esm/Toolbar/ToolbarSection.js +45 -6
  49. package/dist/esm/Toolbar/ToolbarSection.js.map +1 -1
  50. package/dist/esm/Toolbar/ToolbarSlot.d.ts +13 -0
  51. package/dist/esm/Toolbar/ToolbarSlot.d.ts.map +1 -0
  52. package/dist/esm/Toolbar/ToolbarSlot.js +121 -0
  53. package/dist/esm/Toolbar/ToolbarSlot.js.map +1 -0
  54. package/dist/esm/Toolbar/index.d.ts +5 -0
  55. package/dist/esm/Toolbar/index.d.ts.map +1 -1
  56. package/dist/esm/Toolbar/index.js +2 -0
  57. package/dist/esm/Toolbar/index.js.map +1 -1
  58. package/dist/esm/tailwind-utilities.css +12 -0
  59. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  60. package/package.json +2 -2
@@ -0,0 +1,125 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+
6
+ /** Stable empty snapshot returned when a slot name has no registered content. */
7
+ const _emptySnapshot = [];
8
+ /**
9
+ * Registry for named toolbar slot entries.
10
+ * Maintained outside React state so slot registrations never re-render the provider.
11
+ */
12
+ class ToolbarSlotRegistry {
13
+ _slots = new Map();
14
+ _snapshots = new Map();
15
+ _subscribers = new Set();
16
+ /**
17
+ * Register or update a slot entry.
18
+ * Notifies subscribers only when the content reference or order actually changes.
19
+ */
20
+ register(slotName, id, content, order) {
21
+ if (!this._slots.has(slotName)) {
22
+ this._slots.set(slotName, new Map());
23
+ }
24
+ const slotMap = this._slots.get(slotName);
25
+ const previous = slotMap.get(id);
26
+ if (previous?.content === content && previous?.order === order)
27
+ return;
28
+ slotMap.set(id, { content, order });
29
+ this._recompute(slotName);
30
+ this._notify();
31
+ }
32
+ /** Remove a slot entry and notify subscribers. */
33
+ unregister(slotName, id) {
34
+ const slotMap = this._slots.get(slotName);
35
+ if (!slotMap?.has(id))
36
+ return;
37
+ slotMap.delete(id);
38
+ this._recompute(slotName);
39
+ this._notify();
40
+ }
41
+ /** Subscribe to any slot change. Returns an unsubscribe function. */
42
+ subscribe(fn) {
43
+ this._subscribers.add(fn);
44
+ return () => this._subscribers.delete(fn);
45
+ }
46
+ /**
47
+ * Returns a stable snapshot of sorted slot contents for the given slot name.
48
+ * The reference only changes when the slot set actually changes.
49
+ */
50
+ getSnapshot(slotName) {
51
+ return this._snapshots.get(slotName) ?? _emptySnapshot;
52
+ }
53
+ _recompute(slotName) {
54
+ const slotMap = this._slots.get(slotName);
55
+ if (!slotMap || slotMap.size === 0) {
56
+ this._snapshots.delete(slotName);
57
+ return;
58
+ }
59
+ this._snapshots.set(slotName, [...slotMap.values()]
60
+ .sort((a, b) => a.order - b.order)
61
+ .map(entry => entry.content));
62
+ }
63
+ _notify() {
64
+ this._subscribers.forEach(fn => fn());
65
+ }
66
+ }
67
+ const ToolbarSlotContext = React.createContext(null);
68
+ /**
69
+ * Provides the toolbar slot registry to the component tree.
70
+ *
71
+ * Mount once above both the toolbar and the components that fill slots.
72
+ * Each provider creates an isolated registry — nesting providers creates isolated scopes.
73
+ */
74
+ const ToolbarSlotProvider = ({ children }) => {
75
+ const [registry] = React.useState(() => new ToolbarSlotRegistry());
76
+ return jsxRuntime.jsx(ToolbarSlotContext.Provider, { value: registry, children: children });
77
+ };
78
+ /**
79
+ * Returns the sorted slot contents for a given `slotName` as a stable array.
80
+ * Returns an empty array when no {@link ToolbarSlotProvider} is present or when the slot has no content.
81
+ *
82
+ * Suitable for direct use inside components that host a slot (e.g. {@link ToolbarGroup}).
83
+ */
84
+ const useToolbarSlot = (slotName) => {
85
+ const registry = React.useContext(ToolbarSlotContext);
86
+ const subscribe = React.useCallback((fn) => {
87
+ if (!registry)
88
+ return () => { };
89
+ return registry.subscribe(fn);
90
+ }, [registry]);
91
+ const getSnapshot = React.useCallback(() => registry?.getSnapshot(slotName) ?? _emptySnapshot, [registry, slotName]);
92
+ return React.useSyncExternalStore(subscribe, getSnapshot);
93
+ };
94
+ /**
95
+ * Teleports its children into the named toolbar slot without prop drilling.
96
+ * Renders nothing itself — place it anywhere inside a {@link ToolbarSlotProvider} tree.
97
+ *
98
+ * The nearest {@link ToolbarGroup} or {@link ToolbarContext} with a matching `slotName`
99
+ * will render the content. Use {@link ToolbarSlotProps.order} to control position relative to
100
+ * other {@link ToolbarSlot} entries in the same slot.
101
+ *
102
+ * @example
103
+ * ```tsx
104
+ * // In a feature component, inject a button into the 'canvas-tools' slot:
105
+ * <ToolbarSlot slotName="canvas-tools" order={10}>
106
+ * <ToolbarButton icon="pi pi-star" title="Favorite" />
107
+ * </ToolbarSlot>
108
+ * ```
109
+ */
110
+ const ToolbarSlot = ({ slotName, order = 0, children }) => {
111
+ const id = React.useId();
112
+ const registry = React.useContext(ToolbarSlotContext);
113
+ // Re-register on every render so fresh closures are always captured.
114
+ // The registry skips notification when the content reference hasn't changed.
115
+ React.useLayoutEffect(() => {
116
+ registry?.register(slotName, id, children, order);
117
+ });
118
+ React.useEffect(() => () => registry?.unregister(slotName, id), [id, registry, slotName]);
119
+ return null;
120
+ };
121
+
122
+ exports.ToolbarSlot = ToolbarSlot;
123
+ exports.ToolbarSlotProvider = ToolbarSlotProvider;
124
+ exports.useToolbarSlot = useToolbarSlot;
125
+ //# sourceMappingURL=ToolbarSlot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolbarSlot.js","sources":["../../../Toolbar/ToolbarSlot.tsx"],"sourcesContent":[null],"names":["createContext","useState","_jsx","useContext","useCallback","useSyncExternalStore","useId","useLayoutEffect","useEffect"],"mappings":"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"}
@@ -3,10 +3,12 @@
3
3
  var Toolbar = require('./Toolbar.js');
4
4
  var ToolbarButton = require('./ToolbarButton.js');
5
5
  var ToolbarContext = require('./ToolbarContext.js');
6
+ var ToolbarGroup = require('./ToolbarGroup.js');
6
7
  var ToolbarSection = require('./ToolbarSection.js');
7
8
  var ToolbarSeparator = require('./ToolbarSeparator.js');
8
9
  var ToolbarFanOutItem = require('./ToolbarFanOutItem.js');
9
10
  var ToolbarFolder = require('./ToolbarFolder.js');
11
+ var ToolbarSlot = require('./ToolbarSlot.js');
10
12
 
11
13
  // Copyright (c) Cratis. All rights reserved.
12
14
  // Licensed under the MIT license. See LICENSE file in the project root for full license information.
@@ -14,8 +16,12 @@ var ToolbarFolder = require('./ToolbarFolder.js');
14
16
  exports.Toolbar = Toolbar.Toolbar;
15
17
  exports.ToolbarButton = ToolbarButton.ToolbarButton;
16
18
  exports.ToolbarContext = ToolbarContext.ToolbarContext;
19
+ exports.ToolbarGroup = ToolbarGroup.ToolbarGroup;
17
20
  exports.ToolbarSection = ToolbarSection.ToolbarSection;
18
21
  exports.ToolbarSeparator = ToolbarSeparator.ToolbarSeparator;
19
22
  exports.ToolbarFanOutItem = ToolbarFanOutItem.ToolbarFanOutItem;
20
23
  exports.ToolbarFolder = ToolbarFolder.ToolbarFolder;
24
+ exports.ToolbarSlot = ToolbarSlot.ToolbarSlot;
25
+ exports.ToolbarSlotProvider = ToolbarSlot.ToolbarSlotProvider;
26
+ exports.useToolbarSlot = ToolbarSlot.useToolbarSlot;
21
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../Toolbar/index.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;AAAA;AACA;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../Toolbar/index.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;AAAA;AACA;;;;;;;;;;;;;;"}
@@ -335,6 +335,9 @@
335
335
  .block {
336
336
  display: block;
337
337
  }
338
+ .contents {
339
+ display: contents;
340
+ }
338
341
  .flex {
339
342
  display: flex;
340
343
  }
@@ -371,6 +374,9 @@
371
374
  .flex-1 {
372
375
  flex: 1;
373
376
  }
377
+ .flex-shrink-0 {
378
+ flex-shrink: 0;
379
+ }
374
380
  .flex-grow {
375
381
  flex-grow: 1;
376
382
  }
@@ -409,6 +415,9 @@
409
415
  .justify-center {
410
416
  justify-content: center;
411
417
  }
418
+ .justify-start {
419
+ justify-content: flex-start;
420
+ }
412
421
  .gap-1 {
413
422
  gap: calc(var(--spacing) * 1);
414
423
  }
@@ -424,6 +433,9 @@
424
433
  .gap-6 {
425
434
  gap: calc(var(--spacing) * 6);
426
435
  }
436
+ .gap-8 {
437
+ gap: calc(var(--spacing) * 8);
438
+ }
427
439
  .space-y-2 {
428
440
  :where(& > :not(:last-child)) {
429
441
  --tw-space-y-reverse: 0;
@@ -1 +1 @@
1
- {"version":3,"file":"CommandStepper.d.ts","sourceRoot":"","sources":["../../../CommandDialog/CommandStepper.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAC5D,OAAO,EAA2B,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGhF,OAAO,EAKH,KAAK,gBAAgB,EACxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,sBAAsB,CAAC;AAM9B,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,YAAY,EACrD,aAAa,GAAG,gBAAgB,GAAG,QAAQ,GAAG,cAAc,GAAG,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,WAAW,GAAG,UAAU,CACnH,CAAC;AAEF,MAAM,WAAW,0BAA2B,SAAQ,yBAAyB;IAEzE,UAAU,EAAE,MAAM,CAAC;IAEnB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAE1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAEjD,oBAAoB,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IAE3D,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAErD,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IAE/C,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,mBAAmB,CAAC,QAAQ,SAAS,MAAM,EAAE,SAAS,GAAG,MAAM,CAC5E,SAAQ,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAC3D,IAAI,CAAC,0BAA0B,EAAE,YAAY,GAAG,cAAc,GAAG,oBAAoB,GAAG,sBAAsB,GAAG,eAAe,GAAG,cAAc,GAAG,kBAAkB,GAAG,UAAU,CAAC;IAExL,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC9B;AAmDD,eAAO,MAAM,qBAAqB,GAAI,+TA0BnC,0BAA0B,4CA2I5B,CAAC;AAuGF,eAAO,MAAM,cAAc,GAAI,QAAQ,SAAS,MAAM,GAAG,MAAM,EAAE,SAAS,GAAG,MAAM,EAC/E,OAAO,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC,4CAmDlD,CAAC"}
1
+ {"version":3,"file":"CommandStepper.d.ts","sourceRoot":"","sources":["../../../CommandDialog/CommandStepper.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAC5D,OAAO,EAA2B,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGhF,OAAO,EAKH,KAAK,gBAAgB,EACxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,sBAAsB,CAAC;AAM9B,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,YAAY,EACrD,aAAa,GAAG,gBAAgB,GAAG,QAAQ,GAAG,cAAc,GAAG,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,WAAW,GAAG,UAAU,CACnH,CAAC;AAEF,MAAM,WAAW,0BAA2B,SAAQ,yBAAyB;IAEzE,UAAU,EAAE,MAAM,CAAC;IAEnB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAE1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAEjD,oBAAoB,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IAE3D,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAErD,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IAE/C,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,mBAAmB,CAAC,QAAQ,SAAS,MAAM,EAAE,SAAS,GAAG,MAAM,CAC5E,SAAQ,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,EAC3D,IAAI,CAAC,0BAA0B,EAAE,YAAY,GAAG,cAAc,GAAG,oBAAoB,GAAG,sBAAsB,GAAG,eAAe,GAAG,cAAc,GAAG,kBAAkB,GAAG,UAAU,CAAC;IAExL,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC9B;AAmDD,eAAO,MAAM,qBAAqB,GAAI,+TA0BnC,0BAA0B,4CAmJ5B,CAAC;AAuGF,eAAO,MAAM,cAAc,GAAI,QAAQ,SAAS,MAAM,GAAG,MAAM,EAAE,SAAS,GAAG,MAAM,EAC/E,OAAO,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC,4CAmDlD,CAAC"}
@@ -101,6 +101,9 @@ const CommandStepperContent = ({ activeStep, visitedSteps, children, onActiveSte
101
101
  onChangeStep?.(event);
102
102
  const index = event.index;
103
103
  if (typeof index === 'number') {
104
+ if (index > activeStep && isCurrentStepInvalid) {
105
+ return;
106
+ }
104
107
  if (index > activeStep) {
105
108
  onVisitedStepsChange?.(new Set(visitedSteps).add(activeStep));
106
109
  }
@@ -111,6 +114,9 @@ const CommandStepperContent = ({ activeStep, visitedSteps, children, onActiveSte
111
114
  onActiveStepChange?.(Math.max(0, activeStep - 1));
112
115
  };
113
116
  const handleNext = () => {
117
+ if (isCurrentStepInvalid) {
118
+ return;
119
+ }
114
120
  onVisitedStepsChange?.(new Set(visitedSteps).add(activeStep));
115
121
  onActiveStepChange?.(Math.min(stepCount - 1, activeStep + 1));
116
122
  };
@@ -1 +1 @@
1
- {"version":3,"file":"CommandStepper.js","sources":["../../../CommandDialog/CommandStepper.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs","PrimeStepper"],"mappings":"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"}
1
+ {"version":3,"file":"CommandStepper.js","sources":["../../../CommandDialog/CommandStepper.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs","PrimeStepper"],"mappings":"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"}
@@ -60,9 +60,10 @@
60
60
  /*
61
61
  * The section is a fixed-size container that transitions smoothly between
62
62
  * the dimensions required by each context.
63
- * overflow is intentionally left as visible so that absolutely-positioned
63
+ * Overflow stays visible in the settled state so absolutely-positioned
64
64
  * children (e.g. fan-out panels) can extend beyond the section's bounds.
65
- * Inactive contexts are hidden via opacity/pointer-events, not overflow clipping.
65
+ * During a context resize transition, a temporary modifier clips incoming
66
+ * content so buttons do not float outside the current toolbar bounds.
66
67
  */
67
68
  .toolbar-section {
68
69
  position: relative;
@@ -71,6 +72,10 @@
71
72
  height 0.35s cubic-bezier(0.4, 0, 0.2, 1);
72
73
  }
73
74
 
75
+ .toolbar-section--transitioning {
76
+ overflow: hidden;
77
+ }
78
+
74
79
  /*
75
80
  * Every context is absolutely stacked at the top-left of the section.
76
81
  * Only the active one is visible; the others fade out and lose pointer events.
@@ -212,3 +217,101 @@
212
217
  opacity: 1;
213
218
  pointer-events: auto;
214
219
  }
220
+
221
+ /* List-mode folder panel — vertical stack instead of a grid */
222
+ .toolbar-folder-panel--list {
223
+ display: flex;
224
+ flex-direction: column;
225
+ min-width: 10rem;
226
+ }
227
+
228
+ /* ── Toolbar button — list mode ──────────────────────────────────────────── */
229
+
230
+ /*
231
+ * Inside a list-mode folder the button fills the available width and renders
232
+ * its icon and title label side by side, left-aligned.
233
+ */
234
+ .toolbar-button--list {
235
+ width: 100%;
236
+ justify-content: flex-start;
237
+ }
238
+
239
+ .toolbar-button__label {
240
+ font-size: 0.875rem;
241
+ font-weight: 500;
242
+ color: inherit;
243
+ white-space: nowrap;
244
+ }
245
+
246
+ /* ── Toolbar group ───────────────────────────────────────────────────────── */
247
+
248
+ /*
249
+ * When a Toolbar contains ToolbarGroup children it becomes a transparent
250
+ * layout wrapper — each group renders as its own pill.
251
+ */
252
+ .toolbar:has(.toolbar-group) {
253
+ background: transparent;
254
+ border: none;
255
+ box-shadow: none;
256
+ padding: 0;
257
+ gap: 0.5rem;
258
+ }
259
+
260
+ /*
261
+ * Each ToolbarGroup is a self-contained pill that matches the visual style
262
+ * of a standalone Toolbar.
263
+ */
264
+ .toolbar-group {
265
+ background: var(--surface-card);
266
+ border: 1px solid var(--surface-border);
267
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
268
+ }
269
+
270
+
271
+ /* ── Toolbar slot transition (ToolbarGroup slot content) ─────────────────── */
272
+
273
+ /*
274
+ * Size-morphing container for slot content inside a ToolbarGroup.
275
+ * Mirrors the .toolbar-section transition parameters for visual consistency —
276
+ * the container resizes smoothly while content cross-fades.
277
+ */
278
+ .toolbar-slot-section {
279
+ position: relative;
280
+ overflow: hidden;
281
+ transition:
282
+ width 0.35s cubic-bezier(0.4, 0, 0.2, 1),
283
+ height 0.35s cubic-bezier(0.4, 0, 0.2, 1);
284
+ }
285
+
286
+ @keyframes toolbar-slot-fade-in {
287
+ from { opacity: 0; }
288
+ to { opacity: 1; }
289
+ }
290
+
291
+ @keyframes toolbar-slot-fade-out {
292
+ from { opacity: 1; }
293
+ to { opacity: 0; }
294
+ }
295
+
296
+ /*
297
+ * Incoming slot content — fades in on mount.
298
+ * Duration matches the toolbar-context opacity transition (0.2s ease).
299
+ */
300
+ .toolbar-slot-incoming {
301
+ position: absolute;
302
+ top: 0;
303
+ left: 0;
304
+ animation: toolbar-slot-fade-in 0.2s ease forwards;
305
+ }
306
+
307
+ /*
308
+ * Outgoing slot content — fades out, then React unmounts it after
309
+ * the animation completes.
310
+ */
311
+ .toolbar-slot-outgoing {
312
+ position: absolute;
313
+ top: 0;
314
+ left: 0;
315
+ animation: toolbar-slot-fade-out 0.2s ease forwards;
316
+ pointer-events: none;
317
+ }
@@ -5,7 +5,6 @@ export default meta;
5
5
  type Story = StoryObj<typeof Toolbar>;
6
6
  export declare const WithReactNodeIcons: Story;
7
7
  export declare const Default: Story;
8
- export declare const MultipleGroups: Story;
9
8
  export declare const WithActiveButton: Story;
10
9
  export declare const WithContexts: Story;
11
10
  export declare const WithSeparators: Story;
@@ -15,4 +14,10 @@ export declare const WithFolderOneButton: Story;
15
14
  export declare const WithFolderFourButtons: Story;
16
15
  export declare const WithFolderTwentyButtons: Story;
17
16
  export declare const DragAndDrop: Story;
17
+ export declare const WithGroups: Story;
18
+ export declare const WithFolderListMode: Story;
19
+ export declare const FolderGridVsList: Story;
20
+ export declare const WithSlotInGroup: Story;
21
+ export declare const WithSlotInContext: Story;
22
+ export declare const WithMultipleSlotContributors: Story;
18
23
  //# sourceMappingURL=Toolbar.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Toolbar.stories.d.ts","sourceRoot":"","sources":["../../../Toolbar/Toolbar.stories.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,OAAO,CAM9B,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,OAAO,CAAC,CAAC;AAgCtC,eAAO,MAAM,kBAAkB,EAAE,KAyChC,CAAC;AAGF,eAAO,MAAM,OAAO,EAAE,KAUrB,CAAC;AAGF,eAAO,MAAM,cAAc,EAAE,KAgB5B,CAAC;AAGF,eAAO,MAAM,gBAAgB,EAAE,KAqC9B,CAAC;AASF,eAAO,MAAM,YAAY,EAAE,KAoD1B,CAAC;AASF,eAAO,MAAM,cAAc,EAAE,KAW5B,CAAC;AAMF,eAAO,MAAM,OAAO,EAAE,KAwBrB,CAAC;AAQF,eAAO,MAAM,UAAU,EAAE,KA+CxB,CAAC;AAGF,eAAO,MAAM,mBAAmB,EAAE,KAUjC,CAAC;AAGF,eAAO,MAAM,qBAAqB,EAAE,KAYnC,CAAC;AAGF,eAAO,MAAM,uBAAuB,EAAE,KAYrC,CAAC;AAWF,eAAO,MAAM,WAAW,EAAE,KAgDzB,CAAC"}
1
+ {"version":3,"file":"Toolbar.stories.d.ts","sourceRoot":"","sources":["../../../Toolbar/Toolbar.stories.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,OAAO,CAM9B,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,OAAO,CAAC,CAAC;AAgCtC,eAAO,MAAM,kBAAkB,EAAE,KAyChC,CAAC;AAGF,eAAO,MAAM,OAAO,EAAE,KAUrB,CAAC;AAGF,eAAO,MAAM,gBAAgB,EAAE,KAqC9B,CAAC;AASF,eAAO,MAAM,YAAY,EAAE,KAoD1B,CAAC;AASF,eAAO,MAAM,cAAc,EAAE,KAW5B,CAAC;AAMF,eAAO,MAAM,OAAO,EAAE,KAwBrB,CAAC;AAQF,eAAO,MAAM,UAAU,EAAE,KA+CxB,CAAC;AAGF,eAAO,MAAM,mBAAmB,EAAE,KAUjC,CAAC;AAGF,eAAO,MAAM,qBAAqB,EAAE,KAYnC,CAAC;AAGF,eAAO,MAAM,uBAAuB,EAAE,KAYrC,CAAC;AAWF,eAAO,MAAM,WAAW,EAAE,KAgDzB,CAAC;AAWF,eAAO,MAAM,UAAU,EAAE,KAmBxB,CAAC;AAWF,eAAO,MAAM,kBAAkB,EAAE,KAahC,CAAC;AAKF,eAAO,MAAM,gBAAgB,EAAE,KA+B9B,CAAC;AAeF,eAAO,MAAM,eAAe,EAAE,KA+D7B,CAAC;AAUF,eAAO,MAAM,iBAAiB,EAAE,KA6E/B,CAAC;AAMF,eAAO,MAAM,4BAA4B,EAAE,KAsC1C,CAAC"}
@@ -1,12 +1,14 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState } from 'react';
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useMemo, useState } from 'react';
3
3
  import { Toolbar } from './Toolbar';
4
4
  import { ToolbarButton } from './ToolbarButton';
5
5
  import { ToolbarContext } from './ToolbarContext';
6
6
  import { ToolbarFanOutItem } from './ToolbarFanOutItem';
7
7
  import { ToolbarFolder } from './ToolbarFolder';
8
+ import { ToolbarGroup } from './ToolbarGroup';
8
9
  import { ToolbarSection } from './ToolbarSection';
9
10
  import { ToolbarSeparator } from './ToolbarSeparator';
11
+ import { ToolbarSlot, ToolbarSlotProvider } from './ToolbarSlot';
10
12
  const meta = {
11
13
  title: 'Components/Toolbar',
12
14
  component: Toolbar,
@@ -44,20 +46,17 @@ export const WithReactNodeIcons = {
44
46
  const StarIcon = () => (_jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', viewBox: '0 0 24 24', width: '20', height: '20', fill: 'currentColor', "aria-hidden": 'true', children: _jsx("path", { d: 'M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z' }) }));
45
47
  const TriangleIcon = () => (_jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', viewBox: '0 0 24 24', width: '20', height: '20', fill: 'currentColor', "aria-hidden": 'true', children: _jsx("path", { d: 'M12 2L2 22h20L12 2z' }) }));
46
48
  const PentagonIcon = () => (_jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', viewBox: '0 0 24 24', width: '20', height: '20', fill: 'currentColor', "aria-hidden": 'true', children: _jsx("path", { d: 'M12 2l9.5 6.9-3.6 11.1H6.1L2.5 8.9 12 2z' }) }));
47
- return (_jsxs(Toolbar, { children: [_jsx(ToolbarButton, { icon: _jsx(CircleIcon, {}), tooltip: 'Circle' }), _jsx(ToolbarButton, { icon: _jsx(SquareIcon, {}), tooltip: 'Rectangle' }), _jsxs(ToolbarFanOutItem, { icon: _jsx(StarIcon, {}), tooltip: 'More shapes', children: [_jsx(ToolbarButton, { icon: _jsx(TriangleIcon, {}), tooltip: 'Triangle' }), _jsx(ToolbarButton, { icon: _jsx(PentagonIcon, {}), tooltip: 'Pentagon' })] }), _jsx(ToolbarButton, { icon: 'pi pi-undo', tooltip: 'Undo' })] }));
49
+ return (_jsxs(Toolbar, { children: [_jsx(ToolbarButton, { icon: _jsx(CircleIcon, {}), title: 'Circle' }), _jsx(ToolbarButton, { icon: _jsx(SquareIcon, {}), title: 'Rectangle' }), _jsxs(ToolbarFanOutItem, { icon: _jsx(StarIcon, {}), tooltip: 'More shapes', children: [_jsx(ToolbarButton, { icon: _jsx(TriangleIcon, {}), title: 'Triangle' }), _jsx(ToolbarButton, { icon: _jsx(PentagonIcon, {}), title: 'Pentagon' })] }), _jsx(ToolbarButton, { icon: 'pi pi-undo', title: 'Undo' })] }));
48
50
  },
49
51
  };
50
52
  export const Default = {
51
- render: () => (_jsxs(Toolbar, { children: [_jsx(ToolbarButton, { icon: 'pi pi-arrow-up-left', tooltip: 'Select' }), _jsx(ToolbarButton, { icon: 'pi pi-clone', tooltip: 'Layers' }), _jsx(ToolbarButton, { icon: 'pi pi-circle', tooltip: 'Shapes' }), _jsx(ToolbarButton, { icon: 'pi pi-stop', tooltip: 'Rectangle' }), _jsx(ToolbarButton, { icon: 'pi pi-file', tooltip: 'Sticky note' })] })),
52
- };
53
- export const MultipleGroups = {
54
- render: () => (_jsxs("div", { className: 'flex flex-col gap-2', children: [_jsxs(Toolbar, { children: [_jsx(ToolbarButton, { icon: 'pi pi-arrow-up-left', tooltip: 'Select' }), _jsx(ToolbarButton, { icon: 'pi pi-clone', tooltip: 'Layers' }), _jsx(ToolbarButton, { icon: 'pi pi-circle', tooltip: 'Shapes' }), _jsx(ToolbarButton, { icon: 'pi pi-stop', tooltip: 'Rectangle' }), _jsx(ToolbarButton, { icon: 'pi pi-file', tooltip: 'Sticky note' })] }), _jsxs(Toolbar, { children: [_jsx(ToolbarButton, { icon: 'pi pi-undo', tooltip: 'Undo' }), _jsx(ToolbarButton, { icon: 'pi pi-refresh', tooltip: 'Redo' })] })] })),
53
+ render: () => (_jsxs(Toolbar, { children: [_jsx(ToolbarButton, { icon: 'pi pi-arrow-up-left', title: 'Select' }), _jsx(ToolbarButton, { icon: 'pi pi-clone', title: 'Layers' }), _jsx(ToolbarButton, { icon: 'pi pi-circle', title: 'Shapes' }), _jsx(ToolbarButton, { icon: 'pi pi-stop', title: 'Rectangle' }), _jsx(ToolbarButton, { icon: 'pi pi-file', title: 'Sticky note' })] })),
55
54
  };
56
55
  export const WithActiveButton = {
57
56
  render: () => {
58
57
  const ActiveDemo = () => {
59
58
  const [active, setActive] = useState('select');
60
- return (_jsxs(Toolbar, { children: [_jsx(ToolbarButton, { icon: 'pi pi-arrow-up-left', tooltip: 'Select', active: active === 'select', onClick: () => setActive('select') }), _jsx(ToolbarButton, { icon: 'pi pi-clone', tooltip: 'Layers', active: active === 'layers', onClick: () => setActive('layers') }), _jsx(ToolbarButton, { icon: 'pi pi-stop', tooltip: 'Rectangle', active: active === 'rectangle', onClick: () => setActive('rectangle') }), _jsx(ToolbarButton, { icon: 'pi pi-file', tooltip: 'Sticky note', active: active === 'sticky', onClick: () => setActive('sticky') })] }));
59
+ return (_jsxs(Toolbar, { children: [_jsx(ToolbarButton, { icon: 'pi pi-arrow-up-left', title: 'Select', active: active === 'select', onClick: () => setActive('select') }), _jsx(ToolbarButton, { icon: 'pi pi-clone', title: 'Layers', active: active === 'layers', onClick: () => setActive('layers') }), _jsx(ToolbarButton, { icon: 'pi pi-stop', title: 'Rectangle', active: active === 'rectangle', onClick: () => setActive('rectangle') }), _jsx(ToolbarButton, { icon: 'pi pi-file', title: 'Sticky note', active: active === 'sticky', onClick: () => setActive('sticky') })] }));
61
60
  };
62
61
  return _jsx(ActiveDemo, {});
63
62
  },
@@ -66,7 +65,7 @@ export const WithContexts = {
66
65
  render: () => {
67
66
  const WithContextsDemo = () => {
68
67
  const [currentContext, setCurrentContext] = useState('drawing');
69
- return (_jsxs("div", { className: 'flex flex-col items-center gap-6', children: [_jsxs(Toolbar, { children: [_jsx(ToolbarButton, { icon: 'pi pi-arrow-up-left', tooltip: 'Select' }), _jsxs(ToolbarSection, { activeContext: currentContext, children: [_jsxs(ToolbarContext, { name: 'drawing', children: [_jsx(ToolbarButton, { icon: 'pi pi-pencil', tooltip: 'Draw' }), _jsx(ToolbarButton, { icon: 'pi pi-stop', tooltip: 'Rectangle' }), _jsx(ToolbarButton, { icon: 'pi pi-circle', tooltip: 'Circle' }), _jsx(ToolbarButton, { icon: 'pi pi-minus', tooltip: 'Line' })] }), _jsxs(ToolbarContext, { name: 'text', children: [_jsx(ToolbarButton, { icon: 'pi pi-align-center', tooltip: 'Align Center' }), _jsx(ToolbarButton, { icon: 'pi pi-align-left', tooltip: 'Align Left' })] })] }), _jsx(ToolbarButton, { icon: 'pi pi-undo', tooltip: 'Undo' })] }), _jsxs("div", { className: 'flex gap-2', children: [_jsx("button", { type: 'button', onClick: () => setCurrentContext('drawing'), className: `px-3 py-1 rounded text-sm transition-colors ${currentContext === 'drawing'
68
+ return (_jsxs("div", { className: 'flex flex-col items-center gap-6', children: [_jsxs(Toolbar, { children: [_jsx(ToolbarButton, { icon: 'pi pi-arrow-up-left', title: 'Select' }), _jsxs(ToolbarSection, { activeContext: currentContext, children: [_jsxs(ToolbarContext, { name: 'drawing', children: [_jsx(ToolbarButton, { icon: 'pi pi-pencil', title: 'Draw' }), _jsx(ToolbarButton, { icon: 'pi pi-stop', title: 'Rectangle' }), _jsx(ToolbarButton, { icon: 'pi pi-circle', title: 'Circle' }), _jsx(ToolbarButton, { icon: 'pi pi-minus', title: 'Line' })] }), _jsxs(ToolbarContext, { name: 'text', children: [_jsx(ToolbarButton, { icon: 'pi pi-align-center', title: 'Align Center' }), _jsx(ToolbarButton, { icon: 'pi pi-align-left', title: 'Align Left' })] })] }), _jsx(ToolbarButton, { icon: 'pi pi-undo', title: 'Undo' })] }), _jsxs("div", { className: 'flex gap-2', children: [_jsx("button", { type: 'button', onClick: () => setCurrentContext('drawing'), className: `px-3 py-1 rounded text-sm transition-colors ${currentContext === 'drawing'
70
69
  ? 'bg-blue-600 text-white'
71
70
  : 'bg-gray-600 text-gray-200 hover:bg-gray-500'}`, children: "Drawing tools" }), _jsx("button", { type: 'button', onClick: () => setCurrentContext('text'), className: `px-3 py-1 rounded text-sm transition-colors ${currentContext === 'text'
72
71
  ? 'bg-blue-600 text-white'
@@ -76,7 +75,7 @@ export const WithContexts = {
76
75
  },
77
76
  };
78
77
  export const WithSeparators = {
79
- render: () => (_jsxs(Toolbar, { orientation: 'horizontal', children: [_jsx(ToolbarButton, { icon: 'pi pi-th-large', tooltip: 'Overview', tooltipPosition: 'bottom' }), _jsx(ToolbarSeparator, { orientation: 'horizontal' }), _jsx(ToolbarButton, { icon: 'pi pi-minus', tooltip: 'Zoom out', tooltipPosition: 'bottom' }), _jsx(ToolbarButton, { icon: 'pi pi-plus', tooltip: 'Zoom in', tooltipPosition: 'bottom' }), _jsx(ToolbarSeparator, { orientation: 'horizontal' }), _jsx(ToolbarButton, { icon: 'pi pi-question-circle', tooltip: 'Help', tooltipPosition: 'bottom' })] })),
78
+ render: () => (_jsxs(Toolbar, { orientation: 'horizontal', children: [_jsx(ToolbarButton, { icon: 'pi pi-th-large', title: 'Overview', tooltipPosition: 'bottom' }), _jsx(ToolbarSeparator, { orientation: 'horizontal' }), _jsx(ToolbarButton, { icon: 'pi pi-minus', title: 'Zoom out', tooltipPosition: 'bottom' }), _jsx(ToolbarButton, { icon: 'pi pi-plus', title: 'Zoom in', tooltipPosition: 'bottom' }), _jsx(ToolbarSeparator, { orientation: 'horizontal' }), _jsx(ToolbarButton, { icon: 'pi pi-question-circle', title: 'Help', tooltipPosition: 'bottom' })] })),
80
79
  };
81
80
  export const ZoomBar = {
82
81
  render: () => {
@@ -85,7 +84,7 @@ export const ZoomBar = {
85
84
  const zoomOut = () => setZoom(current => Math.max(50, current - 10));
86
85
  const zoomIn = () => setZoom(current => Math.min(300, current + 10));
87
86
  const resetZoom = () => setZoom(100);
88
- return (_jsxs(Toolbar, { orientation: 'horizontal', children: [_jsx(ToolbarButton, { icon: 'pi pi-th-large', tooltip: 'Overview', tooltipPosition: 'bottom' }), _jsx(ToolbarSeparator, { orientation: 'horizontal' }), _jsx(ToolbarButton, { icon: 'pi pi-minus', tooltip: 'Zoom out', tooltipPosition: 'bottom', onClick: zoomOut }), _jsx(ToolbarButton, { text: `${zoom}%`, tooltip: 'Reset zoom', tooltipPosition: 'bottom', onClick: resetZoom }), _jsx(ToolbarButton, { icon: 'pi pi-plus', tooltip: 'Zoom in', tooltipPosition: 'bottom', onClick: zoomIn }), _jsx(ToolbarSeparator, { orientation: 'horizontal' }), _jsx(ToolbarButton, { icon: 'pi pi-question-circle', tooltip: 'Help', tooltipPosition: 'bottom' })] }));
87
+ return (_jsxs(Toolbar, { orientation: 'horizontal', children: [_jsx(ToolbarButton, { icon: 'pi pi-th-large', title: 'Overview', tooltipPosition: 'bottom' }), _jsx(ToolbarSeparator, { orientation: 'horizontal' }), _jsx(ToolbarButton, { icon: 'pi pi-minus', title: 'Zoom out', tooltipPosition: 'bottom', onClick: zoomOut }), _jsx(ToolbarButton, { text: `${zoom}%`, title: 'Reset zoom', tooltipPosition: 'bottom', onClick: resetZoom }), _jsx(ToolbarButton, { icon: 'pi pi-plus', title: 'Zoom in', tooltipPosition: 'bottom', onClick: zoomIn }), _jsx(ToolbarSeparator, { orientation: 'horizontal' }), _jsx(ToolbarButton, { icon: 'pi pi-question-circle', title: 'Help', tooltipPosition: 'bottom' })] }));
89
88
  };
90
89
  return _jsx(ZoomBarDemo, {});
91
90
  },
@@ -94,26 +93,26 @@ export const WithFanOut = {
94
93
  render: () => {
95
94
  const WithFanOutDemo = () => {
96
95
  const [activeTool, setActiveTool] = useState('select');
97
- return (_jsxs("div", { className: 'flex flex-col gap-2', children: [_jsxs(Toolbar, { children: [_jsx(ToolbarButton, { icon: 'pi pi-arrow-up-left', tooltip: 'Select', active: activeTool === 'select', onClick: () => setActiveTool('select') }), _jsxs(ToolbarFanOutItem, { icon: 'pi pi-th-large', tooltip: 'Shapes', children: [_jsx(ToolbarButton, { icon: 'pi pi-th-large', tooltip: 'Shapes', onClick: () => setActiveTool('shapes') }), _jsx(ToolbarButton, { icon: 'pi pi-exclamation-circle', tooltip: 'Info', onClick: () => setActiveTool('info') }), _jsx(ToolbarButton, { icon: 'pi pi-eye', tooltip: 'Preview', onClick: () => setActiveTool('preview') }), _jsx(ToolbarButton, { icon: 'pi pi-cog', tooltip: 'Settings', onClick: () => setActiveTool('settings') }), _jsx(ToolbarButton, { icon: 'pi pi-external-link', tooltip: 'Open', onClick: () => setActiveTool('open') })] }), _jsx(ToolbarButton, { icon: 'pi pi-stop', tooltip: 'Rectangle', active: activeTool === 'rectangle', onClick: () => setActiveTool('rectangle') }), _jsx(ToolbarButton, { icon: 'pi pi-file', tooltip: 'Sticky note', active: activeTool === 'sticky', onClick: () => setActiveTool('sticky') })] }), _jsxs(Toolbar, { children: [_jsx(ToolbarButton, { icon: 'pi pi-undo', tooltip: 'Undo' }), _jsx(ToolbarButton, { icon: 'pi pi-refresh', tooltip: 'Redo' })] })] }));
96
+ return (_jsxs("div", { className: 'flex flex-col gap-2', children: [_jsxs(Toolbar, { children: [_jsx(ToolbarButton, { icon: 'pi pi-arrow-up-left', title: 'Select', active: activeTool === 'select', onClick: () => setActiveTool('select') }), _jsxs(ToolbarFanOutItem, { icon: 'pi pi-th-large', tooltip: 'Shapes', children: [_jsx(ToolbarButton, { icon: 'pi pi-th-large', title: 'Shapes', onClick: () => setActiveTool('shapes') }), _jsx(ToolbarButton, { icon: 'pi pi-exclamation-circle', title: 'Info', onClick: () => setActiveTool('info') }), _jsx(ToolbarButton, { icon: 'pi pi-eye', title: 'Preview', onClick: () => setActiveTool('preview') }), _jsx(ToolbarButton, { icon: 'pi pi-cog', title: 'Settings', onClick: () => setActiveTool('settings') }), _jsx(ToolbarButton, { icon: 'pi pi-external-link', title: 'Open', onClick: () => setActiveTool('open') })] }), _jsx(ToolbarButton, { icon: 'pi pi-stop', title: 'Rectangle', active: activeTool === 'rectangle', onClick: () => setActiveTool('rectangle') }), _jsx(ToolbarButton, { icon: 'pi pi-file', title: 'Sticky note', active: activeTool === 'sticky', onClick: () => setActiveTool('sticky') })] }), _jsxs(Toolbar, { children: [_jsx(ToolbarButton, { icon: 'pi pi-undo', title: 'Undo' }), _jsx(ToolbarButton, { icon: 'pi pi-refresh', title: 'Redo' })] })] }));
98
97
  };
99
98
  return _jsx(WithFanOutDemo, {});
100
99
  },
101
100
  };
102
101
  export const WithFolderOneButton = {
103
- render: () => (_jsxs(Toolbar, { children: [_jsx(ToolbarButton, { icon: 'pi pi-arrow-up-left', tooltip: 'Select' }), _jsx(ToolbarFolder, { icon: 'pi pi-th-large', tooltip: 'Folder (1 item)', children: _jsx(ToolbarButton, { icon: folderIcons[0], tooltip: 'Action 1' }) }), _jsx(ToolbarButton, { icon: 'pi pi-stop', tooltip: 'Rectangle' })] })),
102
+ render: () => (_jsxs(Toolbar, { children: [_jsx(ToolbarButton, { icon: 'pi pi-arrow-up-left', title: 'Select' }), _jsx(ToolbarFolder, { icon: 'pi pi-th-large', title: 'Folder (1 item)', children: _jsx(ToolbarButton, { icon: folderIcons[0], title: 'Action 1' }) }), _jsx(ToolbarButton, { icon: 'pi pi-stop', title: 'Rectangle' })] })),
104
103
  };
105
104
  export const WithFolderFourButtons = {
106
- render: () => (_jsxs(Toolbar, { children: [_jsx(ToolbarButton, { icon: 'pi pi-arrow-up-left', tooltip: 'Select' }), _jsx(ToolbarFolder, { icon: 'pi pi-th-large', tooltip: 'Folder (4 items)', children: folderIcons.slice(0, 4).map((icon, index) => (_jsx(ToolbarButton, { icon: icon, tooltip: `Action ${index + 1}` }, `folder-4-${index}`))) }), _jsx(ToolbarButton, { icon: 'pi pi-stop', tooltip: 'Rectangle' })] })),
105
+ render: () => (_jsxs(Toolbar, { children: [_jsx(ToolbarButton, { icon: 'pi pi-arrow-up-left', title: 'Select' }), _jsx(ToolbarFolder, { icon: 'pi pi-th-large', title: 'Folder (4 items)', children: folderIcons.slice(0, 4).map((icon, index) => (_jsx(ToolbarButton, { icon: icon, title: `Action ${index + 1}` }, `folder-4-${index}`))) }), _jsx(ToolbarButton, { icon: 'pi pi-stop', title: 'Rectangle' })] })),
107
106
  };
108
107
  export const WithFolderTwentyButtons = {
109
- render: () => (_jsxs(Toolbar, { children: [_jsx(ToolbarButton, { icon: 'pi pi-arrow-up-left', tooltip: 'Select' }), _jsx(ToolbarFolder, { icon: 'pi pi-th-large', tooltip: 'Folder (20 items)', children: folderIcons.slice(0, 20).map((icon, index) => (_jsx(ToolbarButton, { icon: icon, tooltip: `Action ${index + 1}` }, `folder-20-${index}`))) }), _jsx(ToolbarButton, { icon: 'pi pi-stop', tooltip: 'Rectangle' })] })),
108
+ render: () => (_jsxs(Toolbar, { children: [_jsx(ToolbarButton, { icon: 'pi pi-arrow-up-left', title: 'Select' }), _jsx(ToolbarFolder, { icon: 'pi pi-th-large', title: 'Folder (20 items)', children: folderIcons.slice(0, 20).map((icon, index) => (_jsx(ToolbarButton, { icon: icon, title: `Action ${index + 1}` }, `folder-20-${index}`))) }), _jsx(ToolbarButton, { icon: 'pi pi-stop', title: 'Rectangle' })] })),
110
109
  };
111
110
  export const DragAndDrop = {
112
111
  render: () => {
113
112
  const DragAndDropDemo = () => {
114
113
  const [dropped, setDropped] = useState(null);
115
114
  const [isDragOver, setIsDragOver] = useState(false);
116
- return (_jsxs("div", { className: 'flex gap-6 items-start', children: [_jsxs(Toolbar, { draggable: true, onItemDragStart: (data) => setDropped(`Dragging: ${data.tool}`), children: [_jsx(ToolbarButton, { icon: 'pi pi-pencil', tooltip: 'Pencil', data: { tool: 'pencil' } }), _jsx(ToolbarButton, { icon: 'pi pi-stop', tooltip: 'Rectangle', data: { tool: 'rectangle' } }), _jsx(ToolbarButton, { icon: 'pi pi-circle', tooltip: 'Circle', data: { tool: 'circle' } }), _jsx(ToolbarButton, { icon: 'pi pi-minus', tooltip: 'Line', data: { tool: 'line' } })] }), _jsx("div", { onDragOver: (event) => { event.preventDefault?.(); setIsDragOver(true); }, onDragLeave: () => setIsDragOver(false), onDrop: (event) => {
115
+ return (_jsxs("div", { className: 'flex gap-6 items-start', children: [_jsxs(Toolbar, { draggable: true, onItemDragStart: (data) => setDropped(`Dragging: ${data.tool}`), children: [_jsx(ToolbarButton, { icon: 'pi pi-pencil', title: 'Pencil', data: { tool: 'pencil' } }), _jsx(ToolbarButton, { icon: 'pi pi-stop', title: 'Rectangle', data: { tool: 'rectangle' } }), _jsx(ToolbarButton, { icon: 'pi pi-circle', title: 'Circle', data: { tool: 'circle' } }), _jsx(ToolbarButton, { icon: 'pi pi-minus', title: 'Line', data: { tool: 'line' } })] }), _jsx("div", { onDragOver: (event) => { event.preventDefault?.(); setIsDragOver(true); }, onDragLeave: () => setIsDragOver(false), onDrop: (event) => {
117
116
  event.preventDefault?.();
118
117
  setIsDragOver(false);
119
118
  const raw = event.dataTransfer.getData('application/json');
@@ -131,4 +130,58 @@ export const DragAndDrop = {
131
130
  return _jsx(DragAndDropDemo, {});
132
131
  },
133
132
  };
133
+ export const WithGroups = {
134
+ render: () => (_jsxs(Toolbar, { children: [_jsxs(ToolbarGroup, { children: [_jsx(ToolbarButton, { icon: 'pi pi-arrow-up-left', title: 'Select' }), _jsx(ToolbarButton, { icon: 'pi pi-hand-paper', title: 'Pan' })] }), _jsxs(ToolbarGroup, { children: [_jsx(ToolbarButton, { icon: 'pi pi-pencil', title: 'Draw' }), _jsx(ToolbarButton, { icon: 'pi pi-stop', title: 'Rectangle' }), _jsx(ToolbarButton, { icon: 'pi pi-circle', title: 'Circle' }), _jsx(ToolbarButton, { icon: 'pi pi-minus', title: 'Line' })] }), _jsxs(ToolbarGroup, { children: [_jsx(ToolbarButton, { icon: 'pi pi-undo', title: 'Undo' }), _jsx(ToolbarButton, { icon: 'pi pi-refresh', title: 'Redo' })] })] })),
135
+ };
136
+ export const WithFolderListMode = {
137
+ render: () => (_jsxs(Toolbar, { children: [_jsx(ToolbarButton, { icon: 'pi pi-arrow-up-left', title: 'Select' }), _jsxs(ToolbarFolder, { icon: 'pi pi-th-large', title: 'Tools', mode: 'list', children: [_jsx(ToolbarButton, { icon: 'pi pi-pencil', title: 'Draw freehand' }), _jsx(ToolbarButton, { icon: 'pi pi-stop', title: 'Rectangle' }), _jsx(ToolbarButton, { icon: 'pi pi-circle', title: 'Ellipse' }), _jsx(ToolbarButton, { icon: 'pi pi-minus', title: 'Straight line' })] }), _jsx(ToolbarButton, { icon: 'pi pi-undo', title: 'Undo' })] })),
138
+ };
139
+ export const FolderGridVsList = {
140
+ render: () => (_jsxs("div", { className: 'flex gap-8 items-start', children: [_jsxs("div", { className: 'flex flex-col items-center gap-2', children: [_jsx("span", { style: { color: 'var(--text-color-secondary)', fontSize: '0.75rem' }, children: "Grid (default)" }), _jsx(Toolbar, { children: _jsxs(ToolbarFolder, { icon: 'pi pi-th-large', title: 'Tools', mode: 'grid', children: [_jsx(ToolbarButton, { icon: 'pi pi-pencil', title: 'Draw' }), _jsx(ToolbarButton, { icon: 'pi pi-stop', title: 'Rectangle' }), _jsx(ToolbarButton, { icon: 'pi pi-circle', title: 'Ellipse' }), _jsx(ToolbarButton, { icon: 'pi pi-minus', title: 'Line' }), _jsx(ToolbarButton, { icon: 'pi pi-cog', title: 'Settings' }), _jsx(ToolbarButton, { icon: 'pi pi-star', title: 'Favorite' })] }) })] }), _jsxs("div", { className: 'flex flex-col items-center gap-2', children: [_jsx("span", { style: { color: 'var(--text-color-secondary)', fontSize: '0.75rem' }, children: "List" }), _jsx(Toolbar, { children: _jsxs(ToolbarFolder, { icon: 'pi pi-list', title: 'Tools', mode: 'list', children: [_jsx(ToolbarButton, { icon: 'pi pi-pencil', title: 'Draw freehand' }), _jsx(ToolbarButton, { icon: 'pi pi-stop', title: 'Rectangle' }), _jsx(ToolbarButton, { icon: 'pi pi-circle', title: 'Ellipse' }), _jsx(ToolbarButton, { icon: 'pi pi-minus', title: 'Straight line' }), _jsx(ToolbarButton, { icon: 'pi pi-cog', title: 'Settings' }), _jsx(ToolbarButton, { icon: 'pi pi-star', title: 'Favorite' })] }) })] })] })),
141
+ };
142
+ export const WithSlotInGroup = {
143
+ render: () => {
144
+ const WithSlotInGroupDemo = () => {
145
+ const [mode, setMode] = useState('draw');
146
+ const drawTools = useMemo(() => (_jsxs(_Fragment, { children: [_jsx(ToolbarButton, { icon: 'pi pi-pencil', title: 'Pencil' }), _jsx(ToolbarButton, { icon: 'pi pi-eraser', title: 'Eraser' }), _jsx(ToolbarButton, { icon: 'pi pi-palette', title: 'Color' }), _jsx(ToolbarButton, { icon: 'pi pi-bolt', title: 'Airbrush' }), _jsx(ToolbarButton, { icon: 'pi pi-image', title: 'Stamp' }), _jsx(ToolbarButton, { icon: 'pi pi-filter', title: 'Blur' }), _jsx(ToolbarButton, { icon: 'pi pi-sun', title: 'Dodge' }), _jsx(ToolbarButton, { icon: 'pi pi-moon', title: 'Burn' })] })), []);
147
+ const shapeTools = useMemo(() => (_jsxs(_Fragment, { children: [_jsx(ToolbarButton, { icon: 'pi pi-stop', title: 'Rectangle' }), _jsx(ToolbarButton, { icon: 'pi pi-circle', title: 'Circle' }), _jsx(ToolbarButton, { icon: 'pi pi-minus', title: 'Line' }), _jsx(ToolbarButton, { icon: 'pi pi-sort-up', title: 'Triangle' }), _jsx(ToolbarButton, { icon: 'pi pi-star', title: 'Polygon' })] })), []);
148
+ const selectTools = useMemo(() => (_jsxs(_Fragment, { children: [_jsx(ToolbarButton, { icon: 'pi pi-arrows-alt', title: 'Move' }), _jsx(ToolbarButton, { icon: 'pi pi-clone', title: 'Duplicate' }), _jsx(ToolbarButton, { icon: 'pi pi-refresh', title: 'Rotate' }), _jsx(ToolbarButton, { icon: 'pi pi-expand', title: 'Scale' })] })), []);
149
+ return (_jsxs(ToolbarSlotProvider, { children: [mode === 'draw' && _jsx(ToolbarSlot, { slotName: 'tool-options', children: drawTools }), mode === 'shape' && _jsx(ToolbarSlot, { slotName: 'tool-options', children: shapeTools }), mode === 'select' && _jsx(ToolbarSlot, { slotName: 'tool-options', children: selectTools }), _jsxs(Toolbar, { children: [_jsxs(ToolbarGroup, { children: [_jsx(ToolbarButton, { icon: 'pi pi-pencil', title: 'Draw mode', active: mode === 'draw', onClick: () => setMode('draw') }), _jsx(ToolbarButton, { icon: 'pi pi-stop', title: 'Shape mode', active: mode === 'shape', onClick: () => setMode('shape') }), _jsx(ToolbarButton, { icon: 'pi pi-arrow-up-left', title: 'Select mode', active: mode === 'select', onClick: () => setMode('select') })] }), _jsx(ToolbarGroup, { slotName: 'tool-options' })] })] }));
150
+ };
151
+ return _jsx(WithSlotInGroupDemo, {});
152
+ },
153
+ };
154
+ export const WithSlotInContext = {
155
+ render: () => {
156
+ const WithSlotInContextDemo = () => {
157
+ const [currentContext, setCurrentContext] = useState('drawing');
158
+ const [slotContent, setSlotContent] = useState('favorite');
159
+ const favoriteBtn = useMemo(() => _jsx(ToolbarButton, { icon: 'pi pi-star', title: 'Favorite' }), []);
160
+ const bookmarkBtn = useMemo(() => _jsx(ToolbarButton, { icon: 'pi pi-bookmark', title: 'Bookmark' }), []);
161
+ return (_jsx(ToolbarSlotProvider, { children: _jsxs("div", { className: 'flex flex-col items-center gap-6', children: [_jsx(Toolbar, { children: _jsxs(ToolbarSection, { activeContext: currentContext, children: [_jsxs(ToolbarContext, { name: 'drawing', slotName: 'drawing-extras', children: [_jsx(ToolbarButton, { icon: 'pi pi-pencil', title: 'Draw' }), _jsx(ToolbarButton, { icon: 'pi pi-stop', title: 'Rectangle' })] }), _jsxs(ToolbarContext, { name: 'text', children: [_jsx(ToolbarButton, { icon: 'pi pi-align-left', title: 'Align Left' }), _jsx(ToolbarButton, { icon: 'pi pi-align-center', title: 'Align Center' })] })] }) }), slotContent === 'favorite' && _jsx(ToolbarSlot, { slotName: 'drawing-extras', order: 5, children: favoriteBtn }), slotContent === 'bookmark' && _jsx(ToolbarSlot, { slotName: 'drawing-extras', order: 5, children: bookmarkBtn }), _jsxs("div", { className: 'flex flex-col gap-4 items-center', children: [_jsxs("div", { className: 'flex flex-col gap-2 items-center', children: [_jsx("span", { className: 'text-xs', style: { color: 'var(--text-color-secondary)' }, children: "Context" }), _jsx("div", { className: 'flex gap-2', children: ['drawing', 'text'].map(ctx => (_jsx("button", { type: 'button', onClick: () => setCurrentContext(ctx), className: `px-3 py-1 rounded text-sm transition-colors ${currentContext === ctx
162
+ ? 'bg-blue-600 text-white'
163
+ : 'bg-gray-600 text-gray-200 hover:bg-gray-500'}`, children: ctx }, ctx))) })] }), _jsxs("div", { className: 'flex flex-col gap-2 items-center', children: [_jsx("span", { className: 'text-xs', style: { color: 'var(--text-color-secondary)' }, children: "Slot content (drawing-extras)" }), _jsx("div", { className: 'flex gap-2', children: ['none', 'favorite', 'bookmark'].map(s => (_jsx("button", { type: 'button', onClick: () => setSlotContent(s), className: `px-3 py-1 rounded text-sm transition-colors ${slotContent === s
164
+ ? 'bg-blue-600 text-white'
165
+ : 'bg-gray-600 text-gray-200 hover:bg-gray-500'}`, children: s === 'none' ? 'None' : s === 'favorite' ? 'Favorite ★' : 'Bookmark 🔖' }, s))) })] })] })] }) }));
166
+ };
167
+ return _jsx(WithSlotInContextDemo, {});
168
+ },
169
+ };
170
+ export const WithMultipleSlotContributors = {
171
+ render: () => {
172
+ const ButtonA = () => {
173
+ const btn = useMemo(() => _jsx(ToolbarButton, { icon: 'pi pi-star', title: 'Slot A (order 10)' }), []);
174
+ return _jsx(ToolbarSlot, { slotName: 'shared', order: 10, children: btn });
175
+ };
176
+ const ButtonB = () => {
177
+ const btn = useMemo(() => _jsx(ToolbarButton, { icon: 'pi pi-heart', title: 'Slot B (order 5)' }), []);
178
+ return _jsx(ToolbarSlot, { slotName: 'shared', order: 5, children: btn });
179
+ };
180
+ const ButtonC = () => {
181
+ const btn = useMemo(() => _jsx(ToolbarButton, { icon: 'pi pi-bell', title: 'Slot C (order 20)' }), []);
182
+ return _jsx(ToolbarSlot, { slotName: 'shared', order: 20, children: btn });
183
+ };
184
+ return (_jsx(ToolbarSlotProvider, { children: _jsxs("div", { className: 'flex gap-6 items-start', children: [_jsx(Toolbar, { children: _jsx(ToolbarGroup, { slotName: 'shared', children: _jsx(ToolbarButton, { icon: 'pi pi-pencil', title: 'Draw (always first)' }) }) }), _jsxs("div", { className: 'flex flex-col gap-1 p-4 rounded-lg border text-sm', style: { borderColor: 'var(--surface-border)', background: 'var(--surface-ground)', color: 'var(--text-color-secondary)' }, children: [_jsx("strong", { style: { color: 'var(--text-color)' }, children: "Three independent contributors" }), _jsx("p", { children: "Rendered order: B (5) \u2192 A (10) \u2192 C (20)" }), _jsx(ButtonA, {}), _jsx(ButtonB, {}), _jsx(ButtonC, {})] })] }) }));
185
+ },
186
+ };
134
187
  //# sourceMappingURL=Toolbar.stories.js.map