@askrjs/themes 0.0.11 → 0.0.13

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 (190) hide show
  1. package/README.md +5 -5
  2. package/THEMING.md +2 -2
  3. package/dist/components/_internal/block-layout.d.ts +1 -2
  4. package/dist/components/_internal/block-layout.js +1 -3
  5. package/dist/components/_internal/block-layout.js.map +1 -1
  6. package/dist/components/_internal/classes.js +0 -2
  7. package/dist/components/_internal/jsx.js +9 -3
  8. package/dist/components/_internal/jsx.js.map +1 -1
  9. package/dist/components/_internal/merge-props.js +0 -2
  10. package/dist/components/_internal/pathname.js +0 -2
  11. package/dist/components/_internal/style.js +0 -2
  12. package/dist/components/alert/alert.d.ts +1 -3
  13. package/dist/components/alert/alert.js +0 -2
  14. package/dist/components/alert/alert.js.map +1 -1
  15. package/dist/components/alert/alert.types.d.ts +1 -3
  16. package/dist/components/alert/index.d.ts +2 -1
  17. package/dist/components/aside/aside.d.ts +1 -3
  18. package/dist/components/aside/aside.js +0 -2
  19. package/dist/components/aside/aside.types.d.ts +2 -2
  20. package/dist/components/aside/index.d.ts +2 -1
  21. package/dist/components/aspect-ratio/aspect-ratio.d.ts +1 -3
  22. package/dist/components/aspect-ratio/aspect-ratio.js +2 -6
  23. package/dist/components/aspect-ratio/aspect-ratio.js.map +1 -1
  24. package/dist/components/aspect-ratio/aspect-ratio.types.d.ts +1 -3
  25. package/dist/components/aspect-ratio/index.d.ts +2 -1
  26. package/dist/components/badge/badge.d.ts +1 -3
  27. package/dist/components/badge/badge.js +2 -6
  28. package/dist/components/badge/badge.js.map +1 -1
  29. package/dist/components/badge/badge.types.d.ts +1 -3
  30. package/dist/components/badge/index.d.ts +2 -1
  31. package/dist/components/block/block.d.ts +1 -3
  32. package/dist/components/block/block.js +2 -6
  33. package/dist/components/block/block.js.map +1 -1
  34. package/dist/components/block/block.types.d.ts +2 -4
  35. package/dist/components/block/index.d.ts +2 -1
  36. package/dist/components/brand/brand.d.ts +1 -3
  37. package/dist/components/brand/brand.js +4 -7
  38. package/dist/components/brand/brand.js.map +1 -1
  39. package/dist/components/brand/brand.types.d.ts +1 -3
  40. package/dist/components/brand/index.d.ts +2 -1
  41. package/dist/components/button-group/button-group.d.ts +1 -3
  42. package/dist/components/button-group/button-group.js +0 -2
  43. package/dist/components/button-group/button-group.js.map +1 -1
  44. package/dist/components/button-group/button-group.types.d.ts +1 -3
  45. package/dist/components/button-group/index.d.ts +2 -1
  46. package/dist/components/card/card.d.ts +1 -3
  47. package/dist/components/card/card.js +0 -2
  48. package/dist/components/card/card.types.d.ts +1 -3
  49. package/dist/components/card/index.d.ts +2 -1
  50. package/dist/components/catalog.d.ts +1 -3
  51. package/dist/components/catalog.js +2 -3
  52. package/dist/components/catalog.js.map +1 -1
  53. package/dist/components/close/close.d.ts +1 -3
  54. package/dist/components/close/close.js +0 -2
  55. package/dist/components/close/close.types.d.ts +1 -3
  56. package/dist/components/close/index.d.ts +2 -1
  57. package/dist/components/container/container.d.ts +1 -3
  58. package/dist/components/container/container.js +0 -2
  59. package/dist/components/container/container.types.d.ts +2 -2
  60. package/dist/components/container/index.d.ts +2 -1
  61. package/dist/components/empty-state/empty-state.d.ts +1 -3
  62. package/dist/components/empty-state/empty-state.js +0 -2
  63. package/dist/components/empty-state/empty-state.types.d.ts +2 -2
  64. package/dist/components/empty-state/index.d.ts +2 -1
  65. package/dist/components/field/field.d.ts +1 -3
  66. package/dist/components/field/field.js +0 -2
  67. package/dist/components/field/field.types.d.ts +1 -3
  68. package/dist/components/field/index.d.ts +2 -1
  69. package/dist/components/footer/footer.d.ts +1 -3
  70. package/dist/components/footer/footer.js +0 -2
  71. package/dist/components/footer/footer.types.d.ts +2 -3
  72. package/dist/components/footer/index.d.ts +2 -1
  73. package/dist/components/grid/grid.d.ts +1 -3
  74. package/dist/components/grid/grid.js +2 -7
  75. package/dist/components/grid/grid.js.map +1 -1
  76. package/dist/components/grid/grid.types.d.ts +1 -3
  77. package/dist/components/grid/index.d.ts +2 -1
  78. package/dist/components/header/header.d.ts +1 -3
  79. package/dist/components/header/header.js +0 -2
  80. package/dist/components/header/header.types.d.ts +2 -2
  81. package/dist/components/header/index.d.ts +2 -1
  82. package/dist/components/input-group/index.d.ts +2 -1
  83. package/dist/components/input-group/input-group.d.ts +1 -3
  84. package/dist/components/input-group/input-group.js +2 -6
  85. package/dist/components/input-group/input-group.js.map +1 -1
  86. package/dist/components/input-group/input-group.types.d.ts +1 -3
  87. package/dist/components/main/index.d.ts +2 -1
  88. package/dist/components/main/main.d.ts +1 -3
  89. package/dist/components/main/main.js +0 -2
  90. package/dist/components/main/main.types.d.ts +2 -2
  91. package/dist/components/nav/index.d.ts +2 -1
  92. package/dist/components/nav/nav.d.ts +1 -3
  93. package/dist/components/nav/nav.js +22 -17
  94. package/dist/components/nav/nav.js.map +1 -1
  95. package/dist/components/nav/nav.types.d.ts +1 -3
  96. package/dist/components/navbar/index.d.ts +3 -1
  97. package/dist/components/navbar/navbar.d.ts +1 -3
  98. package/dist/components/navbar/navbar.js +9 -10
  99. package/dist/components/navbar/navbar.js.map +1 -1
  100. package/dist/components/navbar/navbar.types.d.ts +2 -3
  101. package/dist/components/overlays/dropdown-content.d.ts +1 -3
  102. package/dist/components/overlays/dropdown-content.js +0 -2
  103. package/dist/components/page/index.d.ts +2 -1
  104. package/dist/components/page/page.d.ts +1 -3
  105. package/dist/components/page/page.js +0 -2
  106. package/dist/components/page/page.types.d.ts +2 -2
  107. package/dist/components/page-header/index.d.ts +2 -1
  108. package/dist/components/page-header/page-header.d.ts +1 -3
  109. package/dist/components/page-header/page-header.js +0 -2
  110. package/dist/components/page-header/page-header.types.d.ts +2 -2
  111. package/dist/components/section/index.d.ts +2 -1
  112. package/dist/components/section/section.d.ts +1 -3
  113. package/dist/components/section/section.js +0 -2
  114. package/dist/components/section/section.types.d.ts +2 -2
  115. package/dist/components/separator/index.d.ts +2 -1
  116. package/dist/components/separator/separator.d.ts +1 -3
  117. package/dist/components/separator/separator.js +2 -6
  118. package/dist/components/separator/separator.js.map +1 -1
  119. package/dist/components/separator/separator.types.d.ts +1 -3
  120. package/dist/components/sidebar/index.d.ts +2 -1
  121. package/dist/components/sidebar/sidebar.d.ts +2 -4
  122. package/dist/components/sidebar/sidebar.js +5 -10
  123. package/dist/components/sidebar/sidebar.js.map +1 -1
  124. package/dist/components/sidebar/sidebar.types.d.ts +2 -2
  125. package/dist/components/skeleton/index.d.ts +2 -1
  126. package/dist/components/skeleton/skeleton.d.ts +1 -3
  127. package/dist/components/skeleton/skeleton.js +8 -10
  128. package/dist/components/skeleton/skeleton.js.map +1 -1
  129. package/dist/components/skeleton/skeleton.types.d.ts +1 -3
  130. package/dist/components/spinner/index.d.ts +2 -1
  131. package/dist/components/spinner/spinner.d.ts +1 -3
  132. package/dist/components/spinner/spinner.js +0 -2
  133. package/dist/components/spinner/spinner.types.d.ts +1 -3
  134. package/dist/components/stat/index.d.ts +2 -1
  135. package/dist/components/stat/stat.d.ts +1 -3
  136. package/dist/components/stat/stat.js +0 -2
  137. package/dist/components/stat/stat.types.d.ts +1 -3
  138. package/dist/components/text/index.d.ts +2 -1
  139. package/dist/components/text/text.d.ts +1 -3
  140. package/dist/components/text/text.js +2 -7
  141. package/dist/components/text/text.js.map +1 -1
  142. package/dist/components/text/text.types.d.ts +1 -3
  143. package/dist/components/theme/index.d.ts +2 -1
  144. package/dist/components/theme/theme.d.ts +5 -7
  145. package/dist/components/theme/theme.js +102 -72
  146. package/dist/components/theme/theme.js.map +1 -1
  147. package/dist/components/toolbar/index.d.ts +2 -1
  148. package/dist/components/toolbar/toolbar.d.ts +1 -3
  149. package/dist/components/toolbar/toolbar.js +0 -2
  150. package/dist/components/toolbar/toolbar.types.d.ts +2 -2
  151. package/dist/components.d.ts +34 -4
  152. package/dist/components.js +4 -4
  153. package/dist/controls.d.ts +4 -0
  154. package/dist/core.d.ts +18 -2
  155. package/dist/navs.d.ts +1 -0
  156. package/dist/overlays.d.ts +2 -2
  157. package/dist/overlays.js +2 -2
  158. package/dist/surfaces.d.ts +8 -0
  159. package/dist/theme.d.ts +3 -2
  160. package/dist/theme.js +2 -2
  161. package/dist/themes/default/index.css +3 -3
  162. package/package.json +39 -16
  163. package/src/components/_internal/jsx.ts +11 -0
  164. package/src/components/alert/alert.tsx +1 -1
  165. package/src/components/aspect-ratio/aspect-ratio.tsx +2 -1
  166. package/src/components/badge/badge.tsx +2 -1
  167. package/src/components/block/block.tsx +2 -2
  168. package/src/components/brand/brand.tsx +3 -3
  169. package/src/components/button-group/button-group.tsx +1 -1
  170. package/src/components/catalog.tsx +3 -1
  171. package/src/components/grid/grid.tsx +2 -2
  172. package/src/components/input-group/input-group.tsx +3 -2
  173. package/src/components/nav/nav.tsx +25 -19
  174. package/src/components/navbar/navbar.tsx +22 -14
  175. package/src/components/separator/separator.tsx +2 -1
  176. package/src/components/sidebar/index.ts +1 -1
  177. package/src/components/sidebar/sidebar.tsx +7 -7
  178. package/src/components/skeleton/skeleton.tsx +8 -10
  179. package/src/components/text/text.tsx +2 -2
  180. package/src/components/theme/index.ts +4 -4
  181. package/src/components/theme/theme.tsx +135 -99
  182. package/src/components.ts +4 -4
  183. package/src/overlays.ts +3 -3
  184. package/src/theme.ts +4 -4
  185. package/src/themes/default/styles/display/coverage.css +1 -1
  186. package/src/themes/default/styles/overlays/toast.css +1 -1
  187. package/src/themes/default/styles/shell/sidebar.css +1 -1
  188. package/templates/theme/styles/display/coverage.css +1 -1
  189. package/templates/theme/styles/overlays/toast.css +1 -1
  190. package/templates/theme/styles/shell/sidebar.css +1 -1
