@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.
- package/dist/cjs/CommandDialog/CommandStepper.js +6 -0
- package/dist/cjs/CommandDialog/CommandStepper.js.map +1 -1
- package/dist/cjs/Toolbar/Toolbar.css +105 -2
- package/dist/cjs/Toolbar/ToolbarButton.js +10 -3
- package/dist/cjs/Toolbar/ToolbarButton.js.map +1 -1
- package/dist/cjs/Toolbar/ToolbarContext.js.map +1 -1
- package/dist/cjs/Toolbar/ToolbarFolder.js +12 -7
- package/dist/cjs/Toolbar/ToolbarFolder.js.map +1 -1
- package/dist/cjs/Toolbar/ToolbarFolderContext.js +20 -0
- package/dist/cjs/Toolbar/ToolbarFolderContext.js.map +1 -0
- package/dist/cjs/Toolbar/ToolbarGroup.js +102 -0
- package/dist/cjs/Toolbar/ToolbarGroup.js.map +1 -0
- package/dist/cjs/Toolbar/ToolbarSection.js +44 -5
- package/dist/cjs/Toolbar/ToolbarSection.js.map +1 -1
- package/dist/cjs/Toolbar/ToolbarSlot.js +125 -0
- package/dist/cjs/Toolbar/ToolbarSlot.js.map +1 -0
- package/dist/cjs/Toolbar/index.js +6 -0
- package/dist/cjs/Toolbar/index.js.map +1 -1
- package/dist/cjs/tailwind-utilities.css +12 -0
- package/dist/esm/CommandDialog/CommandStepper.d.ts.map +1 -1
- package/dist/esm/CommandDialog/CommandStepper.js +6 -0
- package/dist/esm/CommandDialog/CommandStepper.js.map +1 -1
- package/dist/esm/Toolbar/Toolbar.css +105 -2
- package/dist/esm/Toolbar/Toolbar.stories.d.ts +6 -1
- package/dist/esm/Toolbar/Toolbar.stories.d.ts.map +1 -1
- package/dist/esm/Toolbar/Toolbar.stories.js +69 -16
- package/dist/esm/Toolbar/Toolbar.stories.js.map +1 -1
- package/dist/esm/Toolbar/ToolbarButton.d.ts +2 -2
- package/dist/esm/Toolbar/ToolbarButton.d.ts.map +1 -1
- package/dist/esm/Toolbar/ToolbarButton.js +11 -4
- package/dist/esm/Toolbar/ToolbarButton.js.map +1 -1
- package/dist/esm/Toolbar/ToolbarContext.d.ts +1 -0
- package/dist/esm/Toolbar/ToolbarContext.d.ts.map +1 -1
- package/dist/esm/Toolbar/ToolbarContext.js.map +1 -1
- package/dist/esm/Toolbar/ToolbarFolder.d.ts +4 -2
- package/dist/esm/Toolbar/ToolbarFolder.d.ts.map +1 -1
- package/dist/esm/Toolbar/ToolbarFolder.js +13 -8
- package/dist/esm/Toolbar/ToolbarFolder.js.map +1 -1
- package/dist/esm/Toolbar/ToolbarFolderContext.d.ts +4 -0
- package/dist/esm/Toolbar/ToolbarFolderContext.d.ts.map +1 -0
- package/dist/esm/Toolbar/ToolbarFolderContext.js +17 -0
- package/dist/esm/Toolbar/ToolbarFolderContext.js.map +1 -0
- package/dist/esm/Toolbar/ToolbarGroup.d.ts +8 -0
- package/dist/esm/Toolbar/ToolbarGroup.d.ts.map +1 -0
- package/dist/esm/Toolbar/ToolbarGroup.js +100 -0
- package/dist/esm/Toolbar/ToolbarGroup.js.map +1 -0
- package/dist/esm/Toolbar/ToolbarSection.d.ts.map +1 -1
- package/dist/esm/Toolbar/ToolbarSection.js +45 -6
- package/dist/esm/Toolbar/ToolbarSection.js.map +1 -1
- package/dist/esm/Toolbar/ToolbarSlot.d.ts +13 -0
- package/dist/esm/Toolbar/ToolbarSlot.d.ts.map +1 -0
- package/dist/esm/Toolbar/ToolbarSlot.js +121 -0
- package/dist/esm/Toolbar/ToolbarSlot.js.map +1 -0
- package/dist/esm/Toolbar/index.d.ts +5 -0
- package/dist/esm/Toolbar/index.d.ts.map +1 -1
- package/dist/esm/Toolbar/index.js +2 -0
- package/dist/esm/Toolbar/index.js.map +1 -1
- package/dist/esm/tailwind-utilities.css +12 -0
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- 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":"
|
|
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,
|
|
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":";;;;;;;AAkEA;AACA,MAAM,eAAe,GAAG,CAAC,QAA+C,KAAY;IAChF,IAAI,OAAO,QAAQ,KAAK,UAAU;AAAE,QAAA,OAAO,EAAE;AAC7C,IAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE;IACjC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC;AACzD,IAAA,OAAO,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;AAChC,CAAC;AAED;AACA,MAAM,yBAAyB,GAAG,CAAC,KAAsB,KAAc;IACnE,MAAM,KAAK,GAAa,EAAE;IAC1B,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,KAAI;AACpC,QAAA,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;YAAE;AAClC,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,IAAoC;AAC5D,QAAA,IAAK,SAAsC,CAAC,WAAW,KAAK,kBAAkB,EAAE;AAC5E,YAAA,MAAM,UAAU,GAAG,KAAK,CAAC,KAA8C;YACvE,MAAM,IAAI,GAAG,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC;AAC9C,YAAA,IAAI,IAAI;AAAE,gBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9B;AAEA,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,KAAgC;AACzD,QAAA,IAAI,UAAU,CAAC,QAAQ,IAAI,IAAI,EAAE;YAC7B,KAAK,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC,UAAU,CAAC,QAA2B,CAAC,CAAC;QACpF;AACJ,IAAA,CAAC,CAAC;AACF,IAAA,OAAO,KAAK;AAChB,CAAC;AAED,MAAM,eAAe,GAAG,CAAC,KAAsB,KAAqB;IAChE,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,KAAI;AACvC,QAAA,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,KAAK;AAE9C,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,IAAoC;AAC5D,QAAA,IAAK,SAAsC,CAAC,WAAW,KAAK,kBAAkB,EAAE;AAE5E,YAAA,OAAOA,IAAC,uBAAuB,EAAA,EAAC,KAAK,EAAE,KAAgC,GAAI;QAC/E;AAEA,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,KAAgC;AACzD,QAAA,IAAI,UAAU,CAAC,QAAQ,IAAI,IAAI,EAAE;AAC7B,YAAA,OAAO,KAAK,CAAC,YAAY,CAAC,KAAoD,EAAE;AAC5E,gBAAA,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,QAA2B;AACnE,aAAA,CAAC;QACN;AAEA,QAAA,OAAO,KAAK;AAChB,IAAA,CAAC,CAAC;AACN,CAAC;AAEM,MAAM,qBAAqB,GAAG,CAAC,EAClC,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,cAAc,GAAG,IAAI,EACrB,UAAU,GAAG,IAAI,EACjB,SAAS,GAAG,MAAM,EAClB,aAAa,GAAG,UAAU,EAC1B,OAAO,GAAG,QAAQ,EAClB,MAAM,GAAG,KAAK,EACd,YAAY,GAAG,KAAK,EACpB,gBAAgB,GAAG,KAAK,EACxB,QAAQ,EACR,WAAW,GAAG,YAAY,EAC1B,cAAc,EACd,MAAM,GAAG,IAAI,EACb,YAAY,EACZ,KAAK,EACL,GAAG,EACH,EAAE,EACF,SAAS,EACT,QAAQ,GACiB,KAAI;IAC7B,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;AAChD,IAAA,MAAM,UAAU,GAAG,UAAU,IAAI,SAAS,GAAG,CAAC;AAC9C,IAAA,MAAM,WAAW,GAAG,UAAU,IAAI,CAAC;IAEnC,MAAM,cAAc,GAAG,OAAO,CAC1B,MAAM,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AAChD,QAAA,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;AAAE,YAAA,OAAO,EAAc;AACtD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAgC;AACvD,QAAA,OAAO,yBAAyB,CAAC,SAAS,CAAC,QAA2B,CAAC;AAC3E,IAAA,CAAC,CAAC,EACF,CAAC,QAAQ,CAAC,CACb;AAED,IAAA,MAAM,UAAU,GAAG,OAAO,CACtB,MAAM,cAAc,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,EAC1F,CAAC,cAAc,EAAE,aAAa,CAAC,CAClC;IAED,SAAS,CAAC,MAAK;AACX,QAAA,kBAAkB,GAAG,UAAU,CAAC;AACpC,IAAA,CAAC,EAAE,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;IAEpC,MAAM,oBAAoB,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,KAAK;AAC5D,IAAA,MAAM,gBAAgB,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC;AAE9D,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,MAAK;QAI3B,MAAM,MAAM,GAAG,EAAyC;AACxD,QAAA,MAAM,kBAAkB,GAAG,MAAM,EAAE,YAAmD;AACtF,QAAA,MAAM,YAAY,GAAG,kBAAkB,EAAE,MAAM;QAE/C,OAAO;AACH,YAAA,GAAG,MAAM;AACT,YAAA,YAAY,EAAE;AACV,gBAAA,GAAG,kBAAkB;AACrB,gBAAA,MAAM,EAAE,CAAC,IAAiB,KAAI;AAC1B,oBAAA,MAAM,QAAQ,GACV,OAAO,YAAY,KAAK;AACpB,0BAAG,YAA2B,CAAC,IAAI;AACnC,0BAAG,YAAoD,IAAI,EAAE;AACrE,oBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;oBAC9B,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK;oBACzC,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;oBAEvC,MAAM,OAAO,GAAG;AACZ,0BAAE;AACF,0BAAE;AACE,8BAAE;8BACA,IAAI;AAEd,oBAAA,IAAI,CAAC,OAAO;AAAE,wBAAA,OAAO,QAAQ;AAC7B,oBAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,KAA4C;oBAC3E,OAAO;AACH,wBAAA,GAAG,QAAQ;AACX,wBAAA,KAAK,EAAE,EAAE,GAAG,aAAa,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM;qBACrE;gBACL;AACH;SACJ;IACL,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;AAElC,IAAA,MAAM,gBAAgB,GAAiC,KAAK,IAAG;AAC3D,QAAA,YAAY,GAAG,KAAK,CAAC;AACrB,QAAA,MAAM,KAAK,GAAI,KAA4B,CAAC,KAAK;AACjD,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3B,YAAA,IAAI,KAAK,GAAG,UAAU,IAAI,oBAAoB,EAAE;gBAC5C;YACJ;AAEA,YAAA,IAAI,KAAK,GAAG,UAAU,EAAE;AACpB,gBAAA,oBAAoB,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACjE;AACA,YAAA,kBAAkB,GAAG,KAAK,CAAC;QAC/B;AACJ,IAAA,CAAC;IAED,MAAM,cAAc,GAAG,MAAK;AACxB,QAAA,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;AACrD,IAAA,CAAC;IAED,MAAM,UAAU,GAAG,MAAK;QACpB,IAAI,oBAAoB,EAAE;YACtB;QACJ;AAEA,QAAA,oBAAoB,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC7D,QAAA,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;AACjE,IAAA,CAAC;IAED,QACIC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,wBAAwB,aACnCD,GAAA,CAACE,OAAY,EAAA,EACT,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,gBAAgB,EAC9B,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,SAA+B,EACnC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAAA,QAAA,EAEjB,eAAe,CAAC,QAAQ,CAAC,EAAA,CACf,EAEd,cAAc,KACXD,IAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,EAAA,QAAA,EAAA,CAC/E,CAAC,WAAW,KACTD,GAAA,CAAC,MAAM,EAAA,EACH,KAAK,EAAE,aAAa,EACpB,IAAI,EAAC,kBAAkB,EACvB,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,MAAM,EAChB,QAAQ,QACR,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAA,CAC1B,CACL,EACDA,GAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAA,CAAI,EAC1B,CAAC,UAAU,KACRA,GAAA,CAAC,MAAM,EAAA,EACH,KAAK,EAAE,SAAS,EAChB,IAAI,EAAC,mBAAmB,EACxB,OAAO,EAAC,OAAO,EACf,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,MAAM,IAAI,YAAY,IAAI,oBAAoB,EACxD,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAA,CAC1B,CACL,EACA,UAAU,IAAI,UAAU,KACrBA,GAAA,CAAC,MAAM,EAAA,EACH,KAAK,EAAE,OAAO,EACd,IAAI,EAAC,aAAa,EAClB,OAAO,EAAE,MAAM,KAAK,QAAQ,IAAI,EAChC,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,MAAM,IAAI,YAAY,IAAI,gBAAgB,IAAI,gBAAgB,EACxE,SAAS,EAAA,IAAA,EACT,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAA,CAC1B,CACL,CAAA,EAAA,CACC,CACT,CAAA,EAAA,CACC;AAEd;AAcA,MAAM,qBAAqB,GAAG,CAA8C,EACxE,QAAQ,EACR,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,SAAS,EACT,aAAa,EACb,OAAO,EACP,MAAM,EACN,WAAW,EACX,cAAc,EACd,MAAM,EACN,YAAY,EACZ,KAAK,EACL,GAAG,EACH,EAAE,EACF,SAAS,EACT,QAAQ,EACR,SAAS,EACT,mBAAmB,EACnB,QAAQ,EACR,eAAe,GAC+B,KAAI;AAClD,IAAA,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,qBAAqB,EAAY;AAC5H,IAAA,MAAM,eAAe,GAAG,kBAAkB,EAAY;IACtD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;AAC/C,IAAA,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAc,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AAEvD,IAAA,MAAM,YAAY,GAAG,YAAW;QAC5B,IAAI,eAAe,EAAE;AACjB,YAAA,MAAM,iBAAiB,GAAG,eAAe,CAAC,eAAe,CAAC;YAC1D,gBAAgB,CAAC,iBAAiB,CAAC;QACvC;QAEA,eAAe,CAAC,IAAI,CAAC;AACrB,QAAA,IAAI,MAAiC;AAErC,QAAA,IAAI;AACA,YAAA,MAAM,GAAG,MAAO,eAAoF,CAAC,OAAO,EAAE;QAClH;gBAAU;YACN,eAAe,CAAC,KAAK,CAAC;QAC1B;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AACnB,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACjB,gBAAA,MAAM,mBAAmB,GAAG,MAAM,CAAC,iBAAiB,CAAC;YACzD;iBAAO;AACH,gBAAA,MAAM,QAAQ,GAAG,MAAM,CAAC;YAC5B;YACA,gBAAgB,CAAC,MAAM,CAAC;YACxB;QACJ;AAEA,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,QAAqB,CAAC;AACnD,IAAA,CAAC;IAED,QACIA,IAAC,qBAAqB,EAAA,EAClB,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,kBAAkB,EAAE,aAAa,EACjC,oBAAoB,EAAE,eAAe,EACrC,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,gBAAgB,EAAE,CAAC,kBAAkB,EACrC,QAAQ,EAAE,YAAY,EACtB,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,EAAE,EACN,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAAA,QAAA,EAEjB,QAAQ,EAAA,CACW;AAEhC,CAAC;AAEM,MAAM,cAAc,GAAG,CAC1B,KAA+C,KAC/C;AACA,IAAA,MAAM,EACF,QAAQ,EACR,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,SAAS,EACT,aAAa,EACb,OAAO,EACP,MAAM,EACN,WAAW,EACX,cAAc,EACd,MAAM,EACN,YAAY,EACZ,KAAK,EACL,GAAG,EACH,EAAE,EACF,SAAS,EACT,QAAQ,EACR,GAAG,gBAAgB,EACtB,GAAG,KAAK;IAET,QACIA,IAAC,WAAW,EAAA,EAAA,GAA0B,gBAAgB,EAAA,QAAA,EAClDA,GAAA,CAAC,qBAAqB,EAAA,EAClB,kBAAkB,EAAE,kBAAkB,EACtC,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,EAAE,EACN,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAC9C,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,eAAe,EAAE,gBAAgB,CAAC,eAAe,YAEhD,QAAQ,EAAA,CACW,EAAA,CACd;AAEtB;;;;"}
|
|
@@ -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
|
-
*
|
|
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
|
-
*
|
|
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;
|
|
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, {}),
|
|
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',
|
|
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',
|
|
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',
|
|
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',
|
|
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',
|
|
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',
|
|
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',
|
|
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',
|
|
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',
|
|
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',
|
|
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
|