thread-ui 0.5.0 → 0.6.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 (195) hide show
  1. package/README.md +10 -2
  2. package/dist/components/data-display/filter-controls/filter-controls.d.ts +10 -0
  3. package/dist/components/data-display/filter-controls/filter-controls.js +39 -0
  4. package/dist/components/data-display/filter-controls/filter-controls.js.map +1 -0
  5. package/dist/components/data-display/filter-controls/filter-controls.types.d.ts +75 -0
  6. package/dist/components/data-display/filter-controls/filter-controls.types.js +2 -0
  7. package/dist/components/data-display/filter-controls/filter-controls.types.js.map +1 -0
  8. package/dist/components/data-display/filter-controls/index.d.ts +2 -0
  9. package/dist/components/data-display/filter-controls/index.js +2 -0
  10. package/dist/components/data-display/filter-controls/index.js.map +1 -0
  11. package/dist/components/data-display/filter-controls/use-filter-controls.d.ts +23 -0
  12. package/dist/components/data-display/filter-controls/use-filter-controls.js +89 -0
  13. package/dist/components/data-display/filter-controls/use-filter-controls.js.map +1 -0
  14. package/dist/components/data-display/index.d.ts +2 -0
  15. package/dist/components/data-display/index.js +3 -0
  16. package/dist/components/data-display/index.js.map +1 -0
  17. package/dist/components/data-display/sort-controls/index.d.ts +3 -0
  18. package/dist/components/data-display/sort-controls/index.js +3 -0
  19. package/dist/components/data-display/sort-controls/index.js.map +1 -0
  20. package/dist/components/data-display/sort-controls/sort-controls.d.ts +11 -0
  21. package/dist/components/data-display/sort-controls/sort-controls.js +51 -0
  22. package/dist/components/data-display/sort-controls/sort-controls.js.map +1 -0
  23. package/dist/components/data-display/sort-controls/sort-controls.types.d.ts +62 -0
  24. package/dist/components/data-display/sort-controls/sort-controls.types.js +2 -0
  25. package/dist/components/data-display/sort-controls/sort-controls.types.js.map +1 -0
  26. package/dist/components/data-display/sort-controls/use-sort-controls.d.ts +23 -0
  27. package/dist/components/data-display/sort-controls/use-sort-controls.js +94 -0
  28. package/dist/components/data-display/sort-controls/use-sort-controls.js.map +1 -0
  29. package/dist/components/form-elements/{dropdown → dropdowns/dropdown}/dropdown.d.ts +1 -1
  30. package/dist/components/form-elements/dropdowns/dropdown/dropdown.js +41 -0
  31. package/dist/components/form-elements/dropdowns/dropdown/dropdown.js.map +1 -0
  32. package/dist/components/form-elements/{dropdown → dropdowns/dropdown}/dropdown.types.d.ts +4 -9
  33. package/dist/components/form-elements/dropdowns/dropdown/dropdown.types.js.map +1 -0
  34. package/dist/components/form-elements/dropdowns/dropdown/index.js.map +1 -0
  35. package/dist/components/form-elements/dropdowns/dropdown-base/dropdown-base.d.ts +8 -0
  36. package/dist/components/form-elements/dropdowns/dropdown-base/dropdown-base.js +46 -0
  37. package/dist/components/form-elements/dropdowns/dropdown-base/dropdown-base.js.map +1 -0
  38. package/dist/components/form-elements/dropdowns/dropdown-base/dropdown-base.types.d.ts +25 -0
  39. package/dist/components/form-elements/dropdowns/dropdown-base/dropdown-base.types.js +2 -0
  40. package/dist/components/form-elements/dropdowns/dropdown-base/dropdown-base.types.js.map +1 -0
  41. package/dist/components/form-elements/dropdowns/dropdown-base/index.d.ts +2 -0
  42. package/dist/components/form-elements/dropdowns/dropdown-base/index.js +2 -0
  43. package/dist/components/form-elements/dropdowns/dropdown-base/index.js.map +1 -0
  44. package/dist/components/form-elements/dropdowns/index.d.ts +2 -0
  45. package/dist/components/form-elements/dropdowns/index.js +3 -0
  46. package/dist/components/form-elements/dropdowns/index.js.map +1 -0
  47. package/dist/components/form-elements/dropdowns/multi-dropdown/index.d.ts +2 -0
  48. package/dist/components/form-elements/dropdowns/multi-dropdown/index.js +2 -0
  49. package/dist/components/form-elements/dropdowns/multi-dropdown/index.js.map +1 -0
  50. package/dist/components/form-elements/dropdowns/multi-dropdown/multi-dropdown.d.ts +15 -0
  51. package/dist/components/form-elements/dropdowns/multi-dropdown/multi-dropdown.js +55 -0
  52. package/dist/components/form-elements/dropdowns/multi-dropdown/multi-dropdown.js.map +1 -0
  53. package/dist/components/form-elements/dropdowns/multi-dropdown/multi-dropdown.types.d.ts +25 -0
  54. package/dist/components/form-elements/dropdowns/multi-dropdown/multi-dropdown.types.js +2 -0
  55. package/dist/components/form-elements/dropdowns/multi-dropdown/multi-dropdown.types.js.map +1 -0
  56. package/dist/components/form-elements/form-label/form-label.d.ts +1 -1
  57. package/dist/components/form-elements/form-label/form-label.js +34 -8
  58. package/dist/components/form-elements/form-label/form-label.js.map +1 -1
  59. package/dist/components/form-elements/form-label/form-label.types.d.ts +3 -0
  60. package/dist/components/form-elements/index.d.ts +2 -2
  61. package/dist/components/form-elements/index.js +2 -2
  62. package/dist/components/form-elements/index.js.map +1 -1
  63. package/dist/components/index.d.ts +1 -0
  64. package/dist/components/index.js +1 -0
  65. package/dist/components/index.js.map +1 -1
  66. package/dist/components/layouts/column-layout/column-layout.d.ts +1 -1
  67. package/dist/components/layouts/column-layout/column-layout.js +5 -4
  68. package/dist/components/layouts/column-layout/column-layout.js.map +1 -1
  69. package/dist/components/layouts/column-layout/column-layout.types.d.ts +4 -1
  70. package/dist/components/layouts/container/container.d.ts +11 -0
  71. package/dist/components/layouts/container/container.js +28 -0
  72. package/dist/components/layouts/container/container.js.map +1 -0
  73. package/dist/components/layouts/container/container.types.d.ts +11 -0
  74. package/dist/components/layouts/container/container.types.js +2 -0
  75. package/dist/components/layouts/container/container.types.js.map +1 -0
  76. package/dist/components/layouts/container/index.d.ts +2 -0
  77. package/dist/components/layouts/container/index.js +2 -0
  78. package/dist/components/layouts/container/index.js.map +1 -0
  79. package/dist/components/layouts/index.d.ts +1 -0
  80. package/dist/components/layouts/index.js +1 -0
  81. package/dist/components/layouts/index.js.map +1 -1
  82. package/dist/components/layouts/layout-component.types.d.ts +9 -0
  83. package/dist/components/layouts/layout-component.types.js +2 -0
  84. package/dist/components/layouts/layout-component.types.js.map +1 -0
  85. package/dist/components/layouts/layout-wrapper.d.ts +7 -0
  86. package/dist/components/layouts/layout-wrapper.js +9 -0
  87. package/dist/components/layouts/layout-wrapper.js.map +1 -0
  88. package/dist/components/layouts/masonry-layout/masonry-layout.d.ts +1 -1
  89. package/dist/components/layouts/masonry-layout/masonry-layout.js +5 -5
  90. package/dist/components/layouts/masonry-layout/masonry-layout.js.map +1 -1
  91. package/dist/components/layouts/masonry-layout/masonry-layout.types.d.ts +3 -2
  92. package/dist/components/media/info-card/info-card.js +3 -4
  93. package/dist/components/media/info-card/info-card.js.map +1 -1
  94. package/dist/components/navigation/nav-menu/items/base-item/base-item.d.ts +1 -1
  95. package/dist/components/navigation/nav-menu/items/base-item/base-item.js +1 -1
  96. package/dist/components/navigation/nav-menu/items/base-item/base-item.js.map +1 -1
  97. package/dist/components/navigation/side-nav/side-nav-item/side-nav-item.js +1 -1
  98. package/dist/components/typography/typography.d.ts +10 -8
  99. package/dist/components/typography/typography.js +42 -8
  100. package/dist/components/typography/typography.js.map +1 -1
  101. package/dist/components/ui/button/button-recipe.js +90 -6
  102. package/dist/components/ui/button/button-recipe.js.map +1 -1
  103. package/dist/components/ui/button/button.d.ts +1 -1
  104. package/dist/components/ui/button/button.js +2 -1
  105. package/dist/components/ui/button/button.js.map +1 -1
  106. package/dist/components/ui/button/button.types.d.ts +3 -1
  107. package/dist/components/ui/icon/icon.d.ts +1 -1
  108. package/dist/components/ui/icon/icon.js +1 -1
  109. package/dist/components/ui/icon-button/icon-button.d.ts +1 -1
  110. package/dist/components/ui/icon-button/icon-button.js +4 -7
  111. package/dist/components/ui/icon-button/icon-button.js.map +1 -1
  112. package/dist/components/ui/modal/components/modal-content.js +3 -3
  113. package/dist/components/ui/modal/components/modal-content.js.map +1 -1
  114. package/dist/components/ui/modal/modal.js +8 -2
  115. package/dist/components/ui/modal/modal.js.map +1 -1
  116. package/dist/components/ui/modal/modal.types.d.ts +2 -0
  117. package/dist/hooks/index.d.ts +3 -0
  118. package/dist/hooks/index.js +4 -0
  119. package/dist/hooks/index.js.map +1 -0
  120. package/dist/hooks/use-click-outside/index.d.ts +1 -0
  121. package/dist/hooks/use-click-outside/index.js +2 -0
  122. package/dist/hooks/use-click-outside/index.js.map +1 -0
  123. package/dist/hooks/use-click-outside/use-click-outside.d.ts +10 -0
  124. package/dist/hooks/use-click-outside/use-click-outside.js +26 -0
  125. package/dist/hooks/use-click-outside/use-click-outside.js.map +1 -0
  126. package/dist/hooks/use-dismiss/index.d.ts +1 -0
  127. package/dist/hooks/use-dismiss/index.js +2 -0
  128. package/dist/hooks/use-dismiss/index.js.map +1 -0
  129. package/dist/hooks/use-dismiss/use-dismiss.d.ts +13 -0
  130. package/dist/hooks/use-dismiss/use-dismiss.js +42 -0
  131. package/dist/hooks/use-dismiss/use-dismiss.js.map +1 -0
  132. package/dist/hooks/use-pathname/index.js.map +1 -0
  133. package/dist/hooks/use-pathname/use-pathname.d.ts +8 -0
  134. package/dist/{utils/hooks → hooks}/use-pathname/use-pathname.js +7 -0
  135. package/dist/hooks/use-pathname/use-pathname.js.map +1 -0
  136. package/dist/index.d.ts +1 -0
  137. package/dist/index.js +2 -0
  138. package/dist/index.js.map +1 -1
  139. package/dist/internal-components/conditional-wrapper/conditional-wrapper.d.ts +2 -0
  140. package/dist/internal-components/conditional-wrapper/conditional-wrapper.js +12 -0
  141. package/dist/internal-components/conditional-wrapper/conditional-wrapper.js.map +1 -0
  142. package/dist/internal-components/conditional-wrapper/conditional-wrapper.types.d.ts +9 -0
  143. package/dist/internal-components/conditional-wrapper/conditional-wrapper.types.js +2 -0
  144. package/dist/internal-components/conditional-wrapper/conditional-wrapper.types.js.map +1 -0
  145. package/dist/internal-components/conditional-wrapper/index.d.ts +2 -0
  146. package/dist/internal-components/conditional-wrapper/index.js +2 -0
  147. package/dist/internal-components/conditional-wrapper/index.js.map +1 -0
  148. package/dist/internal-components/image/render-image.js.map +1 -1
  149. package/dist/internal-components/index.d.ts +3 -1
  150. package/dist/internal-components/index.js +3 -1
  151. package/dist/internal-components/index.js.map +1 -1
  152. package/dist/internal-components/optional-icon-button/index.d.ts +2 -0
  153. package/dist/internal-components/optional-icon-button/index.js +2 -0
  154. package/dist/internal-components/optional-icon-button/index.js.map +1 -0
  155. package/dist/internal-components/optional-icon-button/optional-icon-button.d.ts +2 -0
  156. package/dist/internal-components/optional-icon-button/optional-icon-button.js +9 -0
  157. package/dist/internal-components/optional-icon-button/optional-icon-button.js.map +1 -0
  158. package/dist/internal-components/optional-icon-button/optional-icon-button.types.d.ts +4 -0
  159. package/dist/internal-components/optional-icon-button/optional-icon-button.types.js +2 -0
  160. package/dist/internal-components/optional-icon-button/optional-icon-button.types.js.map +1 -0
  161. package/dist/styled-system/recipes/button.d.ts +2 -1
  162. package/dist/styled-system/recipes/button.mjs +114 -1
  163. package/dist/styled-system/styles.css +1 -1
  164. package/dist/styles/panda.css +1 -1
  165. package/dist/types/colors/utility-color-options.types.d.ts +2 -0
  166. package/dist/types/image/image.types.d.ts +2 -0
  167. package/dist/types/theme/theme.types.d.ts +24 -10
  168. package/dist/types/utility/deep-partial.types.d.ts +1 -0
  169. package/dist/utils/index.d.ts +0 -1
  170. package/dist/utils/index.js +0 -1
  171. package/dist/utils/index.js.map +1 -1
  172. package/dist/utils/theme-utilities/get-utility-icon-size/get-utility-icon-size.js +4 -4
  173. package/dist/utils/theme-utilities/get-utility-icon-size/get-utility-icon-size.js.map +1 -1
  174. package/package.json +1 -1
  175. package/dist/components/form-elements/dropdown/dropdown.js +0 -83
  176. package/dist/components/form-elements/dropdown/dropdown.js.map +0 -1
  177. package/dist/components/form-elements/dropdown/dropdown.types.js.map +0 -1
  178. package/dist/components/form-elements/dropdown/index.js.map +0 -1
  179. package/dist/utils/hooks/index.d.ts +0 -2
  180. package/dist/utils/hooks/index.js +0 -3
  181. package/dist/utils/hooks/index.js.map +0 -1
  182. package/dist/utils/hooks/use-outside-close-click/index.d.ts +0 -1
  183. package/dist/utils/hooks/use-outside-close-click/index.js +0 -2
  184. package/dist/utils/hooks/use-outside-close-click/index.js.map +0 -1
  185. package/dist/utils/hooks/use-outside-close-click/use-outside-close-click.d.ts +0 -2
  186. package/dist/utils/hooks/use-outside-close-click/use-outside-close-click.js +0 -16
  187. package/dist/utils/hooks/use-outside-close-click/use-outside-close-click.js.map +0 -1
  188. package/dist/utils/hooks/use-pathname/index.js.map +0 -1
  189. package/dist/utils/hooks/use-pathname/use-pathname.d.ts +0 -1
  190. package/dist/utils/hooks/use-pathname/use-pathname.js.map +0 -1
  191. /package/dist/components/form-elements/{dropdown → dropdowns/dropdown}/dropdown.types.js +0 -0
  192. /package/dist/components/form-elements/{dropdown → dropdowns/dropdown}/index.d.ts +0 -0
  193. /package/dist/components/form-elements/{dropdown → dropdowns/dropdown}/index.js +0 -0
  194. /package/dist/{utils/hooks → hooks}/use-pathname/index.d.ts +0 -0
  195. /package/dist/{utils/hooks → hooks}/use-pathname/index.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown.js","sourceRoot":"","sources":["../../../../../src/components/form-elements/dropdowns/dropdown/dropdown.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAG1C,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,MAAM,UAAU,GAAG,GAAG,CAAC;IACtB,IAAI,EAAE;QACL,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,MAAM,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE;KACtC;IACD,QAAQ,EAAE;QACT,UAAU,EAAE;YACX,IAAI,EAAE,EAAE,eAAe,EAAE,UAAU,EAAE;SACrC;KACD;CACD,CAAC,CAAC;AAEH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EACxB,EAAE,EACF,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,WAAW,GAAG,qBAAqB,EACnC,IAAI,GACW,EAAE,EAAE;IACnB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;IAE5D,MAAM,YAAY,GAAG,CAAC,MAAsB,EAAE,EAAE;QAC/C,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,SAAS,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CACN,KAAC,YAAY,IACZ,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAC1C,OAAO,EAAE,GAAG,EAAE;YACb,SAAS,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC,EACD,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EACrD,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAC9B,aAEC,SAAS,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,KAAK,EAAE,CAAC,EACvE,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,YAElC,MAAM,CAAC,KAAK,IAJR,KAAK,CAKN,CACL,EACD,IAAI,EAAE,IAAI,GACT,CACF,CAAC;AACH,CAAC,CAAC"}
