adjacent-ui 0.1.0

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 (123) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/LICENSE +21 -0
  3. package/README.md +41 -0
  4. package/dist/button/button.css +177 -0
  5. package/dist/button/button.d.ts +25 -0
  6. package/dist/button/button.d.ts.map +1 -0
  7. package/dist/button/button.js +11 -0
  8. package/dist/button/button.js.map +1 -0
  9. package/dist/card/card.css +126 -0
  10. package/dist/card/card.d.ts +18 -0
  11. package/dist/card/card.d.ts.map +1 -0
  12. package/dist/card/card.js +38 -0
  13. package/dist/card/card.js.map +1 -0
  14. package/dist/checkbox/checkbox.css +116 -0
  15. package/dist/checkbox/checkbox.d.ts +13 -0
  16. package/dist/checkbox/checkbox.d.ts.map +1 -0
  17. package/dist/checkbox/checkbox.js +32 -0
  18. package/dist/checkbox/checkbox.js.map +1 -0
  19. package/dist/data-table/data-table.css +238 -0
  20. package/dist/data-table/data-table.d.ts +47 -0
  21. package/dist/data-table/data-table.d.ts.map +1 -0
  22. package/dist/data-table/data-table.js +58 -0
  23. package/dist/data-table/data-table.js.map +1 -0
  24. package/dist/divider/divider.css +35 -0
  25. package/dist/divider/divider.d.ts +12 -0
  26. package/dist/divider/divider.d.ts.map +1 -0
  27. package/dist/divider/divider.js +7 -0
  28. package/dist/divider/divider.js.map +1 -0
  29. package/dist/floating-action-button/floating-action-button.css +132 -0
  30. package/dist/floating-action-button/floating-action-button.d.ts +15 -0
  31. package/dist/floating-action-button/floating-action-button.d.ts.map +1 -0
  32. package/dist/floating-action-button/floating-action-button.js +8 -0
  33. package/dist/floating-action-button/floating-action-button.js.map +1 -0
  34. package/dist/index.d.ts +20 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +20 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/list/list.css +181 -0
  39. package/dist/list/list.d.ts +56 -0
  40. package/dist/list/list.d.ts.map +1 -0
  41. package/dist/list/list.js +33 -0
  42. package/dist/list/list.js.map +1 -0
  43. package/dist/menu/menu.css +170 -0
  44. package/dist/menu/menu.d.ts +70 -0
  45. package/dist/menu/menu.d.ts.map +1 -0
  46. package/dist/menu/menu.js +69 -0
  47. package/dist/menu/menu.js.map +1 -0
  48. package/dist/navigation/header/header.css +182 -0
  49. package/dist/navigation/header/header.d.ts +20 -0
  50. package/dist/navigation/header/header.d.ts.map +1 -0
  51. package/dist/navigation/header/header.js +23 -0
  52. package/dist/navigation/header/header.js.map +1 -0
  53. package/dist/navigation/index.d.ts +5 -0
  54. package/dist/navigation/index.d.ts.map +1 -0
  55. package/dist/navigation/index.js +5 -0
  56. package/dist/navigation/index.js.map +1 -0
  57. package/dist/navigation/link/link.d.ts +5 -0
  58. package/dist/navigation/link/link.d.ts.map +1 -0
  59. package/dist/navigation/link/link.js +6 -0
  60. package/dist/navigation/link/link.js.map +1 -0
  61. package/dist/navigation/shell/shell.css +21 -0
  62. package/dist/navigation/shell/shell.d.ts +22 -0
  63. package/dist/navigation/shell/shell.d.ts.map +1 -0
  64. package/dist/navigation/shell/shell.js +15 -0
  65. package/dist/navigation/shell/shell.js.map +1 -0
  66. package/dist/navigation/tabs/tabs.css +390 -0
  67. package/dist/navigation/tabs/tabs.d.ts +37 -0
  68. package/dist/navigation/tabs/tabs.d.ts.map +1 -0
  69. package/dist/navigation/tabs/tabs.js +74 -0
  70. package/dist/navigation/tabs/tabs.js.map +1 -0
  71. package/dist/page/page.css +15 -0
  72. package/dist/page/page.d.ts +32 -0
  73. package/dist/page/page.d.ts.map +1 -0
  74. package/dist/page/page.js +10 -0
  75. package/dist/page/page.js.map +1 -0
  76. package/dist/radio/radio.css +108 -0
  77. package/dist/radio/radio.d.ts +29 -0
  78. package/dist/radio/radio.d.ts.map +1 -0
  79. package/dist/radio/radio.js +23 -0
  80. package/dist/radio/radio.js.map +1 -0
  81. package/dist/runtime/use-display-mode.d.ts +9 -0
  82. package/dist/runtime/use-display-mode.d.ts.map +1 -0
  83. package/dist/runtime/use-display-mode.js +33 -0
  84. package/dist/runtime/use-display-mode.js.map +1 -0
  85. package/dist/runtime/use-keyboard.d.ts +8 -0
  86. package/dist/runtime/use-keyboard.d.ts.map +1 -0
  87. package/dist/runtime/use-keyboard.js +34 -0
  88. package/dist/runtime/use-keyboard.js.map +1 -0
  89. package/dist/runtime/use-viewport-tier.d.ts +10 -0
  90. package/dist/runtime/use-viewport-tier.d.ts.map +1 -0
  91. package/dist/runtime/use-viewport-tier.js +24 -0
  92. package/dist/runtime/use-viewport-tier.js.map +1 -0
  93. package/dist/snackbar/snackbar.css +95 -0
  94. package/dist/snackbar/snackbar.d.ts +15 -0
  95. package/dist/snackbar/snackbar.d.ts.map +1 -0
  96. package/dist/snackbar/snackbar.js +36 -0
  97. package/dist/snackbar/snackbar.js.map +1 -0
  98. package/dist/switch/switch.css +164 -0
  99. package/dist/switch/switch.d.ts +11 -0
  100. package/dist/switch/switch.d.ts.map +1 -0
  101. package/dist/switch/switch.js +11 -0
  102. package/dist/switch/switch.js.map +1 -0
  103. package/dist/tabs/tabs.css +165 -0
  104. package/dist/tabs/tabs.d.ts +25 -0
  105. package/dist/tabs/tabs.d.ts.map +1 -0
  106. package/dist/tabs/tabs.js +81 -0
  107. package/dist/tabs/tabs.js.map +1 -0
  108. package/dist/text/text.css +91 -0
  109. package/dist/text/text.d.ts +12 -0
  110. package/dist/text/text.d.ts.map +1 -0
  111. package/dist/text/text.js +17 -0
  112. package/dist/text/text.js.map +1 -0
  113. package/dist/text-area/text-area.css +11 -0
  114. package/dist/text-area/text-area.d.ts +13 -0
  115. package/dist/text-area/text-area.d.ts.map +1 -0
  116. package/dist/text-area/text-area.js +35 -0
  117. package/dist/text-area/text-area.js.map +1 -0
  118. package/dist/text-field/text-field.css +154 -0
  119. package/dist/text-field/text-field.d.ts +18 -0
  120. package/dist/text-field/text-field.d.ts.map +1 -0
  121. package/dist/text-field/text-field.js +32 -0
  122. package/dist/text-field/text-field.js.map +1 -0
  123. package/package.json +78 -0
