@panneau/app 5.0.0-alpha.4 → 5.0.0-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/README.md +33 -5
  2. package/dist/Panneau.css +19 -0
  3. package/dist/Panneau.d.ts +13 -1
  4. package/dist/Panneau.d.ts.map +1 -1
  5. package/dist/Panneau.js +144 -31
  6. package/dist/Panneau.js.map +1 -1
  7. package/dist/Panneau.module.js +12 -0
  8. package/dist/Panneau.module.js.map +1 -0
  9. package/dist/Shell.d.ts +8 -3
  10. package/dist/Shell.d.ts.map +1 -1
  11. package/dist/Shell.js +272 -114
  12. package/dist/Shell.js.map +1 -1
  13. package/dist/createPanneauApp.d.ts +9 -0
  14. package/dist/createPanneauApp.d.ts.map +1 -1
  15. package/dist/createPanneauApp.js.map +1 -1
  16. package/dist/cx.d.ts +3 -0
  17. package/dist/cx.d.ts.map +1 -0
  18. package/dist/cx.js +9 -0
  19. package/dist/cx.js.map +1 -0
  20. package/dist/documentTitle.d.ts +10 -0
  21. package/dist/documentTitle.d.ts.map +1 -0
  22. package/dist/documentTitle.js +49 -0
  23. package/dist/documentTitle.js.map +1 -0
  24. package/dist/index.d.ts +1 -0
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +2 -1
  27. package/dist/location.d.ts +13 -1
  28. package/dist/location.d.ts.map +1 -1
  29. package/dist/location.js +55 -48
  30. package/dist/location.js.map +1 -1
  31. package/dist/navigation.d.ts +53 -0
  32. package/dist/navigation.d.ts.map +1 -0
  33. package/dist/navigation.js +117 -0
  34. package/dist/navigation.js.map +1 -0
  35. package/dist/pages/HomePage.d.ts +11 -0
  36. package/dist/pages/HomePage.d.ts.map +1 -0
  37. package/dist/pages/HomePage.js +111 -0
  38. package/dist/pages/HomePage.js.map +1 -0
  39. package/dist/pages/ItemPanel.css +164 -0
  40. package/dist/pages/ItemPanel.d.ts +17 -0
  41. package/dist/pages/ItemPanel.d.ts.map +1 -0
  42. package/dist/pages/ItemPanel.js +370 -0
  43. package/dist/pages/ItemPanel.js.map +1 -0
  44. package/dist/pages/ItemPanel.module.js +34 -0
  45. package/dist/pages/ItemPanel.module.js.map +1 -0
  46. package/dist/pages/ItemPreview.d.ts +15 -0
  47. package/dist/pages/ItemPreview.d.ts.map +1 -0
  48. package/dist/pages/ItemPreview.js +179 -0
  49. package/dist/pages/ItemPreview.js.map +1 -0
  50. package/dist/pages/NotFoundPage.d.ts +6 -0
  51. package/dist/pages/NotFoundPage.d.ts.map +1 -0
  52. package/dist/pages/NotFoundPage.js +93 -0
  53. package/dist/pages/NotFoundPage.js.map +1 -0
  54. package/dist/pages/PageHeader.d.ts +21 -0
  55. package/dist/pages/PageHeader.d.ts.map +1 -0
  56. package/dist/pages/PageHeader.js +86 -0
  57. package/dist/pages/PageHeader.js.map +1 -0
  58. package/dist/pages/ResourceFormPage.d.ts +15 -0
  59. package/dist/pages/ResourceFormPage.d.ts.map +1 -0
  60. package/dist/pages/ResourceFormPage.js +204 -0
  61. package/dist/pages/ResourceFormPage.js.map +1 -0
  62. package/dist/pages/ResourceListPage.d.ts +15 -0
  63. package/dist/pages/ResourceListPage.d.ts.map +1 -0
  64. package/dist/pages/ResourceListPage.js +101 -0
  65. package/dist/pages/ResourceListPage.js.map +1 -0
  66. package/dist/pages/itemTitle.d.ts +7 -0
  67. package/dist/pages/itemTitle.d.ts.map +1 -0
  68. package/dist/pages/itemTitle.js +18 -0
  69. package/dist/pages/itemTitle.js.map +1 -0
  70. package/dist/pages/pages.css +162 -0
  71. package/dist/pages/pages.module.js +40 -0
  72. package/dist/pages/pages.module.js.map +1 -0
  73. package/dist/preferences.d.ts +6 -0
  74. package/dist/preferences.d.ts.map +1 -0
  75. package/dist/preferences.js +53 -0
  76. package/dist/preferences.js.map +1 -0
  77. package/dist/recentItems.d.ts +15 -0
  78. package/dist/recentItems.d.ts.map +1 -0
  79. package/dist/recentItems.js +70 -0
  80. package/dist/recentItems.js.map +1 -0
  81. package/dist/shell/AppLayout.css +189 -0
  82. package/dist/shell/AppLayout.d.ts +22 -0
  83. package/dist/shell/AppLayout.d.ts.map +1 -0
  84. package/dist/shell/AppLayout.js +365 -0
  85. package/dist/shell/AppLayout.js.map +1 -0
  86. package/dist/shell/AppLayout.module.js +36 -0
  87. package/dist/shell/AppLayout.module.js.map +1 -0
  88. package/dist/shell/GoTo.d.ts +20 -0
  89. package/dist/shell/GoTo.d.ts.map +1 -0
  90. package/dist/shell/GoTo.js +370 -0
  91. package/dist/shell/GoTo.js.map +1 -0
  92. package/dist/shell/Sidebar.css +313 -0
  93. package/dist/shell/Sidebar.d.ts +29 -0
  94. package/dist/shell/Sidebar.d.ts.map +1 -0
  95. package/dist/shell/Sidebar.js +225 -0
  96. package/dist/shell/Sidebar.js.map +1 -0
  97. package/dist/shell/Sidebar.module.js +60 -0
  98. package/dist/shell/Sidebar.module.js.map +1 -0
  99. package/dist/shell/tokens.d.ts +23 -0
  100. package/dist/shell/tokens.d.ts.map +1 -0
  101. package/dist/shell/tokens.js +75 -0
  102. package/dist/shell/tokens.js.map +1 -0
  103. package/package.json +15 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sidebar.module.js","names":[],"sources":["../../src/shell/Sidebar.module.css"],"sourcesContent":["/* The sidebar sits on the window's background, like the tab strip of a browser: no surface of its\n * own, and the current link raised on a surface. Collapsed, it is a rail of icons. */\n\n.sidebar {\n display: flex;\n flex-direction: column;\n gap: var(--panneau-space-4);\n min-width: 0;\n height: 100%;\n padding: var(--panneau-space-3) var(--panneau-space-2);\n}\n\n.top {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--panneau-space-2);\n min-width: 0;\n}\n\n.brand {\n display: flex;\n flex: 1 1 auto;\n align-items: center;\n gap: var(--panneau-space-2);\n min-width: 0;\n min-height: var(--panneau-control-height-sm);\n padding-inline: var(--panneau-space-1);\n border-radius: var(--panneau-radius-md);\n color: var(--panneau-color-text);\n font-weight: var(--panneau-font-weight-bold);\n text-decoration: none;\n outline: none;\n}\n\n.logo {\n display: inline-grid;\n flex: none;\n place-items: center;\n width: 1.75rem;\n height: 1.75rem;\n border-radius: var(--panneau-radius-md);\n background: var(--panneau-sidebar-logo-bg, var(--panneau-color-accent));\n color: var(--panneau-sidebar-logo-color, var(--panneau-color-accent-text));\n font-size: var(--panneau-font-size-sm);\n line-height: 1;\n}\n\n.toggle {\n flex: none;\n color: var(--panneau-color-text-muted);\n}\n\n/* \"Go to…\": a button that looks like a search field, with its shortcut. */\n.goTo {\n display: flex;\n align-items: center;\n gap: var(--panneau-space-2);\n min-height: var(--panneau-control-height-sm);\n padding: 0 var(--panneau-space-2);\n border: var(--panneau-border-width) solid var(--panneau-color-border);\n border-radius: var(--panneau-sidebar-link-radius, var(--panneau-radius-md));\n background: var(--panneau-color-surface);\n color: var(--panneau-color-text-muted);\n font: inherit;\n font-size: var(--panneau-font-size-sm);\n text-align: start;\n cursor: pointer;\n outline: none;\n}\n\n.goTo[data-hovered] {\n border-color: var(--panneau-color-border-control);\n color: var(--panneau-color-text);\n}\n\n.goTo[data-focus-visible] {\n box-shadow: 0 0 0 var(--panneau-focus-width) var(--panneau-color-focus);\n}\n\n.goToSearch {\n flex: none;\n}\n\n.goToLabel {\n flex: 1 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.goToKey {\n flex: none;\n padding: 0 var(--panneau-space-1);\n border: var(--panneau-border-width) solid var(--panneau-color-border);\n border-radius: var(--panneau-radius-sm);\n font-family: inherit;\n font-size: var(--panneau-font-size-xs);\n}\n\n.goToIcon {\n flex: none;\n color: var(--panneau-color-text-muted);\n}\n\n.nav {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n gap: var(--panneau-space-3);\n min-height: 0;\n overflow-y: auto;\n /* Room for the focus ring of the links. */\n margin-inline: calc(-1 * var(--panneau-focus-width));\n padding-inline: var(--panneau-focus-width);\n}\n\n.section {\n display: flex;\n flex-direction: column;\n gap: var(--panneau-space-1);\n}\n\n.sectionLabel {\n padding: var(--panneau-space-1) var(--panneau-space-2) 0;\n color: var(--panneau-color-text-muted);\n font-size: var(--panneau-font-size-xs);\n font-weight: var(--panneau-font-weight-medium);\n letter-spacing: 0.04em;\n text-transform: uppercase;\n}\n\n.list {\n display: flex;\n flex-direction: column;\n gap: 2px;\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n.separator {\n width: 100%;\n margin: 0;\n border: 0;\n border-top: var(--panneau-border-width) solid var(--panneau-color-border);\n}\n\n.link {\n display: flex;\n align-items: center;\n gap: var(--panneau-space-2);\n min-height: var(--panneau-control-height-sm);\n padding: 0 var(--panneau-space-2);\n border: var(--panneau-border-width) solid transparent;\n border-radius: var(--panneau-sidebar-link-radius, var(--panneau-radius-md));\n color: var(--panneau-sidebar-link-color, var(--panneau-color-text-muted));\n font-size: var(--panneau-font-size-sm);\n font-weight: var(--panneau-font-weight-medium);\n text-decoration: none;\n outline: none;\n cursor: pointer;\n transition:\n background-color var(--panneau-duration),\n color var(--panneau-duration);\n}\n\n.link[data-hovered] {\n background: var(--panneau-sidebar-link-hover-bg, var(--panneau-color-hover));\n color: var(--panneau-sidebar-link-current-color, var(--panneau-color-text));\n}\n\n.link[data-pressed] {\n background: var(--panneau-color-pressed);\n}\n\n.link[aria-current='page'] {\n border-color: var(--panneau-sidebar-link-current-border, var(--panneau-color-border));\n background: var(--panneau-sidebar-link-current-bg, var(--panneau-color-surface));\n color: var(--panneau-sidebar-link-current-color, var(--panneau-color-text));\n box-shadow: var(--panneau-sidebar-link-current-shadow, var(--panneau-shadow-sm));\n}\n\n.link[data-focus-visible],\n.brand[data-focus-visible] {\n box-shadow: 0 0 0 var(--panneau-focus-width) var(--panneau-color-focus);\n}\n\n.linkIcon {\n flex: none;\n}\n\n.label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--panneau-space-2);\n padding-top: var(--panneau-space-3);\n border-top: var(--panneau-border-width) solid var(--panneau-color-border);\n}\n\n.user {\n display: flex;\n flex: 1 1 auto;\n align-items: center;\n gap: var(--panneau-space-2);\n min-width: 0;\n padding-inline: var(--panneau-space-1);\n}\n\n.userLink {\n min-height: var(--panneau-control-height-sm);\n padding-block: var(--panneau-space-1);\n border: var(--panneau-border-width) solid transparent;\n border-radius: var(--panneau-radius-md);\n color: var(--panneau-color-text);\n text-decoration: none;\n outline: none;\n cursor: pointer;\n}\n\n/* The profile is a link of the sidebar: the same hover and current states. */\n.userLink[data-hovered] {\n background: var(--panneau-sidebar-link-hover-bg, var(--panneau-color-hover));\n}\n\n.userLink[aria-current='page'] {\n border-color: var(--panneau-sidebar-link-current-border, var(--panneau-color-border));\n background: var(--panneau-sidebar-link-current-bg, var(--panneau-color-surface));\n box-shadow: var(--panneau-sidebar-link-current-shadow, var(--panneau-shadow-sm));\n}\n\n.userLink[data-focus-visible] {\n box-shadow: 0 0 0 var(--panneau-focus-width) var(--panneau-color-focus);\n}\n\n.avatar {\n display: inline-grid;\n flex: none;\n place-items: center;\n width: 1.75rem;\n height: 1.75rem;\n border: var(--panneau-border-width) solid var(--panneau-color-border);\n border-radius: var(--panneau-radius-full);\n background: var(--panneau-color-surface);\n color: var(--panneau-color-text);\n font-size: var(--panneau-font-size-xs);\n font-weight: var(--panneau-font-weight-bold);\n object-fit: cover;\n}\n\n.userText {\n display: flex;\n flex-direction: column;\n min-width: 0;\n line-height: var(--panneau-line-height-tight);\n}\n\n.userName {\n overflow: hidden;\n font-size: var(--panneau-font-size-sm);\n font-weight: var(--panneau-font-weight-medium);\n text-overflow: ellipsis;\n}\n\n.userEmail {\n overflow: hidden;\n color: var(--panneau-color-text-muted);\n font-size: var(--panneau-font-size-xs);\n text-overflow: ellipsis;\n}\n\n/* The rail: icons only, centered, the labels in tooltips. */\n.collapsed {\n align-items: center;\n padding-inline: var(--panneau-space-1);\n}\n\n.collapsed .top,\n.collapsed .footer {\n flex-direction: column;\n}\n\n.collapsed .brand {\n flex: none;\n padding: 0;\n}\n\n.collapsed .label,\n.collapsed .sectionLabel {\n display: none;\n}\n\n.collapsed .link {\n justify-content: center;\n width: var(--panneau-control-height-sm);\n padding: 0;\n}\n\n.collapsed .list {\n align-items: center;\n}\n\n.collapsed .user {\n flex: none;\n padding: 0;\n}\n"],"mappings":""}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Tokens of the frame of the app: the window's background and the panel of the page. The default