@@ -1,3 +1,5 @@
1
+ import { UtilitySizeOptions } from '../../../../types';
2
+ import { DropdownOption } from '../dropdown-base/dropdown-base.types';
1
3
  export type DropdownProps = {
2
4
  /** Dropdown ID */
3
5
  id?: string;
@@ -11,13 +13,6 @@ export type DropdownProps = {
11
13
  onSelect: (value: string | number) => void;
12
14
  /** Placeholder text shown when no value is selected @default 'Select an option...' */
13
15
  placeholder?: string;
14
- };
15
- /**
16
- * A single option in the Dropdown list.
17
- */
18
- export type DropdownOption = {
19
- /** Display text shown in the list */
20
- label: string;
21
- /** Value passed to `onSelect` when this option is chosen */
22
- value: string | number;
16
+ /** Size of Form Label @default `'md'`` */
17
+ size?: UtilitySizeOptions;
23
18
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown.types.js","sourceRoot":"","sources":["../../../../../src/components/form-elements/dropdowns/dropdown/dropdown.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/form-elements/dropdowns/dropdown/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { DropdownBaseProps } from './dropdown-base.types';
2
+ export declare const styles: {
3
+ container: string;
4
+ interior: string;
5
+ surfaceButton: string;
6
+ list: string;
7
+ };
8
+ export declare const DropdownBase: ({ id, title, isOpen, onClose, onToggle, triggerLabel, renderItem, options, listHeader, size, icon, }: DropdownBaseProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,46 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useRef } from 'react';
4
+ import { InputWrapper } from '../../input-wrapper';
5
+ import { FormLabel } from '../../form-label';
6
+ import { Icon } from '../../../../components/ui';
7
+ import { css } from '../../../../styled-system/css';
8
+ import { useClickOutside } from '../../../../hooks';
9
+ import { getUtilityIconSize } from '../../../../utils';
10
+ import { ConditionalWrapper, OptionalIconButton } from '../../../../internal-components';
11
+ export const styles = {
12
+ container: css({
13
+ width: '100%',
14
+ color: 'text.standard',
15
+ }),
16
+ interior: css({
17
+ width: '100%',
18
+ position: 'relative',
19
+ }),
20
+ surfaceButton: css({
21
+ width: '100%',
22
+ display: 'flex',
23
+ justifyContent: 'space-between',
24
+ alignItems: 'center',
25
+ }),
26
+ list: css({
27
+ backgroundColor: 'background',
28
+ position: 'absolute',
29
+ width: 'fit-content',
30
+ minWidth: '75%',
31
+ borderWidth: 'md',
32
+ borderColor: 'structure',
33
+ borderRadius: 'md',
34
+ marginTop: '3',
35
+ boxShadow: 'lg',
36
+ zIndex: '10',
37
+ maxHeight: '60',
38
+ overflow: 'auto',
39
+ }),
40
+ };
41
+ export const DropdownBase = ({ id, title, isOpen, onClose, onToggle, triggerLabel, renderItem, options, listHeader, size = 'md', icon, }) => {
42
+ const listRef = useRef(null);
43
+ useClickOutside(listRef, isOpen, onClose, false);
44
+ return (_jsx("div", { id: id, className: styles.container, children: _jsxs(ConditionalWrapper, { wrapper: title ? InputWrapper : 'fragment', children: [title && _jsx(FormLabel, { size: size, name: title, title: title }), _jsxs("div", { className: styles.interior, children: [_jsxs(OptionalIconButton, { size: size, color: "neutral", onClick: onToggle, type: "button", name: icon, children: [triggerLabel, _jsx(Icon, { name: isOpen ? 'CaretUp' : 'CaretDown', size: getUtilityIconSize(size) })] }), isOpen && (_jsxs("ul", { className: styles.list, ref: listRef, children: [listHeader && _jsx("li", { children: listHeader }), options.map((option, index) => renderItem(option, index))] }))] })] }) }));
45
+ };
46
+ //# sourceMappingURL=dropdown-base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown-base.js","sourceRoot":"","sources":["../../../../../src/components/form-elements/dropdowns/dropdown-base/dropdown-base.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { IconNames } from '../../../../components/ui';
2
+ import { UtilitySizeOptions } from '../../../../types';
3
+ /**
4
+ * A single option in the Dropdown list.
5
+ */
6
+ export type DropdownOption = {
7
+ /** Display text shown in the list */
8
+ label: string;
9
+ /** Value passed to `onSelect` when this option is chosen */
10
+ value: string | number;
11
+ };
12
+ export type DropdownBaseProps = {
13
+ id?: string;
14
+ title?: string;
15
+ placeholder?: string;
16
+ options: DropdownOption[];
17
+ isOpen: boolean;
18
+ onClose: () => void;
19
+ onToggle: () => void;
20
+ triggerLabel: string;
21
+ renderItem: (option: DropdownOption, index: number) => React.ReactNode;
22
+ listHeader?: React.ReactNode;
23
+ size?: UtilitySizeOptions;
24
+ icon?: IconNames;
25
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dropdown-base.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown-base.types.js","sourceRoot":"","sources":["../../../../../src/components/form-elements/dropdowns/dropdown-base/dropdown-base.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export type { DropdownBaseProps } from './dropdown-base.types';
2
+ export { DropdownBase } from './dropdown-base';
@@ -0,0 +1,2 @@
1
+ export { DropdownBase } from './dropdown-base';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/form-elements/dropdowns/dropdown-base/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './dropdown';
2
+ export * from './multi-dropdown';
@@ -0,0 +1,3 @@
1
+ export * from './dropdown';
2
+ export * from './multi-dropdown';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/form-elements/dropdowns/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export type { MultiDropdownProps } from './multi-dropdown.types';
2
+ export { MultiDropdown } from './multi-dropdown';
@@ -0,0 +1,2 @@
1
+ export { MultiDropdown } from './multi-dropdown';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/form-elements/dropdowns/multi-dropdown/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { MultiDropdownProps } from './multi-dropdown.types';
2
+ /**
3
+ * Multi-select dropdown — stays open on selection, renders a count badge
4
+ * when values are active, and exposes a per-field clear.
5
+ *
6
+ * @example
7
+ * <MultiDropdown
8
+ * title="Course"
9
+ * options={[{ label: 'Main', value: 'main' }, { label: 'Dessert', value: 'dessert' }]}
10
+ * values={selected}
11
+ * onToggle={(val) => toggle(val)}
12
+ * onClear={() => clear()}
13
+ * />
14
+ */
15
+ export declare const MultiDropdown: ({ id, title, options, values, onToggle, onClear, size, icon, showLabel, }: MultiDropdownProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,55 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useState } from 'react';
4
+ import { cva, css } from '../../../../styled-system/css';
5
+ import { DropdownBase } from '../dropdown-base/dropdown-base';
6
+ import { Icon, IconButton } from '../../../../components/ui';
7
+ const styles = {
8
+ itemStyles: cva({
9
+ base: {
10
+ cursor: 'pointer',
11
+ paddingX: '4',
12
+ paddingY: '2',
13
+ display: 'flex',
14
+ alignItems: 'center',
15
+ gap: '2',
16
+ _hover: { backgroundColor: 'surface' },
17
+ },
18
+ variants: {
19
+ isSelected: {
20
+ true: { backgroundColor: 'elevated' },
21
+ },
22
+ },
23
+ }),
24
+ headerStyles: css({
25
+ height: '5',
26
+ paddingX: 3,
27
+ display: 'flex',
28
+ flexDirection: 'row',
29
+ }),
30
+ };
31
+ /**
32
+ * Multi-select dropdown — stays open on selection, renders a count badge
33
+ * when values are active, and exposes a per-field clear.
34
+ *
35
+ * @example
36
+ * <MultiDropdown
37
+ * title="Course"
38
+ * options={[{ label: 'Main', value: 'main' }, { label: 'Dessert', value: 'dessert' }]}
39
+ * values={selected}
40
+ * onToggle={(val) => toggle(val)}
41
+ * onClear={() => clear()}
42
+ * />
43
+ */
44
+ export const MultiDropdown = ({ id, title, options, values, onToggle, onClear, size, icon, showLabel = true, }) => {
45
+ const [isOpen, setIsOpen] = useState(false);
46
+ const placeholder = !showLabel && title ? title : 'Select...';
47
+ const triggerLabel = values.length === 0 ? placeholder : `${title ?? 'Selected'} (${values.length})`;
48
+ return (_jsx(DropdownBase, { id: id, title: showLabel ? title : undefined, options: options, isOpen: isOpen, onToggle: () => setIsOpen((prev) => !prev), onClose: () => {
49
+ setIsOpen(false);
50
+ }, listHeader: _jsx("div", { className: styles.headerStyles, children: values.length > 0 && (_jsx(IconButton, { onClick: onClear, color: "text", name: "X", text: true, size: "sm", children: "Clear" })) }), triggerLabel: triggerLabel, renderItem: (option, index) => {
51
+ const isSelected = values.includes(option.value);
52
+ return (_jsxs("li", { className: styles.itemStyles({ isSelected }), onClick: () => onToggle(option.value), children: [_jsx(Icon, { name: isSelected ? 'CheckSquare' : 'Square', size: 12 }), option.label] }, index));
53
+ }, size: size, icon: icon }));
54
+ };
55
+ //# sourceMappingURL=multi-dropdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-dropdown.js","sourceRoot":"","sources":["../../../../../src/components/form-elements/dropdowns/multi-dropdown/multi-dropdown.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { DropdownOption } from '../dropdown-base/dropdown-base.types';
2
+ import { UtilityColorOptions, UtilitySizeOptions } from '../../../../types';
3
+ import { IconNames } from '../../../../components/ui';
4
+ export type MultiDropdownProps = {
5
+ /** Defaults to `title` if not provided */
6
+ id?: string;
7
+ /** Label displayed on the dropdown trigger button */
8
+ title?: string;
9
+ /** List of selectable options */
10
+ options: DropdownOption[];
11
+ /** Currently selected values */
12
+ values: (string | number)[];
13
+ /** Called when an option is toggled on or off */
14
+ onToggle: (value: string | number) => void;
15
+ /** Called when all selected values are cleared */
16
+ onClear: () => void;
17
+ /** Icon displayed in the dropdown trigger button */
18
+ icon?: IconNames;
19
+ /** Color variant for the trigger button */
20
+ color?: UtilityColorOptions;
21
+ /** Size variant for the trigger button @default `'md'` */
22
+ size?: UtilitySizeOptions;
23
+ /** Shows the title label above the dropdown @default `true` */
24
+ showLabel?: boolean;
25
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=multi-dropdown.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-dropdown.types.js","sourceRoot":"","sources":["../../../../../src/components/form-elements/dropdowns/multi-dropdown/multi-dropdown.types.ts"],"names":[],"mappings":""}
@@ -5,4 +5,4 @@ import { FormLabelProps } from './form-label.types';
5
5
  * @example
6
6
  * <FormLabel name="email" title="Email Address" />
7
7
  */
8
- export declare const FormLabel: ({ name, id, title }: FormLabelProps) => import("react/jsx-runtime").JSX.Element;
8
+ export declare const FormLabel: ({ name, id, title, size }: FormLabelProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,18 +1,44 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { css } from '../../../styled-system/css';
3
- import { H3 } from '../../../components/typography';
2
+ import { cva } from '../../../styled-system/css';
3
+ import { Text } from '../../../components/typography';
4
4
  /**
5
5
  * Form label linked to a control by `name`. Renders as an `H3` typographic style.
6
6
  *
7
7
  * @example
8
8
  * <FormLabel name="email" title="Email Address" />
9
9
  */
10
- export const FormLabel = ({ name, id = name, title }) => {
11
- const styles = css({
12
- display: 'block',
13
- alignSelf: 'flex-start',
14
- marginBottom: '2',
10
+ export const FormLabel = ({ name, id = name, title, size = 'md' }) => {
11
+ const styles = cva({
12
+ base: {
13
+ display: 'block',
14
+ alignSelf: 'flex-start',
15
+ },
16
+ variants: {
17
+ size: {
18
+ sm: {
19
+ marginBottom: '1',
20
+ },
21
+ md: {
22
+ marginBottom: '1.5',
23
+ },
24
+ lg: {
25
+ marginBottom: '2',
26
+ },
27
+ },
28
+ },
15
29
  });
16
- return (_jsx("label", { id: id, htmlFor: name, className: styles, children: _jsx(H3, { children: title }) }));
30
+ const textSizeFromSizeProp = (() => {
31
+ switch (size) {
32
+ case 'sm':
33
+ return 'md';
34
+ case 'md':
35
+ return 'lg';
36
+ case 'lg':
37
+ return 'xl';
38
+ default:
39
+ return 'lg';
40
+ }
41
+ })();
42
+ return (_jsx("label", { id: id, htmlFor: name, className: styles({ size }), children: _jsx(Text, { bold: true, size: textSizeFromSizeProp, children: title }) }));
17
43
  };
18
44
  //# sourceMappingURL=form-label.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"form-label.js","sourceRoot":"","sources":["../../../../src/components/form-elements/form-label/form-label.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAE1C,OAAO,EAAE,EAAE,EAAE,MAAM,yBAAyB,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,EAAkB,EAAE,EAAE;IACvE,MAAM,MAAM,GAAG,GAAG,CAAC;QAClB,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,YAAY;QACvB,YAAY,EAAE,GAAG;KACjB,CAAC,CAAC;IAEH,OAAO,CACN,gBAAO,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,YAC9C,KAAC,EAAE,cAAE,KAAK,GAAM,GACT,CACR,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"form-label.js","sourceRoot":"","sources":["../../../../src/components/form-elements/form-label/form-label.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAO,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAM,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAGnD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,IAAI,EAAkB,EAAE,EAAE;IACpF,MAAM,MAAM,GAAG,GAAG,CAAC;QAClB,IAAI,EAAE;YACL,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE,YAAY;SACvB;QACD,QAAQ,EAAE;YACT,IAAI,EAAE;gBACL,EAAE,EAAE;oBACH,YAAY,EAAE,GAAG;iBACjB;gBACD,EAAE,EAAE;oBACH,YAAY,EAAE,KAAK;iBACnB;gBACD,EAAE,EAAE;oBACH,YAAY,EAAE,GAAG;iBACjB;aACD;SACD;KACD,CAAC,CAAC;IAEH,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE;QAClC,QAAQ,IAAI,EAAE,CAAC;YACd,KAAK,IAAI;gBACR,OAAO,IAAI,CAAC;YACb,KAAK,IAAI;gBACR,OAAO,IAAI,CAAC;YACb,KAAK,IAAI;gBACR,OAAO,IAAI,CAAC;YACb;gBACC,OAAO,IAAI,CAAC;QACd,CAAC;IACF,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO,CACN,gBAAO,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,YACxD,KAAC,IAAI,IAAC,IAAI,QAAC,IAAI,EAAE,oBAAoB,YACnC,KAAK,GACA,GACA,CACR,CAAC;AACH,CAAC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { UtilitySizeOptions } from '../../../types';
1
2
  export type FormLabelProps = {
2
3
  /** Defaults to `name` if not provided */
3
4
  id?: string;
@@ -5,4 +6,6 @@ export type FormLabelProps = {
5
6
  name: string;
6
7
  /** Text displayed in the label */
7
8
  title?: string;
9
+ /** Label Size @default `'md'`` */
10
+ size?: UtilitySizeOptions;
8
11
  };
@@ -1,5 +1,5 @@
1
+ export * from './dropdowns';
2
+ export * from './file-upload';
1
3
  export * from './form-label';
2
4
  export * from './number-input';
3
5
  export * from './text-input';
4
- export * from './file-upload';
5
- export * from './dropdown';
@@ -1,6 +1,6 @@
1
+ export * from './dropdowns';
2
+ export * from './file-upload';
1
3
  export * from './form-label';
2
4
  export * from './number-input';
3
5
  export * from './text-input';
4
- export * from './file-upload';
5
- export * from './dropdown';
6
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/form-elements/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/form-elements/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export * from './form-elements';
2
+ export * from './data-display';
2
3
  export * from './layouts';
3
4
  export * from './media';
4
5
  export * from './navigation';
@@ -1,4 +1,5 @@
1
1
  export * from './form-elements';
2
+ export * from './data-display';
2
3
  export * from './layouts';
3
4
  export * from './media';
4
5
  export * from './navigation';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,MAAM,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,MAAM,CAAC"}
@@ -11,4 +11,4 @@ import { ColumnLayoutProps } from './column-layout.types';
11
11
  * items={[{ content: { src: '/img.jpg', alt: 'Example' }, title: 'Item' }]}
12
12
  * />
13
13
  */
14
- export declare const ColumnLayout: ({ title, caption, mdcol, lgcol, items, }: ColumnLayoutProps) => import("react/jsx-runtime").JSX.Element;
14
+ export declare const ColumnLayout: ({ title, caption, mdcol, lgcol, items, container, }: ColumnLayoutProps) => import("react/jsx-runtime").JSX.Element;
@@ -3,6 +3,7 @@ import { renderImage } from '../../../internal-components';
3
3
  import { ColumnSkeleton } from './column-skeleton';
4
4
  import { H2, H3, Text } from '../../../components';
5
5
  import { css } from '../../../styled-system/css';
6
+ import { LayoutWrapper } from '../layout-wrapper';
6
7
  /**
7
8
  * Responsive image grid with an optional title and caption.
8
9
  * Column count is controlled separately for medium and large viewports.
@@ -15,7 +16,7 @@ import { css } from '../../../styled-system/css';
15
16
  * items={[{ content: { src: '/img.jpg', alt: 'Example' }, title: 'Item' }]}
16
17
  * />
17
18
  */
18
- export const ColumnLayout = ({ title, caption, mdcol, lgcol = mdcol, items, }) => {
19
+ export const ColumnLayout = ({ title, caption, mdcol, lgcol = mdcol, items, container = true, }) => {
19
20
  const sectionStyles = css({
20
21
  width: '100%',
21
22
  marginRight: 'auto',
@@ -46,8 +47,8 @@ export const ColumnLayout = ({ title, caption, mdcol, lgcol = mdcol, items, }) =
46
47
  height: 'auto',
47
48
  borderRadius: '0.25rem',
48
49
  });
49
- return (_jsxs("section", { className: sectionStyles, style: {
50
- '--max-width': mdcol < 2 ? '800px' : 'none',
51
- }, children: [(title || caption) && (_jsx("div", { children: title && (_jsx(_Fragment, { children: _jsxs(H2, { children: [title, caption && _jsx(Text, { children: caption })] }) })) })), _jsx(ColumnSkeleton, { mdcol: mdcol, lgcol: lgcol, children: items.map((item, index) => (_jsxs("div", { children: [_jsx("div", { className: gridItemStyles, children: renderImage(item.content, undefined, gridPhotoStyles) }), (item.title || item.description) && (_jsxs(_Fragment, { children: [item.title && _jsx(H3, { children: item.title }), item.description && _jsx(Text, { children: item.description })] }))] }, index))) })] }));
50
+ return (_jsx(LayoutWrapper, { container: container, children: _jsxs("section", { className: sectionStyles, style: {
51
+ '--max-width': mdcol < 2 ? '800px' : 'none',
52
+ }, children: [(title || caption) && (_jsx("div", { children: title && (_jsx(_Fragment, { children: _jsxs(H2, { children: [title, caption && _jsx(Text, { children: caption })] }) })) })), _jsx(ColumnSkeleton, { mdcol: mdcol, lgcol: lgcol, children: items.map((item, index) => (_jsxs("div", { children: [_jsx("div", { className: gridItemStyles, children: renderImage(item.content, undefined, gridPhotoStyles) }), (item.title || item.description) && (_jsxs(_Fragment, { children: [item.title && _jsx(H3, { children: item.title }), item.description && _jsx(Text, { children: item.description })] }))] }, item.key ?? index))) })] }) }));
52
53
  };
53
54
  //# sourceMappingURL=column-layout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"column-layout.js","sourceRoot":"","sources":["../../../../src/components/layouts/column-layout/column-layout.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAE1C;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAC5B,KAAK,EACL,OAAO,EACP,KAAK,EACL,KAAK,GAAG,KAAK,EACb,KAAK,GACc,EAAE,EAAE;IACvB,MAAM,aAAa,GAAG,GAAG,CAAC;QACzB,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,MAAM;QAClB,QAAQ,EAAE;YACT,IAAI,EAAE,MAAM;YACZ,EAAE,EAAE,wBAAwB;YAC5B,EAAE,EAAE,MAAM;SACV;QACD,YAAY,EAAE,MAAM;QACpB,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE;QACxD,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE;QAC3D,OAAO,EAAE,MAAM;QACf,aAAa,EAAE,QAAQ;QACvB,cAAc,EAAE,QAAQ;QACxB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE;KACpC,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,GAAG,CAAC;QAC1B,YAAY,EAAE,SAAS;QACvB,YAAY,EAAE,QAAQ;QACtB,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,QAAQ;KAClB,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,GAAG,CAAC;QAC3B,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;QACd,YAAY,EAAE,SAAS;KACvB,CAAC,CAAC;IAEH,OAAO,CACN,mBACC,SAAS,EAAE,aAAa,EACxB,KAAK,EACJ;YACC,aAAa,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;SACpB,aAGxB,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CACtB,wBACE,KAAK,IAAI,CACT,4BACC,MAAC,EAAE,eACD,KAAK,EACL,OAAO,IAAI,KAAC,IAAI,cAAE,OAAO,GAAQ,IAC9B,GACH,CACH,GACI,CACN,EACD,KAAC,cAAc,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,YACxC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAC3B,0BACC,cAAK,SAAS,EAAE,cAAc,YAC5B,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,GACjD,EACL,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CACpC,8BACE,IAAI,CAAC,KAAK,IAAI,KAAC,EAAE,cAAE,IAAI,CAAC,KAAK,GAAM,EACnC,IAAI,CAAC,WAAW,IAAI,KAAC,IAAI,cAAE,IAAI,CAAC,WAAW,GAAQ,IAClD,CACH,KATQ,KAAK,CAUT,CACN,CAAC,GACc,IACR,CACV,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"column-layout.js","sourceRoot":"","sources":["../../../../src/components/layouts/column-layout/column-layout.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAC5B,KAAK,EACL,OAAO,EACP,KAAK,EACL,KAAK,GAAG,KAAK,EACb,KAAK,EACL,SAAS,GAAG,IAAI,GACG,EAAE,EAAE;IACvB,MAAM,aAAa,GAAG,GAAG,CAAC;QACzB,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,MAAM;QAClB,QAAQ,EAAE;YACT,IAAI,EAAE,MAAM;YACZ,EAAE,EAAE,wBAAwB;YAC5B,EAAE,EAAE,MAAM;SACV;QACD,YAAY,EAAE,MAAM;QACpB,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE;QACxD,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE;QAC3D,OAAO,EAAE,MAAM;QACf,aAAa,EAAE,QAAQ;QACvB,cAAc,EAAE,QAAQ;QACxB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE;KACpC,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,GAAG,CAAC;QAC1B,YAAY,EAAE,SAAS;QACvB,YAAY,EAAE,QAAQ;QACtB,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,QAAQ;KAClB,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,GAAG,CAAC;QAC3B,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;QACd,YAAY,EAAE,SAAS;KACvB,CAAC,CAAC;IAEH,OAAO,CACN,KAAC,aAAa,IAAC,SAAS,EAAE,SAAS,YAClC,mBACC,SAAS,EAAE,aAAa,EACxB,KAAK,EACJ;gBACC,aAAa,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;aACpB,aAGxB,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CACtB,wBACE,KAAK,IAAI,CACT,4BACC,MAAC,EAAE,eACD,KAAK,EACL,OAAO,IAAI,KAAC,IAAI,cAAE,OAAO,GAAQ,IAC9B,GACH,CACH,GACI,CACN,EACD,KAAC,cAAc,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,YACxC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAC3B,0BACC,cAAK,SAAS,EAAE,cAAc,YAC5B,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,GACjD,EACL,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CACpC,8BACE,IAAI,CAAC,KAAK,IAAI,KAAC,EAAE,cAAE,IAAI,CAAC,KAAK,GAAM,EACnC,IAAI,CAAC,WAAW,IAAI,KAAC,IAAI,cAAE,IAAI,CAAC,WAAW,GAAQ,IAClD,CACH,KATQ,IAAI,CAAC,GAAG,IAAI,KAAK,CAUrB,CACN,CAAC,GACc,IACR,GACK,CAChB,CAAC;AACH,CAAC,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { ImageProps } from '../../../types';
2
- export type ColumnLayoutProps = {
2
+ import { LayoutComponentProps } from '../layout-component.types';
3
+ export type ColumnLayoutProps = LayoutComponentProps & {
3
4
  /** Optional title displayed at the top of the layout */
4
5
  title?: string;
5
6
  /** Optional caption rendered alongside the title */
@@ -18,4 +19,6 @@ export type ColumnItem = {
18
19
  description?: string;
19
20
  /** Image to display in the column */
20
21
  content: ImageProps;
22
+ /** Optional key prop to ensure items render correctly */
23
+ key?: string;
21
24
  };
@@ -0,0 +1,11 @@
1
+ import { ContainerProps } from './container.types';
2
+ /**
3
+ * Layout container with a max-width, horizontal padding, and optional background color.
4
+ * Renders as `div` by default but can be swapped for `section`.
5
+ *
6
+ * @example
7
+ * <Container as="section" bgColor="surface">
8
+ * <PageHeader title="About" />
9
+ * </Container>
10
+ */
11
+ export declare const Container: ({ as: Tag, bgColor, children, }: ContainerProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,28 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cva, cx } from '../../../styled-system/css';
3
+ import { container } from '../../../styled-system/patterns';
4
+ const styles = cva({
5
+ variants: {
6
+ bgColor: {
7
+ background: { backgroundColor: 'background' },
8
+ surface: { backgroundColor: 'surface' },
9
+ elevated: { backgroundColor: 'elevated' },
10
+ },
11
+ },
12
+ defaultVariants: {
13
+ bgColor: 'background',
14
+ },
15
+ });
16
+ /**
17
+ * Layout container with a max-width, horizontal padding, and optional background color.
18
+ * Renders as `div` by default but can be swapped for `section`.
19
+ *
20
+ * @example
21
+ * <Container as="section" bgColor="surface">
22
+ * <PageHeader title="About" />
23
+ * </Container>
24
+ */
25
+ export const Container = ({ as: Tag = 'div', bgColor = 'background', children, }) => {
26
+ return _jsx(Tag, { className: cx(styles({ bgColor }), container()), children: children });
27
+ };
28
+ //# sourceMappingURL=container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container.js","sourceRoot":"","sources":["../../../../src/components/layouts/container/container.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAGrD,MAAM,MAAM,GAAG,GAAG,CAAC;IAClB,QAAQ,EAAE;QACT,OAAO,EAAE;YACR,UAAU,EAAE,EAAE,eAAe,EAAE,YAAY,EAAE;YAC7C,OAAO,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE;YACvC,QAAQ,EAAE,EAAE,eAAe,EAAE,UAAU,EAAE;SACzC;KACD;IACD,eAAe,EAAE;QAChB,OAAO,EAAE,YAAY;KACrB;CACD,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EACzB,EAAE,EAAE,GAAG,GAAG,KAAK,EACf,OAAO,GAAG,YAAY,EACtB,QAAQ,GACQ,EAAE,EAAE;IACpB,OAAO,KAAC,GAAG,IAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,YAAG,QAAQ,GAAO,CAAC;AAC/E,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { SurfaceColorOptions } from '../../../types';
2
+ import { JSX, ReactNode } from 'react';
3
+ type BlockElements = Pick<JSX.IntrinsicElements, 'div' | 'section'>;
4
+ export type ContainerProps = {
5
+ /** HTML element to render as @default `'div'` */
6
+ as?: keyof BlockElements;
7
+ /** Background color token @default `'background'` */
8
+ bgColor?: SurfaceColorOptions;
9
+ children: ReactNode;
10
+ };
11
+ export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=container.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container.types.js","sourceRoot":"","sources":["../../../../src/components/layouts/container/container.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export type { ContainerProps } from './container.types';
2
+ export { Container } from './container';
@@ -0,0 +1,2 @@
1
+ export { Container } from './container';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/layouts/container/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export * from './column-layout';
2
+ export * from './container';
2
3
  export * from './footer';
3
4
  export * from './masonry-layout';
@@ -1,4 +1,5 @@
1
1
  export * from './column-layout';
2
+ export * from './container';
2
3
  export * from './footer';
3
4
  export * from './masonry-layout';
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/layouts/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/layouts/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { BreakpointToken as PandaBreakpointToken } from '../../styled-system/tokens';
2
+ import { ContainerProps } from './container';
3
+ type BreakpointToken = PandaBreakpointToken | 'base';
4
+ export type ResponsiveValue<T> = T | Partial<Record<BreakpointToken, T>>;
5
+ export type LayoutComponentProps = {
6
+ /** Wraps the layout in a container */
7
+ container?: boolean | Omit<ContainerProps, 'children'>;
8
+ };
9
+ export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=layout-component.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout-component.types.js","sourceRoot":"","sources":["../../../src/components/layouts/layout-component.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import { ReactNode } from 'react';
2
+ import { LayoutComponentProps } from './layout-component.types';
3
+ type LayoutWrapperProps = LayoutComponentProps & {
4
+ children: ReactNode;
5
+ };
6
+ export declare const LayoutWrapper: ({ container, children }: LayoutWrapperProps) => import("react/jsx-runtime").JSX.Element;
7
+ export {};