@ankhorage/zora 21.0.10 → 21.0.12

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 (27) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +1 -1
  3. package/dist/features/list/adapters/inbound/ListItem.d.ts.map +1 -1
  4. package/dist/features/list/adapters/inbound/ListItem.js +2 -1
  5. package/dist/features/list/adapters/inbound/ListItem.js.map +1 -1
  6. package/dist/features/list/utils/resolveListItemTitleLineCount.d.ts +3 -0
  7. package/dist/features/list/utils/resolveListItemTitleLineCount.d.ts.map +1 -0
  8. package/dist/features/list/utils/resolveListItemTitleLineCount.js +5 -0
  9. package/dist/features/list/utils/resolveListItemTitleLineCount.js.map +1 -0
  10. package/package.json +3 -3
  11. package/src/features/list/adapters/inbound/ListItem.tsx +6 -1
  12. package/src/features/list/utils/resolveListItemTitleLineCount.test.ts +11 -0
  13. package/src/features/list/utils/resolveListItemTitleLineCount.ts +4 -0
  14. package/web-dist/chunks/{Accordion-kpq8dhze.js → Accordion-fjnck2tg.js} +1 -1
  15. package/web-dist/chunks/{Accordion-j2c7btke.js → Accordion-hz4xaqjf.js} +6 -0
  16. package/web-dist/components/data-table/DataTable.js +2 -2
  17. package/web-dist/components/flat-list/FlatList.js +1 -1
  18. package/web-dist/components/list/List.js +1 -1
  19. package/web-dist/components/list-item/ListItem.js +1 -1
  20. package/web-dist/components/list-section/ListSection.js +1 -1
  21. package/web-dist/components/section-list/SectionList.js +1 -1
  22. package/web-dist/components/skeleton/Skeleton.js +2 -2
  23. package/web-dist/components/skeleton-card/SkeletonCard.js +2 -2
  24. package/web-dist/components/skeleton-list/SkeletonList.js +2 -2
  25. package/web-dist/components/skeleton-text/SkeletonText.js +2 -2
  26. package/web-dist/components/tree-item/TreeItem.js +1 -1
  27. package/web-dist/manifest.json +16 -16
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 21.0.12
4
+
5
+ ### Patch Changes
6
+
7
+ - 5484db6: Update Ankhorage dependencies: `@ankhorage/contracts`, `@ankhorage/surface`.
8
+
9
+ ## 21.0.11
10
+
11
+ ### Patch Changes
12
+
13
+ - d36063d: Keep compact ListItem titles on one line so dense sidebar rows remain height-stable.
14
+
3
15
  ## 21.0.10
4
16
 
5
17
  ### Patch Changes
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  # @ankhorage/zora
5
5
 
6
- ![license: MIT](././paradox/badges/license.svg) ![npm: v21.0.10](././paradox/badges/npm.svg) ![runtime: bun](././paradox/badges/runtime.svg) ![typescript: strict](././paradox/badges/typescript.svg) ![eslint: checked](././paradox/badges/eslint.svg) ![prettier: checked](././paradox/badges/prettier.svg) ![build: checked](././paradox/badges/build.svg) ![tests: checked](././paradox/badges/tests.svg) ![docs: paradox](././paradox/badges/docs.svg)
6
+ ![license: MIT](././paradox/badges/license.svg) ![npm: v21.0.12](././paradox/badges/npm.svg) ![runtime: bun](././paradox/badges/runtime.svg) ![typescript: strict](././paradox/badges/typescript.svg) ![eslint: checked](././paradox/badges/eslint.svg) ![prettier: checked](././paradox/badges/prettier.svg) ![build: checked](././paradox/badges/build.svg) ![tests: checked](././paradox/badges/tests.svg) ![docs: paradox](././paradox/badges/docs.svg)
7
7
 
8
8
  Opinionated React Native and React Native Web UI kit built on @ankhorage/surface.
9
9
 