3
+ * insets the page on a raised panel, as in recent browsers; a flat frame sets `inset` and
4
+ * `panel-radius` to `0`.
5
+ */
6
+ export declare const shellTokens: import("@panneau/ui").ComponentTokens<"shell", "panneau-shell-bg" | "panneau-shell-inset" | "panneau-shell-panel-bg" | "panneau-shell-panel-border" | "panneau-shell-panel-radius" | "panneau-shell-panel-shadow" | "panneau-shell-panel-padding-x">;
7
+ /** Tokens of the sidebar: its column, its links and the logo of the site. */
8
+ export declare const sidebarTokens: import("@panneau/ui").ComponentTokens<"sidebar", "panneau-sidebar-border" | "panneau-sidebar-width" | "panneau-sidebar-bg" | "panneau-sidebar-width-collapsed" | "panneau-sidebar-link-color" | "panneau-sidebar-link-hover-bg" | "panneau-sidebar-link-radius" | "panneau-sidebar-link-current-color" | "panneau-sidebar-link-current-bg" | "panneau-sidebar-link-current-border" | "panneau-sidebar-link-current-shadow" | "panneau-sidebar-logo-bg" | "panneau-sidebar-logo-color">;
9
+ /** Tokens of the panel of an item's details, next to its list. */
10
+ export declare const itemPanelTokens: import("@panneau/ui").ComponentTokens<"item-panel", "panneau-item-panel-width" | "panneau-item-panel-radius" | "panneau-item-panel-bg" | "panneau-item-panel-width-wide" | "panneau-item-panel-shadow">;
11
+ /** The component tokens of `@panneau/app`, by component (decision 0024). */
12
+ export declare const appComponentTokens: Readonly<{
13
+ shell: Readonly<Record<"panneau-shell-bg" | "panneau-shell-inset" | "panneau-shell-panel-bg" | "panneau-shell-panel-border" | "panneau-shell-panel-radius" | "panneau-shell-panel-shadow" | "panneau-shell-panel-padding-x", string>>;
14
+ sidebar: Readonly<Record<"panneau-sidebar-border" | "panneau-sidebar-width" | "panneau-sidebar-bg" | "panneau-sidebar-width-collapsed" | "panneau-sidebar-link-color" | "panneau-sidebar-link-hover-bg" | "panneau-sidebar-link-radius" | "panneau-sidebar-link-current-color" | "panneau-sidebar-link-current-bg" | "panneau-sidebar-link-current-border" | "panneau-sidebar-link-current-shadow" | "panneau-sidebar-logo-bg" | "panneau-sidebar-logo-color", string>>;
15
+ 'item-panel': Readonly<Record<"panneau-item-panel-width" | "panneau-item-panel-radius" | "panneau-item-panel-bg" | "panneau-item-panel-width-wide" | "panneau-item-panel-shadow", string>>;
16
+ }>;
17
+ type AppTokenName = keyof typeof shellTokens.tokens | keyof typeof sidebarTokens.tokens | keyof typeof itemPanelTokens.tokens;
18
+ declare module '@panneau/ui' {
19
+ interface PanneauTokens extends Record<AppTokenName, true> {
20
+ }
21
+ }
22
+ export {};
23
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/shell/tokens.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,eAAO,MAAM,WAAW,sPAetB,CAAC;AAEH,6EAA6E;AAC7E,eAAO,MAAM,aAAa,wdA2BxB,CAAC;AAEH,kEAAkE;AAClE,eAAO,MAAM,eAAe,yMAW1B,CAAC;AAEH,4EAA4E;AAC5E,eAAO,MAAM,kBAAkB;;;;EAI7B,CAAC;AAEH,KAAK,YAAY,GACX,MAAM,OAAO,WAAW,CAAC,MAAM,GAC/B,MAAM,OAAO,aAAa,CAAC,MAAM,GACjC,MAAM,OAAO,eAAe,CAAC,MAAM,CAAC;AAE1C,OAAO,QAAQ,aAAa,CAAC;IAGzB,UAAU,aAAc,SAAQ,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC;KAAG;CAChE"}
@@ -0,0 +1,75 @@
1
+ import { defineComponentTokens } from "@panneau/ui";
2
+ //#region src/shell/tokens.ts
3
+ /**
4
+ * Tokens of the frame of the app: the window's background and the panel of the page. The default
5
+ * insets the page on a raised panel, as in recent browsers; a flat frame sets `inset` and
6
+ * `panel-radius` to `0`.
7
+ */
8
+ var shellTokens = defineComponentTokens("shell", {
9
+ /** Background of the window, behind the sidebar and the panel. */
10
+ bg: "var(--panneau-color-surface-sunken)",
11
+ /** Space between the panel and the edges of the window. */
12
+ inset: "var(--panneau-space-2)",
13
+ /** Background of the panel of the page. */
14
+ "panel-bg": "var(--panneau-color-surface)",
15
+ /** Border of the panel. */
16
+ "panel-border": "var(--panneau-border-width) solid var(--panneau-color-border)",
17
+ /** Corner radius of the panel. */
18
+ "panel-radius": "calc(var(--panneau-radius-lg) * 1.5)",
19
+ /** Shadow of the panel. */
20
+ "panel-shadow": "var(--panneau-shadow-sm)",
21
+ /** Horizontal padding of the page, from the `lg` width. */
22
+ "panel-padding-x": "var(--panneau-space-8)"
23
+ });
24
+ /** Tokens of the sidebar: its column, its links and the logo of the site. */
25
+ var sidebarTokens = defineComponentTokens("sidebar", {
26
+ /** Width, expanded. */
27
+ width: "15rem",
28
+ /** Width, collapsed to a rail of icons. */
29
+ "width-collapsed": "3.5rem",
30
+ /** Background. Transparent on the window's background by default. */
31
+ bg: "transparent",
32
+ /** Border on the side of the page. */
33
+ border: "0 none",
34
+ /** Text and icons of the links. */
35
+ "link-color": "var(--panneau-color-text-muted)",
36
+ /** Background of a hovered link. */
37
+ "link-hover-bg": "var(--panneau-color-hover)",
38
+ /** Corner radius of the links. */
39
+ "link-radius": "var(--panneau-radius-md)",
40
+ /** Text and icon of the current link. */
41
+ "link-current-color": "var(--panneau-color-text)",
42
+ /** Background of the current link. */
43
+ "link-current-bg": "var(--panneau-color-surface)",
44
+ /** Border color of the current link. */
45
+ "link-current-border": "var(--panneau-color-border)",
46
+ /** Shadow of the current link. */
47
+ "link-current-shadow": "var(--panneau-shadow-sm)",
48
+ /** Background of the logo, the first letter of the site. */
49
+ "logo-bg": "var(--panneau-color-accent)",
50
+ /** Letter of the logo. */
51
+ "logo-color": "var(--panneau-color-accent-text)"
52
+ });
53
+ /** Tokens of the panel of an item's details, next to its list. */
54
+ var itemPanelTokens = defineComponentTokens("item-panel", {
55
+ /** Width, beside the list or over it. */
56
+ width: "24rem",
57
+ /** Width once widened, for previews: a share of the page, or a length. */
58
+ "width-wide": "50%",
59
+ /** Background. */
60
+ bg: "var(--panneau-color-surface)",
61
+ /** Corner radius, beside the list. */
62
+ radius: "var(--panneau-radius-lg)",
63
+ /** Shadow, beside the list. */
64
+ shadow: "var(--panneau-shadow-md)"
65
+ });
66
+ /** The component tokens of `@panneau/app`, by component (decision 0024). */
67
+ var appComponentTokens = Object.freeze({
68
+ shell: shellTokens.tokens,
69
+ sidebar: sidebarTokens.tokens,
70
+ "item-panel": itemPanelTokens.tokens
71
+ });
72
+ //#endregion
73
+ export { appComponentTokens, itemPanelTokens, shellTokens, sidebarTokens };
74
+
75
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","names":[],"sources":["../../src/shell/tokens.ts"],"sourcesContent":["import { defineComponentTokens } from '@panneau/ui';\n\n/**\n * Tokens of the frame of the app: the window's background and the panel of the page. The default\n * insets the page on a raised panel, as in recent browsers; a flat frame sets `inset` and\n * `panel-radius` to `0`.\n */\nexport const shellTokens = defineComponentTokens('shell', {\n /** Background of the window, behind the sidebar and the panel. */\n bg: 'var(--panneau-color-surface-sunken)',\n /** Space between the panel and the edges of the window. */\n inset: 'var(--panneau-space-2)',\n /** Background of the panel of the page. */\n 'panel-bg': 'var(--panneau-color-surface)',\n /** Border of the panel. */\n 'panel-border': 'var(--panneau-border-width) solid var(--panneau-color-border)',\n /** Corner radius of the panel. */\n 'panel-radius': 'calc(var(--panneau-radius-lg) * 1.5)',\n /** Shadow of the panel. */\n 'panel-shadow': 'var(--panneau-shadow-sm)',\n /** Horizontal padding of the page, from the `lg` width. */\n 'panel-padding-x': 'var(--panneau-space-8)',\n});\n\n/** Tokens of the sidebar: its column, its links and the logo of the site. */\nexport const sidebarTokens = defineComponentTokens('sidebar', {\n /** Width, expanded. */\n width: '15rem',\n /** Width, collapsed to a rail of icons. */\n 'width-collapsed': '3.5rem',\n /** Background. Transparent on the window's background by default. */\n bg: 'transparent',\n /** Border on the side of the page. */\n border: '0 none',\n /** Text and icons of the links. */\n 'link-color': 'var(--panneau-color-text-muted)',\n /** Background of a hovered link. */\n 'link-hover-bg': 'var(--panneau-color-hover)',\n /** Corner radius of the links. */\n 'link-radius': 'var(--panneau-radius-md)',\n /** Text and icon of the current link. */\n 'link-current-color': 'var(--panneau-color-text)',\n /** Background of the current link. */\n 'link-current-bg': 'var(--panneau-color-surface)',\n /** Border color of the current link. */\n 'link-current-border': 'var(--panneau-color-border)',\n /** Shadow of the current link. */\n 'link-current-shadow': 'var(--panneau-shadow-sm)',\n /** Background of the logo, the first letter of the site. */\n 'logo-bg': 'var(--panneau-color-accent)',\n /** Letter of the logo. */\n 'logo-color': 'var(--panneau-color-accent-text)',\n});\n\n/** Tokens of the panel of an item's details, next to its list. */\nexport const itemPanelTokens = defineComponentTokens('item-panel', {\n /** Width, beside the list or over it. */\n width: '24rem',\n /** Width once widened, for previews: a share of the page, or a length. */\n 'width-wide': '50%',\n /** Background. */\n bg: 'var(--panneau-color-surface)',\n /** Corner radius, beside the list. */\n radius: 'var(--panneau-radius-lg)',\n /** Shadow, beside the list. */\n shadow: 'var(--panneau-shadow-md)',\n});\n\n/** The component tokens of `@panneau/app`, by component (decision 0024). */\nexport const appComponentTokens = Object.freeze({\n shell: shellTokens.tokens,\n sidebar: sidebarTokens.tokens,\n 'item-panel': itemPanelTokens.tokens,\n});\n\ntype AppTokenName =\n | keyof typeof shellTokens.tokens\n | keyof typeof sidebarTokens.tokens\n | keyof typeof itemPanelTokens.tokens;\n\ndeclare module '@panneau/ui' {\n // Lets `defineTheme()` take the tokens of the app.\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type -- the members are inherited\n interface PanneauTokens extends Record<AppTokenName, true> {}\n}\n"],"mappings":";;;;;;;AAOA,IAAa,cAAc,sBAAsB,SAAS;;CAEtD,IAAI;;CAEJ,OAAO;;CAEP,YAAY;;CAEZ,gBAAgB;;CAEhB,gBAAgB;;CAEhB,gBAAgB;;CAEhB,mBAAmB;AACvB,CAAC;;AAGD,IAAa,gBAAgB,sBAAsB,WAAW;;CAE1D,OAAO;;CAEP,mBAAmB;;CAEnB,IAAI;;CAEJ,QAAQ;;CAER,cAAc;;CAEd,iBAAiB;;CAEjB,eAAe;;CAEf,sBAAsB;;CAEtB,mBAAmB;;CAEnB,uBAAuB;;CAEvB,uBAAuB;;CAEvB,WAAW;;CAEX,cAAc;AAClB,CAAC;;AAGD,IAAa,kBAAkB,sBAAsB,cAAc;;CAE/D,OAAO;;CAEP,cAAc;;CAEd,IAAI;;CAEJ,QAAQ;;CAER,QAAQ;AACZ,CAAC;;AAGD,IAAa,qBAAqB,OAAO,OAAO;CAC5C,OAAO,YAAY;CACnB,SAAS,cAAc;CACvB,cAAc,gBAAgB;AAClC,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@panneau/app",
3
- "version": "5.0.0-alpha.4",
4
- "description": "The Panneau admin panel: the app entry (createPanneauApp), and the shell, routes and pages to come.",
3
+ "version": "5.0.0-alpha.6",
4
+ "description": "The Panneau admin panel: the app entry (createPanneauApp), the shell with its sidebar, and the pages of resources.",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -34,11 +34,20 @@
34
34
  "peerDependencies": {
35
35
  "@tanstack/react-query": "^5.0.0",
36
36
  "react": "^19.2.0",
37
- "react-dom": "^19.2.0"
37
+ "react-aria-components": "^1.22.0",
38
+ "react-dom": "^19.2.0",
39
+ "react-intl": "^12.0.0"
38
40
  },
39
41
  "dependencies": {
40
- "@panneau/core": "5.0.0-alpha.4",
41
- "@panneau/data": "5.0.0-alpha.4",
42
- "@panneau/protocol": "5.0.0-alpha.4"
42
+ "@panneau/actions": "5.0.0-alpha.6",
43
+ "@panneau/core": "5.0.0-alpha.6",
44
+ "@panneau/data": "5.0.0-alpha.6",
45
+ "@panneau/fields": "5.0.0-alpha.6",
46
+ "@panneau/forms": "5.0.0-alpha.6",
47
+ "@panneau/intl": "5.0.0-alpha.6",
48
+ "@panneau/lists": "5.0.0-alpha.6",
49
+ "@panneau/protocol": "5.0.0-alpha.6",
50
+ "@panneau/ui": "5.0.0-alpha.6",
51
+ "lucide-react": "^1.57.0"
43
52
  }
44
53
  }