@@ -1,6 +1,5 @@
1
1
  import { BlockSpace, ResponsiveValue } from "../_internal/block-layout.js";
2
2
  import { Ref } from "@askrjs/askr/foundations/utilities";
3
-
4
3
  //#region src/components/grid/grid.types.d.ts
5
4
  type GridElement = "div" | "section" | "ul";
6
5
  type GridColumns = number | string;
@@ -15,5 +14,4 @@ type GridProps<TElement extends GridElement = "div"> = GridIntrinsicProps<TEleme
15
14
  ref?: Ref<HTMLElement>;
16
15
  };
17
16
  //#endregion
18
- export { GridAlign, GridColumns, GridElement, GridProps };
19
- //# sourceMappingURL=grid.types.d.ts.map
17
+ export { GridAlign, GridColumns, GridElement, GridProps };
@@ -1,2 +1,3 @@
1
1
  import { GridAlign, GridColumns, GridElement, GridProps } from "./grid.types.js";
2
- import { Grid } from "./grid.js";
2
+ import { Grid } from "./grid.js";
3
+ export { Grid, type GridAlign, type GridColumns, type GridElement, type GridProps };
@@ -1,7 +1,5 @@
1
1
  import { HeaderProps } from "./header.types.js";
2
-
3
2
  //#region src/components/header/header.d.ts
4
3
  declare function Header(props: HeaderProps): JSX.Element;
5
4
  //#endregion
6
- export { Header };
7
- //# sourceMappingURL=header.d.ts.map
5
+ export { Header };
@@ -17,5 +17,3 @@ function Header(props) {
17
17
  }
18
18
  //#endregion
19
19
  export { Header };
20
-
21
- //# sourceMappingURL=header.js.map
@@ -1,9 +1,9 @@
1
1
  import { BlockElementProps } from "../block/block.types.js";
2
+ import "../block/index.js";
2
3
  //#region src/components/header/header.types.d.ts
3
4
  type HeaderProps = Omit<BlockElementProps<"header">, "as" | "sticky"> & {
4
5
  position?: "sticky" | "static";
5
6
  sticky?: boolean;
6
7
  };
7
8
  //#endregion
8
- export { HeaderProps };
9
- //# sourceMappingURL=header.types.d.ts.map
9
+ export { HeaderProps };
@@ -1,2 +1,3 @@
1
1
  import { HeaderProps } from "./header.types.js";
2
- import { Header } from "./header.js";
2
+ import { Header } from "./header.js";
3
+ export { Header, type HeaderProps };
@@ -1,2 +1,3 @@
1
1
  import { InputGroupOrientation, InputGroupProps, InputGroupTextAsChildProps, InputGroupTextProps } from "./input-group.types.js";
2
- import { InputGroup, InputGroupText } from "./input-group.js";
2
+ import { InputGroup, InputGroupText } from "./input-group.js";
3
+ export { InputGroup, type InputGroupOrientation, type InputGroupProps, InputGroupText, type InputGroupTextAsChildProps, type InputGroupTextProps };
@@ -1,9 +1,7 @@
1
1
  import { InputGroupProps, InputGroupTextAsChildProps, InputGroupTextProps } from "./input-group.types.js";
2
-
3
2
  //#region src/components/input-group/input-group.d.ts
4
3
  declare function InputGroup(props: InputGroupProps): JSX.Element;
5
4
  declare function InputGroupText(props: InputGroupTextProps): JSX.Element;
6
5
  declare function InputGroupText(props: InputGroupTextAsChildProps): JSX.Element;
7
6
  //#endregion
8
- export { InputGroup, InputGroupText };
9
- //# sourceMappingURL=input-group.d.ts.map
7
+ export { InputGroup, InputGroupText };
@@ -1,4 +1,5 @@
1
1
  import { classes } from "../_internal/classes.js";
2
+ import { intrinsicElement } from "../_internal/jsx.js";
2
3
  import { jsx } from "@askrjs/askr/jsx-runtime";
3
4
  import { Slot } from "@askrjs/askr/foundations";
4
5
  import { mergeProps } from "@askrjs/askr/foundations/utilities";
@@ -28,12 +29,7 @@ function InputGroupText(props) {
28
29
  ...finalProps,
29
30
  children
30
31
  });
31
- return /* @__PURE__ */ jsx("span", {
32
- ...finalProps,
33
- children
34
- });
32
+ return intrinsicElement("span", finalProps, children);
35
33
  }
36
34
  //#endregion
37
35
  export { InputGroup, InputGroupText };
38
-
39
- //# sourceMappingURL=input-group.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"input-group.js","names":[],"sources":["../../../src/components/input-group/input-group.tsx"],"sourcesContent":["import { Slot } from \"@askrjs/askr/foundations\";\nimport { mergeProps } from \"@askrjs/askr/foundations/utilities\";\nimport { classes } from \"../_internal/classes\";\nimport type {\n InputGroupProps,\n InputGroupTextAsChildProps,\n InputGroupTextProps,\n} from \"./input-group.types\";\n\nexport function InputGroup(props: InputGroupProps): JSX.Element {\n const {\n attached = true,\n children,\n class: className,\n orientation = \"horizontal\",\n ref,\n role,\n ...rest\n } = props;\n\n return (\n <div\n {...rest}\n ref={ref}\n class={classes(\n \"input-group\",\n orientation === \"vertical\" ? \"input-group-vertical\" : undefined,\n className,\n )}\n data-attached={attached ? \"true\" : \"false\"}\n data-orientation={orientation}\n data-slot=\"input-group\"\n role={role ?? \"group\"}\n >\n {children}\n </div>\n );\n}\n\nexport function InputGroupText(props: InputGroupTextProps): JSX.Element;\nexport function InputGroupText(props: InputGroupTextAsChildProps): JSX.Element;\nexport function InputGroupText(\n props: InputGroupTextProps | InputGroupTextAsChildProps,\n): JSX.Element {\n const { asChild, children, ref, class: className, ...rest } = props;\n const finalProps = mergeProps(rest, {\n class: classes(\"input-group-text\", className),\n ref,\n \"data-slot\": \"input-group-text\",\n });\n\n if (asChild) {\n return <Slot asChild {...finalProps} children={children} />;\n }\n\n return <span {...finalProps}>{children}</span>;\n}\n"],"mappings":";;;;;AASA,SAAgB,WAAW,OAAqC;CAC9D,MAAM,EACJ,WAAW,MACX,UACA,OAAO,WACP,cAAc,cACd,KACA,MACA,GAAG,SACD;CAEJ,OACE,oBAAC,OAAD;EACE,GAAI;EACC;EACL,OAAO,QACL,eACA,gBAAgB,aAAa,yBAAyB,KAAA,GACtD,SACF;EACA,iBAAe,WAAW,SAAS;EACnC,oBAAkB;EAClB,aAAU;EACV,MAAM,QAAQ;EAEb;CACE,CAAA;AAET;AAIA,SAAgB,eACd,OACa;CACb,MAAM,EAAE,SAAS,UAAU,KAAK,OAAO,WAAW,GAAG,SAAS;CAC9D,MAAM,aAAa,WAAW,MAAM;EAClC,OAAO,QAAQ,oBAAoB,SAAS;EAC5C;EACA,aAAa;CACf,CAAC;CAED,IAAI,SACF,OAAO,oBAAC,MAAD;EAAM,SAAA;EAAQ,GAAI;EAAsB;CAAW,CAAA;CAG5D,OAAO,oBAAC,QAAD;EAAM,GAAI;EAAa;CAAe,CAAA;AAC/C"}
1
+ {"version":3,"file":"input-group.js","names":[],"sources":["../../../src/components/input-group/input-group.tsx"],"sourcesContent":["import { Slot } from \"@askrjs/askr/foundations\";\nimport { mergeProps } from \"@askrjs/askr/foundations/utilities\";\nimport { classes } from \"../_internal/classes\";\nimport { intrinsicElement } from \"../_internal/jsx\";\nimport type {\n InputGroupProps,\n InputGroupTextAsChildProps,\n InputGroupTextProps,\n} from \"./input-group.types\";\n\nexport function InputGroup(props: InputGroupProps): JSX.Element {\n const {\n attached = true,\n children,\n class: className,\n orientation = \"horizontal\",\n ref,\n role,\n ...rest\n } = props;\n\n return (\n <div\n {...rest}\n ref={ref}\n class={classes(\n \"input-group\",\n orientation === \"vertical\" ? \"input-group-vertical\" : undefined,\n className,\n )}\n data-attached={attached ? \"true\" : \"false\"}\n data-orientation={orientation}\n data-slot=\"input-group\"\n role={(role ?? \"group\") as string}\n >\n {children}\n </div>\n );\n}\n\nexport function InputGroupText(props: InputGroupTextProps): JSX.Element;\nexport function InputGroupText(props: InputGroupTextAsChildProps): JSX.Element;\nexport function InputGroupText(\n props: InputGroupTextProps | InputGroupTextAsChildProps,\n): JSX.Element {\n const { asChild, children, ref, class: className, ...rest } = props;\n const finalProps = mergeProps(rest, {\n class: classes(\"input-group-text\", className),\n ref,\n \"data-slot\": \"input-group-text\",\n });\n\n if (asChild) {\n return <Slot asChild {...finalProps} children={children} />;\n }\n\n return intrinsicElement(\"span\", finalProps, children);\n}\n"],"mappings":";;;;;;AAUA,SAAgB,WAAW,OAAqC;CAC9D,MAAM,EACJ,WAAW,MACX,UACA,OAAO,WACP,cAAc,cACd,KACA,MACA,GAAG,SACD;CAEJ,OACE,oBAAC,OAAD;EACE,GAAI;EACC;EACL,OAAO,QACL,eACA,gBAAgB,aAAa,yBAAyB,KAAA,GACtD,SACF;EACA,iBAAe,WAAW,SAAS;EACnC,oBAAkB;EAClB,aAAU;EACV,MAAO,QAAQ;EAEd;CACE,CAAA;AAET;AAIA,SAAgB,eACd,OACa;CACb,MAAM,EAAE,SAAS,UAAU,KAAK,OAAO,WAAW,GAAG,SAAS;CAC9D,MAAM,aAAa,WAAW,MAAM;EAClC,OAAO,QAAQ,oBAAoB,SAAS;EAC5C;EACA,aAAa;CACf,CAAC;CAED,IAAI,SACF,OAAO,oBAAC,MAAD;EAAM,SAAA;EAAQ,GAAI;EAAsB;CAAW,CAAA;CAG5D,OAAO,iBAAiB,QAAQ,YAAY,QAAQ;AACtD"}
@@ -1,6 +1,5 @@
1
1
  import { JSXElement } from "@askrjs/askr/foundations";
