@hanzo/ui 8.27.19 → 8.27.20
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/backends/gui/item.cjs +2 -3
- package/dist/backends/gui/item.d.ts.map +1 -1
- package/dist/backends/gui/item.js +1 -2
- package/dist/backends/gui/item.js.map +1 -1
- package/dist/backends/gui/press.cjs +29 -0
- package/dist/backends/gui/press.d.ts +28 -0
- package/dist/backends/gui/press.d.ts.map +1 -0
- package/dist/backends/gui/press.js +26 -0
- package/dist/backends/gui/press.js.map +1 -0
- package/dist/backends/gui/toggle-group.cjs +2 -3
- package/dist/backends/gui/toggle-group.d.ts.map +1 -1
- package/dist/backends/gui/toggle-group.js +1 -2
- package/dist/backends/gui/toggle-group.js.map +1 -1
- package/dist/backends/gui/toggle.cjs +3 -4
- package/dist/backends/gui/toggle.d.ts.map +1 -1
- package/dist/backends/gui/toggle.js +1 -2
- package/dist/backends/gui/toggle.js.map +1 -1
- package/dist/catalog/Shelf.cjs +76 -0
- package/dist/catalog/Shelf.d.ts +55 -0
- package/dist/catalog/Shelf.d.ts.map +1 -0
- package/dist/catalog/Shelf.js +74 -0
- package/dist/catalog/Shelf.js.map +1 -0
- package/dist/catalog/Tile.cjs +72 -0
- package/dist/catalog/Tile.d.ts +56 -0
- package/dist/catalog/Tile.d.ts.map +1 -0
- package/dist/catalog/Tile.js +67 -0
- package/dist/catalog/Tile.js.map +1 -0
- package/dist/catalog/index.cjs +23 -0
- package/dist/catalog/index.d.ts +16 -0
- package/dist/catalog/index.d.ts.map +1 -0
- package/dist/catalog/index.js +16 -0
- package/dist/catalog/index.js.map +1 -0
- package/dist/chat/Home.cjs +30 -0
- package/dist/chat/Home.d.ts +35 -0
- package/dist/chat/Home.d.ts.map +1 -0
- package/dist/chat/Home.js +28 -0
- package/dist/chat/Home.js.map +1 -0
- package/dist/chat/SessionRail.cjs +165 -37
- package/dist/chat/SessionRail.d.ts +92 -14
- package/dist/chat/SessionRail.d.ts.map +1 -1
- package/dist/chat/SessionRail.js +165 -39
- package/dist/chat/SessionRail.js.map +1 -1
- package/dist/chat/index.cjs +6 -1
- package/dist/chat/index.d.ts +2 -1
- package/dist/chat/index.d.ts.map +1 -1
- package/dist/chat/index.js +2 -1
- package/dist/chat/index.js.map +1 -1
- package/dist/gallery.cjs +72 -1
- package/dist/gallery.d.ts +13 -0
- package/dist/gallery.d.ts.map +1 -1
- package/dist/gallery.html +45 -3
- package/dist/gallery.js +72 -2
- package/dist/gallery.js.map +1 -1
- package/dist/product/ChipSelect.cjs +2 -3
- package/dist/product/ChipSelect.d.ts.map +1 -1
- package/dist/product/ChipSelect.js +1 -2
- package/dist/product/ChipSelect.js.map +1 -1
- package/dist/product/MenuRow.cjs +2 -1
- package/dist/product/MenuRow.d.ts +11 -7
- package/dist/product/MenuRow.d.ts.map +1 -1
- package/dist/product/MenuRow.js +3 -2
- package/dist/product/MenuRow.js.map +1 -1
- package/dist/product/OrgSwitcher.cjs +16 -5
- package/dist/product/OrgSwitcher.d.ts.map +1 -1
- package/dist/product/OrgSwitcher.js +16 -5
- package/dist/product/OrgSwitcher.js.map +1 -1
- package/dist/product/UserMenu.cjs +19 -27
- package/dist/product/UserMenu.d.ts +2 -21
- package/dist/product/UserMenu.d.ts.map +1 -1
- package/dist/product/UserMenu.js +23 -31
- package/dist/product/UserMenu.js.map +1 -1
- package/dist/product/account.cjs +37 -0
- package/dist/product/account.d.ts +55 -0
- package/dist/product/account.d.ts.map +1 -0
- package/dist/product/account.js +35 -0
- package/dist/product/account.js.map +1 -0
- package/dist/product/menu/roving.cjs +4 -1
- package/dist/product/menu/roving.d.ts +8 -3
- package/dist/product/menu/roving.d.ts.map +1 -1
- package/dist/product/menu/roving.js +4 -1
- package/dist/product/menu/roving.js.map +1 -1
- package/dist/settings/Section.cjs +71 -0
- package/dist/settings/Section.d.ts +78 -0
- package/dist/settings/Section.d.ts.map +1 -0
- package/dist/settings/Section.js +62 -0
- package/dist/settings/Section.js.map +1 -0
- package/dist/settings/Settings.cjs +54 -0
- package/dist/settings/Settings.d.ts +50 -0
- package/dist/settings/Settings.d.ts.map +1 -0
- package/dist/settings/Settings.js +52 -0
- package/dist/settings/Settings.js.map +1 -0
- package/dist/settings/index.cjs +26 -0
- package/dist/settings/index.d.ts +15 -0
- package/dist/settings/index.d.ts.map +1 -0
- package/dist/settings/index.js +15 -0
- package/dist/settings/index.js.map +1 -0
- package/dist/styles.css +42 -0
- package/package.json +13 -1
|
@@ -29,8 +29,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
29
29
|
const gui_1 = require("@hanzo/gui");
|
|
30
30
|
const layout_1 = require("./layout.cjs");
|
|
31
31
|
const ink_1 = require("./ink.cjs");
|
|
32
|
-
|
|
33
|
-
const RING = { outlineColor: '$outlineColor', outlineWidth: 2, outlineStyle: 'solid' };
|
|
32
|
+
const press_1 = require("./press.cjs");
|
|
34
33
|
const ItemFrame = (0, gui_1.styled)(gui_1.XStack, {
|
|
35
34
|
name: 'Item',
|
|
36
35
|
flexWrap: 'wrap',
|
|
@@ -39,7 +38,7 @@ const ItemFrame = (0, gui_1.styled)(gui_1.XStack, {
|
|
|
39
38
|
borderWidth: 1,
|
|
40
39
|
borderColor: 'transparent',
|
|
41
40
|
outlineWidth: 0,
|
|
42
|
-
focusVisibleStyle: RING,
|
|
41
|
+
focusVisibleStyle: press_1.RING,
|
|
43
42
|
hoverStyle: { bg: '$hover' },
|
|
44
43
|
variants: {
|
|
45
44
|
variant: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/item.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/item.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAIpC,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAA;AACzD,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAA;AACvC,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAA;AAG3D,QAAA,MAAM,SAAS;;;;;8CAwBb,CAAA;AAEF,MAAM,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,SAAS,CAAC,GAAG;IACzD,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;IAC5B,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAA;IACtB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,wBAAgB,IAAI,CAAC,EAAE,OAAmB,EAAE,IAAgB,EAAE,OAAe,EAAE,GAAG,KAAK,EAAE,EAAE,SAAS,+BAenG;AAED,QAAA,MAAM,cAAc;;;;8CAgBlB,CAAA;AAEF,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,cAAc,CAAC,GAAG;IACnE,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;CAClC,CAAA;AAED,wBAAgB,SAAS,CAAC,EAAE,OAAmB,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,+BAG1E;AAED,QAAA,MAAM,gBAAgB;;;8CAIpB,CAAA;AAEF,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAEtE,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,+BAElD;AAED,QAAA,MAAM,cAAc;;;8CAMlB,CAAA;AAEF,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,cAAc,CAAC,CAAA;AAElE,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,+BAM/D;AAED,QAAA,MAAM,oBAAoB;;;8CAKxB,CAAA;AAEF,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAa9E,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,+BAQxE;AAED,QAAA,MAAM,gBAAgB;;;8CAIpB,CAAA;AAEF,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAEtE,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,+BAElD;AAED,QAAA,MAAM,eAAe;;;8CAMnB,CAAA;AAEF,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,eAAe,CAAC,CAAA;AAEpE,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,+BAEhD;AAED,QAAA,MAAM,eAAe;;;8CAMnB,CAAA;AAEF,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,eAAe,CAAC,CAAA;AAEpE,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,+BAEhD;AAED,QAAA,MAAM,cAAc;;;8CAElB,CAAA;AAEF,MAAM,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,cAAc,CAAC,CAAA;AAElE,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,+BAE9C;AAED,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC,OAAO,SAAS,CAAC,CAAA;AAEjE,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,+BAEtD"}
|
|
@@ -17,8 +17,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
17
17
|
import { SizableText, XStack, YStack, styled } from '@hanzo/gui';
|
|
18
18
|
import { Separator } from './layout.js';
|
|
19
19
|
import { ink } from './ink.js';
|
|
20
|
-
|
|
21
|
-
const RING = { outlineColor: '$outlineColor', outlineWidth: 2, outlineStyle: 'solid' };
|
|
20
|
+
import { RING } from './press.js';
|
|
22
21
|
const ItemFrame = styled(XStack, {
|
|
23
22
|
name: 'Item',
|
|
24
23
|
flexWrap: 'wrap',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item.js","sourceRoot":"","sources":["../../../src/backends/gui/item.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAEhE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"item.js","sourceRoot":"","sources":["../../../src/backends/gui/item.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAEhE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAO9B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE;IAC/B,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,CAAC;IACd,WAAW,EAAE,aAAa;IAC1B,YAAY,EAAE,CAAC;IACf,iBAAiB,EAAE,IAAI;IACvB,UAAU,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE;IAE5B,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE;YAC9B,OAAO,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE;YAC3D,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE;SACvB;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE;YAC/B,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE;SACxC;KACO;IAEV,eAAe,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;CACzD,CAAC,CAAA;AAQF,MAAM,UAAU,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,EAAE,IAAI,GAAG,SAAS,EAAE,OAAO,GAAG,KAAK,EAAE,GAAG,KAAK,EAAa;IAClG,MAAM,CAAC,GAAG,OAAO,IAAI,SAAS,CAAA;IAC9B,MAAM,CAAC,GAAG,IAAI,IAAI,SAAS,CAAA;IAC3B,OAAO,CACL,KAAC,SAAS,iBACE,MAAM,kBACF,CAAC,eACJ,CAAC,EACZ,OAAO,EAAE,CAAC,EACV,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,KAC/B,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE;IACpC,IAAI,EAAE,WAAW;IACjB,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,QAAQ;IACjB,GAAG,EAAE,IAAI;IAET,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE;YAC9B,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE;YACxG,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE;SACpE;KACO;IAEV,eAAe,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;CACxC,CAAC,CAAA;AAMF,MAAM,UAAU,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,EAAE,GAAG,KAAK,EAAkB;IACzE,MAAM,CAAC,GAAG,OAAO,IAAI,SAAS,CAAA;IAC9B,OAAO,KAAC,cAAc,iBAAW,YAAY,kBAAe,CAAC,EAAE,OAAO,EAAE,CAAC,KAAM,KAAK,GAAI,CAAA;AAC1F,CAAC;AAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE;IACtC,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,CAAC;IACP,GAAG,EAAE,IAAI;CACV,CAAC,CAAA;AAIF,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,OAAO,KAAC,gBAAgB,iBAAW,cAAc,KAAK,KAAK,GAAI,CAAA;AACjE,CAAC;AAED,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE;IACpC,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,aAAa;IACtB,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,QAAQ;IACf,GAAG,EAAE,IAAI;CACV,CAAC,CAAA;AAIF,MAAM,UAAU,SAAS,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAkB;IAC9D,OAAO,CACL,KAAC,cAAc,iBAAW,YAAY,KAAK,KAAK,YAC7C,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,GAC/C,CAClB,CAAA;AACH,CAAC;AAED,MAAM,oBAAoB,GAAG,MAAM,CAAC,WAAW,EAAE;IAC/C,IAAI,EAAE,iBAAiB;IACvB,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,QAAQ;IACf,UAAU,EAAE,KAAK;CAClB,CAAC,CAAA;AAIF,6EAA6E;AAC7E,6EAA6E;AAC7E,8EAA8E;AAC9E,+EAA+E;AAC/E,MAAM,KAAK,GAAG;IACZ,OAAO,EAAE,aAAa;IACtB,eAAe,EAAE,CAAC;IAClB,eAAe,EAAE,UAAU;IAC3B,QAAQ,EAAE,QAAQ;CACV,CAAA;AAEV,MAAM,UAAU,eAAe,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAwB;IACvE,OAAO,CACL,KAAC,oBAAoB,iBACT,kBAAkB,EAC5B,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,GAAI,KAAgB,EAAE,KACrC,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE;IACtC,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,QAAQ;IACf,GAAG,EAAE,IAAI;CACV,CAAC,CAAA;AAIF,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,OAAO,KAAC,gBAAgB,iBAAW,cAAc,KAAK,KAAK,GAAI,CAAA;AACjE,CAAC;AAED,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE;IACrC,IAAI,EAAE,YAAY;IAClB,SAAS,EAAE,MAAM;IACjB,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,eAAe;IACxB,GAAG,EAAE,IAAI;CACV,CAAC,CAAA;AAIF,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,OAAO,KAAC,eAAe,iBAAW,aAAa,KAAK,KAAK,GAAI,CAAA;AAC/D,CAAC;AAED,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE;IACrC,IAAI,EAAE,YAAY;IAClB,SAAS,EAAE,MAAM;IACjB,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,eAAe;IACxB,GAAG,EAAE,IAAI;CACV,CAAC,CAAA;AAIF,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,OAAO,KAAC,eAAe,iBAAW,aAAa,KAAK,KAAK,GAAI,CAAA;AAC/D,CAAC;AAED,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE;IACpC,IAAI,EAAE,WAAW;CAClB,CAAC,CAAA;AAIF,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC7C,OAAO,KAAC,cAAc,iBAAW,YAAY,EAAC,IAAI,EAAC,MAAM,KAAK,KAAK,GAAI,CAAA;AACzE,CAAC;AAID,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,OAAO,KAAC,SAAS,iBAAW,gBAAgB,EAAC,EAAE,EAAE,CAAC,KAAM,KAAK,GAAI,CAAA;AACnE,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RING = exports.press = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* A pressable that is not a `<button>`: focusable, a button to assistive tech,
|
|
6
|
+
* and run by Enter and Space as well as by a press.
|
|
7
|
+
*
|
|
8
|
+
* gui does not activate `role="button"` on Enter. Measured: a keydown Enter on
|
|
9
|
+
* an `XStack` with `onPress` fires nothing, and a click fires once. So a control
|
|
10
|
+
* drawn from a stack handles the two keys itself — which cannot double-fire, for
|
|
11
|
+
* the same reason. One helper, so no call site forgets Space or the
|
|
12
|
+
* `preventDefault` that keeps Space from scrolling the page.
|
|
13
|
+
*
|
|
14
|
+
* Spread it first; a call site's own `aria-*` and style props follow it.
|
|
15
|
+
*/
|
|
16
|
+
const press = (run) => ({
|
|
17
|
+
role: 'button',
|
|
18
|
+
tabIndex: 0,
|
|
19
|
+
onPress: run,
|
|
20
|
+
onKeyDown: (e) => {
|
|
21
|
+
if (e?.key !== 'Enter' && e?.key !== ' ')
|
|
22
|
+
return;
|
|
23
|
+
e.preventDefault?.();
|
|
24
|
+
run?.();
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
exports.press = press;
|
|
28
|
+
/** The keyboard focus ring every control in the package draws. */
|
|
29
|
+
exports.RING = { outlineColor: '$outlineColor', outlineWidth: 2, outlineStyle: 'solid' };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A pressable that is not a `<button>`: focusable, a button to assistive tech,
|
|
3
|
+
* and run by Enter and Space as well as by a press.
|
|
4
|
+
*
|
|
5
|
+
* gui does not activate `role="button"` on Enter. Measured: a keydown Enter on
|
|
6
|
+
* an `XStack` with `onPress` fires nothing, and a click fires once. So a control
|
|
7
|
+
* drawn from a stack handles the two keys itself — which cannot double-fire, for
|
|
8
|
+
* the same reason. One helper, so no call site forgets Space or the
|
|
9
|
+
* `preventDefault` that keeps Space from scrolling the page.
|
|
10
|
+
*
|
|
11
|
+
* Spread it first; a call site's own `aria-*` and style props follow it.
|
|
12
|
+
*/
|
|
13
|
+
export declare const press: (run?: () => void) => {
|
|
14
|
+
role: 'button';
|
|
15
|
+
tabIndex: number;
|
|
16
|
+
onPress: (() => void) | undefined;
|
|
17
|
+
onKeyDown: (e: {
|
|
18
|
+
key?: string;
|
|
19
|
+
preventDefault?: () => void;
|
|
20
|
+
}) => void;
|
|
21
|
+
};
|
|
22
|
+
/** The keyboard focus ring every control in the package draws. */
|
|
23
|
+
export declare const RING: {
|
|
24
|
+
readonly outlineColor: '$outlineColor';
|
|
25
|
+
readonly outlineWidth: 2;
|
|
26
|
+
readonly outlineStyle: 'solid';
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=press.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"press.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/press.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,KAAK,SAAU,MAAM,IAAI;IACpC,IAAI,EAAE,QAAQ;IACd,QAAQ;IACR,OAAO,SAHyB,IAAI;IAIpC,SAAS,MAAM;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAA;KAAE;CAK5D,CAAA;AAEF,kEAAkE;AAClE,eAAO,MAAM,IAAI;aAAK,YAAY,EAAE,eAAe;aAAE,YAAY,EAAE,CAAC;aAAE,YAAY,EAAE,OAAO;CAAW,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A pressable that is not a `<button>`: focusable, a button to assistive tech,
|
|
3
|
+
* and run by Enter and Space as well as by a press.
|
|
4
|
+
*
|
|
5
|
+
* gui does not activate `role="button"` on Enter. Measured: a keydown Enter on
|
|
6
|
+
* an `XStack` with `onPress` fires nothing, and a click fires once. So a control
|
|
7
|
+
* drawn from a stack handles the two keys itself — which cannot double-fire, for
|
|
8
|
+
* the same reason. One helper, so no call site forgets Space or the
|
|
9
|
+
* `preventDefault` that keeps Space from scrolling the page.
|
|
10
|
+
*
|
|
11
|
+
* Spread it first; a call site's own `aria-*` and style props follow it.
|
|
12
|
+
*/
|
|
13
|
+
export const press = (run) => ({
|
|
14
|
+
role: 'button',
|
|
15
|
+
tabIndex: 0,
|
|
16
|
+
onPress: run,
|
|
17
|
+
onKeyDown: (e) => {
|
|
18
|
+
if (e?.key !== 'Enter' && e?.key !== ' ')
|
|
19
|
+
return;
|
|
20
|
+
e.preventDefault?.();
|
|
21
|
+
run?.();
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
/** The keyboard focus ring every control in the package draws. */
|
|
25
|
+
export const RING = { outlineColor: '$outlineColor', outlineWidth: 2, outlineStyle: 'solid' };
|
|
26
|
+
//# sourceMappingURL=press.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"press.js","sourceRoot":"","sources":["../../../src/backends/gui/press.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAgB,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,EAAE,QAAiB;IACvB,QAAQ,EAAE,CAAC;IACX,OAAO,EAAE,GAAG;IACZ,SAAS,EAAE,CAAC,CAAgD,EAAE,EAAE;QAC9D,IAAI,CAAC,EAAE,GAAG,KAAK,OAAO,IAAI,CAAC,EAAE,GAAG,KAAK,GAAG;YAAE,OAAM;QAChD,CAAC,CAAC,cAAc,EAAE,EAAE,CAAA;QACpB,GAAG,EAAE,EAAE,CAAA;IACT,CAAC;CACF,CAAC,CAAA;AAEF,kEAAkE;AAClE,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,EAAW,CAAA"}
|
|
@@ -47,6 +47,7 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
47
47
|
const gui_1 = require("@hanzo/gui");
|
|
48
48
|
const react_1 = require("react");
|
|
49
49
|
const ink_1 = require("./ink.cjs");
|
|
50
|
+
const press_1 = require("./press.cjs");
|
|
50
51
|
const slot_1 = require("./slot.cjs");
|
|
51
52
|
const gesture_1 = require("./gesture.cjs");
|
|
52
53
|
/** Density ladder — the Button's, so a toggle and a button line up in a row. */
|
|
@@ -77,8 +78,6 @@ const ON = {
|
|
|
77
78
|
default: { backgroundColor: '$rim', borderColor: '$bound' },
|
|
78
79
|
outline: { backgroundColor: '$raised', borderColor: '$bound' },
|
|
79
80
|
};
|
|
80
|
-
/** The system's WCAG-checked ring — `unstyled` items lose gui's, so restore it. */
|
|
81
|
-
const RING = { outlineColor: '$outlineColor', outlineWidth: 2, outlineStyle: 'solid' };
|
|
82
81
|
const GroupContext = /* @__PURE__ */ (0, react_1.createContext)({
|
|
83
82
|
type: 'multiple',
|
|
84
83
|
selected: [],
|
|
@@ -106,7 +105,7 @@ function ToggleGroupItem({ variant, size, disabled, children, value, ...props })
|
|
|
106
105
|
return ((0, jsx_runtime_1.jsx)(gui_1.ToggleGroup.Item, { value: value, ...(0, slot_1.slot)('toggle-group-item'), "data-variant": v, "data-size": s,
|
|
107
106
|
// The two Radix semantics gui drops in `single` mode. `aria-pressed` is
|
|
108
107
|
// left alone for `multiple`, where gui already sets it from the same state.
|
|
109
|
-
role: group.type === 'single' ? 'radio' : undefined, "aria-checked": group.type === 'single' ? on : undefined, unstyled: true, flexDirection: "row", items: "center", justify: "center", height: HEIGHT[s], px: PAD[s], gap: "$1.5", borderWidth: 1, rounded: "$3", select: "none", disabled: off, opacity: off ? 0.5 : 1, cursor: off ? 'not-allowed' : 'pointer', focusVisibleStyle: RING, ...REST[v], activeStyle: ON[v], ...(0, gesture_1.touch)(HEIGHT[s], 44, 'y'), ...props, children: (0, ink_1.ink)(children, undefined, {
|
|
108
|
+
role: group.type === 'single' ? 'radio' : undefined, "aria-checked": group.type === 'single' ? on : undefined, unstyled: true, flexDirection: "row", items: "center", justify: "center", height: HEIGHT[s], px: PAD[s], gap: "$1.5", borderWidth: 1, rounded: "$3", select: "none", disabled: off, opacity: off ? 0.5 : 1, cursor: off ? 'not-allowed' : 'pointer', focusVisibleStyle: press_1.RING, ...REST[v], activeStyle: ON[v], ...(0, gesture_1.touch)(HEIGHT[s], 44, 'y'), ...props, children: (0, ink_1.ink)(children, undefined, {
|
|
110
109
|
size: TYPE[s],
|
|
111
110
|
fontWeight: '500',
|
|
112
111
|
color: on ? '$ink' : '$quiet',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toggle-group.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/toggle-group.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,OAAO,EAAE,WAAW,IAAI,cAAc,EAAwB,MAAM,YAAY,CAAA;AAChF,OAAO,EAA6B,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"toggle-group.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/toggle-group.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,OAAO,EAAE,WAAW,IAAI,cAAc,EAAwB,MAAM,YAAY,CAAA;AAChF,OAAO,EAA6B,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAM1G,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,SAAS,CAAA;AACtD,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAAA;AAuDrD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,KAAK,eAAe,GAAG;IACrB,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACvC,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG;IAC/C,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAChC;;;;;;;;;OASG;IACH,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;CAC/C,CAAA;AAED,iBAAS,WAAW,CAAC,EACnB,IAAe,EACf,KAAK,EACL,YAAY,EACZ,aAAa,EACb,WAA0B,EAC1B,mBAAmB,EACnB,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,gBAAgB,+BAoClB;AAED,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,cAAc,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,EAC1C,MAAM,CACP,GAAG;IACF,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B,IAAI,CAAC,EAAE,eAAe,CAAA;CACvB,CAAA;AAED,iBAAS,eAAe,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,+BA+CpG;AAED,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,CAAA"}
|
|
@@ -43,6 +43,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
43
43
|
import { ToggleGroup as GuiToggleGroup, useControllableState } from '@hanzo/gui';
|
|
44
44
|
import { createContext, useContext } from 'react';
|
|
45
45
|
import { ink } from './ink.js';
|
|
46
|
+
import { RING } from './press.js';
|
|
46
47
|
import { slot } from './slot.js';
|
|
47
48
|
import { touch } from './gesture.js';
|
|
48
49
|
/** Density ladder — the Button's, so a toggle and a button line up in a row. */
|
|
@@ -73,8 +74,6 @@ const ON = {
|
|
|
73
74
|
default: { backgroundColor: '$rim', borderColor: '$bound' },
|
|
74
75
|
outline: { backgroundColor: '$raised', borderColor: '$bound' },
|
|
75
76
|
};
|
|
76
|
-
/** The system's WCAG-checked ring — `unstyled` items lose gui's, so restore it. */
|
|
77
|
-
const RING = { outlineColor: '$outlineColor', outlineWidth: 2, outlineStyle: 'solid' };
|
|
78
77
|
const GroupContext = /* @__PURE__ */ createContext({
|
|
79
78
|
type: 'multiple',
|
|
80
79
|
selected: [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toggle-group.js","sourceRoot":"","sources":["../../../src/backends/gui/toggle-group.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,OAAO,EAAE,WAAW,IAAI,cAAc,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAChF,OAAO,EAAE,aAAa,EAAE,UAAU,EAA2D,MAAM,OAAO,CAAA;AAC1G,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAKjC,gFAAgF;AAChF,MAAM,MAAM,GAAoC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAA;AAC/E,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAW,CAAA;AAC5D,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAW,CAAA;AAE3D,8EAA8E;AAC9E,MAAM,IAAI,GAAG;IACX,OAAO,EAAE;QACP,eAAe,EAAE,QAAQ;QACzB,WAAW,EAAE,aAAa;QAC1B,UAAU,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE;KACzC;IACD,OAAO,EAAE;QACP,eAAe,EAAE,aAAa;QAC9B,WAAW,EAAE,cAAc;QAC3B,UAAU,EAAE,EAAE,eAAe,EAAE,QAAQ,EAAE;KAC1C;CACO,CAAA;AAEV;;;;;;GAMG;AACH,MAAM,EAAE,GAAG;IACT,OAAO,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE;IAC3D,OAAO,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE;CACtD,CAAA;
|
|
1
|
+
{"version":3,"file":"toggle-group.js","sourceRoot":"","sources":["../../../src/backends/gui/toggle-group.tsx"],"names":[],"mappings":"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"}
|
|
@@ -24,13 +24,12 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
24
24
|
*/
|
|
25
25
|
const gui_1 = require("@hanzo/gui");
|
|
26
26
|
const ink_1 = require("./ink.cjs");
|
|
27
|
+
const press_1 = require("./press.cjs");
|
|
27
28
|
const slot_1 = require("./slot.cjs");
|
|
28
29
|
const gesture_1 = require("./gesture.cjs");
|
|
29
30
|
/** The Button ladder, so a Toggle sitting next to a Button lines up. */
|
|
30
31
|
const HEIGHT = { default: 36, sm: 32, lg: 40 };
|
|
31
32
|
const PAD = { default: '$3', sm: '$2.5', lg: '$4' };
|
|
32
|
-
/** The system's WCAG-checked ring — `unstyled` drops gui's, so restore it. */
|
|
33
|
-
const RING = { outlineColor: '$outlineColor', outlineWidth: 2, outlineStyle: 'solid' };
|
|
34
33
|
const ToggleFrame = (0, gui_1.styled)(gui_1.XStack, {
|
|
35
34
|
name: 'Toggle',
|
|
36
35
|
unstyled: true,
|
|
@@ -43,7 +42,7 @@ const ToggleFrame = (0, gui_1.styled)(gui_1.XStack, {
|
|
|
43
42
|
borderWidth: 1,
|
|
44
43
|
select: 'none',
|
|
45
44
|
cursor: 'pointer',
|
|
46
|
-
focusVisibleStyle: RING,
|
|
45
|
+
focusVisibleStyle: press_1.RING,
|
|
47
46
|
variants: {
|
|
48
47
|
variant: {
|
|
49
48
|
default: {
|
|
@@ -71,7 +70,7 @@ const ToggleFrame = (0, gui_1.styled)(gui_1.XStack, {
|
|
|
71
70
|
bg: '$rim',
|
|
72
71
|
borderColor: '$bound',
|
|
73
72
|
hoverStyle: { bg: '$rim' },
|
|
74
|
-
focusVisibleStyle: { ...RING, bg: '$rim' },
|
|
73
|
+
focusVisibleStyle: { ...press_1.RING, bg: '$rim' },
|
|
75
74
|
},
|
|
76
75
|
},
|
|
77
76
|
disabled: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toggle.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/toggle.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"toggle.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/toggle.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAMzE,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,SAAS,CAAA;AACjD,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAAA;AAOhD,QAAA,MAAM,WAAW;;;;;;;8CAkDf,CAAA;AAEF,MAAM,MAAM,WAAW,GAAG,IAAI,CAC5B,cAAc,CAAC,OAAO,WAAW,CAAC,EAClC,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CACxD,GAAG;IACF,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IAC9B,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IACxB,gCAAgC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,+CAA+C;IAC/C,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,eAAe,CAAC,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAA;IACpC,6DAA6D;IAC7D,OAAO,CAAC,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAA;CACzC,CAAA;AAED,iBAAS,MAAM,CAAC,EACd,OAAmB,EACnB,IAAgB,EAChB,OAAO,EACP,cAAsB,EACtB,eAAe,EACf,QAAgB,EAChB,IAAe,EACf,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,WAAW,+BAkCb;AAED,OAAO,EAAE,MAAM,EAAE,CAAA"}
|
|
@@ -21,13 +21,12 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
21
21
|
*/
|
|
22
22
|
import { XStack, styled, useControllableState } from '@hanzo/gui';
|
|
23
23
|
import { ink } from './ink.js';
|
|
24
|
+
import { RING } from './press.js';
|
|
24
25
|
import { slot } from './slot.js';
|
|
25
26
|
import { touch } from './gesture.js';
|
|
26
27
|
/** The Button ladder, so a Toggle sitting next to a Button lines up. */
|
|
27
28
|
const HEIGHT = { default: 36, sm: 32, lg: 40 };
|
|
28
29
|
const PAD = { default: '$3', sm: '$2.5', lg: '$4' };
|
|
29
|
-
/** The system's WCAG-checked ring — `unstyled` drops gui's, so restore it. */
|
|
30
|
-
const RING = { outlineColor: '$outlineColor', outlineWidth: 2, outlineStyle: 'solid' };
|
|
31
30
|
const ToggleFrame = styled(XStack, {
|
|
32
31
|
name: 'Toggle',
|
|
33
32
|
unstyled: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toggle.js","sourceRoot":"","sources":["../../../src/backends/gui/toggle.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEjE,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAKjC,wEAAwE;AACxE,MAAM,MAAM,GAA+B,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAA;AAC1E,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"toggle.js","sourceRoot":"","sources":["../../../src/backends/gui/toggle.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
'use client';"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Shelf = Shelf;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
/**
|
|
7
|
+
* Shelf — a catalogue page: what an org has, and what it can add, one kind at a
|
|
8
|
+
* time.
|
|
9
|
+
*
|
|
10
|
+
* Customize
|
|
11
|
+
* What the agent brings to a run …
|
|
12
|
+
* ▢ Skills ⌁ Connectors ⧉ Plugins ☺ Agents the kinds, a tablist
|
|
13
|
+
* ─────────
|
|
14
|
+
* [ Yours | Discover ] [ + New skill ]
|
|
15
|
+
* [ Search skills… ]
|
|
16
|
+
* (the cards — `Tiles` of `Tile`s, a `Featured` first)
|
|
17
|
+
*
|
|
18
|
+
* The kinds are a tab strip underlined at the chosen one: one tab stop, arrows
|
|
19
|
+
* move the choice, Home/End jump. Yours/Discover is the package's one segmented
|
|
20
|
+
* control (`Views`, from `@hanzo/ui/agents`), so it is not drawn twice. The
|
|
21
|
+
* search and the Add are the shelf's; what they find and add is the host's.
|
|
22
|
+
*
|
|
23
|
+
* Presentational: the kind, the half and the query come in, every change goes
|
|
24
|
+
* out, and the cards are `children`. On a phone the column takes the width, the
|
|
25
|
+
* tabs drop their icons, and the grid stacks to one card a row.
|
|
26
|
+
*/
|
|
27
|
+
const gui_1 = require("@hanzo/gui");
|
|
28
|
+
const lucide_icons_2_1 = require("@hanzogui/lucide-icons-2");
|
|
29
|
+
const react_1 = require("react");
|
|
30
|
+
const Workspace_1 = require("../agents/Workspace.cjs");
|
|
31
|
+
const button_1 = require("../backends/gui/button.cjs");
|
|
32
|
+
const input_1 = require("../backends/gui/input.cjs");
|
|
33
|
+
const press_1 = require("../backends/gui/press.cjs");
|
|
34
|
+
const slot_1 = require("../backends/gui/slot.cjs");
|
|
35
|
+
/** The page's measure, px. Three 280px cards and their gaps, with room. */
|
|
36
|
+
const MEASURE = 1080;
|
|
37
|
+
/** What a shelf shows by default: the org's own, and what it can add. */
|
|
38
|
+
const HALVES = [
|
|
39
|
+
{ id: 'yours', label: 'Yours' },
|
|
40
|
+
{ id: 'discover', label: 'Discover' },
|
|
41
|
+
];
|
|
42
|
+
function Shelf({ title, detail, tabs, tab, onTab, views = HALVES, view, onView, search, query, onQuery, add, onAdd, level = 1, children, ...rest }) {
|
|
43
|
+
const refs = (0, react_1.useRef)([]);
|
|
44
|
+
const id = (0, react_1.useId)();
|
|
45
|
+
const panel = `${id}-panel`;
|
|
46
|
+
// The strip's one tab stop is the open kind — or the first, when `tab` names
|
|
47
|
+
// none, so the strip is never unreachable from the keyboard.
|
|
48
|
+
const stop = Math.max(0, tabs.findIndex((t) => t.id === tab));
|
|
49
|
+
const move = (e, index) => {
|
|
50
|
+
const last = tabs.length - 1;
|
|
51
|
+
const to = e.key === 'ArrowRight' ? (index === last ? 0 : index + 1)
|
|
52
|
+
: e.key === 'ArrowLeft' ? (index === 0 ? last : index - 1)
|
|
53
|
+
: e.key === 'Home' ? 0
|
|
54
|
+
: e.key === 'End' ? last
|
|
55
|
+
: -1;
|
|
56
|
+
if (to < 0) {
|
|
57
|
+
// A tab is a button: Enter and Space choose it, which gui does not do for
|
|
58
|
+
// a stack on its own.
|
|
59
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
60
|
+
e.preventDefault?.();
|
|
61
|
+
onTab(tabs[index].id);
|
|
62
|
+
}
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
e.preventDefault?.();
|
|
66
|
+
onTab(tabs[to].id);
|
|
67
|
+
refs.current[to]?.focus();
|
|
68
|
+
};
|
|
69
|
+
return ((0, jsx_runtime_1.jsx)(gui_1.YStack, { ...(0, slot_1.slot)('shelf'), flex: 1, minH: 0, overflow: "scroll", px: "$6", py: "$6", "$max-md": { px: '$4', py: '$4' }, ...rest, children: (0, jsx_runtime_1.jsxs)(gui_1.YStack, { width: "100%", maxW: MEASURE, mx: "auto", gap: "$4", children: [(0, jsx_runtime_1.jsxs)(gui_1.YStack, { gap: "$1", children: [(0, jsx_runtime_1.jsx)(gui_1.SizableText, { role: "heading", "aria-level": level, size: "$6", color: "$ink", children: title }), detail ? ((0, jsx_runtime_1.jsx)(gui_1.SizableText, { size: "$2", color: "$soft", children: detail })) : null] }), (0, jsx_runtime_1.jsx)(gui_1.XStack, { ...(0, slot_1.slot)('shelf-tabs'), role: "tablist", "aria-label": title, gap: "$4", borderBottomWidth: 1, borderColor: "$borderColor", "$max-md": { gap: '$3' }, children: tabs.map((t, index) => {
|
|
70
|
+
const on = t.id === tab;
|
|
71
|
+
const Icon = t.icon;
|
|
72
|
+
return ((0, jsx_runtime_1.jsxs)(gui_1.XStack, { ref: (el) => {
|
|
73
|
+
refs.current[index] = el;
|
|
74
|
+
}, ...(0, slot_1.slot)('shelf-tab'), id: `${id}-tab-${t.id}`, role: "tab", tabIndex: index === stop ? 0 : -1, "aria-selected": on, "aria-controls": on ? panel : undefined, onPress: () => onTab(t.id), onKeyDown: (e) => move(e, index), items: "center", gap: "$1.5", pb: "$2", mb: -1, cursor: "pointer", borderBottomWidth: 2, borderColor: on ? '$ink' : 'transparent', hoverStyle: { borderColor: on ? '$ink' : '$edge' }, focusVisibleStyle: press_1.RING, children: [Icon ? ((0, jsx_runtime_1.jsx)(gui_1.XStack, { opacity: on ? 1 : 0.6, "aria-hidden": true, "$max-md": { display: 'none' }, children: (0, jsx_runtime_1.jsx)(Icon, { size: 15 }) })) : null, (0, jsx_runtime_1.jsx)(gui_1.SizableText, { size: "$3", color: on ? '$ink' : '$soft', children: t.label })] }, t.id));
|
|
75
|
+
}) }), (0, jsx_runtime_1.jsxs)(gui_1.YStack, { ...(0, slot_1.slot)('shelf-panel'), id: panel, role: "tabpanel", "aria-labelledby": tabs.some((t) => t.id === tab) ? `${id}-tab-${tab}` : undefined, "aria-label": tabs.some((t) => t.id === tab) ? undefined : title, gap: "$4", children: [(0, jsx_runtime_1.jsxs)(gui_1.XStack, { items: "center", gap: "$2", children: [(0, jsx_runtime_1.jsx)(Workspace_1.Views, { views: views, value: view, onChange: onView, label: "Show", labels: "all" }), (0, jsx_runtime_1.jsx)(gui_1.XStack, { flex: 1 }), add && onAdd ? ((0, jsx_runtime_1.jsxs)(button_1.Button, { size: "sm", onPress: onAdd, children: [(0, jsx_runtime_1.jsx)(lucide_icons_2_1.Plus, { size: 14 }), " ", add] })) : null] }), (0, jsx_runtime_1.jsx)(input_1.Input, { value: query, onChangeText: onQuery, placeholder: `${search}…`, "aria-label": search }), children] })] }) }));
|
|
76
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shelf — a catalogue page: what an org has, and what it can add, one kind at a
|
|
3
|
+
* time.
|
|
4
|
+
*
|
|
5
|
+
* Customize
|
|
6
|
+
* What the agent brings to a run …
|
|
7
|
+
* ▢ Skills ⌁ Connectors ⧉ Plugins ☺ Agents the kinds, a tablist
|
|
8
|
+
* ─────────
|
|
9
|
+
* [ Yours | Discover ] [ + New skill ]
|
|
10
|
+
* [ Search skills… ]
|
|
11
|
+
* (the cards — `Tiles` of `Tile`s, a `Featured` first)
|
|
12
|
+
*
|
|
13
|
+
* The kinds are a tab strip underlined at the chosen one: one tab stop, arrows
|
|
14
|
+
* move the choice, Home/End jump. Yours/Discover is the package's one segmented
|
|
15
|
+
* control (`Views`, from `@hanzo/ui/agents`), so it is not drawn twice. The
|
|
16
|
+
* search and the Add are the shelf's; what they find and add is the host's.
|
|
17
|
+
*
|
|
18
|
+
* Presentational: the kind, the half and the query come in, every change goes
|
|
19
|
+
* out, and the cards are `children`. On a phone the column takes the width, the
|
|
20
|
+
* tabs drop their icons, and the grid stacks to one card a row.
|
|
21
|
+
*/
|
|
22
|
+
import { YStack } from '@hanzo/gui';
|
|
23
|
+
import { type ComponentProps, type ReactNode } from 'react';
|
|
24
|
+
import { type View } from '../agents/Workspace.js';
|
|
25
|
+
type Col = Omit<ComponentProps<typeof YStack>, 'children'>;
|
|
26
|
+
export interface ShelfProps extends Col {
|
|
27
|
+
/** The page's title. */
|
|
28
|
+
title: string;
|
|
29
|
+
/** One or two lines on what the page is for. */
|
|
30
|
+
detail?: string;
|
|
31
|
+
/** The kinds, as tabs. An icon is a component, drawn at 15px. */
|
|
32
|
+
tabs: readonly View[];
|
|
33
|
+
/** The open kind's id. */
|
|
34
|
+
tab: string;
|
|
35
|
+
onTab: (id: string) => void;
|
|
36
|
+
/** The halves of a kind. Yours and Discover unless given. */
|
|
37
|
+
views?: readonly View[];
|
|
38
|
+
/** The open half's id. */
|
|
39
|
+
view: string;
|
|
40
|
+
onView: (id: string) => void;
|
|
41
|
+
/** The search's name and placeholder — "Search skills". */
|
|
42
|
+
search: string;
|
|
43
|
+
query: string;
|
|
44
|
+
onQuery: (q: string) => void;
|
|
45
|
+
/** The Add action's words — "New skill". None, and there is no Add. */
|
|
46
|
+
add?: string;
|
|
47
|
+
onAdd?: () => void;
|
|
48
|
+
/** The title's outline level. */
|
|
49
|
+
level?: 1 | 2;
|
|
50
|
+
/** The cards. */
|
|
51
|
+
children?: ReactNode;
|
|
52
|
+
}
|
|
53
|
+
export declare function Shelf({ title, detail, tabs, tab, onTab, views, view, onView, search, query, onQuery, add, onAdd, level, children, ...rest }: ShelfProps): import("react").JSX.Element;
|
|
54
|
+
export {};
|
|
55
|
+
//# sourceMappingURL=Shelf.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Shelf.d.ts","sourceRoot":"","sources":["../../src/catalog/Shelf.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAuB,MAAM,EAAE,MAAM,YAAY,CAAA;AAExD,OAAO,EAAiB,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAE1E,OAAO,EAAS,KAAK,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAMtD,KAAK,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,UAAU,CAAC,CAAA;AAW1D,MAAM,WAAW,UAAW,SAAQ,GAAG;IACrC,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iEAAiE;IACjE,IAAI,EAAE,SAAS,IAAI,EAAE,CAAA;IACrB,0BAA0B;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3B,6DAA6D;IAC7D,KAAK,CAAC,EAAE,SAAS,IAAI,EAAE,CAAA;IACvB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5B,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5B,uEAAuE;IACvE,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,IAAI,CAAA;IAClB,iCAAiC;IACjC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IACb,iBAAiB;IACjB,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB;AAED,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,MAAM,EACN,IAAI,EACJ,GAAG,EACH,KAAK,EACL,KAAc,EACd,IAAI,EACJ,MAAM,EACN,MAAM,EACN,KAAK,EACL,OAAO,EACP,GAAG,EACH,KAAK,EACL,KAAS,EACT,QAAQ,EACR,GAAG,IAAI,EACR,EAAE,UAAU,+BA8HZ"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
/**
|
|
4
|
+
* Shelf — a catalogue page: what an org has, and what it can add, one kind at a
|
|
5
|
+
* time.
|
|
6
|
+
*
|
|
7
|
+
* Customize
|
|
8
|
+
* What the agent brings to a run …
|
|
9
|
+
* ▢ Skills ⌁ Connectors ⧉ Plugins ☺ Agents the kinds, a tablist
|
|
10
|
+
* ─────────
|
|
11
|
+
* [ Yours | Discover ] [ + New skill ]
|
|
12
|
+
* [ Search skills… ]
|
|
13
|
+
* (the cards — `Tiles` of `Tile`s, a `Featured` first)
|
|
14
|
+
*
|
|
15
|
+
* The kinds are a tab strip underlined at the chosen one: one tab stop, arrows
|
|
16
|
+
* move the choice, Home/End jump. Yours/Discover is the package's one segmented
|
|
17
|
+
* control (`Views`, from `@hanzo/ui/agents`), so it is not drawn twice. The
|
|
18
|
+
* search and the Add are the shelf's; what they find and add is the host's.
|
|
19
|
+
*
|
|
20
|
+
* Presentational: the kind, the half and the query come in, every change goes
|
|
21
|
+
* out, and the cards are `children`. On a phone the column takes the width, the
|
|
22
|
+
* tabs drop their icons, and the grid stacks to one card a row.
|
|
23
|
+
*/
|
|
24
|
+
import { SizableText, XStack, YStack } from '@hanzo/gui';
|
|
25
|
+
import { Plus } from '@hanzogui/lucide-icons-2';
|
|
26
|
+
import { useId, useRef } from 'react';
|
|
27
|
+
import { Views } from '../agents/Workspace.js';
|
|
28
|
+
import { Button } from '../backends/gui/button.js';
|
|
29
|
+
import { Input } from '../backends/gui/input.js';
|
|
30
|
+
import { RING } from '../backends/gui/press.js';
|
|
31
|
+
import { slot } from '../backends/gui/slot.js';
|
|
32
|
+
/** The page's measure, px. Three 280px cards and their gaps, with room. */
|
|
33
|
+
const MEASURE = 1080;
|
|
34
|
+
/** What a shelf shows by default: the org's own, and what it can add. */
|
|
35
|
+
const HALVES = [
|
|
36
|
+
{ id: 'yours', label: 'Yours' },
|
|
37
|
+
{ id: 'discover', label: 'Discover' },
|
|
38
|
+
];
|
|
39
|
+
export function Shelf({ title, detail, tabs, tab, onTab, views = HALVES, view, onView, search, query, onQuery, add, onAdd, level = 1, children, ...rest }) {
|
|
40
|
+
const refs = useRef([]);
|
|
41
|
+
const id = useId();
|
|
42
|
+
const panel = `${id}-panel`;
|
|
43
|
+
// The strip's one tab stop is the open kind — or the first, when `tab` names
|
|
44
|
+
// none, so the strip is never unreachable from the keyboard.
|
|
45
|
+
const stop = Math.max(0, tabs.findIndex((t) => t.id === tab));
|
|
46
|
+
const move = (e, index) => {
|
|
47
|
+
const last = tabs.length - 1;
|
|
48
|
+
const to = e.key === 'ArrowRight' ? (index === last ? 0 : index + 1)
|
|
49
|
+
: e.key === 'ArrowLeft' ? (index === 0 ? last : index - 1)
|
|
50
|
+
: e.key === 'Home' ? 0
|
|
51
|
+
: e.key === 'End' ? last
|
|
52
|
+
: -1;
|
|
53
|
+
if (to < 0) {
|
|
54
|
+
// A tab is a button: Enter and Space choose it, which gui does not do for
|
|
55
|
+
// a stack on its own.
|
|
56
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
57
|
+
e.preventDefault?.();
|
|
58
|
+
onTab(tabs[index].id);
|
|
59
|
+
}
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
e.preventDefault?.();
|
|
63
|
+
onTab(tabs[to].id);
|
|
64
|
+
refs.current[to]?.focus();
|
|
65
|
+
};
|
|
66
|
+
return (_jsx(YStack, { ...slot('shelf'), flex: 1, minH: 0, overflow: "scroll", px: "$6", py: "$6", "$max-md": { px: '$4', py: '$4' }, ...rest, children: _jsxs(YStack, { width: "100%", maxW: MEASURE, mx: "auto", gap: "$4", children: [_jsxs(YStack, { gap: "$1", children: [_jsx(SizableText, { role: "heading", "aria-level": level, size: "$6", color: "$ink", children: title }), detail ? (_jsx(SizableText, { size: "$2", color: "$soft", children: detail })) : null] }), _jsx(XStack, { ...slot('shelf-tabs'), role: "tablist", "aria-label": title, gap: "$4", borderBottomWidth: 1, borderColor: "$borderColor", "$max-md": { gap: '$3' }, children: tabs.map((t, index) => {
|
|
67
|
+
const on = t.id === tab;
|
|
68
|
+
const Icon = t.icon;
|
|
69
|
+
return (_jsxs(XStack, { ref: (el) => {
|
|
70
|
+
refs.current[index] = el;
|
|
71
|
+
}, ...slot('shelf-tab'), id: `${id}-tab-${t.id}`, role: "tab", tabIndex: index === stop ? 0 : -1, "aria-selected": on, "aria-controls": on ? panel : undefined, onPress: () => onTab(t.id), onKeyDown: (e) => move(e, index), items: "center", gap: "$1.5", pb: "$2", mb: -1, cursor: "pointer", borderBottomWidth: 2, borderColor: on ? '$ink' : 'transparent', hoverStyle: { borderColor: on ? '$ink' : '$edge' }, focusVisibleStyle: RING, children: [Icon ? (_jsx(XStack, { opacity: on ? 1 : 0.6, "aria-hidden": true, "$max-md": { display: 'none' }, children: _jsx(Icon, { size: 15 }) })) : null, _jsx(SizableText, { size: "$3", color: on ? '$ink' : '$soft', children: t.label })] }, t.id));
|
|
72
|
+
}) }), _jsxs(YStack, { ...slot('shelf-panel'), id: panel, role: "tabpanel", "aria-labelledby": tabs.some((t) => t.id === tab) ? `${id}-tab-${tab}` : undefined, "aria-label": tabs.some((t) => t.id === tab) ? undefined : title, gap: "$4", children: [_jsxs(XStack, { items: "center", gap: "$2", children: [_jsx(Views, { views: views, value: view, onChange: onView, label: "Show", labels: "all" }), _jsx(XStack, { flex: 1 }), add && onAdd ? (_jsxs(Button, { size: "sm", onPress: onAdd, children: [_jsx(Plus, { size: 14 }), " ", add] })) : null] }), _jsx(Input, { value: query, onChangeText: onQuery, placeholder: `${search}…`, "aria-label": search }), children] })] }) }));
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=Shelf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Shelf.js","sourceRoot":"","sources":["../../src/catalog/Shelf.tsx"],"names":[],"mappings":"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"}
|