@@ -0,0 +1,182 @@
1
+ @layer components {
2
+ /*
3
+ * Two heights, because they answer different questions. Both are zero when
4
+ * there is no header, and neither includes the safe area except where it says.
5
+ */
6
+ :root {
7
+ --adj-header-bar-block-size: 0px;
8
+ --adj-header-block-size: 0px;
9
+ --adj-header-inset-block-start: 0px;
10
+ }
11
+
12
+ :root:has(.adj-header) {
13
+ /*
14
+ * The row the actions sit in, which is the same height in either variant: a
15
+ * large header keeps this row and grows its title underneath. Chrome lining
16
+ * up with the header lines up with this, and adds the safe area itself.
17
+ */
18
+ --adj-header-bar-block-size: var(--adj-header-height, 4rem);
19
+ --adj-header-block-size: calc(
20
+ var(--adj-header-bar-block-size) + env(safe-area-inset-top, 0px)
21
+ );
22
+ }
23
+
24
+ :root:has(.adj-header[data-variant="large"]) {
25
+ /* Only the full height grows. The row above the title does not. */
26
+ --adj-header-block-size: calc(
27
+ var(--adj-header-large-height, 12rem) + env(safe-area-inset-top, 0px)
28
+ );
29
+ }
30
+
31
+ /*
32
+ * How much of that covers the viewport once scrolling starts, which is all of
33
+ * it while the header is sticky and none of it otherwise: a header in flow is
34
+ * scrolled past rather than scrolled under.
35
+ */
36
+ :root:has(.adj-header[data-sticky="true"]) {
37
+ --adj-header-inset-block-start: var(--adj-header-block-size);
38
+ }
39
+
40
+ .adj-header {
41
+ box-sizing: border-box;
42
+ display: grid;
43
+ grid-template-columns: minmax(3rem, 1fr) minmax(0, auto) minmax(3rem, 1fr);
44
+ grid-template-areas: "left title right";
45
+ align-items: center;
46
+ /*
47
+ * The height is the title's room plus the safe area, not the two sharing it.
48
+ * Under border-box a bare min-height counts the padding, so a display cutout
49
+ * ate into the title's row until the content overflowed and forced it back.
50
+ */
51
+ min-height: calc(var(--adj-header-height, 4rem) + env(safe-area-inset-top, 0px));
52
+ padding-block: env(safe-area-inset-top, 0) 0;
53
+ padding-inline: max(0.5rem, env(safe-area-inset-left, 0)) max(0.5rem, env(safe-area-inset-right, 0));
54
+ width: 100%;
55
+ min-width: 0;
56
+ }
57
+
58
+ .adj-header[data-sticky="true"] {
59
+ position: sticky;
60
+ inset-block-start: 0;
61
+ background: var(--background, Canvas);
62
+ backdrop-filter: blur(var(--adj-header-backdrop-blur, 1rem));
63
+ z-index: var(--adj-header-z-index, 40);
64
+ }
65
+
66
+ .adj-header__left,
67
+ .adj-header__right {
68
+ display: flex;
69
+ align-items: center;
70
+ min-width: 0;
71
+ }
72
+
73
+ .adj-header__left {
74
+ grid-area: left;
75
+ }
76
+
77
+ .adj-header__right {
78
+ grid-area: right;
79
+ justify-content: flex-end;
80
+ }
81
+
82
+ .adj-header__title {
83
+ grid-area: title;
84
+ min-width: 0;
85
+ overflow: hidden;
86
+ margin: 0;
87
+ font-size: inherit;
88
+ font-weight: 500;
89
+ text-align: center;
90
+ text-overflow: ellipsis;
91
+ white-space: nowrap;
92
+ }
93
+
94
+ .adj-header__subtitle {
95
+ grid-area: subtitle;
96
+ min-width: 0;
97
+ overflow: hidden;
98
+ margin: 0;
99
+ color: var(--adj-header-subtitle-color, color-mix(in srgb, currentColor 72%, transparent));
100
+ font-size: var(--adj-header-subtitle-size, 1rem);
101
+ font-weight: 500;
102
+ line-height: 1.4;
103
+ text-overflow: ellipsis;
104
+ white-space: nowrap;
105
+ }
106
+
107
+ /*
108
+ * A compact header has one row, so a subtitle has nowhere to go. Hidden rather
109
+ * than squeezed in: `Page` refuses one at the type level, and this covers a
110
+ * `HeaderSubtitle` written into a compact header by hand.
111
+ */
112
+ .adj-header[data-variant="compact"] .adj-header__subtitle {
113
+ display: none;
114
+ }
115
+
116
+ /*
117
+ * A centred title is the convention on a phone and reads as a mobile artefact
118
+ * on anything wider, so from 768px the title aligns to the start and takes the
119
+ * room the centred layout was reserving on either side of it.
120
+ */
121
+ @media (min-width: 48rem) {
122
+ .adj-header[data-variant="compact"] {
123
+ grid-template-columns: auto minmax(0, 1fr) auto;
124
+ }
125
+
126
+ .adj-header[data-variant="compact"] .adj-header__title {
127
+ text-align: start;
128
+ }
129
+ }
130
+
131
+ /* An explicit choice holds at every width. */
132
+ .adj-header[data-variant="compact"][data-align="center"] {
133
+ grid-template-columns: minmax(3rem, 1fr) minmax(0, auto) minmax(3rem, 1fr);
134
+ }
135
+
136
+ .adj-header[data-variant="compact"][data-align="center"] .adj-header__title {
137
+ text-align: center;
138
+ }
139
+
140
+ .adj-header[data-variant="compact"][data-align="start"] {
141
+ grid-template-columns: auto minmax(0, 1fr) auto;
142
+ }
143
+
144
+ .adj-header[data-variant="compact"][data-align="start"] .adj-header__title {
145
+ text-align: start;
146
+ }
147
+
148
+ .adj-header[data-variant="large"] {
149
+ grid-template-columns: minmax(3rem, 1fr) minmax(3rem, 1fr);
150
+ grid-template-areas:
151
+ "left right"
152
+ "title title"
153
+ "subtitle subtitle";
154
+ grid-template-rows: var(--adj-header-height, 4rem) auto auto;
155
+ gap: 0.25rem 1rem;
156
+ min-height: calc(var(--adj-header-large-height, 12rem) + env(safe-area-inset-top, 0px));
157
+ padding-block-end: var(--adj-header-large-padding-bottom, 1.5rem);
158
+ }
159
+
160
+ .adj-header[data-variant="large"] .adj-header__title {
161
+ align-self: end;
162
+ margin-block-start: 1rem;
163
+ padding-inline: 0.75rem;
164
+ font-size: var(--adj-header-large-title-size, clamp(2rem, 10cqi, 3.5rem));
165
+ font-weight: 400;
166
+ line-height: 1.08;
167
+ text-align: start;
168
+ overflow-wrap: anywhere;
169
+ white-space: normal;
170
+ }
171
+
172
+ .adj-header[data-variant="large"] .adj-header__subtitle {
173
+ display: -webkit-box;
174
+ -webkit-box-orient: vertical;
175
+ -webkit-line-clamp: var(--adj-header-subtitle-lines, 2);
176
+ line-clamp: var(--adj-header-subtitle-lines, 2);
177
+ align-self: start;
178
+ padding-inline: 0.75rem;
179
+ white-space: normal;
180
+ overflow-wrap: anywhere;
181
+ }
182
+ }
@@ -0,0 +1,20 @@
1
+ import type { HTMLAttributes } from "react";
2
+ import "./header.css";
3
+ export type HeaderVariant = "compact" | "large";
4
+ export type HeaderAlign = "center" | "start";
5
+ export interface HeaderProps extends HTMLAttributes<HTMLElement> {
6
+ /**
7
+ * Where a compact title sits. Left alone it is centred on a phone and aligned
8
+ * to the start from 768px, which is the convention on each. Setting it holds
9
+ * at every width.
10
+ */
11
+ readonly align?: HeaderAlign;
12
+ readonly sticky?: boolean;
13
+ readonly variant?: HeaderVariant;
14
+ }
15
+ export declare function Header({ align, className, sticky, variant, ...props }: HeaderProps): import("react").JSX.Element;
16
+ export declare function HeaderLeft({ className, ...props }: HTMLAttributes<HTMLDivElement>): import("react").JSX.Element;
17
+ export declare function HeaderRight({ className, ...props }: HTMLAttributes<HTMLDivElement>): import("react").JSX.Element;
18
+ export declare function HeaderTitle({ className, ...props }: HTMLAttributes<HTMLHeadingElement>): import("react").JSX.Element;
19
+ export declare function HeaderSubtitle({ className, ...props }: HTMLAttributes<HTMLParagraphElement>): import("react").JSX.Element;
20
+ //# sourceMappingURL=header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../src/navigation/header/header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,cAAc,CAAC;AAEtB,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,CAAC;AAChD,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE7C,MAAM,WAAW,WAAY,SAAQ,cAAc,CAAC,WAAW,CAAC;IAC9D;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC;CAClC;AAED,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,SAAS,EACT,MAAc,EACd,OAAmB,EACnB,GAAG,KAAK,EACT,EAAE,WAAW,+BAWb;AAED,wBAAgB,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,cAAc,CAAC,+BAGjF;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,cAAc,CAAC,+BAGlF;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,kBAAkB,CAAC,+BAGtF;AAED,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,oBAAoB,CAAC,+BAG3F"}
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import "./header.css";
3
+ export function Header({ align, className, sticky = false, variant = "compact", ...props }) {
4
+ const classes = ["adj-header", className].filter(Boolean).join(" ");
5
+ return (_jsx("header", { className: classes, "data-align": align, "data-sticky": sticky ? "true" : "false", "data-variant": variant, ...props }));
6
+ }
7
+ export function HeaderLeft({ className, ...props }) {
8
+ const classes = ["adj-header__left", className].filter(Boolean).join(" ");
9
+ return _jsx("div", { className: classes, ...props });
10
+ }
11
+ export function HeaderRight({ className, ...props }) {
12
+ const classes = ["adj-header__right", className].filter(Boolean).join(" ");
13
+ return _jsx("div", { className: classes, ...props });
14
+ }
15
+ export function HeaderTitle({ className, ...props }) {
16
+ const classes = ["adj-header__title", className].filter(Boolean).join(" ");
17
+ return _jsx("h1", { className: classes, ...props });
18
+ }
19
+ export function HeaderSubtitle({ className, ...props }) {
20
+ const classes = ["adj-header__subtitle", className].filter(Boolean).join(" ");
21
+ return _jsx("p", { className: classes, ...props });
22
+ }
23
+ //# sourceMappingURL=header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.js","sourceRoot":"","sources":["../../../src/navigation/header/header.tsx"],"names":[],"mappings":";AAEA,OAAO,cAAc,CAAC;AAgBtB,MAAM,UAAU,MAAM,CAAC,EACrB,KAAK,EACL,SAAS,EACT,MAAM,GAAG,KAAK,EACd,OAAO,GAAG,SAAS,EACnB,GAAG,KAAK,EACI;IACZ,MAAM,OAAO,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpE,OAAO,CACL,iBACE,SAAS,EAAE,OAAO,gBACN,KAAK,iBACJ,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,kBACxB,OAAO,KACjB,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAkC;IAChF,MAAM,OAAO,GAAG,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1E,OAAO,cAAK,SAAS,EAAE,OAAO,KAAM,KAAK,GAAI,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAkC;IACjF,MAAM,OAAO,GAAG,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3E,OAAO,cAAK,SAAS,EAAE,OAAO,KAAM,KAAK,GAAI,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAsC;IACrF,MAAM,OAAO,GAAG,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3E,OAAO,aAAI,SAAS,EAAE,OAAO,KAAM,KAAK,GAAI,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAwC;IAC1F,MAAM,OAAO,GAAG,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9E,OAAO,YAAG,SAAS,EAAE,OAAO,KAAM,KAAK,GAAI,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { Header, HeaderLeft, HeaderRight, HeaderSubtitle, HeaderTitle, type HeaderAlign, type HeaderProps, type HeaderVariant, } from "./header/header.js";
2
+ export { NavigationLink, type NavigationLinkProps } from "./link/link.js";
3
+ export { NavigationShell, type NavigationShellProps, } from "./shell/shell.js";
4
+ export { Tab, Tabs, type NavigationLabelVisibility, type NavigationTabProps, type NavigationTabsProps, } from "./tabs/tabs.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/navigation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,UAAU,EACV,WAAW,EACX,cAAc,EACd,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,aAAa,GACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,GAC1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,GAAG,EACH,IAAI,EACJ,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,GACzB,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { Header, HeaderLeft, HeaderRight, HeaderSubtitle, HeaderTitle, } from "./header/header.js";
2
+ export { NavigationLink } from "./link/link.js";
3
+ export { NavigationShell, } from "./shell/shell.js";
4
+ export { Tab, Tabs, } from "./tabs/tabs.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/navigation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,UAAU,EACV,WAAW,EACX,cAAc,EACd,WAAW,GAIZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAA4B,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EACL,eAAe,GAEhB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,GAAG,EACH,IAAI,GAIL,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { type LinkProps as NextLinkProps } from "next/link";
2
+ import type { AnchorHTMLAttributes } from "react";
3
+ export type NavigationLinkProps = NextLinkProps & Omit<AnchorHTMLAttributes<HTMLAnchorElement>, keyof NextLinkProps>;
4
+ export declare function NavigationLink({ prefetch, ...props }: NavigationLinkProps): import("react").JSX.Element;
5
+ //# sourceMappingURL=link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../src/navigation/link/link.tsx"],"names":[],"mappings":"AAAA,OAAiB,EAAE,KAAK,SAAS,IAAI,aAAa,EAAE,MAAM,WAAW,CAAC;AACtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAElD,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAC7C,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,MAAM,aAAa,CAAC,CAAC;AAErE,wBAAgB,cAAc,CAAC,EAAE,QAAe,EAAE,GAAG,KAAK,EAAE,EAAE,mBAAmB,+BAEhF"}
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import NextLink from "next/link";
3
+ export function NavigationLink({ prefetch = true, ...props }) {
4
+ return _jsx(NextLink, { prefetch: prefetch, ...props });
5
+ }
6
+ //# sourceMappingURL=link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../../src/navigation/link/link.tsx"],"names":[],"mappings":";AAAA,OAAO,QAA6C,MAAM,WAAW,CAAC;AAMtE,MAAM,UAAU,cAAc,CAAC,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,KAAK,EAAuB;IAC/E,OAAO,KAAC,QAAQ,IAAC,QAAQ,EAAE,QAAQ,KAAM,KAAK,GAAI,CAAC;AACrD,CAAC"}
@@ -0,0 +1,21 @@
1
+ @layer components {
2
+ .adj-navigation-shell {
3
+ box-sizing: border-box;
4
+ min-block-size: 100dvh;
5
+ min-inline-size: 0;
6
+ /* The rail takes width from the side, the bar height from the bottom. */
7
+ margin-inline-start: var(--adj-navigation-inset-inline-start, 0px);
8
+ inline-size: calc(100% - var(--adj-navigation-inset-inline-start, 0px));
9
+ padding-block-end: var(--adj-navigation-inset-block-end, 0px);
10
+ /* Matches the rail's own timing, so the two move together as it expands. */
11
+ transition:
12
+ margin-inline-start 220ms cubic-bezier(0.2, 0, 0, 1),
13
+ inline-size 220ms cubic-bezier(0.2, 0, 0, 1);
14
+ }
15
+
16
+ @media (prefers-reduced-motion: reduce) {
17
+ .adj-navigation-shell {
18
+ transition: none;
19
+ }
20
+ }
21
+ }
@@ -0,0 +1,22 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ import "./shell.css";
3
+ export interface NavigationShellProps extends HTMLAttributes<HTMLDivElement> {
4
+ readonly children: ReactNode;
5
+ /**
6
+ * Rendered last, so a fixed navigation paints over the page rather than under
7
+ * it. Passed in rather than rendered here because a navigation that reads
8
+ * per-visitor state can then stream in behind Suspense without holding the
9
+ * page back.
10
+ */
11
+ readonly navigation?: ReactNode;
12
+ }
13
+ /**
14
+ * Reserves the room a fixed navigation takes: height at the bottom while it is
15
+ * a bar, width at the side once it is a rail, widening when that rail expands.
16
+ * It reads the insets Adjacent publishes, so nothing here repeats a measurement
17
+ * the framework is free to change.
18
+ *
19
+ * It sets no colour of its own. Pass `className` for the surface.
20
+ */
21
+ export declare function NavigationShell({ children, className, navigation, ...props }: NavigationShellProps): import("react").JSX.Element;
22
+ //# sourceMappingURL=shell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/navigation/shell/shell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,aAAa,CAAC;AAErB,MAAM,WAAW,oBAAqB,SAAQ,cAAc,CAAC,cAAc,CAAC;IAC1E,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC;CACjC;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,SAAS,EACT,UAAU,EACV,GAAG,KAAK,EACT,EAAE,oBAAoB,+BAStB"}
@@ -0,0 +1,15 @@
1
+ import { jsxs as _jsxs } from "react/jsx-runtime";
2
+ import "./shell.css";
3
+ /**
4
+ * Reserves the room a fixed navigation takes: height at the bottom while it is
5
+ * a bar, width at the side once it is a rail, widening when that rail expands.
6
+ * It reads the insets Adjacent publishes, so nothing here repeats a measurement
7
+ * the framework is free to change.
8
+ *
9
+ * It sets no colour of its own. Pass `className` for the surface.
10
+ */
11
+ export function NavigationShell({ children, className, navigation, ...props }) {
12
+ const classes = ["adj-navigation-shell", className].filter(Boolean).join(" ");
13
+ return (_jsxs("div", { className: classes, ...props, children: [children, navigation] }));
14
+ }
15
+ //# sourceMappingURL=shell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../src/navigation/shell/shell.tsx"],"names":[],"mappings":";AAEA,OAAO,aAAa,CAAC;AAarB;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,QAAQ,EACR,SAAS,EACT,UAAU,EACV,GAAG,KAAK,EACa;IACrB,MAAM,OAAO,GAAG,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE9E,OAAO,CACL,eAAK,SAAS,EAAE,OAAO,KAAM,KAAK,aAC/B,QAAQ,EACR,UAAU,IACP,CACP,CAAC;AACJ,CAAC"}