2
2
  import { Ref } from "@askrjs/askr/foundations/utilities";
3
-
4
3
  //#region src/components/input-group/input-group.types.d.ts
5
4
  type InputGroupOrientation = "horizontal" | "vertical";
6
5
  type DivProps = Omit<JSX.IntrinsicElements["div"], "children" | "ref">;
@@ -22,5 +21,4 @@ type InputGroupTextAsChildProps = SpanProps & {
22
21
  ref?: Ref<unknown>;
23
22
  };
24
23
  //#endregion
25
- export { InputGroupOrientation, InputGroupProps, InputGroupTextAsChildProps, InputGroupTextProps };
26
- //# sourceMappingURL=input-group.types.d.ts.map
24
+ export { InputGroupOrientation, InputGroupProps, InputGroupTextAsChildProps, InputGroupTextProps };
@@ -1,2 +1,3 @@
1
1
  import { MainProps } from "./main.types.js";
2
- import { Main } from "./main.js";
2
+ import { Main } from "./main.js";
3
+ export { Main, type MainProps };
@@ -1,7 +1,5 @@
1
1
  import { MainProps } from "./main.types.js";
2
-
3
2
  //#region src/components/main/main.d.ts
4
3
  declare function Main(props: MainProps): JSX.Element;
5
4
  //#endregion
6
- export { Main };
7
- //# sourceMappingURL=main.d.ts.map
5
+ export { Main };
@@ -13,5 +13,3 @@ function Main(props) {
13
13
  }
14
14
  //#endregion
15
15
  export { Main };
16
-
17
- //# sourceMappingURL=main.js.map
@@ -1,6 +1,6 @@
1
1
  import { BlockElementProps } from "../block/block.types.js";
2
+ import "../block/index.js";
2
3
  //#region src/components/main/main.types.d.ts
3
4
  type MainProps = Omit<BlockElementProps<"main">, "as">;
4
5
  //#endregion
5
- export { MainProps };
6
- //# sourceMappingURL=main.types.d.ts.map
6
+ export { MainProps };
@@ -1,2 +1,3 @@
1
1
  import { NavItemAsChildProps, NavItemProps, NavLinkProps, PillProps, PillsAsChildProps, PillsProps, TabProps, TabsAsChildProps, TabsProps } from "./nav.types.js";
2
- import { NavItem, NavLink, Pill, Pills, Tab, Tabs } from "./nav.js";
2
+ import { NavItem, NavLink, Pill, Pills, Tab, Tabs } from "./nav.js";
3
+ export { NavItem, type NavItemAsChildProps, type NavItemProps, NavLink, type NavLinkProps, Pill, type PillProps, Pills, type PillsAsChildProps, type PillsProps, Tab, type TabProps, Tabs, type TabsAsChildProps, type TabsProps };
@@ -1,5 +1,4 @@
1
1
  import { NavItemAsChildProps, NavItemProps, NavLinkProps, PillProps, PillsAsChildProps, PillsProps, TabProps, TabsAsChildProps, TabsProps } from "./nav.types.js";
2
-
3
2
  //#region src/components/nav/nav.d.ts
4
3
  declare function Tabs(props: TabsProps): JSX.Element;
5
4
  declare function Tabs(props: TabsAsChildProps): JSX.Element;
@@ -11,5 +10,4 @@ declare function NavItem(props: NavItemProps): JSX.Element;
11
10
  declare function NavItem(props: NavItemAsChildProps): JSX.Element;
12
11
  declare function NavLink(props: NavLinkProps): JSX.Element;
13
12
  //#endregion
14
- export { NavItem, NavLink, Pill, Pills, Tab, Tabs };
15
- //# sourceMappingURL=nav.d.ts.map
13
+ export { NavItem, NavLink, Pill, Pills, Tab, Tabs };
@@ -1,11 +1,13 @@
1
1
  import { classes } from "../_internal/classes.js";
2
2
  import { mergeProps } from "../_internal/merge-props.js";
3
+ import { intrinsicElement } from "../_internal/jsx.js";
3
4
  import { Block } from "../block/block.js";
4
5
  import { resolvePathname } from "../_internal/pathname.js";
5
6
  import { jsx } from "@askrjs/askr/jsx-runtime";
6
7
  import { Slot } from "@askrjs/askr/foundations";
7
8
  import { Link, currentRoute, navigate } from "@askrjs/askr/router";
8
9
  //#region src/components/nav/nav.tsx
10
+ const LayoutBlock = Block;
9
11
  function normalizePathname(pathname) {
10
12
  return pathname.endsWith("/") && pathname !== "/" ? pathname.slice(0, -1) : pathname;
11
13
  }
@@ -42,13 +44,12 @@ function renderNavSet(props, slot) {
42
44
  ...finalProps,
43
45
  children
44
46
  });
45
- return /* @__PURE__ */ jsx("nav", {
46
- ...finalProps,
47
- children
48
- });
47
+ return intrinsicElement("nav", finalProps, children);
49
48
  }
