zdp-design-system 0.43.8

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 (110) hide show
  1. package/CHANGELOG.md +449 -0
  2. package/LICENSE +21 -0
  3. package/README.md +568 -0
  4. package/THIRD_PARTY_NOTICES.md +34 -0
  5. package/dist/code.ts +2 -0
  6. package/dist/combobox.ts +9 -0
  7. package/dist/command.ts +1 -0
  8. package/dist/components/Accordion.svelte +97 -0
  9. package/dist/components/Avatar.svelte +90 -0
  10. package/dist/components/Badge.svelte +61 -0
  11. package/dist/components/Breadcrumb.svelte +97 -0
  12. package/dist/components/Button.svelte +163 -0
  13. package/dist/components/Callout.svelte +81 -0
  14. package/dist/components/Card.svelte +151 -0
  15. package/dist/components/CardHeader.svelte +58 -0
  16. package/dist/components/Checkbox.svelte +135 -0
  17. package/dist/components/CodeBlock.svelte +247 -0
  18. package/dist/components/Combobox.svelte +552 -0
  19. package/dist/components/CommandField.svelte +230 -0
  20. package/dist/components/ConfirmAction.svelte +307 -0
  21. package/dist/components/Container.svelte +63 -0
  22. package/dist/components/Dialog.svelte +303 -0
  23. package/dist/components/Disclosure.svelte +176 -0
  24. package/dist/components/Divider.svelte +41 -0
  25. package/dist/components/EmptyState.svelte +79 -0
  26. package/dist/components/ErrorText.svelte +18 -0
  27. package/dist/components/Field.svelte +38 -0
  28. package/dist/components/Grid.svelte +76 -0
  29. package/dist/components/HelpText.svelte +17 -0
  30. package/dist/components/Icon.svelte +45 -0
  31. package/dist/components/IconButton.svelte +162 -0
  32. package/dist/components/IdentityChip.svelte +130 -0
  33. package/dist/components/Inline.svelte +85 -0
  34. package/dist/components/InlineCode.svelte +27 -0
  35. package/dist/components/Input.svelte +109 -0
  36. package/dist/components/Kbd.svelte +63 -0
  37. package/dist/components/KeyValue.svelte +73 -0
  38. package/dist/components/Label.svelte +43 -0
  39. package/dist/components/Link.svelte +70 -0
  40. package/dist/components/LocaleSwitcher.svelte +209 -0
  41. package/dist/components/Menu.svelte +491 -0
  42. package/dist/components/Page.svelte +36 -0
  43. package/dist/components/PageHeader.svelte +93 -0
  44. package/dist/components/Pagination.svelte +297 -0
  45. package/dist/components/Popover.svelte +208 -0
  46. package/dist/components/Progress.svelte +111 -0
  47. package/dist/components/Radio.svelte +132 -0
  48. package/dist/components/Section.svelte +52 -0
  49. package/dist/components/SegmentedControl.svelte +190 -0
  50. package/dist/components/Select.svelte +88 -0
  51. package/dist/components/ShareDock.svelte +304 -0
  52. package/dist/components/Sheet.svelte +332 -0
  53. package/dist/components/ShortcutHint.svelte +52 -0
  54. package/dist/components/Skeleton.svelte +82 -0
  55. package/dist/components/SkipLink.svelte +40 -0
  56. package/dist/components/SortHeader.svelte +138 -0
  57. package/dist/components/Spinner.svelte +82 -0
  58. package/dist/components/Stack.svelte +62 -0
  59. package/dist/components/StatusToast.svelte +133 -0
  60. package/dist/components/Surface.svelte +53 -0
  61. package/dist/components/Switch.svelte +152 -0
  62. package/dist/components/Table.svelte +94 -0
  63. package/dist/components/TableToolbar.svelte +195 -0
  64. package/dist/components/Tabs.svelte +205 -0
  65. package/dist/components/TermSheet.svelte +392 -0
  66. package/dist/components/TermTrigger.svelte +70 -0
  67. package/dist/components/TextScaleControl.svelte +219 -0
  68. package/dist/components/Textarea.svelte +106 -0
  69. package/dist/components/ThemeToggle.svelte +148 -0
  70. package/dist/components/Toast.svelte +180 -0
  71. package/dist/components/Toolbar.svelte +83 -0
  72. package/dist/components/Tooltip.svelte +199 -0
  73. package/dist/components/VisuallyHidden.svelte +18 -0
  74. package/dist/disclosure.ts +11 -0
  75. package/dist/focusable.ts +36 -0
  76. package/dist/identity.ts +5 -0
  77. package/dist/index.d.ts +106 -0
  78. package/dist/index.js +76 -0
  79. package/dist/index.ts +106 -0
  80. package/dist/menu.ts +12 -0
  81. package/dist/modal-layer.ts +108 -0
  82. package/dist/pagination.ts +10 -0
  83. package/dist/preferences.js +14 -0
  84. package/dist/preferences.ts +36 -0
  85. package/dist/progress.ts +4 -0
  86. package/dist/schemas/design-tokens.schema.json +119 -0
  87. package/dist/segmented.ts +8 -0
  88. package/dist/share.d.ts +48 -0
  89. package/dist/share.js +115 -0
  90. package/dist/share.ts +99 -0
  91. package/dist/sheet.ts +3 -0
  92. package/dist/shortcuts.js +125 -0
  93. package/dist/shortcuts.ts +153 -0
  94. package/dist/styles/brand-fonts.css +10 -0
  95. package/dist/styles/components.css +4686 -0
  96. package/dist/styles/expressive-fonts.css +2 -0
  97. package/dist/styles/index.css +2 -0
  98. package/dist/styles/locale-fonts.css +4 -0
  99. package/dist/styles/tokens.css +413 -0
  100. package/dist/table-tools.ts +10 -0
  101. package/dist/term.ts +16 -0
  102. package/dist/theme.ts +2 -0
  103. package/dist/toast.ts +14 -0
  104. package/dist/tokens/zdp.tokens.json +241 -0
  105. package/dist/tokens.js +122 -0
  106. package/dist/tokens.ts +123 -0
  107. package/docs/CONSUMER_CONTRACT.md +482 -0
  108. package/docs/EXTERNAL_UI_ADOPTION.md +141 -0
  109. package/docs/INTERACTIVE_PRIMITIVE_AUDIT.md +127 -0
  110. package/package.json +78 -0