@@ -1 +1 @@
1
- {"version":3,"file":"ListItem.d.ts","sourceRoot":"","sources":["../../../../../src/features/list/adapters/inbound/ListItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,wBAAwB,CAAC;AAoF7E,+FAA+F;AAC/F,eAAO,MAAM,QAAQ,qDAAoC,CAAC"}
1
+ {"version":3,"file":"ListItem.d.ts","sourceRoot":"","sources":["../../../../../src/features/list/adapters/inbound/ListItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,wBAAwB,CAAC;AAyF7E,+FAA+F;AAC/F,eAAO,MAAM,QAAQ,qDAAoC,CAAC"}
@@ -4,6 +4,7 @@ import { View } from '../../../layout/public';
4
4
  import { withZoraThemeScope } from '../../../theme/adapters/inbound/withZoraThemeScope';
5
5
  import { useZoraTheme } from '../../../theme/composition/useZoraTheme';
6
6
  import { Text } from '../../../typography/public';
7
+ import { resolveListItemTitleLineCount } from '../../utils/resolveListItemTitleLineCount';
7
8
  function ListItemInner({ themeId: _themeId, mode: _mode, testID, interactionPolicy, title, description, meta, leading, trailing, action, onPress, selected = false, disabled = false, compact = false, variant = 'divider', }) {
8
9
  const { theme } = useZoraTheme();
9
10
  const trailingContent = renderTrailing(trailing, action);
@@ -14,7 +15,7 @@ function ListItemInner({ themeId: _themeId, mode: _mode, testID, interactionPoli
14
15
  : 'transparent'} borderWidth={variant === 'card' || selected ? 1 : 0} overflow="hidden" radius={resolveRadius(variant)}>
15
16
  <SurfaceListItem compact={compact} disabled={disabled} interactionPolicy={interactionPolicy} leading={leading} onPress={action ? undefined : onPress} selected={selected} testID={testID} trailing={trailingContent}>
16
17
  <View gap="xxs">
17
- <Text variant="body" weight={selected ? 'semiBold' : 'medium'}>
18
+ <Text numberOfLines={resolveListItemTitleLineCount(compact)} variant="body" weight={selected ? 'semiBold' : 'medium'}>
18
19
  {title}
19
20
  </Text>
20
21
  {description ? (<Text emphasis="muted" variant="bodySmall">
@@ -1 +1 @@
1
- {"version":3,"file":"ListItem.js","sourceRoot":"","sources":["../../../../../src/features/list/adapters/inbound/ListItem.tsx"],"names":[],"mappings":"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","sourcesContent":["import { ListItem as SurfaceListItem } from '@ankhorage/surface';\nimport React from 'react';\n\nimport type { ListItemProps, ListItemVariant } from '../../../../types/list';\nimport { View } from '../../../layout/public';\nimport { withZoraThemeScope } from '../../../theme/adapters/inbound/withZoraThemeScope';\nimport { useZoraTheme } from '../../../theme/composition/useZoraTheme';\nimport { Text } from '../../../typography/public';\n\nfunction ListItemInner({\n themeId: _themeId,\n mode: _mode,\n testID,\n interactionPolicy,\n title,\n description,\n meta,\n leading,\n trailing,\n action,\n onPress,\n selected = false,\n disabled = false,\n compact = false,\n variant = 'divider',\n}: ListItemProps) {\n const { theme } = useZoraTheme();\n const trailingContent = renderTrailing(trailing, action);\n\n return (\n <View\n bg={variant === 'card' ? theme.semantics.surface.raised : 'transparent'}\n borderColor={\n selected\n ? theme.semantics.border.focus\n : variant === 'card'\n ? theme.semantics.border.default\n : 'transparent'\n }\n borderWidth={variant === 'card' || selected ? 1 : 0}\n overflow=\"hidden\"\n radius={resolveRadius(variant)}\n >\n <SurfaceListItem\n compact={compact}\n disabled={disabled}\n interactionPolicy={interactionPolicy}\n leading={leading}\n onPress={action ? undefined : onPress}\n selected={selected}\n testID={testID}\n trailing={trailingContent}\n >\n <View gap=\"xxs\">\n <Text variant=\"body\" weight={selected ? 'semiBold' : 'medium'}>\n {title}\n </Text>\n {description ? (\n <Text emphasis=\"muted\" variant=\"bodySmall\">\n {description}\n </Text>\n ) : null}\n {meta ? (\n <Text emphasis=\"subtle\" variant=\"caption\">\n {meta}\n </Text>\n ) : null}\n </View>\n </SurfaceListItem>\n </View>\n );\n}\n\nfunction resolveRadius(variant: ListItemVariant) {\n return variant === 'card' ? ('l' as const) : ('m' as const);\n}\n\nfunction renderTrailing(trailing: React.ReactNode, action: React.ReactNode) {\n if (!trailing && !action) return undefined;\n return (\n <View align=\"center\" direction=\"row\" gap=\"s\" wrap=\"nowrap\">\n {trailing}\n {action}\n </View>\n );\n}\n\n/*** Opinionated list item built on the Surface list-item interaction and geometry boundary. */\nexport const ListItem = withZoraThemeScope(ListItemInner);\n"]}
1
+ {"version":3,"file":"ListItem.js","sourceRoot":"","sources":["../../../../../src/features/list/adapters/inbound/ListItem.tsx"],"names":[],"mappings":"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","sourcesContent":["import { ListItem as SurfaceListItem } from '@ankhorage/surface';\nimport React from 'react';\n\nimport type { ListItemProps, ListItemVariant } from '../../../../types/list';\nimport { View } from '../../../layout/public';\nimport { withZoraThemeScope } from '../../../theme/adapters/inbound/withZoraThemeScope';\nimport { useZoraTheme } from '../../../theme/composition/useZoraTheme';\nimport { Text } from '../../../typography/public';\nimport { resolveListItemTitleLineCount } from '../../utils/resolveListItemTitleLineCount';\n\nfunction ListItemInner({\n themeId: _themeId,\n mode: _mode,\n testID,\n interactionPolicy,\n title,\n description,\n meta,\n leading,\n trailing,\n action,\n onPress,\n selected = false,\n disabled = false,\n compact = false,\n variant = 'divider',\n}: ListItemProps) {\n const { theme } = useZoraTheme();\n const trailingContent = renderTrailing(trailing, action);\n\n return (\n <View\n bg={variant === 'card' ? theme.semantics.surface.raised : 'transparent'}\n borderColor={\n selected\n ? theme.semantics.border.focus\n : variant === 'card'\n ? theme.semantics.border.default\n : 'transparent'\n }\n borderWidth={variant === 'card' || selected ? 1 : 0}\n overflow=\"hidden\"\n radius={resolveRadius(variant)}\n >\n <SurfaceListItem\n compact={compact}\n disabled={disabled}\n interactionPolicy={interactionPolicy}\n leading={leading}\n onPress={action ? undefined : onPress}\n selected={selected}\n testID={testID}\n trailing={trailingContent}\n >\n <View gap=\"xxs\">\n <Text\n numberOfLines={resolveListItemTitleLineCount(compact)}\n variant=\"body\"\n weight={selected ? 'semiBold' : 'medium'}\n >\n {title}\n </Text>\n {description ? (\n <Text emphasis=\"muted\" variant=\"bodySmall\">\n {description}\n </Text>\n ) : null}\n {meta ? (\n <Text emphasis=\"subtle\" variant=\"caption\">\n {meta}\n </Text>\n ) : null}\n </View>\n </SurfaceListItem>\n </View>\n );\n}\n\nfunction resolveRadius(variant: ListItemVariant) {\n return variant === 'card' ? ('l' as const) : ('m' as const);\n}\n\nfunction renderTrailing(trailing: React.ReactNode, action: React.ReactNode) {\n if (!trailing && !action) return undefined;\n return (\n <View align=\"center\" direction=\"row\" gap=\"s\" wrap=\"nowrap\">\n {trailing}\n {action}\n </View>\n );\n}\n\n/*** Opinionated list item built on the Surface list-item interaction and geometry boundary. */\nexport const ListItem = withZoraThemeScope(ListItemInner);\n"]}
@@ -0,0 +1,3 @@
1
+ /*** Resolves the title line limit for compact list presentation. */
2
+ export declare function resolveListItemTitleLineCount(compact: boolean): number | undefined;
3
+ //# sourceMappingURL=resolveListItemTitleLineCount.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveListItemTitleLineCount.d.ts","sourceRoot":"","sources":["../../../../src/features/list/utils/resolveListItemTitleLineCount.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAElF"}
@@ -0,0 +1,5 @@
1
+ /*** Resolves the title line limit for compact list presentation. */
2
+ export function resolveListItemTitleLineCount(compact) {
3
+ return compact ? 1 : undefined;
4
+ }
5
+ //# sourceMappingURL=resolveListItemTitleLineCount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveListItemTitleLineCount.js","sourceRoot":"","sources":["../../../../src/features/list/utils/resolveListItemTitleLineCount.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,MAAM,UAAU,6BAA6B,CAAC,OAAgB;IAC5D,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACjC,CAAC","sourcesContent":["/*** Resolves the title line limit for compact list presentation. */\nexport function resolveListItemTitleLineCount(compact: boolean): number | undefined {\n return compact ? 1 : undefined;\n}\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ankhorage/zora",
3
3
  "type": "module",
4
- "version": "21.0.10",
4
+ "version": "21.0.12",
5
5
  "description": "Opinionated React Native and React Native Web UI kit built on @ankhorage/surface.",
6
6
  "homepage": "https://github.com/ankhorage/zora#readme",
7
7
  "bugs": {
@@ -41,8 +41,8 @@
41
41
  },
42
42
  "dependencies": {
43
43
  "@ankhorage/color-theory": "^0.3.1",
44
- "@ankhorage/contracts": "^22.5.0",
45
- "@ankhorage/surface": "^9.1.0",
44
+ "@ankhorage/contracts": "^22.7.0",
45
+ "@ankhorage/surface": "^9.1.1",
46
46
  "@ankhorage/utility": "^1.5.0",
47
47
  "expo-document-picker": "~57.0.1",
48
48
  "expo-image-picker": "~57.0.16"
@@ -6,6 +6,7 @@ import { View } from '../../../layout/public';
6
6
  import { withZoraThemeScope } from '../../../theme/adapters/inbound/withZoraThemeScope';
7
7
  import { useZoraTheme } from '../../../theme/composition/useZoraTheme';
8
8
  import { Text } from '../../../typography/public';
9
+ import { resolveListItemTitleLineCount } from '../../utils/resolveListItemTitleLineCount';
9
10
 
10
11
  function ListItemInner({
11
12
  themeId: _themeId,
@@ -52,7 +53,11 @@ function ListItemInner({
52
53
  trailing={trailingContent}
53
54
  >
54
55
  <View gap="xxs">
55
- <Text variant="body" weight={selected ? 'semiBold' : 'medium'}>
56
+ <Text
57
+ numberOfLines={resolveListItemTitleLineCount(compact)}
58
+ variant="body"
59
+ weight={selected ? 'semiBold' : 'medium'}
60
+ >
56
61
  {title}
57
62
  </Text>
58
63
  {description ? (
@@ -0,0 +1,11 @@
1
+ import { expect, test } from 'bun:test';
2
+
3
+ import { resolveListItemTitleLineCount } from './resolveListItemTitleLineCount';
4
+
5
+ test('keeps compact list item titles to one line', () => {
6
+ expect(resolveListItemTitleLineCount(true)).toBe(1);
7
+ });
8
+
9
+ test('preserves unrestricted non-compact list item titles', () => {
10
+ expect(resolveListItemTitleLineCount(false)).toBeUndefined();
11
+ });
@@ -0,0 +1,4 @@
1
+ /*** Resolves the title line limit for compact list presentation. */
2
+ export function resolveListItemTitleLineCount(compact: boolean): number | undefined {
3
+ return compact ? 1 : undefined;
4
+ }
@@ -13,7 +13,7 @@ import {
13
13
  } from "./Accordion-qpwhmqzd.js";
14
14
  import {
15
15
  List2
16
- } from "./Accordion-j2c7btke.js";
16
+ } from "./Accordion-hz4xaqjf.js";
17
17
  import {
18
18
  useZoraTheme2
19
19
  } from "./Accordion-7ja4mtbz.js";
@@ -232,6 +232,11 @@ function renderDefaultContent(title, description) {
232
232
  });
233
233
  }
234
234
 
235
+ // src/features/list/utils/resolveListItemTitleLineCount.ts
236
+ function resolveListItemTitleLineCount(compact) {
237
+ return compact ? 1 : undefined;
238
+ }
239
+
235
240
  // src/features/list/adapters/inbound/ListItem.tsx
236
241
  import { jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
237
242
  function ListItemInner({
@@ -272,6 +277,7 @@ function ListItemInner({
272
277
  gap: "xxs",
273
278
  children: [
274
279
  /* @__PURE__ */ jsx5(Text2, {
280
+ numberOfLines: resolveListItemTitleLineCount(compact),
275
281
  variant: "body",
276
282
  weight: selected ? "semiBold" : "medium",
277
283
  children: title
@@ -46,8 +46,8 @@ import {
46
46
  } from "../../chunks/Accordion-v6ykq9hv.js";
47
47
  import {
48
48
  SkeletonList2
49
- } from "../../chunks/Accordion-kpq8dhze.js";
50
- import"../../chunks/Accordion-j2c7btke.js";
49
+ } from "../../chunks/Accordion-fjnck2tg.js";
50
+ import"../../chunks/Accordion-hz4xaqjf.js";
51
51
  import"../../chunks/Accordion-31aeqxak.js";
52
52
  import"../../chunks/Accordion-eqvdv7tt.js";
53
53
  import"../../chunks/Accordion-61e19g3e.js";
@@ -13,7 +13,7 @@ import {
13
13
  List2,
14
14
  ListSection2,
15
15
  SectionList2
16
- } from "../../chunks/Accordion-j2c7btke.js";
16
+ } from "../../chunks/Accordion-hz4xaqjf.js";
17
17
  import"../../chunks/Accordion-ftjkdjqs.js";
18
18
  import"../../chunks/Accordion-0jkm3y3w.js";
19
19
  import"../../chunks/Accordion-31aeqxak.js";
@@ -13,7 +13,7 @@ import {
13
13
  List2,
14
14
  ListSection2,
15
15
  SectionList2
16
- } from "../../chunks/Accordion-j2c7btke.js";
16
+ } from "../../chunks/Accordion-hz4xaqjf.js";
17
17
  import"../../chunks/Accordion-ftjkdjqs.js";
18
18
  import"../../chunks/Accordion-0jkm3y3w.js";
19
19
  import"../../chunks/Accordion-31aeqxak.js";
@@ -13,7 +13,7 @@ import {
13
13
  List2,
14
14
  ListSection2,
15
15
  SectionList2
16
- } from "../../chunks/Accordion-j2c7btke.js";
16
+ } from "../../chunks/Accordion-hz4xaqjf.js";
17
17
  import"../../chunks/Accordion-ftjkdjqs.js";
18
18
  import"../../chunks/Accordion-0jkm3y3w.js";
19
19
  import"../../chunks/Accordion-31aeqxak.js";
@@ -13,7 +13,7 @@ import {
13
13
  List2,
14
14
  ListSection2,
15
15
  SectionList2
16
- } from "../../chunks/Accordion-j2c7btke.js";
16
+ } from "../../chunks/Accordion-hz4xaqjf.js";
17
17
  import"../../chunks/Accordion-ftjkdjqs.js";
18
18
  import"../../chunks/Accordion-0jkm3y3w.js";
19
19
  import"../../chunks/Accordion-31aeqxak.js";
@@ -13,7 +13,7 @@ import {
13
13
  List2,
14
14
  ListSection2,
15
15
  SectionList2
16
- } from "../../chunks/Accordion-j2c7btke.js";
16
+ } from "../../chunks/Accordion-hz4xaqjf.js";
17
17
  import"../../chunks/Accordion-ftjkdjqs.js";
18
18
  import"../../chunks/Accordion-0jkm3y3w.js";
19
19
  import"../../chunks/Accordion-31aeqxak.js";
@@ -10,7 +10,7 @@ import {
10
10
  SkeletonText2,
11
11
  SkeletonCard2,
12
12
  SkeletonList2
13
- } from "../../chunks/Accordion-kpq8dhze.js";
13
+ } from "../../chunks/Accordion-fjnck2tg.js";
14
14
  import"../../chunks/Accordion-t6sdgmbz.js";
15
15
  import"../../chunks/Accordion-ftjkdjqs.js";
16
16
  import"../../chunks/Accordion-0jkm3y3w.js";
@@ -23,7 +23,7 @@ import"../../chunks/Accordion-1pp37dtg.js";
23
23
  import"../../chunks/Accordion-paha5aje.js";
24
24
  import"../../chunks/Accordion-gbba10rg.js";
25
25
  import"../../chunks/Accordion-x0j8b2by.js";
26
- import"../../chunks/Accordion-j2c7btke.js";
26
+ import"../../chunks/Accordion-hz4xaqjf.js";
27
27
  import"../../chunks/Accordion-31aeqxak.js";
28
28
  import"../../chunks/Accordion-eqvdv7tt.js";
29
29
  import"../../chunks/Accordion-61e19g3e.js";
@@ -10,7 +10,7 @@ import {
10
10
  SkeletonText2,
11
11
  SkeletonCard2,
12
12
  SkeletonList2
13
- } from "../../chunks/Accordion-kpq8dhze.js";
13
+ } from "../../chunks/Accordion-fjnck2tg.js";
14
14
  import"../../chunks/Accordion-t6sdgmbz.js";
15
15
  import"../../chunks/Accordion-ftjkdjqs.js";
16
16
  import"../../chunks/Accordion-0jkm3y3w.js";
@@ -23,7 +23,7 @@ import"../../chunks/Accordion-1pp37dtg.js";
23
23
  import"../../chunks/Accordion-paha5aje.js";
24
24
  import"../../chunks/Accordion-gbba10rg.js";
25
25
  import"../../chunks/Accordion-x0j8b2by.js";
26
- import"../../chunks/Accordion-j2c7btke.js";
26
+ import"../../chunks/Accordion-hz4xaqjf.js";
27
27
  import"../../chunks/Accordion-31aeqxak.js";
28
28
  import"../../chunks/Accordion-eqvdv7tt.js";
29
29
  import"../../chunks/Accordion-61e19g3e.js";
@@ -10,7 +10,7 @@ import {
10
10
  SkeletonText2,
11
11
  SkeletonCard2,
12
12
  SkeletonList2
13
- } from "../../chunks/Accordion-kpq8dhze.js";
13
+ } from "../../chunks/Accordion-fjnck2tg.js";
14
14
  import"../../chunks/Accordion-t6sdgmbz.js";
15
15
  import"../../chunks/Accordion-ftjkdjqs.js";
16
16
  import"../../chunks/Accordion-0jkm3y3w.js";
@@ -23,7 +23,7 @@ import"../../chunks/Accordion-1pp37dtg.js";
23
23
  import"../../chunks/Accordion-paha5aje.js";
24
24
  import"../../chunks/Accordion-gbba10rg.js";
25
25
  import"../../chunks/Accordion-x0j8b2by.js";
26
- import"../../chunks/Accordion-j2c7btke.js";
26
+ import"../../chunks/Accordion-hz4xaqjf.js";
27
27
  import"../../chunks/Accordion-31aeqxak.js";
28
28
  import"../../chunks/Accordion-eqvdv7tt.js";
29
29
  import"../../chunks/Accordion-61e19g3e.js";
@@ -10,7 +10,7 @@ import {
10
10
  SkeletonText2,
11
11
  SkeletonCard2,
12
12
  SkeletonList2
13
- } from "../../chunks/Accordion-kpq8dhze.js";
13
+ } from "../../chunks/Accordion-fjnck2tg.js";
14
14
  import"../../chunks/Accordion-t6sdgmbz.js";
15
15
  import"../../chunks/Accordion-ftjkdjqs.js";
16
16
  import"../../chunks/Accordion-0jkm3y3w.js";
@@ -23,7 +23,7 @@ import"../../chunks/Accordion-1pp37dtg.js";
23
23
  import"../../chunks/Accordion-paha5aje.js";
24
24
  import"../../chunks/Accordion-gbba10rg.js";
25
25
  import"../../chunks/Accordion-x0j8b2by.js";
26
- import"../../chunks/Accordion-j2c7btke.js";
26
+ import"../../chunks/Accordion-hz4xaqjf.js";
27
27
  import"../../chunks/Accordion-31aeqxak.js";
28
28
  import"../../chunks/Accordion-eqvdv7tt.js";
29
29
  import"../../chunks/Accordion-61e19g3e.js";
@@ -22,7 +22,7 @@ import {
22
22
  import"../../chunks/Accordion-f05a7r28.js";
23
23
  import {
24
24
  ListItem2
25
- } from "../../chunks/Accordion-j2c7btke.js";
25
+ } from "../../chunks/Accordion-hz4xaqjf.js";
26
26
  import"../../chunks/Accordion-31aeqxak.js";
27
27
  import {
28
28
  toggleExpandedIds
@@ -867,14 +867,14 @@
867
867
  "chunks/Accordion-eqvdv7tt.js",
868
868
  "chunks/Accordion-f05a7r28.js",
869
869
  "chunks/Accordion-f5swy5bs.js",
870
+ "chunks/Accordion-fjnck2tg.js",
870
871
  "chunks/Accordion-fre84yaq.js",
871
872
  "chunks/Accordion-ftjkdjqs.js",
872
873
  "chunks/Accordion-gbba10rg.js",
873
874
  "chunks/Accordion-grfbz6f2.js",
874
- "chunks/Accordion-j2c7btke.js",
875
+ "chunks/Accordion-hz4xaqjf.js",
875
876
  "chunks/Accordion-jh7nxehr.js",
876
877
  "chunks/Accordion-kcx57mk5.js",
877
- "chunks/Accordion-kpq8dhze.js",
878
878
  "chunks/Accordion-mnac2z83.js",
879
879
  "chunks/Accordion-paha5aje.js",
880
880
  "chunks/Accordion-qpwhmqzd.js",
@@ -1076,7 +1076,7 @@
1076
1076
  "chunks/Accordion-fre84yaq.js",
1077
1077
  "chunks/Accordion-ftjkdjqs.js",
1078
1078
  "chunks/Accordion-grfbz6f2.js",
1079
- "chunks/Accordion-j2c7btke.js",
1079
+ "chunks/Accordion-hz4xaqjf.js",
1080
1080
  "chunks/Accordion-jh7nxehr.js",
1081
1081
  "chunks/Accordion-kcx57mk5.js",
1082
1082
  "chunks/Accordion-sz21xsf4.js",
@@ -1488,7 +1488,7 @@
1488
1488
  "chunks/Accordion-fre84yaq.js",
1489
1489
  "chunks/Accordion-ftjkdjqs.js",
1490
1490
  "chunks/Accordion-grfbz6f2.js",
1491
- "chunks/Accordion-j2c7btke.js",
1491
+ "chunks/Accordion-hz4xaqjf.js",
1492
1492
  "chunks/Accordion-jh7nxehr.js",
1493
1493
  "chunks/Accordion-kcx57mk5.js",
1494
1494
  "chunks/Accordion-sz21xsf4.js",
@@ -1520,7 +1520,7 @@
1520
1520
  "chunks/Accordion-fre84yaq.js",
1521
1521
  "chunks/Accordion-ftjkdjqs.js",
1522
1522
  "chunks/Accordion-grfbz6f2.js",
1523
- "chunks/Accordion-j2c7btke.js",
1523
+ "chunks/Accordion-hz4xaqjf.js",
1524
1524
  "chunks/Accordion-jh7nxehr.js",
1525
1525
  "chunks/Accordion-kcx57mk5.js",
1526
1526
  "chunks/Accordion-sz21xsf4.js",
@@ -1552,7 +1552,7 @@
1552
1552
  "chunks/Accordion-fre84yaq.js",
1553
1553
  "chunks/Accordion-ftjkdjqs.js",
1554
1554
  "chunks/Accordion-grfbz6f2.js",
1555
- "chunks/Accordion-j2c7btke.js",
1555
+ "chunks/Accordion-hz4xaqjf.js",
1556
1556
  "chunks/Accordion-jh7nxehr.js",
1557
1557
  "chunks/Accordion-kcx57mk5.js",
1558
1558
  "chunks/Accordion-sz21xsf4.js",
@@ -2391,7 +2391,7 @@
2391
2391
  "chunks/Accordion-fre84yaq.js",
2392
2392
  "chunks/Accordion-ftjkdjqs.js",
2393
2393
  "chunks/Accordion-grfbz6f2.js",
2394
- "chunks/Accordion-j2c7btke.js",
2394
+ "chunks/Accordion-hz4xaqjf.js",
2395
2395
  "chunks/Accordion-jh7nxehr.js",
2396
2396
  "chunks/Accordion-kcx57mk5.js",
2397
2397
  "chunks/Accordion-sz21xsf4.js",
@@ -2577,14 +2577,14 @@
2577
2577
  "chunks/Accordion-eqvdv7tt.js",
2578
2578
  "chunks/Accordion-f05a7r28.js",
2579
2579
  "chunks/Accordion-f5swy5bs.js",
2580
+ "chunks/Accordion-fjnck2tg.js",
2580
2581
  "chunks/Accordion-fre84yaq.js",
2581
2582
  "chunks/Accordion-ftjkdjqs.js",
2582
2583
  "chunks/Accordion-gbba10rg.js",
2583
2584
  "chunks/Accordion-grfbz6f2.js",
2584
- "chunks/Accordion-j2c7btke.js",
2585
+ "chunks/Accordion-hz4xaqjf.js",
2585
2586
  "chunks/Accordion-jh7nxehr.js",
2586
2587
  "chunks/Accordion-kcx57mk5.js",
2587
- "chunks/Accordion-kpq8dhze.js",
2588
2588
  "chunks/Accordion-paha5aje.js",
2589
2589
  "chunks/Accordion-qpwhmqzd.js",
2590
2590
  "chunks/Accordion-r4c9k9y7.js",
@@ -2620,14 +2620,14 @@
2620
2620
  "chunks/Accordion-eqvdv7tt.js",
2621
2621
  "chunks/Accordion-f05a7r28.js",
2622
2622
  "chunks/Accordion-f5swy5bs.js",
2623
+ "chunks/Accordion-fjnck2tg.js",
2623
2624
  "chunks/Accordion-fre84yaq.js",
2624
2625
  "chunks/Accordion-ftjkdjqs.js",
2625
2626
  "chunks/Accordion-gbba10rg.js",
2626
2627
  "chunks/Accordion-grfbz6f2.js",
2627
- "chunks/Accordion-j2c7btke.js",
2628
+ "chunks/Accordion-hz4xaqjf.js",
2628
2629
  "chunks/Accordion-jh7nxehr.js",
2629
2630
  "chunks/Accordion-kcx57mk5.js",
2630
- "chunks/Accordion-kpq8dhze.js",
2631
2631
  "chunks/Accordion-paha5aje.js",
2632
2632
  "chunks/Accordion-qpwhmqzd.js",
2633
2633
  "chunks/Accordion-r4c9k9y7.js",
@@ -2663,14 +2663,14 @@
2663
2663
  "chunks/Accordion-eqvdv7tt.js",
2664
2664
  "chunks/Accordion-f05a7r28.js",
2665
2665
  "chunks/Accordion-f5swy5bs.js",
2666
+ "chunks/Accordion-fjnck2tg.js",
2666
2667
  "chunks/Accordion-fre84yaq.js",
2667
2668
  "chunks/Accordion-ftjkdjqs.js",
2668
2669
  "chunks/Accordion-gbba10rg.js",
2669
2670
  "chunks/Accordion-grfbz6f2.js",
2670
- "chunks/Accordion-j2c7btke.js",
2671
+ "chunks/Accordion-hz4xaqjf.js",
2671
2672
  "chunks/Accordion-jh7nxehr.js",
2672
2673
  "chunks/Accordion-kcx57mk5.js",
2673
- "chunks/Accordion-kpq8dhze.js",
2674
2674
  "chunks/Accordion-paha5aje.js",
2675
2675
  "chunks/Accordion-qpwhmqzd.js",
2676
2676
  "chunks/Accordion-r4c9k9y7.js",
@@ -2706,14 +2706,14 @@
2706
2706
  "chunks/Accordion-eqvdv7tt.js",
2707
2707
  "chunks/Accordion-f05a7r28.js",
2708
2708
  "chunks/Accordion-f5swy5bs.js",
2709
+ "chunks/Accordion-fjnck2tg.js",
2709
2710
  "chunks/Accordion-fre84yaq.js",
2710
2711
  "chunks/Accordion-ftjkdjqs.js",
2711
2712
  "chunks/Accordion-gbba10rg.js",
2712
2713
  "chunks/Accordion-grfbz6f2.js",
2713
- "chunks/Accordion-j2c7btke.js",
2714
+ "chunks/Accordion-hz4xaqjf.js",
2714
2715
  "chunks/Accordion-jh7nxehr.js",
2715
2716
  "chunks/Accordion-kcx57mk5.js",
2716
- "chunks/Accordion-kpq8dhze.js",
2717
2717
  "chunks/Accordion-paha5aje.js",
2718
2718
  "chunks/Accordion-qpwhmqzd.js",
2719
2719
  "chunks/Accordion-r4c9k9y7.js",
@@ -3127,7 +3127,7 @@
3127
3127
  "chunks/Accordion-fre84yaq.js",
3128
3128
  "chunks/Accordion-ftjkdjqs.js",
3129
3129
  "chunks/Accordion-grfbz6f2.js",
3130
- "chunks/Accordion-j2c7btke.js",
3130
+ "chunks/Accordion-hz4xaqjf.js",
3131
3131
  "chunks/Accordion-jh7nxehr.js",
3132
3132
  "chunks/Accordion-kcx57mk5.js",
3133
3133
  "chunks/Accordion-paha5aje.js",