50
49
  function renderRoutedLink(props, slot, options = {}) {
51
- const { active, children, href, onClick, ref, class: className, match = "prefix", target, ...rest } = props;
50
+ const { active, children, href: suppliedHref, to, onClick, ref, class: className, match = "prefix", target, ...rest } = props;
51
+ const href = to?.href ?? suppliedHref;
52
+ if (!href) throw new Error("Nav link requires href or to.");
52
53
  const resolvedSlot = (options.inheritSlot && typeof rest["data-slot"] === "string" ? String(rest["data-slot"]) : void 0) ?? slot;
53
54
  const inheritedNavClass = slot === "nav-item" && resolvedSlot !== "nav-item" ? "nav-item" : void 0;
54
55
  const { "data-slot": _dataSlot, ...childRest } = rest;
@@ -60,8 +61,12 @@ function renderRoutedLink(props, slot, options = {}) {
60
61
  "aria-current": "page",
61
62
  "data-active": "true"
62
63
  } : { "data-active": void 0 };
63
- const useRouterLink = targetPathname !== null && !target && typeof onClick !== "function";
64
- const childProps = {
64
+ const rendersRouterLink = targetPathname !== null && !target && typeof onClick !== "function";
65
+ const childProps = to ? {
66
+ ...childRest,
67
+ to,
68
+ target
69
+ } : {
65
70
  ...childRest,
66
71
  href,
67
72
  target
@@ -72,21 +77,23 @@ function renderRoutedLink(props, slot, options = {}) {
72
77
  event.preventDefault();
73
78
  navigate(href);
74
79
  };
75
- return /* @__PURE__ */ jsx(Block, {
80
+ return /* @__PURE__ */ jsx(LayoutBlock, {
76
81
  asChild: true,
77
82
  paddingX: "sm",
78
83
  paddingY: "xs",
79
84
  radius: resolvedSlot === "pill" ? "round" : "md",
80
85
  background: isActive && options.activeBackground ? "selected" : void 0,
81
86
  ref,
82
- class: classes(options.className, inheritedNavClass, className),
87
+ className: classes(options.className, inheritedNavClass, className),
83
88
  "data-slot": resolvedSlot,
84
89
  ...activeProps,
85
- children: useRouterLink ? /* @__PURE__ */ jsx(Link, {
90
+ children: rendersRouterLink ? /* @__PURE__ */ jsx(Link, {
86
91
  ...childProps,
87
92
  children
88
93
  }) : /* @__PURE__ */ jsx("a", {
89
- ...childProps,
94
+ ...childRest,
95
+ href,
96
+ target,
90
97
  onClick: handleClick,
91
98
  children
92
99
  })
@@ -109,7 +116,7 @@ function Pill(props) {
109
116
  }
110
117
  function NavItem(props) {
111
118
  const { asChild, active = false, children, ref, class: className, match: _match, ...rest } = props;
112
- if (asChild) return /* @__PURE__ */ jsx(Block, {
119
+ if (asChild) return /* @__PURE__ */ jsx(LayoutBlock, {
113
120
  asChild: true,
114
121
  paddingX: "sm",
115
122
  paddingY: "xs",
@@ -117,12 +124,12 @@ function NavItem(props) {
117
124
  background: active ? "selected" : void 0,
118
125
  ...rest,
119
126
  ref,
120
- class: className,
127
+ className,
121
128
  "data-active": active ? "true" : void 0,
122
129
  "data-slot": "nav-item",
123
130
  children
124
131
  });
125
- return /* @__PURE__ */ jsx(Block, {
132
+ return /* @__PURE__ */ jsx(LayoutBlock, {
126
133
  as: "a",
127
134
  paddingX: "sm",
128
135
  paddingY: "xs",
@@ -130,7 +137,7 @@ function NavItem(props) {
130
137
  background: active ? "selected" : void 0,
131
138
  ...rest,
132
139
  ref,
133
- class: className,
140
+ className,
134
141
  "data-active": active ? "true" : void 0,
135
142
  "data-slot": "nav-item",
136
143
  children
@@ -144,5 +151,3 @@ function NavLink(props) {
144
151
  }
145
152
  //#endregion
146
153
  export { NavItem, NavLink, Pill, Pills, Tab, Tabs };
147
-
148
- //# sourceMappingURL=nav.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nav.js","names":[],"sources":["../../../src/components/nav/nav.tsx"],"sourcesContent":["import { Slot } from \"@askrjs/askr/foundations\";\nimport { currentRoute, Link, navigate } from \"@askrjs/askr/router\";\nimport { Block } from \"../block\";\nimport { classes } from \"../_internal/classes\";\nimport { mergeProps } from \"../_internal/merge-props\";\nimport { resolvePathname } from \"../_internal/pathname\";\nimport type {\n NavItemAsChildProps,\n NavItemProps,\n NavLinkProps,\n PillProps,\n PillsAsChildProps,\n PillsProps,\n TabProps,\n TabsAsChildProps,\n TabsProps,\n} from \"./nav.types\";\n\nfunction normalizePathname(pathname: string): string {\n return pathname.endsWith(\"/\") && pathname !== \"/\" ? pathname.slice(0, -1) : pathname;\n}\n\nfunction getCurrentPathname(): string | null {\n if (typeof window === \"undefined\") {\n return null;\n }\n\n return normalizePathname(window.location.pathname || \"/\");\n}\n\nfunction getReactiveCurrentPathname(): string | null {\n try {\n return normalizePathname(currentRoute().path || \"/\");\n } catch {\n return getCurrentPathname();\n }\n}\n\nfunction isActiveNavLink(\n currentPathname: string,\n targetPathname: string,\n match: NavLinkProps[\"match\"] = \"prefix\",\n): boolean {\n if (targetPathname === \"/\") {\n return currentPathname === \"/\";\n }\n\n if (match === \"exact\") {\n return currentPathname === targetPathname;\n }\n\n return currentPathname === targetPathname || currentPathname.startsWith(`${targetPathname}/`);\n}\n\nfunction shouldHandleClientNavigation(\n event: MouseEvent,\n target: string | undefined,\n targetPathname: string | null,\n): boolean {\n if (targetPathname === null || target) {\n return false;\n }\n\n return (\n !event.defaultPrevented &&\n (event.button ?? 0) === 0 &&\n !event.altKey &&\n !event.ctrlKey &&\n !event.metaKey &&\n !event.shiftKey\n );\n}\n\nfunction renderNavSet(\n props: TabsProps | TabsAsChildProps | PillsProps | PillsAsChildProps,\n slot: \"tabs\" | \"pills\",\n): JSX.Element {\n const className = \"class\" in props ? props.class : undefined;\n const { asChild, children, ref, ...rest } = props;\n const finalProps = mergeProps(rest, {\n ref,\n class: classes(slot, className),\n \"data-slot\": slot,\n });\n\n if (asChild) {\n return <Slot asChild {...finalProps} children={children as JSX.Element} />;\n }\n\n return <nav {...finalProps}>{children}</nav>;\n}\n\nfunction renderRoutedLink(\n props: NavLinkProps | TabProps | PillProps,\n slot: \"nav-item\" | \"tab\" | \"pill\",\n options: { activeBackground?: boolean; className?: string; inheritSlot?: boolean } = {},\n): JSX.Element {\n const {\n active,\n children,\n href,\n onClick,\n ref,\n class: className,\n match = \"prefix\",\n target,\n ...rest\n } = props as NavLinkProps & { onClick?: (event: MouseEvent) => void };\n const inheritedSlot =\n options.inheritSlot && typeof (rest as Record<string, unknown>)[\"data-slot\"] === \"string\"\n ? String((rest as Record<string, unknown>)[\"data-slot\"])\n : undefined;\n const resolvedSlot = (inheritedSlot ?? slot) as \"nav-item\" | \"tab\" | \"pill\";\n const inheritedNavClass =\n slot === \"nav-item\" && resolvedSlot !== \"nav-item\" ? \"nav-item\" : undefined;\n const { \"data-slot\": _dataSlot, ...childRest } = rest as Record<string, unknown>;\n void _dataSlot;\n const currentPathname = getReactiveCurrentPathname();\n const targetPathname = resolvePathname(href);\n const routeActive =\n currentPathname !== null &&\n targetPathname !== null &&\n isActiveNavLink(currentPathname, targetPathname, match);\n const isActive = active ?? routeActive;\n const activeProps = isActive\n ? {\n \"aria-current\": \"page\" as const,\n \"data-active\": \"true\" as const,\n }\n : {\n \"data-active\": undefined,\n };\n const useRouterLink = targetPathname !== null && !target && typeof onClick !== \"function\";\n const childProps = {\n ...childRest,\n href,\n target,\n };\n const handleClick = (event: MouseEvent) => {\n onClick?.(event);\n\n if (!shouldHandleClientNavigation(event, target, targetPathname)) {\n return;\n }\n\n event.preventDefault();\n navigate(href);\n };\n\n return (\n <Block\n asChild\n paddingX=\"sm\"\n paddingY=\"xs\"\n radius={resolvedSlot === \"pill\" ? \"round\" : \"md\"}\n background={isActive && options.activeBackground ? \"selected\" : undefined}\n ref={ref}\n class={classes(options.className, inheritedNavClass, className)}\n data-slot={resolvedSlot}\n {...activeProps}\n >\n {useRouterLink ? (\n <Link {...childProps}>{children}</Link>\n ) : (\n <a {...childProps} onClick={handleClick}>\n {children}\n </a>\n )}\n </Block>\n );\n}\n\nexport function Tabs(props: TabsProps): JSX.Element;\nexport function Tabs(props: TabsAsChildProps): JSX.Element;\nexport function Tabs(props: TabsProps | TabsAsChildProps): JSX.Element {\n return renderNavSet(props, \"tabs\");\n}\n\nexport function Pills(props: PillsProps): JSX.Element;\nexport function Pills(props: PillsAsChildProps): JSX.Element;\nexport function Pills(props: PillsProps | PillsAsChildProps): JSX.Element {\n return renderNavSet(props, \"pills\");\n}\n\nexport function Tab(props: TabProps): JSX.Element {\n return renderRoutedLink(props, \"tab\", { className: \"tab\" });\n}\n\nexport function Pill(props: PillProps): JSX.Element {\n return renderRoutedLink(props, \"pill\", { activeBackground: true, className: \"pill\" });\n}\n\nexport function NavItem(props: NavItemProps): JSX.Element;\nexport function NavItem(props: NavItemAsChildProps): JSX.Element;\nexport function NavItem(props: NavItemProps | NavItemAsChildProps): JSX.Element {\n const {\n asChild,\n active = false,\n children,\n ref,\n class: className,\n match: _match,\n ...rest\n } = props as (NavItemProps | NavItemAsChildProps) & { match?: unknown };\n void _match;\n\n if (asChild) {\n return (\n <Block\n asChild\n paddingX=\"sm\"\n paddingY=\"xs\"\n radius=\"md\"\n background={active ? \"selected\" : undefined}\n {...rest}\n ref={ref}\n class={className}\n data-active={active ? \"true\" : undefined}\n data-slot=\"nav-item\"\n >\n {children}\n </Block>\n );\n }\n\n return (\n <Block\n as=\"a\"\n paddingX=\"sm\"\n paddingY=\"xs\"\n radius=\"md\"\n background={active ? \"selected\" : undefined}\n {...rest}\n ref={ref}\n class={className}\n data-active={active ? \"true\" : undefined}\n data-slot=\"nav-item\"\n >\n {children}\n </Block>\n );\n}\n\nexport function NavLink(props: NavLinkProps): JSX.Element {\n return renderRoutedLink(props, \"nav-item\", { activeBackground: true, inheritSlot: true });\n}\n"],"mappings":";;;;;;;;AAkBA,SAAS,kBAAkB,UAA0B;CACnD,OAAO,SAAS,SAAS,GAAG,KAAK,aAAa,MAAM,SAAS,MAAM,GAAG,EAAE,IAAI;AAC9E;AAEA,SAAS,qBAAoC;CAC3C,IAAI,OAAO,WAAW,aACpB,OAAO;CAGT,OAAO,kBAAkB,OAAO,SAAS,YAAY,GAAG;AAC1D;AAEA,SAAS,6BAA4C;CACnD,IAAI;EACF,OAAO,kBAAkB,aAAa,CAAC,CAAC,QAAQ,GAAG;CACrD,QAAQ;EACN,OAAO,mBAAmB;CAC5B;AACF;AAEA,SAAS,gBACP,iBACA,gBACA,QAA+B,UACtB;CACT,IAAI,mBAAmB,KACrB,OAAO,oBAAoB;CAG7B,IAAI,UAAU,SACZ,OAAO,oBAAoB;CAG7B,OAAO,oBAAoB,kBAAkB,gBAAgB,WAAW,GAAG,eAAe,EAAE;AAC9F;AAEA,SAAS,6BACP,OACA,QACA,gBACS;CACT,IAAI,mBAAmB,QAAQ,QAC7B,OAAO;CAGT,OACE,CAAC,MAAM,qBACN,MAAM,UAAU,OAAO,KACxB,CAAC,MAAM,UACP,CAAC,MAAM,WACP,CAAC,MAAM,WACP,CAAC,MAAM;AAEX;AAEA,SAAS,aACP,OACA,MACa;CACb,MAAM,YAAY,WAAW,QAAQ,MAAM,QAAQ,KAAA;CACnD,MAAM,EAAE,SAAS,UAAU,KAAK,GAAG,SAAS;CAC5C,MAAM,aAAa,WAAW,MAAM;EAClC;EACA,OAAO,QAAQ,MAAM,SAAS;EAC9B,aAAa;CACf,CAAC;CAED,IAAI,SACF,OAAO,oBAAC,MAAD;EAAM,SAAA;EAAQ,GAAI;EAAsB;CAA0B,CAAA;CAG3E,OAAO,oBAAC,OAAD;EAAK,GAAI;EAAa;CAAc,CAAA;AAC7C;AAEA,SAAS,iBACP,OACA,MACA,UAAqF,CAAC,GACzE;CACb,MAAM,EACJ,QACA,UACA,MACA,SACA,KACA,OAAO,WACP,QAAQ,UACR,QACA,GAAG,SACD;CAKJ,MAAM,gBAHJ,QAAQ,eAAe,OAAQ,KAAiC,iBAAiB,WAC7E,OAAQ,KAAiC,YAAY,IACrD,KAAA,MACiC;CACvC,MAAM,oBACJ,SAAS,cAAc,iBAAiB,aAAa,aAAa,KAAA;CACpE,MAAM,EAAE,aAAa,WAAW,GAAG,cAAc;CAEjD,MAAM,kBAAkB,2BAA2B;CACnD,MAAM,iBAAiB,gBAAgB,IAAI;CAC3C,MAAM,cACJ,oBAAoB,QACpB,mBAAmB,QACnB,gBAAgB,iBAAiB,gBAAgB,KAAK;CACxD,MAAM,WAAW,UAAU;CAC3B,MAAM,cAAc,WAChB;EACE,gBAAgB;EAChB,eAAe;CACjB,IACA,EACE,eAAe,KAAA,EACjB;CACJ,MAAM,gBAAgB,mBAAmB,QAAQ,CAAC,UAAU,OAAO,YAAY;CAC/E,MAAM,aAAa;EACjB,GAAG;EACH;EACA;CACF;CACA,MAAM,eAAe,UAAsB;EACzC,UAAU,KAAK;EAEf,IAAI,CAAC,6BAA6B,OAAO,QAAQ,cAAc,GAC7D;EAGF,MAAM,eAAe;EACrB,SAAS,IAAI;CACf;CAEA,OACE,oBAAC,OAAD;EACE,SAAA;EACA,UAAS;EACT,UAAS;EACT,QAAQ,iBAAiB,SAAS,UAAU;EAC5C,YAAY,YAAY,QAAQ,mBAAmB,aAAa,KAAA;EAC3D;EACL,OAAO,QAAQ,QAAQ,WAAW,mBAAmB,SAAS;EAC9D,aAAW;EACX,GAAI;YAEH,gBACC,oBAAC,MAAD;GAAM,GAAI;GAAa;EAAe,CAAA,IAEtC,oBAAC,KAAD;GAAG,GAAI;GAAY,SAAS;GACzB;EACA,CAAA;CAEA,CAAA;AAEX;AAIA,SAAgB,KAAK,OAAkD;CACrE,OAAO,aAAa,OAAO,MAAM;AACnC;AAIA,SAAgB,MAAM,OAAoD;CACxE,OAAO,aAAa,OAAO,OAAO;AACpC;AAEA,SAAgB,IAAI,OAA8B;CAChD,OAAO,iBAAiB,OAAO,OAAO,EAAE,WAAW,MAAM,CAAC;AAC5D;AAEA,SAAgB,KAAK,OAA+B;CAClD,OAAO,iBAAiB,OAAO,QAAQ;EAAE,kBAAkB;EAAM,WAAW;CAAO,CAAC;AACtF;AAIA,SAAgB,QAAQ,OAAwD;CAC9E,MAAM,EACJ,SACA,SAAS,OACT,UACA,KACA,OAAO,WACP,OAAO,QACP,GAAG,SACD;CAGJ,IAAI,SACF,OACE,oBAAC,OAAD;EACE,SAAA;EACA,UAAS;EACT,UAAS;EACT,QAAO;EACP,YAAY,SAAS,aAAa,KAAA;EAClC,GAAI;EACC;EACL,OAAO;EACP,eAAa,SAAS,SAAS,KAAA;EAC/B,aAAU;EAET;CACI,CAAA;CAIX,OACE,oBAAC,OAAD;EACE,IAAG;EACH,UAAS;EACT,UAAS;EACT,QAAO;EACP,YAAY,SAAS,aAAa,KAAA;EAClC,GAAI;EACC;EACL,OAAO;EACP,eAAa,SAAS,SAAS,KAAA;EAC/B,aAAU;EAET;CACI,CAAA;AAEX;AAEA,SAAgB,QAAQ,OAAkC;CACxD,OAAO,iBAAiB,OAAO,YAAY;EAAE,kBAAkB;EAAM,aAAa;CAAK,CAAC;AAC1F"}
1
+ {"version":3,"file":"nav.js","names":[],"sources":["../../../src/components/nav/nav.tsx"],"sourcesContent":["import { Slot } from \"@askrjs/askr/foundations\";\nimport { currentRoute, Link, navigate } from \"@askrjs/askr/router\";\nimport { Block } from \"../block\";\nimport { classes } from \"../_internal/classes\";\nimport { mergeProps } from \"../_internal/merge-props\";\nimport { intrinsicElement } from \"../_internal/jsx\";\nimport { resolvePathname } from \"../_internal/pathname\";\nimport type {\n NavItemAsChildProps,\n NavItemProps,\n NavLinkProps,\n PillProps,\n PillsAsChildProps,\n PillsProps,\n TabProps,\n TabsAsChildProps,\n TabsProps,\n} from \"./nav.types\";\n\nconst LayoutBlock = Block as (props: Record<string, unknown>) => JSX.Element;\n\nfunction normalizePathname(pathname: string): string {\n return pathname.endsWith(\"/\") && pathname !== \"/\" ? pathname.slice(0, -1) : pathname;\n}\n\nfunction getCurrentPathname(): string | null {\n if (typeof window === \"undefined\") {\n return null;\n }\n\n return normalizePathname(window.location.pathname || \"/\");\n}\n\nfunction getReactiveCurrentPathname(): string | null {\n try {\n return normalizePathname(currentRoute().path || \"/\");\n } catch {\n return getCurrentPathname();\n }\n}\n\nfunction isActiveNavLink(\n currentPathname: string,\n targetPathname: string,\n match: NavLinkProps[\"match\"] = \"prefix\",\n): boolean {\n if (targetPathname === \"/\") {\n return currentPathname === \"/\";\n }\n\n if (match === \"exact\") {\n return currentPathname === targetPathname;\n }\n\n return currentPathname === targetPathname || currentPathname.startsWith(`${targetPathname}/`);\n}\n\nfunction shouldHandleClientNavigation(\n event: MouseEvent,\n target: string | undefined,\n targetPathname: string | null,\n): boolean {\n if (targetPathname === null || target) {\n return false;\n }\n\n return (\n !event.defaultPrevented &&\n (event.button ?? 0) === 0 &&\n !event.altKey &&\n !event.ctrlKey &&\n !event.metaKey &&\n !event.shiftKey\n );\n}\n\nfunction renderNavSet(\n props: TabsProps | TabsAsChildProps | PillsProps | PillsAsChildProps,\n slot: \"tabs\" | \"pills\",\n): JSX.Element {\n const className = \"class\" in props ? props.class : undefined;\n const { asChild, children, ref, ...rest } = props;\n const finalProps = mergeProps(rest, {\n ref,\n class: classes(slot, className),\n \"data-slot\": slot,\n });\n\n if (asChild) {\n return <Slot asChild {...finalProps} children={children as JSX.Element} />;\n }\n\n return intrinsicElement(\"nav\", finalProps, children);\n}\n\nfunction renderRoutedLink(\n props: NavLinkProps | TabProps | PillProps,\n slot: \"nav-item\" | \"tab\" | \"pill\",\n options: { activeBackground?: boolean; className?: string; inheritSlot?: boolean } = {},\n): JSX.Element {\n const {\n active,\n children,\n href: suppliedHref,\n to,\n onClick,\n ref,\n class: className,\n match = \"prefix\",\n target,\n ...rest\n } = props as NavLinkProps & { onClick?: (event: MouseEvent) => void };\n const href = to?.href ?? suppliedHref;\n if (!href) {\n throw new Error(\"Nav link requires href or to.\");\n }\n const inheritedSlot =\n options.inheritSlot && typeof (rest as Record<string, unknown>)[\"data-slot\"] === \"string\"\n ? String((rest as Record<string, unknown>)[\"data-slot\"])\n : undefined;\n const resolvedSlot = (inheritedSlot ?? slot) as \"nav-item\" | \"tab\" | \"pill\";\n const inheritedNavClass =\n slot === \"nav-item\" && resolvedSlot !== \"nav-item\" ? \"nav-item\" : undefined;\n const { \"data-slot\": _dataSlot, ...childRest } = rest as Record<string, unknown>;\n void _dataSlot;\n const currentPathname = getReactiveCurrentPathname();\n const targetPathname = resolvePathname(href);\n const routeActive =\n currentPathname !== null &&\n targetPathname !== null &&\n isActiveNavLink(currentPathname, targetPathname, match);\n const isActive = active ?? routeActive;\n const activeProps = isActive\n ? {\n \"aria-current\": \"page\" as const,\n \"data-active\": \"true\" as const,\n }\n : {\n \"data-active\": undefined,\n };\n const rendersRouterLink = targetPathname !== null && !target && typeof onClick !== \"function\";\n const childProps: NavLinkProps = to\n ? ({ ...childRest, to, target } as NavLinkProps)\n : ({ ...childRest, href, target } as NavLinkProps);\n const handleClick = (event: MouseEvent) => {\n onClick?.(event);\n\n if (!shouldHandleClientNavigation(event, target, targetPathname)) {\n return;\n }\n\n event.preventDefault();\n navigate(href);\n };\n\n return (\n <LayoutBlock\n asChild\n paddingX=\"sm\"\n paddingY=\"xs\"\n radius={resolvedSlot === \"pill\" ? \"round\" : \"md\"}\n background={isActive && options.activeBackground ? \"selected\" : undefined}\n ref={ref}\n className={classes(options.className, inheritedNavClass, className)}\n data-slot={resolvedSlot}\n {...activeProps}\n >\n {rendersRouterLink ? (\n <Link {...childProps}>{children}</Link>\n ) : (\n <a {...childRest} href={href} target={target} onClick={handleClick}>\n {children}\n </a>\n )}\n </LayoutBlock>\n );\n}\n\nexport function Tabs(props: TabsProps): JSX.Element;\nexport function Tabs(props: TabsAsChildProps): JSX.Element;\nexport function Tabs(props: TabsProps | TabsAsChildProps): JSX.Element {\n return renderNavSet(props, \"tabs\");\n}\n\nexport function Pills(props: PillsProps): JSX.Element;\nexport function Pills(props: PillsAsChildProps): JSX.Element;\nexport function Pills(props: PillsProps | PillsAsChildProps): JSX.Element {\n return renderNavSet(props, \"pills\");\n}\n\nexport function Tab(props: TabProps): JSX.Element {\n return renderRoutedLink(props, \"tab\", { className: \"tab\" });\n}\n\nexport function Pill(props: PillProps): JSX.Element {\n return renderRoutedLink(props, \"pill\", { activeBackground: true, className: \"pill\" });\n}\n\nexport function NavItem(props: NavItemProps): JSX.Element;\nexport function NavItem(props: NavItemAsChildProps): JSX.Element;\nexport function NavItem(props: NavItemProps | NavItemAsChildProps): JSX.Element {\n const {\n asChild,\n active = false,\n children,\n ref,\n class: className,\n match: _match,\n ...rest\n } = props as (NavItemProps | NavItemAsChildProps) & { match?: unknown };\n void _match;\n\n if (asChild) {\n return (\n <LayoutBlock\n asChild\n paddingX=\"sm\"\n paddingY=\"xs\"\n radius=\"md\"\n background={active ? \"selected\" : undefined}\n {...rest}\n ref={ref}\n className={className}\n data-active={active ? \"true\" : undefined}\n data-slot=\"nav-item\"\n >\n {children}\n </LayoutBlock>\n );\n }\n\n return (\n <LayoutBlock\n as=\"a\"\n paddingX=\"sm\"\n paddingY=\"xs\"\n radius=\"md\"\n background={active ? \"selected\" : undefined}\n {...rest}\n ref={ref}\n className={className}\n data-active={active ? \"true\" : undefined}\n data-slot=\"nav-item\"\n >\n {children}\n </LayoutBlock>\n );\n}\n\nexport function NavLink(props: NavLinkProps): JSX.Element {\n return renderRoutedLink(props, \"nav-item\", { activeBackground: true, inheritSlot: true });\n}\n"],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import { JSXElement } from "@askrjs/askr/foundations";
2
2
  import { Ref } from "@askrjs/askr/foundations/utilities";
3
3
  import { LinkProps } from "@askrjs/askr/router";
4
-
5
4
  //#region src/components/nav/nav.types.d.ts
6
5
  type NavLinkMatch = "prefix" | "exact";
7
6
  type TabsOwnProps = {
@@ -48,5 +47,4 @@ type NavLinkProps = LinkProps & NavLinkOwnProps;
48
47
  type TabProps = LinkProps & NavLinkOwnProps;
49
48
  type PillProps = LinkProps & NavLinkOwnProps;
50
49
  //#endregion
51
- export { NavItemAsChildProps, NavItemProps, NavLinkProps, PillProps, PillsAsChildProps, PillsProps, TabProps, TabsAsChildProps, TabsProps };
52
- //# sourceMappingURL=nav.types.d.ts.map
50
+ export { NavItemAsChildProps, NavItemOwnProps, NavItemProps, NavLinkMatch, NavLinkOwnProps, NavLinkProps, PillProps, PillsAsChildProps, PillsOwnProps, PillsProps, TabProps, TabsAsChildProps, TabsOwnProps, TabsProps };
@@ -1,4 +1,6 @@
1
1
  import { NavBrandProps, NavDropdownProps, NavGroupProps, NavbarCollapseBreakpoint, NavbarProps } from "./navbar.types.js";
2
2
  import { NavBrand, NavDropdown, NavGroup, Navbar } from "./navbar.js";
3
3
  import { NavItemAsChildProps, NavItemProps, NavLinkProps } from "../nav/nav.types.js";
4
- import { NavItem, NavLink } from "../nav/nav.js";
4
+ import { NavItem, NavLink } from "../nav/nav.js";
5
+ import "../nav/index.js";
6
+ export { NavBrand, type NavBrandProps, NavDropdown, type NavDropdownProps, NavGroup, type NavGroupProps, NavItem, type NavItemAsChildProps, type NavItemProps, NavLink, type NavLinkProps, Navbar, type NavbarCollapseBreakpoint, type NavbarProps };
@@ -1,10 +1,8 @@
1
1
  import { NavBrandProps, NavDropdownProps, NavGroupProps, NavbarProps } from "./navbar.types.js";
2
-
3
2
  //#region src/components/navbar/navbar.d.ts
4
3
  declare function Navbar(props: NavbarProps): JSX.Element;
5
4
  declare function NavBrand(props: NavBrandProps): JSX.Element;
6
5
  declare function NavGroup(props: NavGroupProps): JSX.Element;
7
6
  declare function NavDropdown(props: NavDropdownProps): JSX.Element;
8
7
  //#endregion
9
- export { NavBrand, NavDropdown, NavGroup, Navbar };
10
- //# sourceMappingURL=navbar.d.ts.map
8
+ export { NavBrand, NavDropdown, NavGroup, Navbar };
@@ -1,11 +1,12 @@
1
1
  import { classes } from "../_internal/classes.js";
2
+ import { isJsxElement, toChildArray } from "../_internal/jsx.js";
2
3
  import { Block } from "../block/block.js";
3
4
  import { DropdownContent as DropdownContent$1 } from "../overlays/dropdown-content.js";
4
- import { isJsxElement, toChildArray } from "../_internal/jsx.js";
5
5
  import { Dropdown, DropdownTrigger } from "@askrjs/ui";
6
6
  import { jsx, jsxs } from "@askrjs/askr/jsx-runtime";
7
7
  //#region src/components/navbar/navbar.tsx
8
8
  const ASKR_FRAGMENT = Symbol.for("askr.fragment");
9
+ const LayoutBlock = Block;
9
10
  function flattenNavbarChildren(children) {
10
11
  return toChildArray(children).flatMap((child) => {
11
12
  if (isJsxElement(child) && child.type === ASKR_FRAGMENT) return flattenNavbarChildren(child.props?.children);
@@ -23,7 +24,7 @@ function hasRenderableChildren(children) {
23
24
  }
24
25
  function Navbar(props) {
25
26
  const { breakpoint, children, collapseAt = breakpoint ?? false, collapseIcon, collapseLabel = "Menu", ...rest } = props;
26
- if (!collapseAt) return /* @__PURE__ */ jsx(Block, {
27
+ if (!collapseAt) return /* @__PURE__ */ jsx(LayoutBlock, {
27
28
  as: "nav",
28
29
  direction: "row",
29
30
  align: "center",
@@ -45,7 +46,7 @@ function Navbar(props) {
45
46
  "data-slot": "navbar-toggle-label",
46
47
  children: collapseLabel
47
48
  })]
48
- }), /* @__PURE__ */ jsx(Block, {
49
+ }), /* @__PURE__ */ jsx(LayoutBlock, {
49
50
  direction: "row",
50
51
  align: "center",
51
52
  gap: "md",
@@ -54,7 +55,7 @@ function Navbar(props) {
54
55
  children: navChildren
55
56
  })]
56
57
  }) : null;
57
- return /* @__PURE__ */ jsx(Block, {
58
+ return /* @__PURE__ */ jsx(LayoutBlock, {
58
59
  as: "nav",
59
60
  direction: "row",
60
61
  align: "center",
@@ -68,7 +69,7 @@ function Navbar(props) {
68
69
  }
69
70
  function NavBrand(props) {
70
71
  const { children, ...rest } = props;
71
- return /* @__PURE__ */ jsx(Block, {
72
+ return /* @__PURE__ */ jsx(LayoutBlock, {
72
73
  direction: "row",
73
74
  align: "center",
74
75
  gap: "sm",
@@ -80,7 +81,7 @@ function NavBrand(props) {
80
81
  }
81
82
  function NavGroup(props) {
82
83
  const { align, children, label, title = label, ...rest } = props;
83
- return /* @__PURE__ */ jsxs(Block, {
84
+ return /* @__PURE__ */ jsxs(LayoutBlock, {
84
85
  align,
85
86
  gap: "sm",
86
87
  ...rest,
@@ -89,7 +90,7 @@ function NavGroup(props) {
89
90
  children: [title !== void 0 ? /* @__PURE__ */ jsx("div", {
90
91
  "data-slot": "nav-group-label",
91
92
  children: title
92
- }) : null, /* @__PURE__ */ jsx(Block, {
93
+ }) : null, /* @__PURE__ */ jsx(LayoutBlock, {
93
94
  gap: "xs",
94
95
  "data-slot": "nav-group-body",
95
96
  children
@@ -98,7 +99,7 @@ function NavGroup(props) {
98
99
  }
99
100
  function NavDropdown(props) {
100
101
  const { align = "end", children, label, side = "bottom", sideOffset = 6, ...rest } = props;
101
- return /* @__PURE__ */ jsx(Block, {
102
+ return /* @__PURE__ */ jsx(LayoutBlock, {
102
103
  direction: "row",
103
104
  align: "center",
104
105
  "data-slot": "nav-dropdown",
@@ -121,5 +122,3 @@ function NavDropdown(props) {
121
122
  }
122
123
  //#endregion
123
124
  export { NavBrand, NavDropdown, NavGroup, Navbar };
124
-
125
- //# sourceMappingURL=navbar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"navbar.js","names":["DropdownContent"],"sources":["../../../src/components/navbar/navbar.tsx"],"sourcesContent":["import { Dropdown, DropdownTrigger } from \"@askrjs/ui\";\nimport { Block } from \"../block\";\nimport { classes } from \"../_internal/classes\";\nimport { isJsxElement, toChildArray } from \"../_internal/jsx\";\nimport { DropdownContent } from \"../overlays/dropdown-content\";\nimport type { NavBrandProps, NavDropdownProps, NavGroupProps, NavbarProps } from \"./navbar.types\";\n\nconst ASKR_FRAGMENT = Symbol.for(\"askr.fragment\");\n\nfunction flattenNavbarChildren(children: unknown): unknown[] {\n return toChildArray(children).flatMap((child) => {\n if (isJsxElement(child) && child.type === ASKR_FRAGMENT) {\n return flattenNavbarChildren(child.props?.children);\n }\n\n return [child];\n });\n}\n\nfunction isNavBrandChild(child: unknown): boolean {\n return (\n isJsxElement(child) && (child.type === NavBrand || child.props?.[\"data-slot\"] === \"nav-brand\")\n );\n}\n\nfunction hasRenderableChildren(children: readonly unknown[]): boolean {\n return children.some((child) => {\n if (Array.isArray(child)) {\n return hasRenderableChildren(child);\n }\n\n return child !== undefined && child !== null && typeof child !== \"boolean\";\n });\n}\n\nexport function Navbar(props: NavbarProps): JSX.Element {\n const {\n breakpoint,\n children,\n collapseAt = breakpoint ?? false,\n collapseIcon,\n collapseLabel = \"Menu\",\n ...rest\n } = props;\n\n if (!collapseAt) {\n return (\n <Block\n as=\"nav\"\n direction=\"row\"\n align=\"center\"\n gap=\"md\"\n width=\"full\"\n {...rest}\n data-slot=\"navbar\"\n >\n {children}\n </Block>\n );\n }\n\n const navbarChildren = flattenNavbarChildren(children);\n const brandChildren = navbarChildren.filter(isNavBrandChild);\n const navChildren = navbarChildren.filter((child) => !isNavBrandChild(child));\n const hasNavContent = hasRenderableChildren(navChildren);\n const content = (\n <Block direction=\"row\" align=\"center\" gap=\"md\" width=\"full\" data-slot=\"navbar-content\">\n {navChildren}\n </Block>\n );\n const collapse = hasNavContent ? (\n <details data-slot=\"navbar-collapse\">\n <summary aria-label={collapseLabel} data-slot=\"navbar-toggle\">\n {collapseIcon}\n <span data-slot=\"navbar-toggle-label\">{collapseLabel}</span>\n </summary>\n {content}\n </details>\n ) : null;\n\n return (\n <Block\n as=\"nav\"\n direction=\"row\"\n align=\"center\"\n gap=\"md\"\n width=\"full\"\n {...rest}\n data-collapse-at={collapseAt}\n data-slot=\"navbar\"\n >\n {[...brandChildren, collapse]}\n </Block>\n );\n}\n\nexport function NavBrand(props: NavBrandProps): JSX.Element {\n const { children, ...rest } = props;\n\n return (\n <Block direction=\"row\" align=\"center\" gap=\"sm\" shrink={false} {...rest} data-slot=\"nav-brand\">\n {children}\n </Block>\n );\n}\n\nexport function NavGroup(props: NavGroupProps): JSX.Element {\n const { align, children, label, title = label, ...rest } = props;\n\n return (\n <Block align={align} gap=\"sm\" {...rest} data-align={align} data-slot=\"nav-group\">\n {title !== undefined ? <div data-slot=\"nav-group-label\">{title}</div> : null}\n <Block gap=\"xs\" data-slot=\"nav-group-body\">\n {children}\n </Block>\n </Block>\n );\n}\n\nexport function NavDropdown(props: NavDropdownProps): JSX.Element {\n const { align = \"end\", children, label, side = \"bottom\", sideOffset = 6, ...rest } = props;\n\n return (\n <Block direction=\"row\" align=\"center\" data-slot=\"nav-dropdown\">\n <Dropdown {...rest}>\n <DropdownTrigger class={classes(\"nav-item\")} data-slot=\"nav-dropdown-trigger\">\n {label}\n </DropdownTrigger>\n <DropdownContent\n align={align}\n class={classes(\"dropdown-content\")}\n data-slot=\"nav-dropdown-content\"\n side={side}\n sideOffset={sideOffset}\n >\n {children}\n </DropdownContent>\n </Dropdown>\n </Block>\n );\n}\n"],"mappings":";;;;;;;AAOA,MAAM,gBAAgB,OAAO,IAAI,eAAe;AAEhD,SAAS,sBAAsB,UAA8B;CAC3D,OAAO,aAAa,QAAQ,CAAC,CAAC,SAAS,UAAU;EAC/C,IAAI,aAAa,KAAK,KAAK,MAAM,SAAS,eACxC,OAAO,sBAAsB,MAAM,OAAO,QAAQ;EAGpD,OAAO,CAAC,KAAK;CACf,CAAC;AACH;AAEA,SAAS,gBAAgB,OAAyB;CAChD,OACE,aAAa,KAAK,MAAM,MAAM,SAAS,YAAY,MAAM,QAAQ,iBAAiB;AAEtF;AAEA,SAAS,sBAAsB,UAAuC;CACpE,OAAO,SAAS,MAAM,UAAU;EAC9B,IAAI,MAAM,QAAQ,KAAK,GACrB,OAAO,sBAAsB,KAAK;EAGpC,OAAO,UAAU,KAAA,KAAa,UAAU,QAAQ,OAAO,UAAU;CACnE,CAAC;AACH;AAEA,SAAgB,OAAO,OAAiC;CACtD,MAAM,EACJ,YACA,UACA,aAAa,cAAc,OAC3B,cACA,gBAAgB,QAChB,GAAG,SACD;CAEJ,IAAI,CAAC,YACH,OACE,oBAAC,OAAD;EACE,IAAG;EACH,WAAU;EACV,OAAM;EACN,KAAI;EACJ,OAAM;EACN,GAAI;EACJ,aAAU;EAET;CACI,CAAA;CAIX,MAAM,iBAAiB,sBAAsB,QAAQ;CACrD,MAAM,gBAAgB,eAAe,OAAO,eAAe;CAC3D,MAAM,cAAc,eAAe,QAAQ,UAAU,CAAC,gBAAgB,KAAK,CAAC;CAO5E,MAAM,WANgB,sBAAsB,WAMf,IAC3B,qBAAC,WAAD;EAAS,aAAU;YAAnB,CACE,qBAAC,WAAD;GAAS,cAAY;GAAe,aAAU;aAA9C,CACG,cACD,oBAAC,QAAD;IAAM,aAAU;cAAuB;GAAoB,CAAA,CACpD;MACR,oBAVF,OAAD;GAAO,WAAU;GAAM,OAAM;GAAS,KAAI;GAAK,OAAM;GAAO,aAAU;aACnE;EACI,CAQE,CACA;MACP;CAEJ,OACE,oBAAC,OAAD;EACE,IAAG;EACH,WAAU;EACV,OAAM;EACN,KAAI;EACJ,OAAM;EACN,GAAI;EACJ,oBAAkB;EAClB,aAAU;YAET,CAAC,GAAG,eAAe,QAAQ;CACvB,CAAA;AAEX;AAEA,SAAgB,SAAS,OAAmC;CAC1D,MAAM,EAAE,UAAU,GAAG,SAAS;CAE9B,OACE,oBAAC,OAAD;EAAO,WAAU;EAAM,OAAM;EAAS,KAAI;EAAK,QAAQ;EAAO,GAAI;EAAM,aAAU;EAC/E;CACI,CAAA;AAEX;AAEA,SAAgB,SAAS,OAAmC;CAC1D,MAAM,EAAE,OAAO,UAAU,OAAO,QAAQ,OAAO,GAAG,SAAS;CAE3D,OACE,qBAAC,OAAD;EAAc;EAAO,KAAI;EAAK,GAAI;EAAM,cAAY;EAAO,aAAU;YAArE,CACG,UAAU,KAAA,IAAY,oBAAC,OAAD;GAAK,aAAU;aAAmB;EAAW,CAAA,IAAI,MACxE,oBAAC,OAAD;GAAO,KAAI;GAAK,aAAU;GACvB;EACI,CAAA,CACF;;AAEX;AAEA,SAAgB,YAAY,OAAsC;CAChE,MAAM,EAAE,QAAQ,OAAO,UAAU,OAAO,OAAO,UAAU,aAAa,GAAG,GAAG,SAAS;CAErF,OACE,oBAAC,OAAD;EAAO,WAAU;EAAM,OAAM;EAAS,aAAU;YAC9C,qBAAC,UAAD;GAAU,GAAI;aAAd,CACE,oBAAC,iBAAD;IAAiB,OAAO,QAAQ,UAAU;IAAG,aAAU;cACpD;GACc,CAAA,GACjB,oBAACA,mBAAD;IACS;IACP,OAAO,QAAQ,kBAAkB;IACjC,aAAU;IACJ;IACM;IAEX;GACc,CAAA,CACT;;CACL,CAAA;AAEX"}
1
+ {"version":3,"file":"navbar.js","names":["DropdownContent"],"sources":["../../../src/components/navbar/navbar.tsx"],"sourcesContent":["import { Dropdown, DropdownTrigger } from \"@askrjs/ui\";\nimport { Block } from \"../block\";\nimport { classes } from \"../_internal/classes\";\nimport { isJsxElement, toChildArray } from \"../_internal/jsx\";\nimport { DropdownContent } from \"../overlays/dropdown-content\";\nimport type { NavBrandProps, NavDropdownProps, NavGroupProps, NavbarProps } from \"./navbar.types\";\n\nconst ASKR_FRAGMENT = Symbol.for(\"askr.fragment\");\nconst LayoutBlock = Block as (props: Record<string, unknown>) => JSX.Element;\n\nfunction flattenNavbarChildren(children: unknown): unknown[] {\n return toChildArray(children).flatMap((child) => {\n if (isJsxElement(child) && child.type === ASKR_FRAGMENT) {\n return flattenNavbarChildren(child.props?.children);\n }\n\n return [child];\n });\n}\n\nfunction isNavBrandChild(child: unknown): boolean {\n return (\n isJsxElement(child) && (child.type === NavBrand || child.props?.[\"data-slot\"] === \"nav-brand\")\n );\n}\n\nfunction hasRenderableChildren(children: readonly unknown[]): boolean {\n return children.some((child) => {\n if (Array.isArray(child)) {\n return hasRenderableChildren(child);\n }\n\n return child !== undefined && child !== null && typeof child !== \"boolean\";\n });\n}\n\nexport function Navbar(props: NavbarProps): JSX.Element {\n const {\n breakpoint,\n children,\n collapseAt = breakpoint ?? false,\n collapseIcon,\n collapseLabel = \"Menu\",\n ...rest\n } = props;\n\n if (!collapseAt) {\n return (\n <LayoutBlock\n as=\"nav\"\n direction=\"row\"\n align=\"center\"\n gap=\"md\"\n width=\"full\"\n {...rest}\n data-slot=\"navbar\"\n >\n {children}\n </LayoutBlock>\n );\n }\n\n const navbarChildren = flattenNavbarChildren(children);\n const brandChildren = navbarChildren.filter(isNavBrandChild);\n const navChildren = navbarChildren.filter((child) => !isNavBrandChild(child));\n const hasNavContent = hasRenderableChildren(navChildren);\n const content = (\n <LayoutBlock direction=\"row\" align=\"center\" gap=\"md\" width=\"full\" data-slot=\"navbar-content\">\n {navChildren}\n </LayoutBlock>\n );\n const collapse = hasNavContent ? (\n <details data-slot=\"navbar-collapse\">\n <summary aria-label={collapseLabel} data-slot=\"navbar-toggle\">\n {collapseIcon}\n <span data-slot=\"navbar-toggle-label\">{collapseLabel}</span>\n </summary>\n {content}\n </details>\n ) : null;\n\n return (\n <LayoutBlock\n as=\"nav\"\n direction=\"row\"\n align=\"center\"\n gap=\"md\"\n width=\"full\"\n {...rest}\n data-collapse-at={collapseAt}\n data-slot=\"navbar\"\n >\n {[...brandChildren, collapse]}\n </LayoutBlock>\n );\n}\n\nexport function NavBrand(props: NavBrandProps): JSX.Element {\n const { children, ...rest } = props;\n\n return (\n <LayoutBlock\n direction=\"row\"\n align=\"center\"\n gap=\"sm\"\n shrink={false}\n {...rest}\n data-slot=\"nav-brand\"\n >\n {children}\n </LayoutBlock>\n );\n}\n\nexport function NavGroup(props: NavGroupProps): JSX.Element {\n const { align, children, label, title = label, ...rest } = props;\n\n return (\n <LayoutBlock align={align} gap=\"sm\" {...rest} data-align={align} data-slot=\"nav-group\">\n {title !== undefined ? <div data-slot=\"nav-group-label\">{title}</div> : null}\n <LayoutBlock gap=\"xs\" data-slot=\"nav-group-body\">\n {children}\n </LayoutBlock>\n </LayoutBlock>\n );\n}\n\nexport function NavDropdown(props: NavDropdownProps): JSX.Element {\n const { align = \"end\", children, label, side = \"bottom\", sideOffset = 6, ...rest } = props;\n\n return (\n <LayoutBlock direction=\"row\" align=\"center\" data-slot=\"nav-dropdown\">\n <Dropdown {...rest}>\n <DropdownTrigger class={classes(\"nav-item\")} data-slot=\"nav-dropdown-trigger\">\n {label}\n </DropdownTrigger>\n <DropdownContent\n align={align}\n class={classes(\"dropdown-content\")}\n data-slot=\"nav-dropdown-content\"\n side={side}\n sideOffset={sideOffset}\n >\n {children}\n </DropdownContent>\n </Dropdown>\n </LayoutBlock>\n );\n}\n"],"mappings":";;;;;;;AAOA,MAAM,gBAAgB,OAAO,IAAI,eAAe;AAChD,MAAM,cAAc;AAEpB,SAAS,sBAAsB,UAA8B;CAC3D,OAAO,aAAa,QAAQ,CAAC,CAAC,SAAS,UAAU;EAC/C,IAAI,aAAa,KAAK,KAAK,MAAM,SAAS,eACxC,OAAO,sBAAsB,MAAM,OAAO,QAAQ;EAGpD,OAAO,CAAC,KAAK;CACf,CAAC;AACH;AAEA,SAAS,gBAAgB,OAAyB;CAChD,OACE,aAAa,KAAK,MAAM,MAAM,SAAS,YAAY,MAAM,QAAQ,iBAAiB;AAEtF;AAEA,SAAS,sBAAsB,UAAuC;CACpE,OAAO,SAAS,MAAM,UAAU;EAC9B,IAAI,MAAM,QAAQ,KAAK,GACrB,OAAO,sBAAsB,KAAK;EAGpC,OAAO,UAAU,KAAA,KAAa,UAAU,QAAQ,OAAO,UAAU;CACnE,CAAC;AACH;AAEA,SAAgB,OAAO,OAAiC;CACtD,MAAM,EACJ,YACA,UACA,aAAa,cAAc,OAC3B,cACA,gBAAgB,QAChB,GAAG,SACD;CAEJ,IAAI,CAAC,YACH,OACE,oBAAC,aAAD;EACE,IAAG;EACH,WAAU;EACV,OAAM;EACN,KAAI;EACJ,OAAM;EACN,GAAI;EACJ,aAAU;EAET;CACU,CAAA;CAIjB,MAAM,iBAAiB,sBAAsB,QAAQ;CACrD,MAAM,gBAAgB,eAAe,OAAO,eAAe;CAC3D,MAAM,cAAc,eAAe,QAAQ,UAAU,CAAC,gBAAgB,KAAK,CAAC;CAO5E,MAAM,WANgB,sBAAsB,WAMf,IAC3B,qBAAC,WAAD;EAAS,aAAU;YAAnB,CACE,qBAAC,WAAD;GAAS,cAAY;GAAe,aAAU;aAA9C,CACG,cACD,oBAAC,QAAD;IAAM,aAAU;cAAuB;GAAoB,CAAA,CACpD;MACR,oBAVF,aAAD;GAAa,WAAU;GAAM,OAAM;GAAS,KAAI;GAAK,OAAM;GAAO,aAAU;aACzE;EACU,CAQJ,CACA;MACP;CAEJ,OACE,oBAAC,aAAD;EACE,IAAG;EACH,WAAU;EACV,OAAM;EACN,KAAI;EACJ,OAAM;EACN,GAAI;EACJ,oBAAkB;EAClB,aAAU;YAET,CAAC,GAAG,eAAe,QAAQ;CACjB,CAAA;AAEjB;AAEA,SAAgB,SAAS,OAAmC;CAC1D,MAAM,EAAE,UAAU,GAAG,SAAS;CAE9B,OACE,oBAAC,aAAD;EACE,WAAU;EACV,OAAM;EACN,KAAI;EACJ,QAAQ;EACR,GAAI;EACJ,aAAU;EAET;CACU,CAAA;AAEjB;AAEA,SAAgB,SAAS,OAAmC;CAC1D,MAAM,EAAE,OAAO,UAAU,OAAO,QAAQ,OAAO,GAAG,SAAS;CAE3D,OACE,qBAAC,aAAD;EAAoB;EAAO,KAAI;EAAK,GAAI;EAAM,cAAY;EAAO,aAAU;YAA3E,CACG,UAAU,KAAA,IAAY,oBAAC,OAAD;GAAK,aAAU;aAAmB;EAAW,CAAA,IAAI,MACxE,oBAAC,aAAD;GAAa,KAAI;GAAK,aAAU;GAC7B;EACU,CAAA,CACF;;AAEjB;AAEA,SAAgB,YAAY,OAAsC;CAChE,MAAM,EAAE,QAAQ,OAAO,UAAU,OAAO,OAAO,UAAU,aAAa,GAAG,GAAG,SAAS;CAErF,OACE,oBAAC,aAAD;EAAa,WAAU;EAAM,OAAM;EAAS,aAAU;YACpD,qBAAC,UAAD;GAAU,GAAI;aAAd,CACE,oBAAC,iBAAD;IAAiB,OAAO,QAAQ,UAAU;IAAG,aAAU;cACpD;GACc,CAAA,GACjB,oBAACA,mBAAD;IACS;IACP,OAAO,QAAQ,kBAAkB;IACjC,aAAU;IACJ;IACM;IAEX;GACc,CAAA,CACT;;CACC,CAAA;AAEjB"}
@@ -1,6 +1,6 @@
1
1
  import { BlockAsChildProps, BlockDivProps, BlockElementProps } from "../block/block.types.js";
2
+ import "../block/index.js";
2
3
  import { DropdownContentOwnProps, DropdownProps } from "@askrjs/ui";
3
-
4
4
  //#region src/components/navbar/navbar.types.d.ts
5
5
  type NavbarCollapseBreakpoint = "sm" | "md" | "lg" | "xl";
6
6
  type NavbarProps = Omit<BlockElementProps<"nav">, "as" | "direction" | "align"> & {
@@ -19,5 +19,4 @@ type NavDropdownProps = Omit<DropdownProps, "children"> & Pick<DropdownContentOw
19
19
  children?: unknown;
20
20
  };
21
21
  //#endregion
22
- export { NavBrandProps, NavDropdownProps, NavGroupProps, NavbarCollapseBreakpoint, NavbarProps };
23
- //# sourceMappingURL=navbar.types.d.ts.map
22
+ export { NavBrandProps, NavDropdownProps, NavGroupProps, NavbarCollapseBreakpoint, NavbarProps };
@@ -1,8 +1,6 @@
1
1
  import { DropdownContentAsChildProps, DropdownContentProps } from "@askrjs/ui";
2
-
3
2
  //#region src/components/overlays/dropdown-content.d.ts
4
3
  declare function DropdownContent$1(props: DropdownContentProps): JSX.Element | null;
5
4
  declare function DropdownContent$1(props: DropdownContentAsChildProps): JSX.Element | null;
6
5
  //#endregion
7
- export { DropdownContent$1 as DropdownContent };
8
- //# sourceMappingURL=dropdown-content.d.ts.map
6
+ export { DropdownContent$1 as DropdownContent };
@@ -14,5 +14,3 @@ function DropdownContent$1(props) {
14
14
  }
15
15
  //#endregion
16
16
  export { DropdownContent$1 as DropdownContent };
17
-
18
- //# sourceMappingURL=dropdown-content.js.map
@@ -1,2 +1,3 @@
1
1
  import { PageProps } from "./page.types.js";
2
- import { Page } from "./page.js";
2
+ import { Page } from "./page.js";
3
+ export { Page, type PageProps };
@@ -1,7 +1,5 @@
1
1
  import { PageProps } from "./page.types.js";
2
-
3
2
  //#region src/components/page/page.d.ts
4
3
  declare function Page(props: PageProps): JSX.Element;
5
4
  //#endregion
6
- export { Page };
7
- //# sourceMappingURL=page.d.ts.map
5
+ export { Page };
@@ -18,5 +18,3 @@ function Page(props) {
18
18
  }
19
19
  //#endregion
20
20
  export { Page };
21
-
22
- //# sourceMappingURL=page.js.map
@@ -1,6 +1,6 @@
1
1
  import { MainProps } from "../main/main.types.js";
2
+ import "../main/index.js";
2
3
  //#region src/components/page/page.types.d.ts
3
4
  type PageProps = MainProps;
4
5
  //#endregion
5
- export { PageProps };
6
- //# sourceMappingURL=page.types.d.ts.map
6
+ export { PageProps };
@@ -1,2 +1,3 @@
1
1
  import { PageHeaderProps } from "./page-header.types.js";
2
- import { PageHeader } from "./page-header.js";
2
+ import { PageHeader } from "./page-header.js";
3
+ export { PageHeader, type PageHeaderProps };
@@ -1,7 +1,5 @@
1
1
  import { PageHeaderProps } from "./page-header.types.js";
2
-
3
2
  //#region src/components/page-header/page-header.d.ts
4
3
  declare function PageHeader(props: PageHeaderProps): JSX.Element;
5
4
  //#endregion
6
- export { PageHeader };
7
- //# sourceMappingURL=page-header.d.ts.map
5
+ export { PageHeader };
@@ -33,5 +33,3 @@ function PageHeader(props) {
33
33
  }
34
34
  //#endregion
35
35
  export { PageHeader };
36
-
37
- //# sourceMappingURL=page-header.js.map
@@ -1,4 +1,5 @@
1
1
  import { BlockDivProps } from "../block/block.types.js";
2
+ import "../block/index.js";
2
3
  //#region src/components/page-header/page-header.types.d.ts
3
4
  type PageHeaderProps = BlockDivProps & {
4
5
  title: unknown;
@@ -6,5 +7,4 @@ type PageHeaderProps = BlockDivProps & {
6
7
  actions?: unknown;
7
8
  };
8
9
  //#endregion
9
- export { PageHeaderProps };
10
- //# sourceMappingURL=page-header.types.d.ts.map
10
+ export { PageHeaderProps };
@@ -1,2 +1,3 @@
1
1
  import { SectionProps } from "./section.types.js";
2
- import { Section } from "./section.js";
2
+ import { Section } from "./section.js";
3
+ export { Section, type SectionProps };
@@ -1,7 +1,5 @@
1
1
  import { SectionProps } from "./section.types.js";
2
-
3
2
  //#region src/components/section/section.d.ts
4
3
  declare function Section(props: SectionProps): JSX.Element;
5
4
  //#endregion
6
- export { Section };
7
- //# sourceMappingURL=section.d.ts.map
5
+ export { Section };