@@ -0,0 +1,18 @@
1
+ <span class="zdp-visually-hidden">
2
+ <slot />
3
+ </span>
4
+
5
+ <style>
6
+ .zdp-visually-hidden {
7
+ border: 0;
8
+ clip: rect(0 0 0 0);
9
+ clip-path: inset(50%);
10
+ height: 1px;
11
+ margin: -1px;
12
+ overflow: hidden;
13
+ padding: 0;
14
+ position: absolute;
15
+ white-space: nowrap;
16
+ width: 1px;
17
+ }
18
+ </style>
@@ -0,0 +1,11 @@
1
+ export type ZdpDisclosureHeadingLevel = 2 | 3 | 4 | 5 | 6;
2
+
3
+ export type ZdpAccordionMode = 'multiple' | 'single';
4
+
5
+ export interface ZdpAccordionItem {
6
+ readonly id: string;
7
+ readonly title: string;
8
+ readonly content: string;
9
+ readonly open?: boolean;
10
+ readonly disabled?: boolean;
11
+ }
@@ -0,0 +1,36 @@
1
+ export const zdpFocusableSelector = [
2
+ 'a[href]',
3
+ 'area[href]',
4
+ 'button',
5
+ 'input',
6
+ 'select',
7
+ 'textarea',
8
+ 'iframe',
9
+ 'object',
10
+ 'embed',
11
+ 'details > summary:first-of-type',
12
+ '[contenteditable="true"]',
13
+ '[tabindex]'
14
+ ].join(', ');
15
+
16
+ export function isZdpFocusableElement(element: HTMLElement): boolean {
17
+ if (element.tabIndex < 0) {
18
+ return false;
19
+ }
20
+
21
+ if (element.matches('[disabled], [hidden], [aria-hidden="true"]')) {
22
+ return false;
23
+ }
24
+
25
+ if (element.closest('[hidden], [aria-hidden="true"], [inert]') !== null) {
26
+ return false;
27
+ }
28
+
29
+ const style = window.getComputedStyle(element);
30
+
31
+ if (style.display === 'none' || style.visibility === 'hidden') {
32
+ return false;
33
+ }
34
+
35
+ return element.getClientRects().length > 0;
36
+ }
@@ -0,0 +1,5 @@
1
+ export type ZdpAvatarSize = 'sm' | 'md' | 'lg';
2
+ export type ZdpAvatarTone = 'neutral' | 'primary';
3
+ export type ZdpIdentityChipSize = 'sm' | 'md';
4
+ export type ZdpIdentityChipAriaCurrent = 'page' | 'step' | 'location' | 'date' | 'time' | 'true';
5
+
@@ -0,0 +1,106 @@
1
+ export { default as Accordion } from './components/Accordion.svelte';
2
+ export { default as Avatar } from './components/Avatar.svelte';
3
+ export { default as Badge } from './components/Badge.svelte';
4
+ export { default as Breadcrumb } from './components/Breadcrumb.svelte';
5
+ export { default as Button } from './components/Button.svelte';
6
+ export { default as Callout } from './components/Callout.svelte';
7
+ export { default as Card } from './components/Card.svelte';
8
+ export { default as CardHeader } from './components/CardHeader.svelte';
9
+ export { default as Checkbox } from './components/Checkbox.svelte';
10
+ export { default as CodeBlock } from './components/CodeBlock.svelte';
11
+ export { default as Combobox } from './components/Combobox.svelte';
12
+ export { default as CommandField } from './components/CommandField.svelte';
13
+ export { default as ConfirmAction } from './components/ConfirmAction.svelte';
14
+ export { default as Container } from './components/Container.svelte';
15
+ export { default as Dialog } from './components/Dialog.svelte';
16
+ export { default as Disclosure } from './components/Disclosure.svelte';
17
+ export { default as Divider } from './components/Divider.svelte';
18
+ export { default as EmptyState } from './components/EmptyState.svelte';
19
+ export { default as ErrorText } from './components/ErrorText.svelte';
20
+ export { default as Field } from './components/Field.svelte';
21
+ export { default as Grid } from './components/Grid.svelte';
22
+ export { default as HelpText } from './components/HelpText.svelte';
23
+ export { default as Icon } from './components/Icon.svelte';
24
+ export { default as IconButton } from './components/IconButton.svelte';
25
+ export { default as Inline } from './components/Inline.svelte';
26
+ export { default as InlineCode } from './components/InlineCode.svelte';
27
+ export { default as Input } from './components/Input.svelte';
28
+ export { default as IdentityChip } from './components/IdentityChip.svelte';
29
+ export { default as Kbd } from './components/Kbd.svelte';
30
+ export { default as KeyValue } from './components/KeyValue.svelte';
31
+ export { default as Label } from './components/Label.svelte';
32
+ export { default as Link } from './components/Link.svelte';
33
+ export { default as LocaleSwitcher } from './components/LocaleSwitcher.svelte';
34
+ export { default as Menu } from './components/Menu.svelte';
35
+ export { default as Page } from './components/Page.svelte';
36
+ export { default as PageHeader } from './components/PageHeader.svelte';
37
+ export { default as Pagination } from './components/Pagination.svelte';
38
+ export { default as Popover } from './components/Popover.svelte';
39
+ export { default as Progress } from './components/Progress.svelte';
40
+ export { default as Radio } from './components/Radio.svelte';
41
+ export { default as Section } from './components/Section.svelte';
42
+ export { default as Select } from './components/Select.svelte';
43
+ export { default as SegmentedControl } from './components/SegmentedControl.svelte';
44
+ export { default as ShareDock } from './components/ShareDock.svelte';
45
+ export { default as Sheet } from './components/Sheet.svelte';
46
+ export { default as ShortcutHint } from './components/ShortcutHint.svelte';
47
+ export { default as Skeleton } from './components/Skeleton.svelte';
48
+ export { default as SkipLink } from './components/SkipLink.svelte';
49
+ export { default as SortHeader } from './components/SortHeader.svelte';
50
+ export { default as Stack } from './components/Stack.svelte';
51
+ export { default as StatusToast } from './components/StatusToast.svelte';
52
+ export { default as Spinner } from './components/Spinner.svelte';
53
+ export { default as Surface } from './components/Surface.svelte';
54
+ export { default as Switch } from './components/Switch.svelte';
55
+ export { default as Tabs } from './components/Tabs.svelte';
56
+ export { default as Table } from './components/Table.svelte';
57
+ export { default as TableToolbar } from './components/TableToolbar.svelte';
58
+ export { default as TermSheet } from './components/TermSheet.svelte';
59
+ export { default as TermTrigger } from './components/TermTrigger.svelte';
60
+ export { default as Textarea } from './components/Textarea.svelte';
61
+ export { default as TextScaleControl } from './components/TextScaleControl.svelte';
62
+ export { default as ThemeToggle } from './components/ThemeToggle.svelte';
63
+ export { default as Tooltip } from './components/Tooltip.svelte';
64
+ export { default as Toast } from './components/Toast.svelte';
65
+ export { default as Toolbar } from './components/Toolbar.svelte';
66
+ export { default as VisuallyHidden } from './components/VisuallyHidden.svelte';
67
+ export type { ZdpComboboxOption, ZdpComboboxSize } from './combobox';
68
+ export type { ZdpCommandFieldSize } from './command';
69
+ export type { ZdpCodeBlockSize, ZdpCodeBlockTone } from './code';
70
+ export type { ZdpAccordionItem, ZdpAccordionMode, ZdpDisclosureHeadingLevel } from './disclosure';
71
+ export type {
72
+ ZdpAvatarSize,
73
+ ZdpAvatarTone,
74
+ ZdpIdentityChipAriaCurrent,
75
+ ZdpIdentityChipSize
76
+ } from './identity';
77
+ export type { ZdpMenuItem } from './menu';
78
+ export type { ZdpPaginationItem } from './pagination';
79
+ export { isZdpTextScale, zdpLocaleSwitcherOptions, zdpTextScaleControlOptions } from './preferences';
80
+ export type {
81
+ ZdpLocaleSwitcherOption,
82
+ ZdpLocaleSwitcherSize,
83
+ ZdpTextScale,
84
+ ZdpTextScaleControlOption,
85
+ ZdpTextScaleControlSize
86
+ } from './preferences';
87
+ export type { ZdpProgressSize, ZdpProgressTone, ZdpSkeletonVariant, ZdpSpinnerSize } from './progress';
88
+ export type { ZdpSegmentedControlItem, ZdpSegmentedControlSize } from './segmented';
89
+ export type { ZdpSheetPlacement, ZdpSheetSize } from './sheet';
90
+ export {
91
+ isZdpBrowserReservedShortcut,
92
+ isZdpTextEntryTarget,
93
+ shouldZdpIgnoreShortcutEvent,
94
+ zdpShortcutRecommendations,
95
+ zdpShortcutReservedExamples
96
+ } from './shortcuts';
97
+ export type { ZdpShortcutGuardOptions, ZdpShortcutIntent, ZdpShortcutRecommendation, ZdpShortcutRisk } from './shortcuts';
98
+ export type { ZdpStatusToastItem } from './toast';
99
+ export type { ZdpToastTone } from './toast';
100
+ export type { ZdpThemeMode, ZdpThemeToggleSize } from './theme';
101
+ export type { ZdpSortDirection, ZdpTableDensity, ZdpTableToolbarDensityItem } from './table-tools';
102
+ export type { ZdpTermRelatedTerm, ZdpTermSheetPlacement, ZdpTermSheetTerm } from './term';
103
+ export { zdpShareIcons } from './share';
104
+ export type { ZdpShareDockItem, ZdpShareIconName, ZdpShareIconShape } from './share';
105
+ export { zdpTokenNames } from './tokens';
106
+ export type { ZdpTokenName } from './tokens';
package/dist/index.js ADDED
@@ -0,0 +1,76 @@
1
+ export { default as Accordion } from './components/Accordion.svelte';
2
+ export { default as Avatar } from './components/Avatar.svelte';
3
+ export { default as Badge } from './components/Badge.svelte';
4
+ export { default as Breadcrumb } from './components/Breadcrumb.svelte';
5
+ export { default as Button } from './components/Button.svelte';
6
+ export { default as Callout } from './components/Callout.svelte';
7
+ export { default as Card } from './components/Card.svelte';
8
+ export { default as CardHeader } from './components/CardHeader.svelte';
9
+ export { default as Checkbox } from './components/Checkbox.svelte';
10
+ export { default as CodeBlock } from './components/CodeBlock.svelte';
11
+ export { default as Combobox } from './components/Combobox.svelte';
12
+ export { default as CommandField } from './components/CommandField.svelte';
13
+ export { default as ConfirmAction } from './components/ConfirmAction.svelte';
14
+ export { default as Container } from './components/Container.svelte';
15
+ export { default as Dialog } from './components/Dialog.svelte';
16
+ export { default as Disclosure } from './components/Disclosure.svelte';
17
+ export { default as Divider } from './components/Divider.svelte';
18
+ export { default as EmptyState } from './components/EmptyState.svelte';
19
+ export { default as ErrorText } from './components/ErrorText.svelte';
20
+ export { default as Field } from './components/Field.svelte';
21
+ export { default as Grid } from './components/Grid.svelte';
22
+ export { default as HelpText } from './components/HelpText.svelte';
23
+ export { default as Icon } from './components/Icon.svelte';
24
+ export { default as IconButton } from './components/IconButton.svelte';
25
+ export { default as Inline } from './components/Inline.svelte';
26
+ export { default as InlineCode } from './components/InlineCode.svelte';
27
+ export { default as Input } from './components/Input.svelte';
28
+ export { default as IdentityChip } from './components/IdentityChip.svelte';
29
+ export { default as Kbd } from './components/Kbd.svelte';
30
+ export { default as KeyValue } from './components/KeyValue.svelte';
31
+ export { default as Label } from './components/Label.svelte';
32
+ export { default as Link } from './components/Link.svelte';
33
+ export { default as LocaleSwitcher } from './components/LocaleSwitcher.svelte';
34
+ export { default as Menu } from './components/Menu.svelte';
35
+ export { default as Page } from './components/Page.svelte';
36
+ export { default as PageHeader } from './components/PageHeader.svelte';
37
+ export { default as Pagination } from './components/Pagination.svelte';
38
+ export { default as Popover } from './components/Popover.svelte';
39
+ export { default as Progress } from './components/Progress.svelte';
40
+ export { default as Radio } from './components/Radio.svelte';
41
+ export { default as Section } from './components/Section.svelte';
42
+ export { default as Select } from './components/Select.svelte';
43
+ export { default as SegmentedControl } from './components/SegmentedControl.svelte';
44
+ export { default as ShareDock } from './components/ShareDock.svelte';
45
+ export { default as Sheet } from './components/Sheet.svelte';
46
+ export { default as ShortcutHint } from './components/ShortcutHint.svelte';
47
+ export { default as Skeleton } from './components/Skeleton.svelte';
48
+ export { default as SkipLink } from './components/SkipLink.svelte';
49
+ export { default as SortHeader } from './components/SortHeader.svelte';
50
+ export { default as Stack } from './components/Stack.svelte';
51
+ export { default as StatusToast } from './components/StatusToast.svelte';
52
+ export { default as Spinner } from './components/Spinner.svelte';
53
+ export { default as Surface } from './components/Surface.svelte';
54
+ export { default as Switch } from './components/Switch.svelte';
55
+ export { default as Tabs } from './components/Tabs.svelte';
56
+ export { default as Table } from './components/Table.svelte';
57
+ export { default as TableToolbar } from './components/TableToolbar.svelte';
58
+ export { default as TermSheet } from './components/TermSheet.svelte';
59
+ export { default as TermTrigger } from './components/TermTrigger.svelte';
60
+ export { default as Textarea } from './components/Textarea.svelte';
61
+ export { default as TextScaleControl } from './components/TextScaleControl.svelte';
62
+ export { default as ThemeToggle } from './components/ThemeToggle.svelte';
63
+ export { default as Tooltip } from './components/Tooltip.svelte';
64
+ export { default as Toast } from './components/Toast.svelte';
65
+ export { default as Toolbar } from './components/Toolbar.svelte';
66
+ export { default as VisuallyHidden } from './components/VisuallyHidden.svelte';
67
+ export { isZdpTextScale, zdpLocaleSwitcherOptions, zdpTextScaleControlOptions } from './preferences.js';
68
+ export {
69
+ isZdpBrowserReservedShortcut,
70
+ isZdpTextEntryTarget,
71
+ shouldZdpIgnoreShortcutEvent,
72
+ zdpShortcutRecommendations,
73
+ zdpShortcutReservedExamples
74
+ } from './shortcuts.js';
75
+ export { zdpShareIcons } from './share.js';
76
+ export { zdpTokenNames } from './tokens.js';
package/dist/index.ts ADDED
@@ -0,0 +1,106 @@
1
+ export { default as Accordion } from './components/Accordion.svelte';
2
+ export { default as Avatar } from './components/Avatar.svelte';
3
+ export { default as Badge } from './components/Badge.svelte';
4
+ export { default as Breadcrumb } from './components/Breadcrumb.svelte';
5
+ export { default as Button } from './components/Button.svelte';
6
+ export { default as Callout } from './components/Callout.svelte';
7
+ export { default as Card } from './components/Card.svelte';
8
+ export { default as CardHeader } from './components/CardHeader.svelte';
9
+ export { default as Checkbox } from './components/Checkbox.svelte';
10
+ export { default as CodeBlock } from './components/CodeBlock.svelte';
11
+ export { default as Combobox } from './components/Combobox.svelte';
12
+ export { default as CommandField } from './components/CommandField.svelte';
13
+ export { default as ConfirmAction } from './components/ConfirmAction.svelte';
14
+ export { default as Container } from './components/Container.svelte';
15
+ export { default as Dialog } from './components/Dialog.svelte';
16
+ export { default as Disclosure } from './components/Disclosure.svelte';
17
+ export { default as Divider } from './components/Divider.svelte';
18
+ export { default as EmptyState } from './components/EmptyState.svelte';
19
+ export { default as ErrorText } from './components/ErrorText.svelte';
20
+ export { default as Field } from './components/Field.svelte';
21
+ export { default as Grid } from './components/Grid.svelte';
22
+ export { default as HelpText } from './components/HelpText.svelte';
23
+ export { default as Icon } from './components/Icon.svelte';
24
+ export { default as IconButton } from './components/IconButton.svelte';
25
+ export { default as Inline } from './components/Inline.svelte';
26
+ export { default as InlineCode } from './components/InlineCode.svelte';
27
+ export { default as Input } from './components/Input.svelte';
28
+ export { default as IdentityChip } from './components/IdentityChip.svelte';
29
+ export { default as Kbd } from './components/Kbd.svelte';
30
+ export { default as KeyValue } from './components/KeyValue.svelte';
31
+ export { default as Label } from './components/Label.svelte';
32
+ export { default as Link } from './components/Link.svelte';
33
+ export { default as LocaleSwitcher } from './components/LocaleSwitcher.svelte';
34
+ export { default as Menu } from './components/Menu.svelte';
35
+ export { default as Page } from './components/Page.svelte';
36
+ export { default as PageHeader } from './components/PageHeader.svelte';
37
+ export { default as Pagination } from './components/Pagination.svelte';
38
+ export { default as Popover } from './components/Popover.svelte';
39
+ export { default as Progress } from './components/Progress.svelte';
40
+ export { default as Radio } from './components/Radio.svelte';
41
+ export { default as Section } from './components/Section.svelte';
42
+ export { default as Select } from './components/Select.svelte';
43
+ export { default as SegmentedControl } from './components/SegmentedControl.svelte';
44
+ export { default as ShareDock } from './components/ShareDock.svelte';
45
+ export { default as Sheet } from './components/Sheet.svelte';
46
+ export { default as ShortcutHint } from './components/ShortcutHint.svelte';
47
+ export { default as Skeleton } from './components/Skeleton.svelte';
48
+ export { default as SkipLink } from './components/SkipLink.svelte';
49
+ export { default as SortHeader } from './components/SortHeader.svelte';
50
+ export { default as Stack } from './components/Stack.svelte';
51
+ export { default as StatusToast } from './components/StatusToast.svelte';
52
+ export { default as Spinner } from './components/Spinner.svelte';
53
+ export { default as Surface } from './components/Surface.svelte';
54
+ export { default as Switch } from './components/Switch.svelte';
55
+ export { default as Tabs } from './components/Tabs.svelte';
56
+ export { default as Table } from './components/Table.svelte';
57
+ export { default as TableToolbar } from './components/TableToolbar.svelte';
58
+ export { default as TermSheet } from './components/TermSheet.svelte';
59
+ export { default as TermTrigger } from './components/TermTrigger.svelte';
60
+ export { default as Textarea } from './components/Textarea.svelte';
61
+ export { default as TextScaleControl } from './components/TextScaleControl.svelte';
62
+ export { default as ThemeToggle } from './components/ThemeToggle.svelte';
63
+ export { default as Tooltip } from './components/Tooltip.svelte';
64
+ export { default as Toast } from './components/Toast.svelte';
65
+ export { default as Toolbar } from './components/Toolbar.svelte';
66
+ export { default as VisuallyHidden } from './components/VisuallyHidden.svelte';
67
+ export type { ZdpComboboxOption, ZdpComboboxSize } from './combobox';
68
+ export type { ZdpCommandFieldSize } from './command';
69
+ export type { ZdpCodeBlockSize, ZdpCodeBlockTone } from './code';
70
+ export type { ZdpAccordionItem, ZdpAccordionMode, ZdpDisclosureHeadingLevel } from './disclosure';
71
+ export type {
72
+ ZdpAvatarSize,
73
+ ZdpAvatarTone,
74
+ ZdpIdentityChipAriaCurrent,
75
+ ZdpIdentityChipSize
76
+ } from './identity';
77
+ export type { ZdpMenuItem } from './menu';
78
+ export type { ZdpPaginationItem } from './pagination';
79
+ export { isZdpTextScale, zdpLocaleSwitcherOptions, zdpTextScaleControlOptions } from './preferences';
80
+ export type {
81
+ ZdpLocaleSwitcherOption,
82
+ ZdpLocaleSwitcherSize,
83
+ ZdpTextScale,
84
+ ZdpTextScaleControlOption,
85
+ ZdpTextScaleControlSize
86
+ } from './preferences';
87
+ export type { ZdpProgressSize, ZdpProgressTone, ZdpSkeletonVariant, ZdpSpinnerSize } from './progress';
88
+ export type { ZdpSegmentedControlItem, ZdpSegmentedControlSize } from './segmented';
89
+ export type { ZdpSheetPlacement, ZdpSheetSize } from './sheet';
90
+ export {
91
+ isZdpBrowserReservedShortcut,
92
+ isZdpTextEntryTarget,
93
+ shouldZdpIgnoreShortcutEvent,
94
+ zdpShortcutRecommendations,
95
+ zdpShortcutReservedExamples
96
+ } from './shortcuts';
97
+ export type { ZdpShortcutGuardOptions, ZdpShortcutIntent, ZdpShortcutRecommendation, ZdpShortcutRisk } from './shortcuts';
98
+ export type { ZdpStatusToastItem } from './toast';
99
+ export type { ZdpToastTone } from './toast';
100
+ export type { ZdpThemeMode, ZdpThemeToggleSize } from './theme';
101
+ export type { ZdpSortDirection, ZdpTableDensity, ZdpTableToolbarDensityItem } from './table-tools';
102
+ export type { ZdpTermRelatedTerm, ZdpTermSheetPlacement, ZdpTermSheetTerm } from './term';
103
+ export { zdpShareIcons } from './share';
104
+ export type { ZdpShareDockItem, ZdpShareIconName, ZdpShareIconShape } from './share';
105
+ export { zdpTokenNames } from './tokens';
106
+ export type { ZdpTokenName } from './tokens';
package/dist/menu.ts ADDED
@@ -0,0 +1,12 @@
1
+ export interface ZdpMenuItem {
2
+ readonly id: string;
3
+ readonly label: string;
4
+ readonly href?: string;
5
+ readonly target?: '_self' | '_blank' | '_parent' | '_top';
6
+ readonly rel?: string;
7
+ readonly ariaLabel?: string;
8
+ readonly disabled?: boolean;
9
+ readonly tone?: 'normal' | 'danger';
10
+ readonly separatorBefore?: boolean;
11
+ readonly onclick?: (event: MouseEvent, item: ZdpMenuItem) => void;
12
+ }
@@ -0,0 +1,108 @@
1
+ export const zdpModalLayerRootAttribute = 'data-zdp-modal-layer-root';
2
+ export const zdpModalLayerActiveAttribute = 'data-zdp-modal-layer-active';
3
+ export const zdpModalLayerLevelAttribute = 'data-zdp-modal-layer-level';
4
+
5
+ export interface ZdpModalLayerHandle {
6
+ setActive(active: boolean, root?: HTMLElement | null): void;
7
+ destroy(): void;
8
+ }
9
+
10
+ let nextLayerId = 1;
11
+ const activeLayerIds: number[] = [];
12
+ let previousBodyOverflow: string | null = null;
13
+
14
+ export function createZdpModalLayer(): ZdpModalLayerHandle {
15
+ const layerId = nextLayerId;
16
+ nextLayerId += 1;
17
+
18
+ let active = false;
19
+ let currentRoot: HTMLElement | null = null;
20
+
21
+ function setActive(nextActive: boolean, root: HTMLElement | null = currentRoot): void {
22
+ if (root !== currentRoot) {
23
+ clearRootAttributes();
24
+ currentRoot = root;
25
+ }
26
+
27
+ if (nextActive && !active) {
28
+ active = true;
29
+ activeLayerIds.push(layerId);
30
+ } else if (!nextActive && active) {
31
+ active = false;
32
+ removeActiveLayer(layerId);
33
+ }
34
+
35
+ syncRootAttributes();
36
+ syncDocumentState();
37
+ }
38
+
39
+ function destroy(): void {
40
+ if (active) {
41
+ active = false;
42
+ removeActiveLayer(layerId);
43
+ }
44
+
45
+ clearRootAttributes();
46
+ syncDocumentState();
47
+ }
48
+
49
+ function syncRootAttributes(): void {
50
+ if (currentRoot === null) {
51
+ return;
52
+ }
53
+
54
+ currentRoot.setAttribute(zdpModalLayerRootAttribute, '');
55
+
56
+ if (!active) {
57
+ currentRoot.removeAttribute(zdpModalLayerActiveAttribute);
58
+ currentRoot.removeAttribute(zdpModalLayerLevelAttribute);
59
+ return;
60
+ }
61
+
62
+ currentRoot.setAttribute(zdpModalLayerActiveAttribute, 'true');
63
+ currentRoot.setAttribute(zdpModalLayerLevelAttribute, String(activeLayerIds.indexOf(layerId) + 1));
64
+ }
65
+
66
+ function clearRootAttributes(): void {
67
+ currentRoot?.removeAttribute(zdpModalLayerRootAttribute);
68
+ currentRoot?.removeAttribute(zdpModalLayerActiveAttribute);
69
+ currentRoot?.removeAttribute(zdpModalLayerLevelAttribute);
70
+ }
71
+
72
+ return { destroy, setActive };
73
+ }
74
+
75
+ function removeActiveLayer(layerId: number): void {
76
+ const index = activeLayerIds.lastIndexOf(layerId);
77
+
78
+ if (index >= 0) {
79
+ activeLayerIds.splice(index, 1);
80
+ }
81
+ }
82
+
83
+ function syncDocumentState(): void {
84
+ if (typeof document === 'undefined') {
85
+ return;
86
+ }
87
+
88
+ const root = document.documentElement;
89
+ const body = document.body;
90
+
91
+ if (activeLayerIds.length > 0) {
92
+ root.setAttribute('data-zdp-modal-layer-count', String(activeLayerIds.length));
93
+
94
+ if (previousBodyOverflow === null) {
95
+ previousBodyOverflow = body.style.overflow;
96
+ body.style.overflow = 'hidden';
97
+ }
98
+
99
+ return;
100
+ }
101
+
102
+ root.removeAttribute('data-zdp-modal-layer-count');
103
+
104
+ if (previousBodyOverflow !== null) {
105
+ body.style.overflow = previousBodyOverflow;
106
+ previousBodyOverflow = null;
107
+ }
108
+ }
@@ -0,0 +1,10 @@
1
+ export type ZdpPaginationItem =
2
+ | {
3
+ readonly type: 'page';
4
+ readonly page: number;
5
+ readonly key: string;
6
+ }
7
+ | {
8
+ readonly type: 'ellipsis';
9
+ readonly key: string;
10
+ };
@@ -0,0 +1,14 @@
1
+ export const zdpTextScaleControlOptions = [
2
+ { value: 'base', label: 'A', ariaLabel: 'Default text size' },
3
+ { value: 'large', label: 'A+', ariaLabel: 'Large text size' },
4
+ { value: 'larger', label: 'A++', ariaLabel: 'Larger text size' }
5
+ ];
6
+
7
+ export const zdpLocaleSwitcherOptions = [
8
+ { value: 'en', label: 'English', shortLabel: 'EN', lang: 'en', ariaLabel: 'English' },
9
+ { value: 'ko', label: 'Korean', shortLabel: 'KO', lang: 'ko', ariaLabel: 'Korean' }
10
+ ];
11
+
12
+ export function isZdpTextScale(value) {
13
+ return value === 'base' || value === 'large' || value === 'larger';
14
+ }
@@ -0,0 +1,36 @@
1
+ export type ZdpTextScale = 'base' | 'large' | 'larger';
2
+
3
+ export type ZdpTextScaleControlSize = 'sm' | 'md';
4
+
5
+ export type ZdpLocaleSwitcherSize = 'sm' | 'md';
6
+
7
+ export interface ZdpLocaleSwitcherOption {
8
+ readonly value: string;
9
+ readonly label: string;
10
+ readonly shortLabel?: string;
11
+ readonly lang?: string;
12
+ readonly ariaLabel?: string;
13
+ readonly disabled?: boolean;
14
+ }
15
+
16
+ export interface ZdpTextScaleControlOption {
17
+ readonly value: ZdpTextScale;
18
+ readonly label: string;
19
+ readonly ariaLabel?: string;
20
+ readonly disabled?: boolean;
21
+ }
22
+
23
+ export const zdpTextScaleControlOptions = [
24
+ { value: 'base', label: 'A', ariaLabel: 'Default text size' },
25
+ { value: 'large', label: 'A+', ariaLabel: 'Large text size' },
26
+ { value: 'larger', label: 'A++', ariaLabel: 'Larger text size' }
27
+ ] as const satisfies readonly ZdpTextScaleControlOption[];
28
+
29
+ export const zdpLocaleSwitcherOptions = [
30
+ { value: 'en', label: 'English', shortLabel: 'EN', lang: 'en', ariaLabel: 'English' },
31
+ { value: 'ko', label: 'Korean', shortLabel: 'KO', lang: 'ko', ariaLabel: 'Korean' }
32
+ ] as const satisfies readonly ZdpLocaleSwitcherOption[];
33
+
34
+ export function isZdpTextScale(value: string | null | undefined): value is ZdpTextScale {
35
+ return value === 'base' || value === 'large' || value === 'larger';
36
+ }
@@ -0,0 +1,4 @@
1
+ export type ZdpProgressTone = 'neutral' | 'primary' | 'success' | 'warning' | 'danger';
2
+ export type ZdpProgressSize = 'sm' | 'md';
3
+ export type ZdpSpinnerSize = 'sm' | 'md' | 'lg';
4
+ export type ZdpSkeletonVariant = 'text' | 'block' | 'avatar';